”LoginFailure: Improper token has been passed” / TokenInvalid
Was es bedeutet: Discord hat das Token abgelehnt, mit dem sich dein Bot anmeldet. Die genaue Meldung hängt von der Bibliothek ab:- discord.py:
discord.errors.LoginFailure: Improper token has been passed. - discord.js v14:
Error [TokenInvalid]: An invalid token was provided. - ältere discord.js-Versionen:
Error [TOKEN_INVALID]: An invalid token was provided. - andere Bibliotheken: ein HTTP-
401 Unauthorizedbei der Anmeldung.
- Das Token wurde im Discord Developer Portal neu generiert oder widerrufen. Ein neu generiertes Token macht das alte überall dort, wo es verwendet wird, sofort ungültig.
- Der Token-String enthält versehentlich zusätzliche Leerzeichen oder Anführungszeichen.
- Der Code liest die falsche Umgebungsvariable, oder die Variable ist auf Square Cloud nicht gesetzt.
- Gehe zum Developer Portal → deine Anwendung → Bot → Reset Token.
- Aktualisiere das Token in den Umgebungsvariablen der Anwendung (im Dashboard unter Einstellungen → Umgebungsvariablen oder mit
squarecloud app env set). Committe das Token nie in einer Datei, die in der ZIP-Datei hochgeladen wird. - Prüfe, dass keine überflüssigen Leerzeichen oder Anführungszeichen um den Wert stehen.
- Aktualisiere die Bibliothek (
discord.js@latestoderpip install -U discord.py). - Starte die Anwendung neu, damit sie den neuen Wert lädt.
”Used disallowed intents” / Message Content Intent
Was es bedeutet: der Bot meldet sich an und erscheint online, ignoriert aber jede Nachricht, oder die Gateway-Verbindung wird mit “used disallowed intents” abgelehnt. Warum es passiert: seit 2022 ist Message Content ein privilegierter Intent. Ohne ihn an beiden Stellen explizit zu aktivieren, kommt der Nachrichteninhalt leer an (oder die Gateway-Verbindung wird verweigert, wenn dein Code einen Intent deklariert, der für die App nicht aktiviert ist). So behebst du es, an beiden Stellen:- Discord Developer Portal → deine Anwendung → Bot → Privileged Gateway Intents → aktiviere Message Content Intent.
- Deklariere ihn auch im Code:
- Starte die Anwendung neu.
Sobald ein Bot 100 Server überschreitet, erfordern privilegierte Intents (einschließlich Message Content) zusätzlich eine Genehmigung von Discord, die über dieselbe Developer-Portal-Seite beantragt wird.
Lavalink-Verbindung mit Code 1006 geschlossen
Was es bedeutet: der Lavalink-Client des Bots schließt den WebSocket abnormal mit Code 1006, oft vorangegangen von “Unexpected server response: 400”. Warum es passiert: dies ist eine Versionsinkompatibilität. Lavalink v4 ist REST-basiert und inkompatibel mit einem Client-Wrapper, der für v3 gebaut wurde, sodass der Handshake fehlschlägt und der Socket mit 1006 schließt. So behebst du es:- Gleiche die Version des Lavalink-Client-Wrappers deines Bots mit der Hauptversion des Lavalink-Servers ab (v3-Client mit v3-Server, v4-Client mit v4-Server).
- Auf Square Cloud bindet der Lavalink-Server selbst an Port
80, aber dein Bot muss sich über den Edge auf Port443mitsecure: trueverbinden. - Starte sowohl die Lavalink-Anwendung als auch die Bot-Anwendung neu, nachdem du die Versionsinkompatibilität behoben hast.
Bot geht offline, nachdem er lokal funktioniert hat
Was es bedeutet: der Bot meldet sich einwandfrei an, wenn du ihn auf deinem Rechner ausführst, geht aber offline (oder startet wiederholt neu), sobald er deployt ist. Warum es meistens passiert:- Eine instabile Verbindung auf Gateway-Ebene ohne Reconnect-Handling.
- Widersprüchliche oder inkompatible Abhängigkeitsversionen zwischen dem, was du lokal getestet hast, und dem, was in deiner Abhängigkeitsdatei steht.
- Der Bot wurde gestoppt, weil er seinen RAM oder seine CPU überschritten oder die Discord-API überflutet hat. In diesem Fall zeigen die Logs eine Zeile
[SQUARE-SHIELD], und du erhältst eine E-Mail: siehe die Statustabelle.
- Prüfe zuerst die Logs der Anwendung im Dashboard, sie zeigen den tatsächlichen Absturzgrund.
- Füge Error-Handler hinzu, damit ein vorübergehender Fehler den Prozess nicht abstürzen lässt:
process.on("unhandledRejection", ...)undclient.on("error", ...)in discord.js, entsprechendes Handling in discord.py. - Füge
AUTORESTART=truezu deinersquarecloud.apphinzu, damit Square Cloud den Bot nach einem Absturz neu startet. Standardmäßig ist das ausgeschaltet, und der Neustart erfolgt nur in den Fällen, die unterAUTORESTARTaufgeführt sind. Das hält den Bot bei vorübergehenden Fehlern am Leben, behebt aber nie ein ungültiges Token, einen Syntaxfehler oder eine fehlende Abhängigkeit: Diese brauchen weiterhin eine Korrektur im Code. - Achte auf Discord-API-Rate-Limits (429): das globale Limit liegt bei etwa 50 Anfragen/Sekunde pro Bot-Token, mit engeren Limits pro Route (Kanal erstellen/bearbeiten erlaubt etwa 2 Änderungen pro 10 Minuten pro Kanal). Cache aggressiv, verwende eine asynchrone Queue, die die Header
X-RateLimit-Remaining/X-RateLimit-Reset-Afterrespektiert, und nutze Webhooks für Massenversand. Ein Bot, der Discord weiter überflutet, wird mitABUSE_REQUESTSgestoppt.
Weiterführende Anleitungen
- Tutorial zum Hosten von Discord-Bots: einen Bot von Grund auf einrichten und deployen.
- Umgebungsvariablen: das Token außerhalb deines Codes speichern.
- App startet nicht: Upload-Fehler, fehlende Module und andere Startprobleme.

