Per uno personalizzato attivato, penso che dovresti essere in grado di copiare la query Campaigner e modificarla per funzionare per i badge invece che per gli inviti.
Questo è per avere 5 ‘Badge 108’, e verrebbe impostato per aggiornarsi quotidianamente.
SELECT u.id user_id, current_timestamp granted_at
FROM users u
WHERE u.id IN (
SELECT ub.user_id
FROM user_badges ub
WHERE ub.badge_id = 108
GROUP BY ub.user_id
HAVING COUNT(*) >= 4
) AND u.active AND u.silenced_till IS NULL AND u.id > 0 AND
(:backfill OR u.id IN (:user_ids) )
L’ho testato brevemente sul mio sito di prova e sembra funzionare bene (attivo il job Sidekiq di Badge Grant per velocizzare l’attesa). Ma spero che questo ti dia almeno un punto di partenza su cui costruire. ![]()
Ci sono anche alcuni esempi diversi qui che puoi usare come ispirazione, se non l’hai ancora trovato, Some common badge queries ![]()