Débutant ⏱ 9 min Mis à jour le 29 juillet 2026

Sécuriser le token et les secrets de votre bot Discord

Le token de votre bot Discord donne son contrôle total à quiconque le possède. Voici comment le protéger avec des variables d'environnement et réagir à une fuite.

Pourquoi le token du bot est-il si sensible ?

Sécuriser token bot Discord doit être une priorité dès la création de votre application. Le token est le secret utilisé par votre programme pour s’authentifier auprès de Discord et agir sous l’identité du bot.

Une personne qui récupère ce token peut tenter de connecter son propre programme et d’utiliser les permissions déjà accordées au bot. Selon sa configuration, elle pourrait notamment :

  • envoyer ou supprimer des messages ;
  • modifier certains rôles ;
  • expulser ou bannir des membres ;
  • accéder aux salons visibles par le bot ;
  • utiliser ses commandes et intégrations ;
  • perturber les serveurs sur lesquels il est installé.

Le niveau de risque dépend des permissions Discord, des intents et des fonctions du bot. Un bot administrateur représente naturellement un risque beaucoup plus élevé qu’un bot limité à l’envoi de messages dans un seul salon.

Traitez le token comme un mot de passe administrateur. Il ne doit jamais apparaître dans une capture, un message, un fichier public ou le code source partagé.

Le token n’est pas l’identifiant public de l’application. Un Application ID ou un Guild ID peut être communiqué dans de nombreux contextes, alors que le token doit rester strictement privé.

Pour revoir sa création et sa régénération, consultez le guide pour créer un bot Discord et obtenir son token.

Ne jamais mettre le token en dur dans le code

Mettre le token en dur consiste à l’écrire directement dans le fichier principal du programme.

Mauvais exemple en Node.js :

const TOKEN = "VOTRE_VRAI_TOKEN_DISCORD";

client.login(TOKEN);

Mauvais exemple en Python :

TOKEN = "VOTRE_VRAI_TOKEN_DISCORD"

client.run(TOKEN)

Cette méthode est dangereuse, car le secret peut être exposé lorsque vous :

  • envoyez le projet à un autre développeur ;
  • publiez le code sur GitHub ;
  • créez une archive de sauvegarde ;
  • partagez une capture d’écran ;
  • copiez un message d’erreur ;
  • transmettez le fichier au support.

Le bon principe consiste à séparer le code et les secrets. Votre programme lit le token depuis une variable d’environnement, sans que sa valeur apparaisse dans les fichiers destinés au dépôt.

En Node.js :

const token = process.env.DISCORD_TOKEN;

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

client.login(token);

En Python :

import os

token = os.getenv("DISCORD_TOKEN")

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

client.run(token)

Utiliser un fichier .env

Pendant le développement, un fichier .env permet de définir les variables d’environnement du projet.

Créez un fichier nommé exactement :

.env

Ajoutez le token sans guillemets inutiles :

DISCORD_TOKEN=VOTRE_TOKEN_DISCORD

Vous pouvez aussi y placer d’autres secrets :

DISCORD_TOKEN=VOTRE_TOKEN_DISCORD
DATABASE_URL=VOTRE_CHAINE_DE_CONNEXION
API_KEY=VOTRE_CLE_API
LOG_WEBHOOK_URL=VOTRE_WEBHOOK_DISCORD

Charger .env avec Node.js

Installez dotenv :

npm install dotenv

Chargez-le au début du fichier principal :

require("dotenv").config();

const token = process.env.DISCORD_TOKEN;

Avec les modules ES :

import "dotenv/config";

const token = process.env.DISCORD_TOKEN;

Charger .env avec Python

Installez python-dotenv :

python -m pip install python-dotenv

Chargez ensuite le fichier :

import os

from dotenv import load_dotenv

load_dotenv()

token = os.getenv("DISCORD_TOKEN")

Vous pouvez fournir un modèle sans secret à votre équipe :

.env.example

Contenu :

DISCORD_TOKEN=
DATABASE_URL=
API_KEY=

Le fichier .env.example peut être publié. Le véritable .env ne doit jamais l’être.

Protéger .env avec .gitignore

Le fichier .gitignore indique à Git quels fichiers ne doivent pas être suivis ni envoyés vers le dépôt.

Créez-le à la racine du projet :

.gitignore

Ajoutez au minimum :

.env
.env.*
!.env.example

node_modules/
.venv/
__pycache__/
*.log

Cette configuration ignore les fichiers .env tout en autorisant le modèle .env.example.

Avant votre premier commit, vérifiez les fichiers suivis :

git status

Le fichier .env ne doit pas apparaître dans la liste.

Vous pouvez aussi vérifier directement si Git le suit :

git ls-files .env

Si la commande retourne .env, retirez-le de l’index sans supprimer votre copie locale :

git rm --cached .env

Enregistrez ensuite la correction :

git add .gitignore
git commit -m "Retire les secrets du dépôt"

Ajouter .env à .gitignore après l’avoir committé ne supprime pas le secret de l’historique Git. Si un véritable token a déjà été envoyé, régénérez-le immédiatement.

GitHub dispose de mécanismes de détection des secrets, dont les tokens Discord. Une protection peut bloquer un push ou signaler une fuite, mais elle ne doit jamais remplacer vos propres contrôles.

Définir les variables sur le serveur

