Para um acionado personalizado, acho que você deve conseguir roubar a consulta do Campaigner e ajustá-la para funcionar para emblemas em vez de convites.
Este é para ter 5 ‘Emblema 108’, e seria configurado para atualizar diariamente.
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) )
Eu testei brevemente no meu site de teste e parece funcionar bem (eu aciono o trabalho Sidekiq de Concessão de Emblemas para acelerar a espera). Mas espero que isso pelo menos lhe dê um ponto de partida para construir. ![]()
Há também alguns exemplos diferentes aqui que você pode usar como inspiração, se ainda não o encontrou, Some common badge queries ![]()