Intermédiaire ⏱ 11 min Mis à jour le 29 juillet 2026

Réparer un bot Discord qui ne répond pas ou reste hors ligne

Bot Discord affiché hors ligne, ou en ligne mais muet ? La cause est presque toujours l'une de ces cinq. Voici la méthode pour diagnostiquer et le remettre en marche.

Bot Discord ne répond pas : hors ligne ou simplement muet ?

Lorsqu’un bot Discord ne répond pas, commencez par observer son statut dans la liste des membres. Un bot hors ligne et un bot connecté mais silencieux correspondent à deux problèmes différents.

SymptômeCauses probables
Bot grisé et hors ligneProcessus arrêté, crash, token invalide, hébergement indisponible
Bot en ligne mais sans réponseIntents manquants, permissions insuffisantes, erreur dans le code
Certaines commandes fonctionnentMauvaise configuration d’une commande ou d’un salon
Réponses très lentesTraitement bloquant, problème externe ou limitation de requêtes
Commande slash visible mais en échecBot hors ligne, interaction non traitée ou réponse trop tardive

Testez d’abord une fonction simple et connue, comme /ping ou !ping. Vérifiez ensuite si le problème concerne tous les salons, toutes les commandes ou seulement une action précise.

La règle d’or consiste à lire les logs avant de modifier le code. Ils indiquent généralement si le processus s’est arrêté, si Discord refuse la connexion ou si une fonction provoque une erreur.

Corrigez une cause à la fois, puis redémarrez le bot. Plusieurs modifications simultanées rendent le diagnostic beaucoup plus difficile.

Vérifier que le processus du bot fonctionne

Sur un VPS, le programme doit rester actif en permanence. Une commande lancée directement dans un terminal peut s’arrêter lorsque vous fermez la session SSH.

Si vous utilisez PM2, affichez les processus :

pm2 list

Repérez le statut de votre bot :

online
stopped
errored

Un statut stopped indique que le processus a été arrêté. Relancez-le avec :

pm2 restart mon-bot

Si le processus a été supprimé de PM2, démarrez-le à nouveau :

cd /home/votre-utilisateur/mon-bot
pm2 start index.js --name mon-bot

Consultez immédiatement ses logs :

pm2 logs mon-bot --lines 100

Une succession rapide de redémarrages dans pm2 list indique souvent que le programme crash dès son lancement. PM2 tente de le relancer, mais l’erreur reste présente.

Vérifiez également que le bot redémarre avec le VPS :

pm2 startup
pm2 save

Après l’ajout ou la suppression d’un processus, relancez toujours :

pm2 save

Pour la configuration complète, consultez le guide consacré au bot Discord 24/7 avec PM2 ainsi que le guide pour héberger un bot Discord en continu.

Corriger un token invalide ou mal chargé

Un bot ne peut pas se connecter sans token valide. Les erreurs les plus fréquentes sont :

Invalid Token
An invalid token was provided
TokenInvalid

Le problème peut apparaître lorsque :

  • le token a été régénéré dans le portail, mais pas sur l’hébergement ;
  • une faute s’est glissée pendant la copie ;
  • la variable d’environnement est absente ;
  • le fichier .env n’est pas chargé ;
  • des guillemets ou espaces ont été ajoutés ;
  • Discord a invalidé un token exposé.

Vérifiez que votre programme récupère bien la variable.

En Node.js :

require("dotenv").config();

const token = process.env.DISCORD_TOKEN;

if (!token) {
  throw new Error("DISCORD_TOKEN est absente.");
}

client.login(token);

En Python :

import os
from dotenv import load_dotenv

load_dotenv()

token = os.getenv("DISCORD_TOKEN")

if not token:
    raise RuntimeError("DISCORD_TOKEN est absente.")

client.run(token)

Après avoir changé la variable avec PM2, utilisez :

pm2 restart mon-bot --update-env

Ne publiez jamais le token dans les logs, une capture ou un dépôt Git. S’il a été exposé, utilisez immédiatement Reset Token dans le Discord Developer Portal, puis remplacez sa valeur sur l’hébergement.

Le guide créer un bot Discord et obtenir son token détaille cette procédure. Pour protéger durablement vos secrets, consultez aussi le guide pour sécuriser le token de votre bot Discord.

Activer les intents nécessaires

Un bot peut apparaître en ligne tout en ignorant les messages parce qu’il ne reçoit pas les données nécessaires.

Le Message Content Intent est particulièrement important pour les commandes à préfixe comme :

!ping
!help
!ticket

Sans cet intent, le contenu des messages peut être vide ou indisponible pour le bot.

L’intent doit être activé à deux endroits.

Dans le Discord Developer Portal :

Application > Bot > Privileged Gateway Intents

Activez :

Message Content Intent

Déclarez-le également dans le code.