Sur un VPS, vous pouvez éviter de conserver un fichier .env dans le projet et définir les secrets directement dans l’environnement du processus.

Pour une session Linux temporaire :

export DISCORD_TOKEN="VOTRE_TOKEN_DISCORD"
node index.js

La variable disparaît généralement à la fermeture de la session. Pour un service permanent, utilisez votre gestionnaire de processus.

Avec PM2

Créez un fichier ecosystem.config.js :

module.exports = {
  apps: [
    {
      name: "mon-bot",
      script: "index.js",
      env: {
        NODE_ENV: "production",
        DISCORD_TOKEN: process.env.DISCORD_TOKEN,
      },
    },
  ],
};

Définissez le token dans l’environnement du serveur, puis démarrez le bot :

export DISCORD_TOKEN="VOTRE_TOKEN_DISCORD"
pm2 start ecosystem.config.js
pm2 save

Après une modification de variable :

pm2 restart mon-bot --update-env

Avec systemd

Un service systemd peut charger un fichier protégé :

EnvironmentFile=/etc/mon-bot/mon-bot.env

Limitez ses droits :

sudo chown root:root /etc/mon-bot/mon-bot.env
sudo chmod 600 /etc/mon-bot/mon-bot.env

Le compte utilisé par le bot doit également disposer du minimum de droits nécessaire. Pour renforcer l’ensemble du VPS, consultez le guide pour sécuriser votre serveur Linux.

Protéger les autres secrets du bot

Le token Discord n’est pas le seul secret à sécuriser. Appliquez les mêmes règles aux éléments suivants :

  • clés d’API ;
  • mots de passe MySQL ou PostgreSQL ;
  • chaînes de connexion ;
  • webhooks Discord ;
  • clés de chiffrement ;
  • jetons OAuth2 ;
  • identifiants de services externes.

Une URL de webhook Discord permet, par exemple, d’envoyer des messages dans le salon associé. Elle ne doit pas être placée dans un fichier client, une capture ou un dépôt public.

Classez vos variables clairement :

DISCORD_TOKEN=
DATABASE_URL=
PAYMENT_API_KEY=
MODERATION_WEBHOOK_URL=

N’envoyez jamais les secrets dans les logs :

console.log(process.env.DISCORD_TOKEN); // À ne pas faire

Avant de transmettre un rapport d’erreur, recherchez les tokens, mots de passe et URL privées dans le texte.

Réagir immédiatement à une fuite de token

Si votre token apparaît dans GitHub, Discord, une capture ou un fichier partagé, considérez-le comme compromis. Ne vous contentez pas de supprimer le message : une personne ou un système automatisé peut déjà l’avoir copié.

Procédez dans cet ordre :

  1. ouvrez le Discord Developer Portal ;
  2. sélectionnez votre application ;
  3. ouvrez l’onglet Bot ;
  4. cliquez sur Reset Token ;
  5. copiez le nouveau token dans un emplacement sécurisé ;
  6. remplacez l’ancienne valeur sur l’hébergement ;
  7. redémarrez le bot ;
  8. retirez le secret du dépôt et des fichiers partagés ;
  9. vérifiez les actions récentes du bot.

Le redémarrage peut ressembler à ceci avec PM2 :

pm2 restart mon-bot --update-env
pm2 logs mon-bot

GitHub analyse les dépôts pour rechercher certains secrets pris en charge. Lorsqu’un token Discord est détecté, il peut être signalé à Discord et déjà avoir été invalidé. Régénérez-le tout de même vous-même sans attendre.

Nettoyer l’historique Git

Supprimer seulement la ligne dans le dernier commit ne retire pas le token des anciennes versions.

Après avoir régénéré le token, vous pouvez retirer un fichier .env de l’historique avec un outil comme git-filter-repo :

git filter-repo --path .env --invert-paths

Cette opération réécrit l’historique. Effectuez une sauvegarde du dépôt, prévenez les autres contributeurs et suivez la documentation GitHub avant de forcer la mise à jour du dépôt distant.

La priorité reste la rotation du secret : nettoyer l’historique ne rend pas un token compromis à nouveau sûr.

Des sauvegardes automatiques sont incluses pour vous aider à restaurer. Conservez aussi vos propres exports réguliers : vous restez responsable de vos données.

En résumé

  • Sécuriser token bot Discord empêche un tiers d’utiliser l’identité et les permissions du bot.
  • Ne placez jamais le token directement dans le code source.
  • Chargez-le avec process.env.DISCORD_TOKEN ou os.getenv("DISCORD_TOKEN").
  • Utilisez .env uniquement comme fichier local de développement.
  • Ajoutez .env à .gitignore avant le premier commit.
  • Vérifiez les fichiers suivis avec git status et git ls-files .env.
  • Sur un VPS, préférez une variable d’environnement ou un fichier protégé par des permissions Linux.
  • Protégez de la même manière les clés API, mots de passe, chaînes de connexion et webhooks.
  • Ne laissez jamais un secret apparaître dans les logs ou les captures d’écran.
  • En cas de fuite, utilisez immédiatement Reset Token dans le Discord Developer Portal.
  • Remplacez le token sur l’hébergement, redémarrez le bot et nettoyez l’historique Git.
  • Pour sécuriser token bot Discord sur un hébergement avec panel de gestion et support francophone, découvrez l’offre hébergement bot Discord TalCloud.