もし他にこれを試したい方がいらっしゃる場合に備えて、私が実行したことの簡単なまとめを以下に示します。
- まず、DiscourseサーバーのCLIを通じてバッジSQLを有効にする必要があります。
./launcher enter app
rails c
SiteSetting.enable_badge_sql = true
- 次に、メンバーがバッジを取得するために操作したいトピックのIDを見つけます。私のインスタンスでは、トピックIDは117です。
![]()
- カスタムバッジを作成します。
- 管理者 > バッジ > 新規
- バッジに好きな名前を付けます(例:B/S/Tルールリーダー)
- バッジタイプ、アイコンを選択し、説明を付けます。
- ステップ1を実行した場合、SQLクエリを入力できるクエリボックスが表示されます。このクエリを貼り付けます(
p.topic_id = 117を希望のトピックIDに変更してください)。-
SELECT DISTINCT ON (pa.user_id) pa.user_id, pa.post_id, pa.created_at granted_at FROM post_actions pa JOIN posts p ON pa.post_id = p.id AND p.post_number = 1 WHERE pa.post_action_type_id = 2 AND p.topic_id = 117 AND (:backfill OR pa.post_id IN (:post_ids))
-
- 日次失効クエリを実行とクエリが投稿を対象とするの両方がチェックされていることを確認します。
- トリガーはユーザーが投稿に対してアクションを実行したときに設定する必要があります。
- 次に、オートメーションを作成します。
- まず、メンバーが追加される新しいグループを作成します。私のものは単に
bst_rules_agreedという名前で、グループオーナーとモデレーターのみがメンバーシップを確認できるように設定されています。信頼レベルへの影響は必要ありません。 - 次に、プラグイン > オートメーションに移動します。
- 新しいオートメーションを追加します。
- バッジによるユーザーグループメンバーシップを選択します。
- トリガー: 繰り返し
- 再発間隔: 私は1時間ごとに設定しています。ご自身に適したものを選択してください。
- 開始日を選択します。
- スクリプトオプション:
- バッジ: 上記で作成したバッジを選択します。
- グループ: 上記で作成したグループを選択します。
- 新しいオートメーションを追加します。
- まず、メンバーが追加される新しいグループを作成します。私のものは単に
これで完了です。これで、メンバーがカテゴリに投稿できるようになる前に、カテゴリのルールに同意していることを保証するシステムができました。
私の次の探求は、そのグループに属していないすべての人に対して、ルール以外のトピックをすべて非表示にする方法があるかどうかを確認することです。しかし、この基本的なシステムは今のところ十分です。