Belohnungen für Stimmen
Belohnungen für Stimmen nutzen das Webhook-Ereignis server.vote: Der Handler empfängt das Ereignis, ruft Stimmdaten über die API ab, findet den Spieler in Ihrem System und gibt die Belohnung nur einmal aus.
Richten Sie zuerst den Projekt-Webhook und die Prüfung von signature ein. Stimmdaten werden über GET /votes/:vote_id abgefragt.
So funktioniert der Ablauf
- Nehmen Sie das Webhook-Ereignis an und prüfen Sie signature. Wenn is_test
trueist, geben Sie204zurück, ohne die Stimme abzurufen und ohne eine Belohnung auszugeben. - Stellen Sie sicher, dass
event_typeserver.voteist. - Verwenden Sie
event_idals ID der Stimme. - Rufen Sie Stimmdaten über GET /votes/:vote_id ab und finden Sie den Spieler in Ihrem System.
- Wenden Sie in einer Transaktion den Schutz vor erneuter Verarbeitung über
event_type+event_idan und geben Sie die Belohnung nur für ein neues Ereignis aus. - Wenn die Belohnung nicht sicher ausgegeben werden kann, geben Sie eine Fehlerantwort zurück. Nach Behebung der Ursache wiederholen Sie die Zustellung aus der Oberfläche.
Belohnungsbeispiel
Angenommen, Spieler PlayerName hat für den Server mit ID 1 gestimmt, und Ihr System soll ihm 100 Münzen gutschreiben.
- GAMEMONITORING sendet einen Webhook mit
event_type: server.voteundevent_id: 9824cabb-2203-437e-9b6c-aba43dde3e4b. - Der Handler prüft signature. Bei falscher Signatur gibt er
401zurück und stoppt. - Der Handler ruft
GET /votes/9824cabb-2203-437e-9b6c-aba43dde3e4bauf, erhält Nickname, Server und Benutzer und findet das lokale Konto. - In einer Transaktion speichert der Handler
event_type+event_idfür den Schutz vor erneuter Verarbeitung. - Für ein neues Ereignis schreibt der Handler
100Münzen in derselben Transaktion gut. - Bei erneuter Zustellung findet der Handler das bereits gespeicherte Ereignis, gibt die Belohnung nicht erneut aus und gibt
204zurück.
Der gleiche Ablauf eignet sich auch für Gegenstände, Rollen, VIP-Zeit, Promo-Codes oder Aufgaben in einer internen Queue.
Stimmenereignis
Wenn ein Server eine Stimme erhält, sendet GAMEMONITORING das Ereignis server.vote. Der Ereignis-Body enthält nur Zustelldaten: event_type, event_id, is_test und signature. Vollständige Stimmdaten müssen separat abgefragt werden.
In diesem Ereignis ist event_id die ID der Stimme. Verwenden Sie den Webhook-Body nicht als Quelle für Nickname, Server oder Benutzer: Diese Daten kommen aus der API.
Stimmdaten abrufen
Verwenden Sie event_id als vote_id und rufen Sie die Stimmdaten über GET /votes/:vote_id ab:
Für die Belohnung benötigen Sie normalerweise response.nickname, response.server und öffentliche Daten aus response.user. Wenn die Belohnung von einem bestimmten Server abhängt, prüfen Sie immer response.server.id.
So verwenden Sie die Felder: response.nickname hilft, das Spielerkonto in Ihrer Datenbank zu finden, response.server.id wählt die Belohnungsregel für den Server aus, und response.user.id kann im Belohnungsprotokoll als GAMEMONITORING-Benutzer-ID gespeichert werden.
Wenn die API vorübergehend nicht verfügbar ist oder eine unerwartete Antwort liefert, geben Sie keine Belohnung ohne Prüfung aus. Geben Sie einen Fehlercode zurück, beheben Sie die Ursache und wiederholen Sie die Zustellung aus der Oberfläche.
Schritt 3. Handler für Stimm-Belohnungen
Das Beispiel setzt den Basis-Handler fort: Es prüft die Signatur, ruft Stimmdaten ab, schützt das Ereignis vor erneuter Verarbeitung und schreibt die Belohnung in einer Transaktion gut. Ersetzen Sie den Namen der Benutzertabelle, das Kontostandfeld und die Regel zur Spielersuche durch die Struktur Ihres Systems.
Vor dem Start des Beispiels richten Sie den Projekt-Webhook ein, prüfen GET /votes/:vote_id und ersetzen die SQL-Updates für Benutzer durch Ihr Kontomodell.