VulCode

Integracja Discord: logowanie, role po zakupie i webhooki

Gracz loguje się na stronie kontem Discord, po zakupie rangi dostaje rolę na serwerze, a po wygaśnięciu ją traci. Zamówienia i zdarzenia trafiają na kanały jako czytelne powiadomienia. Wszystko w limitach API, które Discord egzekwuje twardo.

Integracje
Integracja Discorda w panelu sklepu: produkty z rolami na serwerze, kolejność ról z rolą bota, powiadomienia webhookiem i ustawienia logowania przez Discord

Discord to część produktu, nie dodatek

Dla serwerów gier i społeczności Discord jest miejscem, gdzie gracze naprawdę są. Integracja łączy go ze sklepem, panelem i kontem gracza.

Twój serwer na Discordzie
Gracz
Kupiłem VIP-a w sklepie. Mam wysłać moderatorowi zrzut z płatności?
Bot
Nie trzeba. Płatność jest potwierdzona, więc masz już rolę VIP na serwerze i rangę w grze.
Rola po zakupie

Bot z uprawnieniem MANAGE_ROLES nadaje i zdejmuje role po zdarzeniach w sklepie. Rola i ranga w grze idą z tego samego zdarzenia.

Gracz
Skąd wiesz, że to ja płaciłem?
Bot
Logowałeś się w sklepie kontem Discord, więc zakup jest przypisany do Twojego konta.
Logowanie przez Discord

OAuth2 z zakresem identify daje profil gracza bez hasła na Twojej stronie.

Gracz
A co będzie, jak VIP wygaśnie?
Bot
Wtedy sam zdejmę rolę. Każdy zakup trafia też na kanał administracji z kwotą i rangą.
Wszystko przez kolejkę

Cały ruch wychodzący do Discorda przepuszczamy przez własne webhook-proxy, które kolejkuje zdarzenia i respektuje limity.

Na co dzień utrzymujemy cztery własne boty produkcyjne: tickety, powitania, weryfikację e-mail i porządek w rolach. Opisujemy je w portfolio integracji.

Logowanie, dołączenie do serwera i rola

Jedno logowanie w sklepie przedstawia gracza, dodaje go do serwera i pozwala nadać mu rangę. Parametr state sprawdzamy przy każdym powrocie z Discorda, bo bez niego logowanie jest podatne na CSRF.

  • Wiadomość prywatna od bota na Discordzie po dołączeniu do serwera: potwierdzenie adresu e-mail i zmiana roli z Oczekujący na Zweryfikowany

    Logowanie i dołączenie do serwera

    Gracz loguje się w sklepie kontem Discord, a z zakresem guilds.join bot od razu dodaje go do serwera i pisze do niego prywatnie. Dodać gracza może tylko bot tej samej aplikacji, który już jest na serwerze i może tworzyć zaproszenia. Pierwsza wiadomość może od razu przeprowadzić weryfikację: bot prosi o adres e-mail i wysyła kod, a do czasu potwierdzenia gracz ma rolę Oczekujący. Po wpisaniu kodu bot zdejmuje tę rolę, nadaje Zweryfikowany i odsyła gracza na kanał powitań. Przy logowaniu prosimy tylko o zakresy, których używamy, bo każdy dodatkowy zniechęca do logowania.

  • Kanał zakupów na Discordzie: bot potwierdza rangę VIP po zamówieniu z datą wygaśnięcia, a pod spodem lista rang gracza z ich źródłem

    Rola po opłaconym zakupie

    Opłacone zamówienie nadaje rolę VIP, a bot potwierdza to na kanale zakupów razem z numerem zamówienia i datą wygaśnięcia. Po terminie albo zwrocie rolę zdejmuje ten sam mechanizm, bez moderatora: codzienne zadanie zdejmuje role, którym minął termin, w tempie zgodnym z limitami Discorda. Gracz sprawdza swoje rangi komendą i przy każdej widzi, skąd pochodzi: ze sklepu z datą końca, z serwera gry albo wybrana na kanale powitań. Codzienne uzgodnienie porównuje role na serwerze z zakupami, więc rola nadana ręcznie albo zgubiona nie żyje własnym życiem, a gracz, który wyjdzie z serwera i wróci, odzyskuje rangę, jeśli zakup jest wciąż ważny.

  • Kanał zgłoszenia gracza na Discordzie: wiadomość bota z przyciskami Zamknij i Przejmij, rozmowa z obsługą i zapis rozmowy w archiwum

    Jedno konto w sklepie i na serwerze

    Gdy gracz pisze w sprawie zamówienia, zespół wie, o czyj zakup chodzi: konto na serwerze jest tym samym kontem, które płaciło w sklepie. Bot zakłada prywatny kanał zgłoszenia, widoczny tylko dla gracza i zespołu, oznacza wsparcie i daje przyciski do przejęcia i zamknięcia sprawy. Po zamknięciu zapis rozmowy trafia do archiwum zgłoszeń jako plik, więc przy kolejnym pytaniu o to samo zamówienie historia jest pod ręką. Powiadomienia o zamówieniach, zgłoszeniach i awariach mogą trafiać na kanały samym webhookiem, bez bota.

