ACLClouds
ACLClouds

Token de bot : jamais dans le code

Pourquoi un token ne doit figurer ni dans le code ni dans Git, et comment le lire depuis les variables d’environnement en Python et en Node.js.

Le token d’un bot est son mot de passe. Quiconque le possède peut se connecter à sa place et agir en son nom. Le réflexe à garder : le token vit dans l’environnement du bot, jamais dans le code, jamais dans Git, jamais dans un message.

  • Le token est un mot de passe : il ne va ni dans le code, ni dans Git, ni dans un message.
  • Le code lit DISCORD_TOKEN dans l’environnement et signale clairement une valeur manquante.
  • Un token exposé se réinitialise dans le portail développeur, et l’ancien cesse de fonctionner.

Pourquoi le token ne va pas dans le code

Un token écrit dans bot.py ou index.js se retrouve dans chaque copie du projet, dans l’historique Git, dans les captures d’écran et les sauvegardes. Il suffit qu’un seul de ces endroits fuite pour compromettre le bot.

  • Un dépôt Git public expose le token à tout le monde, même après suppression du fichier : l’historique le conserve.
  • Si un token fuite, réinitialisez-le aussitôt dans le portail développeur Discord : l’ancien ne fonctionne plus.
  • Un token collé dans un message de support ou dans un salon Discord est exposé lui aussi : ne le copiez jamais.

Lire le token depuis l’environnement

Une variable d’environnement est une valeur que le système transmet au programme au lancement. Le code la lit par son nom, et le token reste en dehors du projet.

  • Python : importez os, puis token = os.environ["DISCORD_TOKEN"] et bot.run(token).
  • Node.js : client.login(process.env.DISCORD_TOKEN), sans rien d’autre dans le fichier.
  • En local, un fichier .env peut contenir DISCORD_TOKEN=votre_token, à ajouter à .gitignore pour ne jamais le committer.

Vérifier et réagir

Un code qui lit une variable vide doit échouer clairement, plutôt que tenter une connexion avec un token vide. Le message d’erreur indique alors ce qui manque.

  • Python : if not token: raise SystemExit("DISCORD_TOKEN manquant") avant de lancer le client.
  • Node.js : if (!process.env.DISCORD_TOKEN) throw new Error("DISCORD_TOKEN manquant");
  • Code 4004 de la passerelle ou LoginFailure : le token est faux ou a été réinitialisé. Vérifiez la variable, sans la recopier ailleurs.

Pourquoi ACLClouds garde le token hors du dépôt

Le token se saisit dans l’espace du bot sur le tableau de bord ACLClouds, pas dans le code. Le champ refuse d’ailleurs un token saisi sous forme de nom de variable.

  • Le token se saisit dans le tableau de bord du bot, sans être écrit dans les fichiers du projet.
  • Le champ refuse un nom de variable comme DISCORD_TOKEN à la place du token, pour éviter une erreur de copie.
  • Accès SFTP par bot sur le port 2222 : le code se dépose seul, sans secret à y placer.

Questions fréquentes

Puis-je mettre le token dans un fichier de configuration du projet ?

Non, même dans un fichier qui semble anodin. Gardez-le dans l’environnement ou dans le tableau de bord, et versionnez seulement un modèle .env.example sans valeur.

J’ai publié mon token par erreur, que faire ?

Réinitialisez-le tout de suite dans le portail développeur Discord, mettez à jour la variable sur le bot, puis relancez-le. Supprimer le fichier ne suffit pas : l’historique Git le conserve.

Un fichier .env est-il sûr sur le serveur ?

Il ne doit pas partir avec le code. Sur le bot, préférez les valeurs saisies dans le tableau de bord : un .env reste un outil pour les tests en local.