Okay, ich habe dieses Lurkers-Abzeichen und es funktioniert derzeit:
-- Lurkers: Benutzer, die Themen angesehen, aber in den letzten 30 Tagen nicht geantwortet haben,
-- aber die Vergabe stoppen (und widerrufen), sobald sie ≥3 akzeptierte Antworten erhalten haben
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 (
-- Benutzer, deren eigene Themen in den letzten 30 Tagen ≥3 akzeptierte Antworten erhalten haben
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'
-- schließe Selbstannahmen aus, wenn du nur Antworten von anderen möchtest:
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 -- hat in den letzten 30 Tagen nie geantwortet
AND rs.user_id IS NULL -- hat in den letzten 30 Tagen noch keine 3 Lösungen erhalten
AND u.active = TRUE
ORDER BY u.last_seen_at DESC
Ich bin sicher, es könnte verbessert werden und ich habe es noch nicht vollständig getestet, aber meine Anfrage hier ist, eine Einschränkung des Vertrauensniveaus (auf trust_level_1) hinzuzufügen, und ich verstehe, dass ich dafür einen API-Aufruf oder ein Plugin benötige.
Diese Initiative sucht nach dem Plugin. Bitte senden Sie ein Angebot und ich werde es prüfen, schnelle Zahlung und Entwicklung.