Skip to content

管理者が条件付きで独自の実績を作成できる機能 #17835

Description

@LeonspaceX

Summary

(この Issue は AI 翻訳を使用しています。誤りがあれば申し訳ありません🙇‍♀️🙏。内容自体は自分で考えたものです😄)

現在、ユーザーはMisskeyに標準搭載された実績のみを獲得できます。条件ロールを参考に、管理者がコントロールパネルで独自の実績を作成し、解除条件を設定できるようにしてほしいです。

設定項目は以下を想定しています:

  1. 実績コード(データベースに保存される識別子)
  2. 実績名
  3. 実績の説明
  4. 実績の追加説明(任意)
    (既存の実績と同じ3項目を参考)
  5. 解除条件(例:特定の日付にログインなど)
  6. アイコン(実績システムには既にアイコンセットが内蔵されているため、デザインの統一感を保つために管理者は内蔵アイコンから選択できるようにし、同時に独自のアイコンをアップロードすることも可能にすると良いと考えています)

連合について

実績自体は連合されないため、このシナリオを考慮する必要はありません。

削除・変更について

管理者が実績の情報を変更した場合、既にその実績を獲得しているユーザーの実績一覧の表示内容も同期して更新されます。解除条件が変更された場合、既存の獲得者には影響せず、変更後に条件を満たした新規ユーザーのみ新しい条件が適用されます。実績コードは一意であり、変更不可とします。
削除時は、該当するユーザーの実績も取り消します。

既存の実績システムについて

現行の実績システムはフロントエンド側で判定を行っており、判定ロジックが各所に分散しています。既存のアーキテクチャを大きく変更しないことを前提とすると、判定条件の記述には既存のAiScript構文を利用するのが良いのではと考えています(?)。Misskeyのプラグインシステムにはスクリプトのコールバック登録の仕組みが、また既存の実績には現行のif文による判定処理があり、この二つを参考に実績獲得イベントを実行する形が想定できます。
また、既存の実績と混同しないよう、カスタム実績は専用のテーブルを新設する必要があります。

Purpose

周年記念日、記念日、サーバーにとって意味のある日付、あるいは隠し要素(イースターエッグ)を設定する際に、この機能が役立つと思います。承認いただけるか分かりませんが、もし方向性としてご了承いただけましたら、変更を最小限に抑えた形でPRを提出してみたいと思います。ご返信・ご議論をお待ちしております!

Do you want to implement this feature yourself?

  • Yes, I will implement this by myself and send a pull request

Metadata

Metadata

Assignees

No one assigned

    Labels

    ✨FeatureThis adds/improves/enhances a feature💬DiscussionBeing discussed or needs discussion

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions