Faire tourner un bot Discord en Node.js ou Python
discord.js ou discord.py ? Voici comment structurer, installer et lancer votre bot Discord dans les deux langages les plus courants, proprement et sans exposer votre token.
Node.js ou Python : lequel choisir ?
Un bot Discord Node.js utilise généralement la bibliothèque discord.js, tandis qu’un bot Python repose souvent sur discord.py. Les deux solutions permettent de créer des commandes, répondre aux messages, gérer des rôles ou automatiser une communauté.
Votre choix dépend surtout du langage que vous maîtrisez et des autres outils utilisés dans votre projet.
| Critère | Node.js avec discord.js | Python avec discord.py |
|---|---|---|
| Langage | JavaScript ou TypeScript | Python |
| Installation des dépendances | npm | pip |
| Environnement isolé | Dossier node_modules | Environnement virtuel venv |
| Point fort | Écosystème JavaScript très complet | Syntaxe accessible et lisible |
| Adapté à | Bots, API web, tableaux de bord | Bots, automatisations, traitements de données |
| Fichier principal courant | index.js | bot.py |
Node.js constitue un choix logique si vous développez déjà des sites, API ou applications JavaScript. Python convient particulièrement bien aux débutants et aux projets liés à l’automatisation.
Les deux bibliothèques fonctionnent de manière asynchrone : votre bot peut attendre les événements Discord sans bloquer les autres actions.
Avant de commencer, vous devez avoir créé votre application, ajouté son compte bot et récupéré son token. Consultez le guide pour créer un bot Discord et obtenir son token si cette étape n’est pas terminée.
Structurer un projet de bot Discord
Créez un dossier réservé au projet. Il contiendra le code, la liste des dépendances et les variables d’environnement.
Pour un bot Node.js :
mon-bot-discord/
├── index.js
├── package.json
├── package-lock.json
├── .env
└── .gitignore
Pour un bot Python :
mon-bot-discord/
├── bot.py
├── requirements.txt
├── .env
├── .gitignore
└── .venv/
Le fichier .env contient le token du bot :
DISCORD_TOKEN=VOTRE_TOKEN_DISCORD
Le fichier .gitignore empêche l’envoi des secrets et fichiers locaux dans un dépôt Git :
.env
node_modules/
.venv/
__pycache__/
Vous pouvez également créer un fichier .env.example, sans véritable token, pour documenter les variables nécessaires :
DISCORD_TOKEN=
Le fichier
.env.examplepeut être partagé. Le fichier.envréel doit rester privé.
Faire tourner un bot Discord Node.js avec discord.js
Installez d’abord Node.js sur votre ordinateur ou votre serveur. Ouvrez ensuite un terminal dans le dossier du projet.
Initialisez le projet :
npm init -y
Installez discord.js et dotenv :
npm install discord.js dotenv
discord.js assure la communication avec Discord. dotenv charge les variables enregistrées dans le fichier .env.
Créez ensuite index.js :
require("dotenv").config();
const {
Client,
Events,
GatewayIntentBits,
} = require("discord.js");
const token = process.env.DISCORD_TOKEN;
if (!token) {
throw new Error("La variable DISCORD_TOKEN est absente.");
}
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
});
client.once(Events.ClientReady, (readyClient) => {
console.log(`Bot connecté : ${readyClient.user.tag}`);
});
client.on(Events.MessageCreate, async (message) => {
if (message.author.bot) {
return;
}
if (message.content.toLowerCase() === "!ping") {
await message.reply("Pong !");
}
});
client.login(token);
Ce bot :
- se connecte à Discord ;
- affiche son nom dans la console ;
- ignore les messages envoyés par les bots ;
- répond
Pong !lorsqu’un membre écrit!ping.
Lancez-le avec :
node index.js
La console doit afficher un message proche de :
Bot connecté : MonBot#0000
Comme cet exemple lit le contenu des messages, vous devez activer le Message Content Intent dans la rubrique Bot du Discord Developer Portal.
Pour arrêter le programme dans votre terminal :
Ctrl + C
Faire tourner un bot Discord en Python avec discord.py
Créez un environnement virtuel afin d’isoler les bibliothèques du projet.
Sous Windows :
py -m venv .venv
.venv\Scripts\activate
Sous Linux ou macOS :
python3 -m venv .venv
source .venv/bin/activate
Installez ensuite discord.py et python-dotenv :
python -m pip install -U discord.py python-dotenv
Vous pouvez enregistrer les dépendances dans un fichier :
python -m pip freeze > requirements.txt
Créez maintenant bot.py :
import os
import discord
from dotenv import load_dotenv
load_dotenv()
token = os.getenv("DISCORD_TOKEN")
if not token:
raise RuntimeError("La variable DISCORD_TOKEN est absente.")
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready() -> None:
print(f"Bot connecté : {client.user}")
@client.event
async def on_message(message: discord.Message) -> None:
if message.author.bot:
return
if message.content.lower() == "!ping":
await message.reply("Pong !")
client.run(token)
Ne nommez pas votre fichier discord.py. Python pourrait tenter d’importer votre fichier local à la place de la bibliothèque officielle.
Lancez le bot sous Windows avec :
py bot.py
Ou, lorsque l’environnement virtuel est actif :
python bot.py
Sous Linux ou macOS :
python3 bot.py
Comme dans l’exemple Node.js, activez le Message Content Intent dans le portail développeur Discord.
Pour quitter l’environnement virtuel après vos tests :
deactivate
Ne jamais mettre le token en dur
Le token donne à votre programme l’autorisation de se connecter comme votre bot. Une personne qui le récupère peut tenter d’en prendre le contrôle.
Évitez donc cette écriture :
client.login("VOTRE_VRAI_TOKEN");
Évitez également :
client.run("VOTRE_VRAI_TOKEN")
Le token doit être chargé depuis l’environnement :
const token = process.env.DISCORD_TOKEN;
Ou en Python :
token = os.getenv("DISCORD_TOKEN")
Avant chaque publication Git, vérifiez que .env est bien ignoré :
git status
Le fichier .env ne doit pas apparaître parmi les fichiers prêts à être ajoutés.
Ne partagez jamais le token dans :
- un dépôt GitHub public ;
- une capture d’écran ;
- un message Discord ;
- un tutoriel ;
- une archive envoyée à un tiers ;
- un ticket de support non sécurisé.
Si le token a été exposé, régénérez-le immédiatement depuis le Discord Developer Portal. Remplacez ensuite la valeur sur votre hébergement et redémarrez le bot.
Garder le bot en ligne 24 h/24
Lorsqu’il fonctionne sur votre ordinateur, le bot s’arrête dès que vous fermez le terminal, éteignez la machine ou perdez la connexion.
Pour assurer un fonctionnement continu, déployez-le sur un hébergement prévu pour les bots Discord ou sur un VPS Linux.
Sur un VPS, vous devrez généralement :
- vous connecter en SSH ;
- installer Node.js ou Python ;
- transférer le projet ;
- créer la variable
DISCORD_TOKEN; - installer les dépendances ;
- utiliser PM2 ou systemd pour maintenir le processus actif ;
- consulter régulièrement les logs.
Le guide pour se connecter à un VPS en SSH présente la première étape. Pour la mise en production complète, consultez héberger un bot Discord 24 h/24 et 7 j/7.
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é
- Un bot Discord Node.js utilise généralement
discord.js. - Un bot Python Discord peut être développé avec
discord.py. - Choisissez surtout le langage que vous maîtrisez et qui correspond à votre projet.
- Installez
discord.jsetdotenvavec npm pour Node.js. - Utilisez un environnement virtuel et installez
discord.pyavec pip pour Python. - Chargez toujours le token depuis
process.envouos.environ. - Placez le token dans
.envet ajoutez ce fichier à.gitignore. - Ne publiez jamais le token dans un dépôt, une capture ou un message.
- Activez le Message Content Intent si le bot doit lire une commande comme
!ping. - Lancez le bot avec
node index.jsoupython bot.py. - Utilisez un hébergement permanent pour éviter que le bot s’arrête avec votre ordinateur.
- Pour faire tourner un bot Discord Node.js ou Python en continu avec un panel de gestion et un support francophone, découvrez l’offre hébergement bot Discord TalCloud.