Für eine benutzerdefinierte Auslösung sollten Sie meiner Meinung nach die Kampagnenabfrage kopieren und anpassen können, damit sie für Abzeichen anstelle von Einladungen funktioniert.
Diese hier ist für 5 ‘Abzeichen 108’ und würde täglich aktualisiert werden.
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) )
Ich habe es kurz auf meiner Testseite getestet und es scheint gut zu funktionieren (ich löse den Badge Grant Sidekiq-Job aus, um die Wartezeit zu verkürzen). Aber hoffentlich gibt Ihnen das zumindest einen Ausgangspunkt zum Aufbau. ![]()
Es gibt auch ein paar verschiedene Beispiele hier, die Sie als Inspiration verwenden können, falls Sie sie noch nicht gefunden haben: Some common badge queries ![]()