Bot Discord przechodzi w offline z jednego z kilku przewidywalnych powodów: zresetowany token, wyłączona uprzywilejowana intencja, wygasłe okno głosowania przy bocie hostowanym albo usunięcie bota z serwera, od którego zależy. Gateway Discorda mówi, który to jest, kodem zamknięcia; kody 4004 oraz 4013/4014 widzisz najczęściej i każdy ma konkretną, mechaniczną naprawę, a nie radę „zrestartuj i miej nadzieję”.

A user's bot token runs on a Noxyr node and comes online as their own branded bot. Your token Noxyr node MyBot Online

Zacznij tutaj: najbardziej prawdopodobna przyczyna najpierw

Od najczęściej występującej:

  1. Token został zresetowany. Ktoś nacisnął Reset Token w Developer Portal, celowo albo przez pomyłkę, i stary token, którego używał bot, przestał działać.
  2. Uprzywilejowana intencja została wyłączona. Server Members Intent albo Message Content Intent zostały wyłączone już po konfiguracji bota.
  3. Okno głosowania lub subskrypcji wygasło. Przy bocie hostowanym, jak Custom Bot w Noxyr, czas działania jest powiązany z głosem na Top.gg, a okno wraz z okresem ochronnym się skończyło.
  4. Bot został usunięty z serwera albo bot, od którego zależy, został usunięty. Custom Bot konkretnie zależy od obecności Noxyr; wyrzucenie Noxyr zatrzymuje custom bota na tym serwerze.
  5. Prawdziwa awaria. Sam Discord ma gorszy dzień. Zdarza się rzadko, ale zanim uznasz, że problem leży w konfiguracji, sprawdź discordstatus.com.

Co naprawdę oznaczają kody zamknięcia gatewaya

KodZnaczenieTypowa przyczyna
4004Uwierzytelnianie nieudaneToken jest błędny albo został zresetowany w Developer Portal
4013Nieprawidłowa intencja (intencje)Kod bota zażądał intencji, która nie istnieje, albo kombinacji, którą Discord odrzuca
4014Niedozwolona intencja (intencje)Bot zażądał uprzywilejowanej intencji (Server Members albo Message Content), która nie jest włączona dla aplikacji

W praktyce 4013 i 4014 pojawiają się u większości botów z tej samej przyczyny: uprzywilejowana intencja, której potrzebuje kod, jest wyłączona w portalu. Discord.js i podobne biblioteki czasem zgłaszają to w logach jako błąd „disallowed intents”, a nie jako surowy kod numeryczny, ale to ten sam problem. Nasz przewodnik po uprzywilejowanych intencjach gatewaya dokładniej omawia, co kontroluje każda intencja i co się psuje bez niej.

Naprawa każdego przypadku w Noxyr Custom Bot

Gateway 4004 albo „Discord odrzucił ten token”

Token, którym bot logował się ostatnio, już nie istnieje. Dzieje się tak, gdy token zostanie zresetowany w Developer Portal, celowo (rotacja dla bezpieczeństwa) albo przez pomyłkę (naciśnięcie Reset Token podczas przeglądania karty Bot).

  1. Otwórz Discord Developer Portal, wybierz aplikację i przejdź do karty Bot.
  2. Naciśnij ponownie Reset Token; to wygeneruje nowy. Skopiuj go od razu, bo Discord pokazuje go tylko raz.
  3. Otwórz stronę Custom Bot w panelu Noxyr i wklej nowy token.
  4. Włącz bota ponownie. Węzły Noxyr same wyłączają bota z nieważnym tokenem, żeby nie tkwił w martwej pętli ponownego łączenia; ponowne uruchomienie następuje po wklejeniu działającego tokena i włączeniu bota.

Gateway 4013/4014 albo „Discord odrzucił połączenie”

Uprzywilejowana intencja, która była włączona podczas konfiguracji, została później wyłączona, zwykle gdy ktoś klikał po karcie Bot z zupełnie innego powodu.

  1. W Developer Portal przejdź do Bot → Privileged Gateway Intents.
  2. Ponownie włącz Server Members Intent i Message Content Intent. Obie są wymagane; funkcje Noxyr (wiadomości powitalne, liczniki członków, czat AI, auto-respondery, transkrypty ticketów) potrzebują obu.
  3. Zapisz, a potem włącz bota ponownie ze strony Custom Bot w panelu. Ponieważ Discord stosuje zmiany intencji dopiero przy kolejnym logowaniu, samo ponowne włączenie przełącznika nie wystarczy; bot musi połączyć się od nowa.

