「ユーザーに通知」フラグ付きPMを奨励する

ユーザーが、公開で投稿し話題が逸れる可能性のある対立や個人的なフィードバックを、公共の場ではなく、より丁寧で友好的な方法でプライベートメッセージとして多く書き込むよう促したいと考えています。以下がバッジです:

クエリ:

SELECT p.user_id, current_timestamp AS granted_at
FROM posts AS p
JOIN topics t on t.id = p.topic_id
WHERE t.archetype = 'private_message'
AND t.title LIKE 'Your post in "%"'
AND p.post_number = 1
AND p.like_count >= 1
AND (:backfill OR p.user_id IN (:user_ids))
GROUP BY p.user_id
HAVING count(*) >= 1

フラグ付きメッセージ用の特定のトリガーが見つからなかったため、クエリではデフォルトのタイトル「Your post in …」を使用しています。このバッジはいくつかの方法で容易に悪用や不正が可能ですが、この機能への注目を高め、コミュニティにとって肯定的な行動として認識されていることを伝えることで、その目的は十分に達成されるでしょう。

これは「ユーザーに通知」の post_action に基づいているのでしょうか?

SELECT pa.user_id, current_timestamp AS granted_at
FROM post_actions pa
  JOIN posts p ON p.id = pa.related_post_id
WHERE pa.post_action_type_id = 6
  AND p.like_count >= 1
  AND (:backfill OR p.user_id IN (:user_ids))
GROUP BY pa.user_id
HAVING COUNT(*) >= 1

実際、これはフラグが立てられた投稿内のリンクであり、PMではないと思います。少し調整が必要かもしれません。

p.id = pa.related_post_id の結合を少し変更すると、うまくいくと思います。:+1:

HAVING は、1つ以上のシルバーおよびゴールドバージョンを付与したい場合にのみ必要だと思います。