Rola po zakupie, z obsługą limitów

Nadanie roli to jedno wywołanie PUT na rolę członka serwera, które przy sukcesie zwraca 204. Reszta to reakcja na to, co Discord może odpowiedzieć.

Dziennik zdarzeń Discorda w panelu sklepu: tempo kolejki wobec globalnego limitu, lista nadanych i zdjętych ról oraz nadanie roli przy drugiej próbie po odpowiedzi 429
  • Równe tempo w limicie

    Kolejka trzyma tempo w globalnym limicie 50 zapytań na sekundę na bota, także przy masowym nadawaniu ról.

  • Gdy Discord prosi o przerwę, czekamy

    Kolejka czeka tyle sekund, ile podał Discord, i dopiero wtedy ponawia. Zgadywanie przerwy kończy się kolejnymi odmowami.

  • 403 i 404 bez ponawiania

    403 to brak uprawnień albo rola nad rolą bota, 404 to zwykle gracz spoza serwera. Nie ponawiamy ich, bo 403 liczy się do limitu 10 000 błędnych odpowiedzi na 10 minut, a 404 nie zniknie po ponowieniu.

Webhook czy bot

Nie każda integracja z Discordem potrzebuje bota.

Webhook
Bot na serwerze

Co może zrobić na serwerze

Webhook publikuje wiadomość na jednym kanale. Role zależne od zakupów, dodawanie graczy przy logowaniu i komendy wymagają bota.

Webhook: bliżej "wiadomość na kanale". Bot na serwerze: bliżej "role, członkowie i komendy".

Co trzeba ustawić

Webhookowi wystarczy adres w konfiguracji i czytelne embedy, więc to najszybsze wdrożenie. Bot to aplikacja Discord na serwerze i kolejka operacji po Twojej stronie.

Webhook: bliżej "adres w konfiguracji". Bot na serwerze: bliżej "aplikacja z botem i kolejka".

Co wie o graczu

Webhook nie zna gracza. Bot nadaje rolę temu, kto zalogował się w sklepie kontem Discord.

Webhook: bliżej "nic". Bot na serwerze: bliżej "konto połączone przy logowaniu".

Ile zmieści jedna wiadomość

Ten sam limit dla obu: do 10 embedów i łącznie 6000 znaków. Długie raporty dzielimy na kilka wiadomości.

Webhook: bliżej "10 embedów, 6000 znaków". Bot na serwerze: bliżej "10 embedów, 6000 znaków".

Najczęstsze pytania o integrację z Discordem

Odpowiedzi o rolach, logowaniu, panelu hostingu i wycenie.

Chcesz połączyć Discord ze sklepem albo panelem?

Napisz, co ma się dziać na serwerze po zakupie albo logowaniu. Odpowiemy w godzinę z pytaniami i wyceną.