ACLClouds
ACLClouds

Bot Discord hors ligne : les causes et comment les corriger

Token refusé, intents non autorisés, crash, DNS, limites de requêtes ou mise en veille : comment lire l’erreur de votre bot Discord et le remettre en

Un bot Discord passe hors ligne pour cinq raisons principales : le programme s’est arrêté, le token est refusé, un intent n’est pas autorisé, le réseau ne joint plus Discord, ou l’hébergeur a mis le bot en veille. La console de votre bot indique presque toujours laquelle : voici comment lire ce message et corriger chaque cas.

  • Lisez la première erreur de la console : les suivantes en sont souvent la conséquence.
  • Une erreur 401 ou 4004 signale un token refusé : générez-en un nouveau avec Reset Token.
  • Le code 4014 signale un intent privilégié à activer sur le Developer Portal.
  • Le code de sortie 137 indique en général une mémoire dépassée.

Lire la première erreur

Avant de modifier le code, ouvrez la console ou les logs et remontez jusqu’à la première erreur affichée après le démarrage. Les lignes suivantes en sont souvent la conséquence. Notez aussi l’heure de l’arrêt : un arrêt à heure fixe n’a pas la même cause qu’un arrêt au premier message.

  • Le bot ne démarre pas du tout : dépendance, fichier ou version.
  • Le bot démarre puis se déconnecte : token, intents ou réseau.
  • Le bot reste connecté mais ne répond plus : erreur dans une commande ou limite de requêtes.

Token refusé ou réinitialisé

Une erreur 401 ou le code de fermeture 4004 (Authentication failed) signifie que Discord refuse le token. Il a pu être réinitialisé depuis le Developer Portal, ou par Discord lui-même s’il a été publié, par exemple dans un dépôt GitHub public. Générez un nouveau token avec Reset Token, remplacez-le dans la variable DISCORD_TOKEN, puis redémarrez.

  • Copiez le token de la page Bot, pas l’ID de l’application ni le secret client.
  • Supprimez les espaces et les guillemets autour de la valeur.
  • Gardez le token hors du code, comme l’explique le guide pour ranger les tokens et variables secrètes.

Intents non autorisés

Le code de fermeture 4014 (Disallowed intent(s)) apparaît quand le code demande un intent privilégié qui n’est pas activé sur le Developer Portal : Message Content, Server Members ou Presence. Activez-le dans l’onglet Bot, ou retirez-le du code si le bot n’en a pas besoin. Au-delà de 100 serveurs, ces intents demandent en plus une validation de Discord.

  • discord.py : intents.message_content = True doit correspondre au réglage du portail.
  • discord.js : GatewayIntentBits.MessageContent suit la même règle.
  • Les commandes slash fonctionnent sans Message Content.

Crash, mémoire et dépendances

Un programme qui s’arrête emporte le bot avec lui. Cannot find module ou ModuleNotFoundError signale une dépendance absente de package.json ou de requirements.txt. Un arrêt avec le code 137 indique en général que le bot a dépassé sa mémoire : cache trop grand, fuite ou lecture audio. Une exception non gérée dans un événement peut aussi arrêter le processus.

  • Corrections pas à pas : module Node.js introuvable et module Python introuvable.
  • Mémoire dépassée : le guide du code de sortie 137.
  • Entourez chaque commande d’un try/catch (Node.js) ou d’un try/except (Python) qui écrit l’erreur dans les logs.

Réseau, DNS et limites de requêtes

getaddrinfo EAI_AGAIN ou ECONNRESET signale une coupure DNS ou réseau entre le bot et Discord. discord.js et discord.py se reconnectent seuls à la gateway ; si l’erreur se répète, notez l’heure et transmettez-la à votre hébergeur. Une réponse 429 indique une limite de requêtes : le bot envoie trop d’appels, souvent dans une boucle. Discord bloque aussi temporairement une adresse IP qui enchaîne les requêtes invalides, 10 000 en 10 minutes, par exemple avec un token refusé.

  • Ne relancez pas le bot en boucle avec un token invalide : chaque tentative compte comme une requête invalide.
  • Laissez la bibliothèque gérer les réponses 429 : discord.js et discord.py attendent le délai indiqué par Discord.
  • Évitez de modifier les rôles ou les messages de nombreux membres dans une seule boucle.

Mise en veille et échéance

Certains hébergements gratuits arrêtent un bot inactif ou après un quota d’heures : vérifiez les conditions de votre offre. Sur l’offre Free ACLClouds, le bot n’est pas mis en veille : il s’arrête seulement si le renouvellement gratuit de 4 jours n’est pas fait. La prochaine expiration est affichée sur la carte du service.

  • Un bot hébergé chez vous s’arrête aussi avec votre PC ou votre box.
  • Pour une disponibilité continue, suivez notre guide pour héberger un bot Discord 24/7.

Pourquoi choisir ACLClouds pour ce bot

Le panel aide à corriger les pannes les plus fréquentes sans quitter le navigateur. Quand le token manque, la console affiche une carte pour le coller et redémarrer le bot. Quand le fichier de démarrage est introuvable, elle le cherche dans les sous-dossiers et propose de corriger le chemin en un clic. Un bot arrêté de façon inattendue redémarre automatiquement.

  • Console et logs en direct dans le panel, offre gratuite comprise.
  • Un accès SFTP propre à chaque bot (port 2222), offre gratuite comprise.
  • Offre Free sans mise en veille, renouvelable gratuitement tous les 4 jours : suivez le tutoriel Python et Node.js.

Questions fréquentes

Pourquoi mon bot est-il hors ligne alors que le code n’a pas changé ?

Le plus souvent, le token a été réinitialisé, l’hébergement est arrivé à échéance ou le réseau ne joint plus Discord. La première erreur de la console indique lequel.

Que signifie l’erreur 4014 ?

Le bot demande un intent privilégié (Message Content, Server Members ou Presence) qui n’est pas activé dans l’onglet Bot du Developer Portal. Activez-le ou retirez-le du code.

Comment savoir si mon token a fuité ?

Une erreur 401 ou 4004 soudaine, sans modification de votre part, en est le signe habituel. Générez un nouveau token avec Reset Token et vérifiez qu’il n’apparaît dans aucun dépôt public.

Mon bot est en ligne mais ne répond pas : que vérifier ?

Vérifiez que les commandes slash sont synchronisées, que le bot a les permissions du salon et que l’intent Message Content est activé pour les commandes à préfixe. Lisez ensuite les erreurs affichées à chaque commande.