Votre bot ne démarre pas, ne répond plus ou plante sans prévenir ? La plupart des erreurs d'un bot Discord reviennent sans cesse et se corrigent vite. Ce guide passe en revue les plus courantes, avec la solution pour chacune.
L’erreur de token invalide
C’est l’erreur la plus courante au démarrage. Le bot refuse de se connecter et affiche un message du type Improper token ou 401 Unauthorized. Parmi les erreurs d’un bot Discord, celle-ci est aussi la plus simple à résoudre.
Les causes habituelles :
- Le token a été mal copié (espace en trop, caractère manquant).
- Vous avez collé l’ID client au lieu du token.
- Le token a été régénéré sur le portail et l’ancien ne marche plus.
La solution : régénérez le token depuis le Developer Portal, recollez-le proprement dans votre fichier .env, et relancez le bot. Vérifiez bien que le code lit le token depuis la variable d’environnement.
Bon à savoir : si votre bot fonctionnait puis s'est arrêté du jour au lendemain avec une erreur de token, c'est souvent que Discord l'a révoqué après l'avoir détecté public. Régénérez-le et placez-le hors du code.
Les intents manquants
Deuxième grand classique : le bot se connecte mais ne réagit pas aux messages, ou plante avec une erreur PrivilegedIntentsRequired. Le coupable, ce sont les intents.
Discord exige que vous déclariez explicitement les événements que votre bot écoute. Deux niveaux de correction :
- Sur le portail : dans l’onglet Bot, activez les Privileged Gateway Intents nécessaires (notamment Message Content).
- Dans le code : déclarez les mêmes intents.
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
Les deux doivent correspondre. Un intent activé dans le code mais pas sur le portail provoque une erreur au démarrage.
Le bot qui passe hors ligne
Votre bot fonctionne, puis disparaît au bout de quelques heures. C’est rarement un bug de code : c’est l’environnement d’exécution.
| Symptôme | Cause probable | Solution |
|---|---|---|
| S’arrête quand le PC s’éteint | Hébergé sur votre machine | Hébergement dédié |
| Tombe après inactivité | Offre gratuite en veille | Offre stable |
| Disparaît après un crash | Pas de relance automatique | Gestionnaire de processus |
La parade durable est d’exécuter le bot sur un hébergement de bot Discord allumé en permanence, avec un gestionnaire comme PM2 qui le relance automatiquement. Si vous partez de zéro sur ce point, notre guide pour garder un bot toujours en ligne détaille la méthode.
Les erreurs de rate limit
Quand un bot envoie trop de requêtes en peu de temps, Discord le bride : c’est le rate limit (429 Too Many Requests). Le bot devient lent ou cesse de répondre temporairement.
Les déclencheurs typiques :
- Une boucle qui envoie des messages sans pause.
- Trop de modifications de salons ou de rôles d’affilée.
- Un événement mal géré qui se déclenche en rafale.
Pour corriger : ajoutez des délais entre les actions répétées, regroupez les opérations quand c’est possible, et laissez la bibliothèque gérer la file d’attente plutôt que de la contourner. Bien utilisées, discord.py et discord.js gèrent déjà une partie du rate limiting pour vous.
Les plantages silencieux
Plus sournois : le bot s’arrête sans message clair, à cause d’une exception non gérée. Une commande reçoit une mauvaise saisie, une requête échoue, et tout le processus tombe.
Quelques réflexes pour s’en prémunir :
- Encadrez les zones risquées avec une gestion d’erreurs (
try/exceptoutry/catch). - Activez et consultez les logs pour identifier la ligne fautive.
- Ajoutez un handler d’erreurs global sur vos commandes.
- Comptez sur le redémarrage automatique comme dernier filet de sécurité.
client.on("error", console.error);
process.on("unhandledRejection", (err) => console.error(err));
Avec des logs lisibles et une relance automatique, un incident ponctuel ne se transforme jamais en panne durable.
Les slash commands qui n’apparaissent pas
Erreur très fréquente depuis le passage aux commandes en barre oblique : vous avez codé une commande /, mais elle n’apparaît nulle part sur le serveur.
Les causes habituelles :
- Vous avez oublié de synchroniser les commandes auprès de Discord (
tree.sync()en Python, enregistrement REST en Node.js). - La synchronisation globale prend du temps à se propager (jusqu’à une heure).
- Le bot n’a pas été invité avec le scope
applications.commands.
Pour tester rapidement pendant le développement, enregistrez vos commandes au niveau d’un serveur précis (guild) plutôt que globalement : la mise à jour est alors quasi instantanée.
Méthode pour diagnostiquer vite
Face à une erreur, suivez toujours la même démarche plutôt que de modifier le code au hasard. C’est ce qui distingue un dépannage efficace.
- Lisez le message d’erreur en entier : il indique souvent la ligne et la cause exactes.
- Vérifiez les logs du bot, pas seulement la dernière ligne.
- Isolez : la dernière chose que vous avez modifiée est la première à suspecter.
- Reproduisez l’erreur volontairement pour confirmer la cause.
- Corrigez puis relancez, et vérifiez que le problème a bien disparu.
Bon à savoir : conservez vos logs sur la durée, pas seulement en direct. Une erreur intermittente, qui n'apparaît qu'une fois par jour, est presque impossible à corriger sans un historique des journaux.
En résumé
La majorité des erreurs d’un bot Discord se résume à quelques cas : token invalide, intents manquants, bot hors ligne faute d’hébergement stable, rate limit et plantages non gérés. Chacune a une correction simple, à condition de lire les logs et d’avoir une infrastructure fiable derrière. Un hébergement allumé en permanence, avec redémarrage automatique, élimine d’emblée les pannes les plus pénibles.
