ACLClouds
ACLClouds

Discord Bot offline: Ursachen und wie Sie sie beheben

Token abgelehnt, nicht erlaubte Intents, Absturz, DNS, Rate Limits oder Ruhezustand: So lesen Sie den Fehler Ihres Discord Bots und bringen ihn wieder

Ein Discord Bot geht aus fünf Hauptgründen offline: Das Programm wurde beendet, der Token wird abgelehnt, ein Intent ist nicht erlaubt, das Netzwerk erreicht Discord nicht mehr, oder der Hoster hat den Bot in den Ruhezustand versetzt. Die Konsole Ihres Bots zeigt fast immer an, welcher Grund vorliegt. So lesen Sie diese Meldung und beheben jeden Fall.

  • Lesen Sie den ersten Fehler in der Konsole: Die folgenden sind oft nur dessen Folge.
  • Ein Fehler 401 oder 4004 weist auf einen abgelehnten Token hin: Erzeugen Sie mit Reset Token einen neuen.
  • Der Code 4014 weist auf einen privilegierten Intent hin, der im Developer Portal aktiviert werden muss.
  • Der Exit-Code 137 bedeutet in der Regel, dass der Arbeitsspeicher überschritten wurde.

Lesen Sie den ersten Fehler

Öffnen Sie vor jeder Codeänderung die Konsole oder die Logs und gehen Sie zurück bis zum ersten Fehler, der nach dem Start angezeigt wird. Die folgenden Zeilen sind oft nur dessen Folge. Notieren Sie auch die Uhrzeit des Ausfalls: Ein Ausfall zu einer festen Uhrzeit hat eine andere Ursache als ein Ausfall bei der ersten Nachricht.

  • Der Bot startet gar nicht: Abhängigkeit, Datei oder Version.
  • Der Bot startet und trennt dann die Verbindung: Token, Intents oder Netzwerk.
  • Der Bot bleibt verbunden, antwortet aber nicht mehr: Fehler in einem Befehl oder Rate Limit.

Token abgelehnt oder zurückgesetzt

Ein Fehler 401 oder der Close Code 4004 (Authentication failed) bedeutet, dass Discord den Token ablehnt. Er wurde möglicherweise im Developer Portal zurückgesetzt oder von Discord selbst, wenn er veröffentlicht wurde, etwa in einem öffentlichen GitHub-Repository. Erzeugen Sie mit Reset Token einen neuen Token, ersetzen Sie ihn in der Variable DISCORD_TOKEN und starten Sie dann neu.

  • Kopieren Sie den Token von der Seite Bot, nicht die Anwendungs-ID oder das Client Secret.
  • Entfernen Sie Leerzeichen und Anführungszeichen um den Wert.
  • Halten Sie den Token aus dem Code heraus, wie es die Anleitung zum Ablegen von Tokens und geheimen Variablen erklärt.

Nicht erlaubte Intents

Der Close Code 4014 (Disallowed intent(s)) erscheint, wenn der Code einen privilegierten Intent anfordert, der im Developer Portal nicht aktiviert ist: Message Content, Server Members oder Presence. Aktivieren Sie ihn im Tab Bot oder entfernen Sie ihn aus dem Code, wenn der Bot ihn nicht braucht. Ab 100 Servern erfordern diese Intents zusätzlich eine Freigabe durch Discord.

  • discord.py: intents.message_content = True muss der Einstellung im Portal entsprechen.
  • discord.js: Für GatewayIntentBits.MessageContent gilt dieselbe Regel.
  • Slash-Befehle funktionieren ohne Message Content.

Absturz, Arbeitsspeicher und Abhängigkeiten

Wenn das Programm abstürzt, geht der Bot mit. Cannot find module oder ModuleNotFoundError weist auf eine Abhängigkeit hin, die in package.json oder requirements.txt fehlt. Ein Abbruch mit dem Code 137 bedeutet in der Regel, dass der Bot seinen Arbeitsspeicher überschritten hat: zu großer Cache, Speicherleck oder Audiowiedergabe. Auch eine nicht behandelte Exception in einem Event kann den Prozess beenden.

  • Schritt-für-Schritt-Lösungen: Node.js-Modul nicht gefunden und Python-Modul nicht gefunden.
  • Arbeitsspeicher überschritten: die Anleitung zum Exit-Code 137.
  • Umschließen Sie jeden Befehl mit einem try/catch (Node.js) oder try/except (Python), das den Fehler in die Logs schreibt.

