Para uno activado personalizado, creo que deberías poder copiar la consulta de Campaña y modificarla para que funcione para insignias en lugar de invitaciones.
Este es para tener 5 ‘Insignia 108’, y se configuraría para actualizarse 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) )
Lo he probado brevemente en mi sitio de prueba y parece funcionar bien (activo el trabajo Sidekiq de Concesión de Insignias para acelerar la espera). Pero espero que al menos te dé un punto de partida para construir. ![]()
También hay algunos ejemplos diferentes aquí que puedes usar como inspiración, si aún no lo has encontrado, Some common badge queries ![]()