« LoginFailure: Improper token has been passed » / TOKEN_INVALID
Ce que ça signifie : la bibliothèque rejette le token utilisé pour la connexion (discord.js lèveLoginFailure/« An invalid token was provided » ; d’autres stacks renvoient un TOKEN_INVALID en 401).
Pourquoi ça arrive :
- Le token a été régénéré ou révoqué dans le Developer Portal de Discord. Générer un nouveau token invalide instantanément l’ancien partout où il est utilisé.
- La chaîne du token a des espaces ou des guillemets copiés par accident.
- Le code lit la mauvaise variable d’environnement.
- Allez sur le Developer Portal → votre application → Bot → Reset Token.
- Mettez à jour le token dans les Variables d’environnement de cette application dans le tableau de bord Square Cloud. Ne commitez jamais le token dans un fichier envoyé dans le
.zip. - Vérifiez qu’il n’y a pas d’espaces ou de guillemets superflus autour de la valeur.
- Mettez à jour la bibliothèque (
discord.js@latestoupip install -U discord.py). - Redémarrez l’application.
« Used disallowed intents » / Message Content Intent
Ce que ça signifie : le bot se connecte et apparaît en ligne, mais ignore tous les messages, ou la gateway rejette la connexion avec « used disallowed intents ». Pourquoi ça arrive : depuis 2022, Message Content est un intent privilégié. Sans l’activer explicitement aux deux endroits, le contenu des messages arrive vide (ou la connexion à la gateway est refusée si votre code déclare un intent non activé pour l’application). Comment corriger, aux deux endroits :- Developer Portal Discord → votre application → Bot → Privileged Gateway Intents → activez Message Content Intent.
- Déclarez-le également dans le code :
- Redémarrez l’application.
Une fois qu’un bot dépasse 100 serveurs, les intents privilégiés (y compris Message Content) nécessitent aussi une approbation de Discord, demandée depuis la même page du Developer Portal.
Connexion Lavalink fermée avec le code 1006
Ce que ça signifie : le client Lavalink du bot ferme le WebSocket anormalement avec le code 1006, souvent précédé de « Unexpected server response: 400 ». Pourquoi ça arrive : c’est une incompatibilité de version. Lavalink v4 est basé sur REST et est incompatible avec un wrapper client construit pour v3, donc le handshake échoue et le socket se ferme avec 1006. Comment corriger :- Alignez la version du wrapper client Lavalink de votre bot avec la version majeure du serveur Lavalink (client v3 avec serveur v3, client v4 avec serveur v4).
- Sur Square Cloud, le serveur Lavalink lui-même se lie au port
80, mais votre bot doit s’y connecter via la périphérie sur le port443avecsecure: true. - Redémarrez à la fois l’application Lavalink et l’application du bot après avoir corrigé l’incompatibilité de version.
Le bot passe hors ligne après avoir fonctionné en local
Ce que ça signifie : le bot se connecte correctement quand vous l’exécutez sur votre machine, mais passe hors ligne (ou redémarre en boucle) une fois déployé. Pourquoi ça arrive, le plus souvent :- Une connexion instable au niveau de la gateway sans gestion de reconnexion.
- Des versions de dépendances conflictuelles ou incompatibles entre ce que vous avez testé en local et ce qui est dans votre fichier de dépendances.
- Des déclencheurs d’abus de l’API Discord (un compte reçoit un e-mail de notification dans ce cas) dus à des limites de débit dépassées de façon trop agressive.
- Vérifiez d’abord les logs de l’application dans le tableau de bord, ils montrent la véritable raison du crash.
- Ajoutez des gestionnaires d’erreurs pour qu’une erreur transitoire ne fasse pas planter le processus :
process.on("unhandledRejection", ...)etclient.on("error", ...)dans discord.js, gestion équivalente dans discord.py. - Square Cloud redémarre automatiquement une application plantée (
AUTORESTARTdans le manifeste) quand la durée de fonctionnement précédente dépassait 60 secondes, que le statut de sortie était 1, et qu’elle ne s’est pas déjà redémarrée automatiquement dans les 60 dernières minutes. Cela maintient le bot en vie à travers les erreurs transitoires, mais ne corrige jamais une erreur de code sous-jacente, une erreur de syntaxe ou une dépendance manquante, celles-ci nécessitent toujours une correction dans le code. - Surveillez les limites de débit de l’API Discord (429) : la limite globale est d’environ 50 requêtes/seconde par token de bot, avec des buckets par route plus stricts (création/modification de salon autorise environ 2 changements par 10 minutes par salon). Mettez en cache de façon agressive, utilisez une file asynchrone qui respecte les en-têtes
X-RateLimit-Remaining/X-RateLimit-Reset-After, et utilisez des webhooks pour les envois en masse.