Netzwerk, DNS und Rate Limits

getaddrinfo EAI_AGAIN oder ECONNRESET weist auf eine DNS- oder Netzwerkunterbrechung zwischen Bot und Discord hin. discord.js und discord.py verbinden sich selbstständig wieder mit dem Gateway. Wiederholt sich der Fehler, notieren Sie die Uhrzeit und geben Sie sie an Ihren Hoster weiter. Eine Antwort 429 zeigt ein Rate Limit an: Der Bot sendet zu viele Anfragen, oft in einer Schleife. Discord sperrt außerdem vorübergehend eine IP-Adresse, die viele ungültige Anfragen hintereinander sendet, 10.000 in 10 Minuten, zum Beispiel mit einem abgelehnten Token.

  • Starten Sie den Bot nicht in einer Schleife mit einem ungültigen Token neu: Jeder Versuch zählt als ungültige Anfrage.
  • Überlassen Sie die Antworten 429 der Bibliothek: discord.js und discord.py warten die von Discord angegebene Zeit ab.
  • Ändern Sie nicht die Rollen oder Nachrichten vieler Mitglieder in einer einzigen Schleife.

Ruhezustand und Ablauf

Manche kostenlosen Hoster stoppen einen inaktiven Bot oder nach einem Stundenkontingent: Prüfen Sie die Bedingungen Ihres Angebots. Im Free-Angebot von ACLClouds wird der Bot nicht in den Ruhezustand versetzt: Er stoppt nur, wenn die kostenlose Verlängerung nach 4 Tagen nicht erfolgt. Der nächste Ablauf wird auf der Karte des Dienstes angezeigt.

  • Ein Bot, der bei Ihnen zu Hause läuft, stoppt auch mit Ihrem PC oder Router.
  • Für durchgehende Verfügbarkeit folgen Sie unserer Anleitung, um einen Discord Bot rund um die Uhr zu hosten.

Warum ACLClouds für diesen Bot

Das Panel hilft, die häufigsten Ausfälle direkt im Browser zu beheben. Fehlt der Token, zeigt die Konsole eine Karte an, um ihn einzufügen und den Bot neu zu starten. Wird die Startdatei nicht gefunden, sucht sie sie in den Unterordnern und bietet an, den Pfad mit einem Klick zu korrigieren. Ein unerwartet beendeter Bot startet automatisch neu.

  • Konsole und Live-Logs im Panel, auch im kostenlosen Angebot.
  • Ein eigener SFTP-Zugang für jeden Bot (Port 2222), auch im kostenlosen Angebot.
  • Free-Angebot ohne Ruhezustand, alle 4 Tage kostenlos verlängerbar: Folgen Sie der Anleitung für Python und Node.js.

Häufig gestellte Fragen

Warum ist mein Bot offline, obwohl sich der Code nicht geändert hat?

Meist wurde der Token zurückgesetzt, das Hosting ist abgelaufen oder das Netzwerk erreicht Discord nicht mehr. Der erste Fehler in der Konsole zeigt, welcher Fall vorliegt.

Was bedeutet der Fehler 4014?

Der Bot fordert einen privilegierten Intent an (Message Content, Server Members oder Presence), der im Tab Bot des Developer Portal nicht aktiviert ist. Aktivieren Sie ihn oder entfernen Sie ihn aus dem Code.

Wie erkenne ich, ob mein Token geleakt wurde?

Ein plötzlicher Fehler 401 oder 4004 ohne Änderung Ihrerseits ist das übliche Zeichen. Erzeugen Sie mit Reset Token einen neuen Token und prüfen Sie, dass er in keinem öffentlichen Repository auftaucht.

Mein Bot ist online, antwortet aber nicht: Was sollte ich prüfen?

Prüfen Sie, ob die Slash-Befehle synchronisiert sind, ob der Bot die Berechtigungen für den Kanal hat und ob der Intent Message Content für Befehle mit Präfix aktiviert ist. Lesen Sie anschließend die Fehler, die bei jedem Befehl angezeigt werden.