Discord bot přejde do offline stavu z jednoho z několika předvídatelných důvodů: resetovaný token, vypnutý privilegovaný intent, vypršelé okno hlasování u hostovaného bota nebo odebrání bota z serveru, na kterém závisí. Gateway Discordu to sdělí pomocí close kódu. Kódy 4004 a 4013/4014 jsou ty, které uvidíte nejčastěji, a každý má konkrétní, mechanickou opravu místo rady typu „restartuj to a doufej“.
Začněte tady: nejpravděpodobnější příčina jako první
Seřazeno podle toho, jak často se to skutečně stává:
- Token byl resetován. Někdo stiskl Reset Token ve Developer Portalu, ať už schválně, nebo omylem, a starý token, který bot používal, je teď neplatný.
- Byl vypnut privilegovaný intent. Server Members Intent nebo Message Content Intent byl vypnut poté, co už byl bot nastavený.
- Vypršelo okno hlasování nebo předplatného. U hostovaného bota, jako je Noxyr Custom Bot, je doba běhu vázaná na hlasování na Top.gg a okno i jeho odkladná lhůta vypršely.
- Bot byl odebrán ze serveru, nebo bot, na kterém závisí. Custom Bot konkrétně závisí na přítomnosti samotného Noxyru. Když se Noxyr vyhodí, custom bot na tom serveru přestane fungovat.
- Skutečný výpadek. Discord sám má špatný den. Je to vzácné, ale než předpokládáte, že chyba je ve vašem nastavení, zkontrolujte discordstatus.com.
Co gateway close kódy ve skutečnosti znamenají
| Kód | Význam | Typická příčina |
|---|---|---|
| 4004 | Ověření selhalo | Token je špatný nebo byl resetován ve Developer Portalu |
| 4013 | Neplatné intenty | Kód bota požádal o intent, který neexistuje, nebo o kombinaci, kterou Discord odmítne |
| 4014 | Nepovolené intenty | Bot požádal o privilegovaný intent (Server Members nebo Message Content), který pro aplikaci není zapnutý |
V praxi se 4013 a 4014 u většiny botů objevují ze stejného důvodu: privilegovaný intent, který kód potřebuje, je ve Portalu vypnutý. Discord.js a podobné knihovny to někdy v logách hlásí jako chybu „disallowed intents“ místo čistého číselného kódu, ale je to stejný problém. Náš průvodce privilegovanými gateway intenty podrobněji popisuje, co který intent řídí a co se bez něj rozbije.
Oprava každého případu na Noxyr Custom Bot
Gateway 4004, nebo „Discord odmítl tento token“
Token, kterým se bot naposledy přihlásil, už neexistuje. Stává se to, když se token resetuje ve Developer Portalu, ať už schválně (rotace kvůli bezpečnosti), nebo omylem (stisknutí Reset Token při prohlížení záložky Bot).
- Otevřete Discord Developer Portal, vyberte aplikaci a přejděte na záložku Bot.
- Stiskněte znovu Reset Token, vygeneruje se nový. Hned ho zkopírujte, protože Discord ho ukáže jen jednou.
- Otevřete stránku Custom Bot na dashboardu Noxyru a vložte nový token.
- Zapněte bota znovu. Nody Noxyru automaticky vypnou bota s neplatným tokenem, aby se nezasekl ve smyčce mrtvých opětovných připojení. K restartu stačí vložit funkční token a bota zapnout.
Gateway 4013/4014, nebo „Discord odmítl připojení“
Privilegovaný intent, který byl zapnutý během nastavení, se později vypnul. Obvykle to bývá, když někdo klikal po záložce Bot kvůli něčemu jinému.
- Ve Developer Portalu přejděte na Bot → Privileged Gateway Intents.
- Znovu zapněte Server Members Intent a Message Content Intent. Oba jsou potřeba. Funkce Noxyru (uvítací zprávy, počty členů, AI chat, automatické odpovědi, přepisy tiketů) potřebují oba.
- Uložte a pak bota zapněte zpět na stránce Custom Bot na dashboardu. Discord změny intentů použije až při dalším přihlášení, takže samotné znovu zapnutí přepínače nestačí; bot se musí znovu připojit.
Okno hlasování a odkladná lhůta vypršely
Custom Bot běží na hlasování na Top.gg. Jeden hlas ho odemkne na 12 hodin. Potom 74hodinová odkladná lhůta udrží bota v chodu, zatímco se stránka na dashboardu zamkne. Když obojí vyprší, bot přejde do offline stavu, ale nic z vašeho nastavení se nesmaže.
- Hlasujte pro Noxyr na Top.gg.
- Vraťte se na stránku Custom Bot. Odemkne se hned, jakmile se hlas zaeviduje.
- Bot se restartuje sám, se stejným tokenem a nastavením jako předtím.
Připomínková DM přijde 24 hodin po vašem posledním hlasu (12 hodin do odkladné lhůty), aby k tomuto stavu nedošlo. Pokud stav bota ukazuje „pozastaveno“, stránka sama napíše, jestli jde o hlasování, odkladnou lhůtu, nebo o další problém níže.
Noxyr byl ze serveru odebrán
Custom Bot běží na nastavení a databázi Noxyru pro daný server, takže závisí na tom, že Noxyr je stále členem. Když se Noxyr vyhodí, custom bot na tom serveru přestane fungovat zhruba do minuty a pošle DM tomu, kdo Noxyr odebral (a majiteli bota, pokud je to někdo jiný), s pozvánkou.
- Pozvěte Noxyr znovu pomocí odkazu z DM, nebo z domovské stránky Noxyru.
- Custom bot se sám znovu rozběhne, jakmile je Noxyr zpět na serveru. Token ani intenty není potřeba měnit.
Dokud je bot zastavený právě z tohoto důvodu, okno hlasování je pozastavené, ne spotřebované. Když tedy Noxyr znovu pozvete hned, nepřijdete o čas na hodinách.
Když žádná z výše uvedených možností nepomůže
Nejdřív zkontrolujte stavovou zprávu na stránce Custom Bot. Nody Noxyru zapisují srozumitelný důvod (špatný token, špatné intenty, pozastaveno, nebo obecnou zprávu o opakování u všeho ostatního), a ne holý chybový kód. Pokud stavová zpráva neodpovídá žádnému z případů výše, nebo bot zůstane offline i po opravě, která měla fungovat, je nejrychlejší cesta, jak se na konkrétní server podívat, přes Support Center. Úplné kroky k nastavení a řešení problémů najdete také v dokumentaci Custom Bot.
Časté otázky
Proč bot přešel do offline stavu hned poté, co jsem nic nedělal? „Nic“ obvykle znamená, že něco změnil někdo jiný s přístupem do Portalu nebo na server: reset tokenu, přepnutí intentu, vyhození. Nejdřív zkontrolujte stavovou zprávu na stránce Custom Bot, ta příčinu pojmenuje.
Přijdu o data, když bot přejde do offline stavu? Ne. Tokeny, nastavení, tikety, produkty, faktury i přepisy se uchovají bez ohledu na to, proč bot přestal fungovat. Oprava příčiny vrátí všechno přesně do původního stavu.
Můžu se úplně vyhnout offline stavu kvůli hlasování? Hlasujte zhruba každé tři a půl dne (dřív, než vyprší 12hodinové okno plus 74hodinová odkladná lhůta), a bot kvůli tomu nikdy nevypadne.
Musím intenty zapínat znovu při každém restartu bota? Ne. Intenty jsou nastavení samotné aplikace na Discordu a nerestartují se. Jakmile jsou obě zapnuté a uložené, zůstanou zapnuté, dokud je někdo nevypne.
Připraveni dostat bota zpátky online? Opravte příčinu výše a spusťte bota ze stránky Custom Bot, nebo si přidejte Noxyr zdarma, pokud ho nastavujete poprvé.