特定のグループに対する trust_levels を制限する

はい、この lurkers バッジは現在機能しています。

-- Lurkers: 過去30日間にトピックを閲覧したが返信しなかったユーザー、
-- ただし、3つ以上の承認済み回答を受け取ったら付与を停止し(取り消す)ます。
WITH recent_readers AS (
  SELECT DISTINCT user_id
  FROM user_visits
  WHERE visited_at > CURRENT_DATE - INTERVAL '30 days'
    AND posts_read > 0
),
recent_repliers AS (
  SELECT DISTINCT user_id
  FROM posts
  WHERE created_at > CURRENT_DATE - INTERVAL '30 days'
    AND post_number > 11
    AND deleted_at IS NULL
),
recent_solutions AS (
  -- 過去30日間に自身のトピックで3つ以上の承認済み回答を受け取ったユーザー
  SELECT t.user_id
  FROM posts p
  JOIN post_custom_fields pc
    ON pc.post_id = p.id
   AND pc.name = 'is_accepted_answer'
  JOIN topics t
    ON t.id = p.topic_id
  WHERE p.created_at > CURRENT_DATE - INTERVAL '30 days'
    -- 他者からの回答のみを対象とする場合は、自己承認を除外します:
    AND p.user_id <> t.user_id
  GROUP BY t.user_id
  HAVING COUNT(*) >= 3
)
SELECT
  u.id        AS user_id,
  u.username_lower AS username,
  u.last_seen_at,
  CURRENT_TIMESTAMP AS granted_at
FROM users u
JOIN recent_readers rr
  ON rr.user_id = u.id
LEFT JOIN recent_repliers rp
  ON rp.user_id = u.id
LEFT JOIN recent_solutions rs
  ON rs.user_id = u.id
WHERE rp.user_id IS NULL         -- 過去30日間に返信なし
  AND rs.user_id IS NULL         -- 過去30日間に3つのソリューションをまだ受け取っていない
  AND u.active = TRUE
ORDER BY u.last_seen_at DESC

改善の余地があることは承知しており、テストも完了していませんが、ここでのリクエストは trust_level の制限(trust_level_1 まで)を追加する ことで、API呼び出しまたはプラグインが必要だと理解しています。

この取り組みはプラグインを探しています。見積もりをお送りいただければ、迅速な支払いと開発を検討します。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.