カスタムルールでカスタムバッジを作成する

これらのルールを追加してカスタムバッジを作成したいのですが、これは単純に、ユーザーが以下のことを達成すると、関連する特定のバッジが自動的に付与されることを意味します。
ユーザーは以下のこと/ルールを達成する必要があります -

  1. ユーザーは少なくとも2つの投稿を作成している必要があります
  2. ユーザーはプロフィール写真をアップロードしている必要があります
  3. ユーザーは少なくとも1つの投稿に「いいね!」をしている必要があります

注 - SQLクエリを使用してバッジを作成するのを見ましたが、実際にはこれに非常に慣れていないため、これらの上記のルールを達成するためにSQLクエリをどこに配置すればよいか(必要な場合)教えていただけますでしょうか。

「いいね!」 1

お役に立てますでしょうか?

「いいね!」 4

ありがとうございます。
SQLクエリオプションを有効にしましたが、その後の小さなことで行き詰まっています。それが終われば大丈夫です。

カスタムバッジルールが複雑なため、データベースを表示するにはどうすればよいですか?いくつか確認したいことがあります。

  1. 独自のクエリを作成できるように、データベースを表示するにはどうすればよいですか?
  2. クエリを作成した後、これらのバッジをテストするにはどうすればよいですか?

この2点について回答いただければ、安心して眠りにつくことができます。

「いいね!」 1

最も簡単な方法は、discourse-data-explorer プラグインをインストールすることです。これにより、以下のようなインターフェイスが提供されます。

「いいね!」 3

プラグインをインストールし、以下のSQLコマンドを実行したところ、これらの3つのルールを満たすユーザーが表示されましたが、ユーザーが投稿でアクションを起こしたときにトリガーに変換する方法がわかりません。

SQLコマンド -
select users.username, user_stats.user_id from user_stats Inner Join users ON user_stats.user_id = users.id where post_count = 2 AND likes_given = 1 AND uploaded_avatar_id > 0

この投稿を参考にしています: Creating triggered custom badge queries しかし、Discourseに本当に慣れていないため、まだ作成できません。

これを修正するのを手伝っていただけますか?一度完了できれば、他のカスタムバッジもより少ない労力で自分で作成できるようになります。
@Lhc_fl

「いいね!」 1

これは「トリガー:日次更新」のSQLコードです。

SELECT st.user_id user_id, current_timestamp granted_at
FROM user_stats st
JOIN users u
ON st.user_id = u.id
WHERE st.post_count >= 2 AND st.likes_given >= 1 AND u.uploaded_avatar_id > 0

他のトリガーは特定の何かに依存しており、SQLの専門家を見つけない限り、それらを使用することはお勧めしません。(私はSQLに詳しくありません)

「いいね!」 3

ありがとうございます。基本的な質問が3つあります。

  1. stu tableとは何ですか?また、これらのテーブルの使用方法と、なぜこれらのテーブルがエクスプローラープラグインタブに表示されないのですか?

  2. このトリガー更新は毎日何時に実行されますか?具体的に時間を教えてください。

  3. Run revocation query dailyの使用方法は何ですか?

「いいね!」 1

1? に関しては、テーブルのエイリアス名です。

FROM user_stats st という行はご覧になりますか?これは、クエリに対して stuser_stats テーブルの略であることを示しています。

JOIN ステートメントで users u と書かれている場合も同様です。これは、クエリ内で u がそのクエリの users テーブルのエイリアスであることを意味します。エイリアスは、クエリを単純化して入力の手間を省き、エラーの可能性を減らすために使用されます。

3? に関しては、そのオプションを有効にすると、クエリに基づいてユーザーがバッジの資格を失った場合に、そのバッジがアカウントから削除されます。

「いいね!」 3

ご不明な点を明確にしていただきありがとうございます。残るは2点目のみとなりました。

  1. このトリガー更新は毎日何時に実行されますか?具体的に時間を知りたいです。

おっと。答えたと思った。
クエリは、コンテナを開始した時刻に基づいて24時間ごとに実行されます。そのため、UTC 0時頃に実行されるインスタンスが1つと、UTC 6時過ぎに実行される別のインスタンスがあります。

このクエリが実行されるタイミングを変更することはできますか、またはこのクエリを「ユーザーが投稿にアクションを起こしたとき」または「ユーザーが投稿を編集または作成したとき」に変更することはできますか?

もし可能であれば、私はこのDiscourseシステムに慣れていないため、クエリを変更していただけると幸いです。一度手伝っていただければ、次回からは自分でカスタムバッジを作成できます。