Avec discord.js :

const {
  Client,
  GatewayIntentBits,
} = require("discord.js");

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
  ],
});

Avec discord.py :

import discord

intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)

Une configuration incorrecte peut produire :

Used disallowed intents
[DisallowedIntents]

Discord peut aussi fermer la connexion Gateway avec un code signalant qu’un intent privilégié n’a pas été autorisé.

Activez uniquement les intents réellement nécessaires. Un bot utilisant exclusivement des commandes slash n’a généralement pas besoin de lire le contenu de tous les messages.

Redémarrez complètement le bot après avoir modifié les intents dans le portail ou dans le code.

Vérifier les permissions du bot dans le salon

Un bot connecté peut recevoir une commande sans avoir le droit d’y répondre.

Contrôlez les permissions de son rôle et celles du salon concerné :

  • Voir le salon ;
  • Envoyer des messages ;
  • Lire l’historique des messages ;
  • Intégrer des liens ;
  • Joindre des fichiers ;
  • Utiliser les commandes de l’application.

Une erreur d’autorisation peut apparaître sous cette forme :

Missing Permissions
DiscordAPIError[50013]: Missing Permissions

Les permissions du salon peuvent remplacer celles du rôle général. Un refus explicite appliqué au bot ou à son rôle peut donc l’empêcher d’écrire uniquement dans certains salons.

Pour une commande de modération, vérifiez aussi la hiérarchie des rôles. Le rôle du bot doit être placé au-dessus du rôle qu’il tente de gérer. Sans cela, il ne pourra pas attribuer ce rôle, expulser le membre concerné ou modifier certaines permissions.

Évitez de donner la permission Administrateur pour corriger rapidement le problème. Accordez uniquement les droits nécessaires à chaque fonction.

Lire la première erreur dans les logs

Un bot peut se connecter, puis cesser de répondre lorsqu’une fonction provoque une exception. Consultez les logs avec :

pm2 logs mon-bot --lines 200

Ou lancez temporairement le programme au premier plan :

node index.js

Pour Python :

python bot.py

Recherchez la première erreur et sa stack trace. Les messages courants comprennent :

Error: Cannot find module 'discord.js'
ModuleNotFoundError: No module named 'discord'
SyntaxError
ReferenceError
TypeError
DiscordAPIError[50013]: Missing Permissions

Une dépendance manquante se corrige généralement en réinstallant le projet.

Pour Node.js :

npm install

Pour Python, dans l’environnement virtuel :

python -m pip install -r requirements.txt

Lisez le chemin et le numéro de ligne affichés dans la stack trace. Ils indiquent où l’erreur s’est produite.

Ajoutez également une gestion des erreurs autour des commandes sensibles afin que l’échec d’une action ne rende pas tout le bot silencieux.

Respecter les limites de requêtes Discord

Discord limite le nombre de requêtes envoyées à son API. Un dépassement produit une réponse :

429 Too Many Requests

Les bibliothèques comme discord.js et discord.py gèrent normalement les limites standards, mais un code mal conçu peut tout de même générer trop d’actions.

Évitez notamment :

while (true) {
  await channel.send("Message");
}

Un bot ne doit pas renvoyer immédiatement la même requête en boucle après une erreur 429. Il doit respecter le délai de nouvelle tentative communiqué par Discord.

Réduisez le volume en :

  • regroupant les notifications ;
  • ajoutant une temporisation ;
  • mettant les actions dans une file d’attente ;
  • évitant les mises à jour inutiles ;
  • limitant les logs répétitifs ;
  • supprimant les boucles d’envoi incontrôlées.

Un bot qui ignore régulièrement les limitations risque de subir des restrictions supplémentaires.

En résumé

  • Lorsqu’un bot Discord ne répond pas, vérifiez d’abord s’il est hors ligne ou seulement silencieux.
  • Utilisez pm2 list pour contrôler le processus.
  • Consultez la première erreur avec pm2 logs mon-bot.
  • Relancez le programme avec pm2 restart mon-bot.
  • Vérifiez la variable DISCORD_TOKEN si vous voyez Invalid Token.
  • Utilisez --update-env après une modification des variables PM2.
  • Activez le Message Content Intent dans le portail et dans le code pour les commandes à préfixe.
  • Corrigez Used disallowed intents en vérifiant les intents privilégiés demandés.
  • Accordez au bot les permissions nécessaires dans chaque salon.
  • Vérifiez la hiérarchie des rôles pour les commandes de modération.
  • Corrigez la première erreur de la stack trace avant les erreurs qui en découlent.
  • Respectez les limitations Discord si vous recevez 429 Too Many Requests.
  • Pour diagnostiquer un bot Discord ne répond pas et le maintenir en ligne avec un panel de gestion et un support francophone, découvrez l’offre hébergement bot Discord TalCloud.