Okno głosowania i okres ochronny wygasły

Custom Bot działa na podstawie głosu na Top.gg. Jeden głos odblokowuje go na 12 godzin; potem 74-godzinny okres ochronny utrzymuje bota w działaniu, podczas gdy strona w panelu się blokuje. Jeśli oba się skończą, bot przechodzi w offline, ale nic z Twojej konfiguracji nie zostaje usunięte.

  1. Zagłosuj na Noxyr na Top.gg.
  2. Wróć na stronę Custom Bot; odblokuje się od razu po zarejestrowaniu głosu.
  3. Bot uruchamia się sam, z tym samym tokenem i ustawieniami co wcześniej.

Przypomnienie w wiadomości prywatnej przychodzi 24 godziny po ostatnim głosie (12 godzin w okresie ochronnym), właśnie po to, by tego uniknąć. Jeśli status bota pokazuje „suspended”, strona sama powie, czy to głos, okres ochronny, czy kolejny problem z poniższej listy.

Noxyr został usunięty z serwera

Custom Bot działa na ustawieniach i bazie danych Noxyr dla danego serwera, więc zależy od tego, że Noxyr nadal jest członkiem. Jeśli Noxyr zostanie wyrzucony, custom bot przestaje obsługiwać ten serwer w ciągu około minuty i wysyła wiadomość prywatną do osoby, która usunęła Noxyr (oraz do właściciela bota, jeśli to ktoś inny), z linkiem zaproszeniowym.

  1. Zaproś Noxyr ponownie, używając linku z wiadomości prywatnej albo ze strony głównej Noxyr.
  2. Custom bot wraca do pracy sam, gdy Noxyr znowu jest na serwerze; nie trzeba ruszać tokena ani intencji.

Dopóki bot jest zatrzymany z tego konkretnego powodu, okno głosowania jest wstrzymane, a nie zużywane, więc szybkie ponowne zaproszenie Noxyr nie kosztuje Cię czasu na zegarze.

Jeśli żadna z powyższych metod nie pomaga

Najpierw sprawdź komunikat statusu na stronie Custom Bot; węzły Noxyr zapisują zrozumiały powód (zły token, złe intencje, zawieszenie albo ogólny komunikat o ponawianiu przy wszystkim innym), a nie gołą kod błędu. Jeśli komunikat statusu nie pasuje do żadnego z powyższych przypadków albo bot zostaje offline mimo naprawy, która powinna zadziałać, najszybciej zajmie się tym konkretnym serwerem Centrum wsparcia. Pełne kroki konfiguracji i rozwiązywania problemów są też w dokumentacji Custom Bot.

Częste pytania

Dlaczego mój bot przeszedł w offline, mimo że nic nie robiłem? „Nic” zwykle oznacza, że ktoś inny z dostępem do portalu albo serwera coś zmienił: zresetował token, przełączył intencję, wyrzucił bota. Najpierw sprawdź komunikat statusu na stronie Custom Bot; podaje przyczynę.

Czy dane przepadną, jeśli bot przejdzie w offline? Nie. Tokeny, ustawienia, tickety, produkty, faktury i transkrypty są zachowane niezależnie od tego, dlaczego bot się zatrzymał. Naprawa przyczyny przywraca wszystko dokładnie tak, jak było.

Czy mogę całkowicie uniknąć offline spowodowanego głosowaniem? Głosuj mniej więcej co trzy i pół dnia (zanim skończy się 12-godzinne okno i 74-godzinny okres ochronny), a bot z tego powodu nigdy nie przestanie działać.

Czy muszę włączać intencje ponownie za każdym razem, gdy restartuję bota? Nie. Intencje to ustawienie samej aplikacji Discord, a nie coś, co się resetuje. Gdy obie są włączone i zapisane, zostają włączone, dopóki ktoś ich nie wyłączy.

Gotowy, żeby przywrócić bota online? Usuń przyczynę opisaną powyżej, a potem uruchom bota ze strony Custom Bot, albo dodaj Noxyr za darmo, jeśli konfigurujesz go po raz pierwszy.