ACLClouds
ACLClouds

Le bot refuse de se connecter : token absent ou invalide

Un token peut être valide mais jamais lu si le code attend TOKEN alors que la plateforme l’enregistre sous DISCORD_TOKEN.

Un token peut être valide mais jamais lu si le code attend TOKEN alors que la plateforme l’enregistre sous DISCORD_TOKEN. Il doit rester dans une variable d’environnement, jamais dans le dépôt.

Procédure étape par étape

  1. Comparer le nom exact

    Repérez process.env.DISCORD_TOKEN ou os.getenv("DISCORD_TOKEN") puis utilisez exactement la même clé.

  2. Retirer espaces et guillemets

    Collez uniquement la valeur du token. Ne l’entourez pas de guillemets dans le champ « Jeton du bot Discord ».

  3. Réinitialiser en cas de fuite

    Si le token apparaît dans un log, une capture d’écran ou Git, réinitialisez-le immédiatement dans le portail des développeurs Discord.

  4. Contrôler les intents

    Une erreur liée aux intents privilégiés se corrige dans le portail des développeurs Discord et dans le code, pas en changeant de token.

Contrôler la variable sans afficher le token

const token = process.env.DISCORD_TOKEN;
console.log('DISCORD_TOKEN present:', Boolean(token), 'length:', token ? token.length : 0);

client.login(token);

Où enregistrer le token

Dans l’onglet « Démarrage », la carte « Jeton du bot Discord » enregistre le token sous le nom DISCORD_TOKEN. Les espaces et retours à la ligne collés par erreur autour de la valeur sont retirés à l’enregistrement. Le token est stocké chiffré et n’est jamais réaffiché : pour le changer, saisissez-en un nouveau.

Si votre code lit un autre nom, par exemple TOKEN ou BOT_TOKEN, deux solutions : modifier le code pour lire DISCORD_TOKEN, ou ajouter une variable portant ce nom dans la section « Variables d’environnement » du même onglet. Un nom n’accepte que des majuscules, des chiffres et _. Dans tous les cas, une valeur enregistrée ne s’applique qu’au prochain démarrage du bot.

Token absent ou token refusé

Après un arrêt, la console distingue deux situations qui ne se corrigent pas de la même façon.

Dans les deux cas, la carte contient un champ pour saisir la valeur et le bouton « Enregistrer et redémarrer », ce qui évite de changer d’onglet.

  • « Variable DISCORD_TOKEN manquante ou invalide » : le code n’a reçu aucune valeur. Le nom lu par le code et le nom enregistré ne correspondent pas, ou rien n’a encore été enregistré.
  • « Jeton Discord refusé » : une valeur a bien été transmise, mais Discord ne l’accepte pas. Le token a été régénéré, tronqué à la copie, ou ce n’est pas un token de bot.

Vérifier la connexion

Après le redémarrage, la console ne doit plus afficher d’erreur de connexion et le bot doit apparaître en ligne dans la liste des membres de votre serveur Discord. Pour un contrôle sans risque, faites afficher la présence et la longueur du token, jamais sa valeur.

Questions fréquentes

Que signifie Error [TokenInvalid]: An invalid token was provided. ?

discord.js a reçu une valeur que Discord rejette, ou aucune valeur : client.login(undefined) produit la même erreur. Vérifiez d’abord que le nom lu dans process.env est bien DISCORD_TOKEN. S’il l’est, ouvrez le portail des développeurs Discord, onglet « Bot », cliquez sur « Reset Token », copiez le nouveau token en entier et enregistrez-le.

Et discord.errors.LoginFailure: Improper token has been passed. ?

C’est l’équivalent avec discord.py. La cause la plus courante est une confusion de valeur : le « Client Secret » de l’onglet « OAuth2 » ou l’identifiant de l’application ne sont pas des tokens de bot. Le bon se copie dans l’onglet « Bot ». Si os.getenv renvoie None, l’erreur devient un TypeError : le nom de la variable ne correspond pas.

J’ai enregistré le bon token et rien ne change, pourquoi ?

Deux causes reviennent souvent. Le bot n’a pas été redémarré, alors qu’une variable ne s’applique qu’au prochain démarrage. Ou bien un fichier .env envoyé avec le projet contient un ancien token et votre code le charge avec l’option override, qui remplace la valeur fournie par la plateforme. Supprimez ce fichier du serveur : il n’est pas nécessaire.

Que faire si « Accès à Discord suspendu temporairement » s’affiche ?

Le bot a tenté trop de connexions à Discord en peu de temps, en général parce qu’il redémarrait en boucle avec un token refusé. Corrigez le token, puis attendez : l’accès revient de lui-même. Ne régénérez pas le token plusieurs fois de suite et ne relancez pas le bot en boucle, cela prolonge la suspension.