Créer un bot Discord en Node.js est un excellent point de départ pour qui maîtrise déjà JavaScript. Avec la bibliothèque discord.js, ce guide vous mène du token à votre première commande, étape par étape.
Préparer votre environnement Node.js
Pour créer un bot Discord en Node.js, installez d’abord Node.js en version 18 ou plus récente (les versions LTS sont recommandées). Vérifiez votre installation :
node --version
npm --version
Créez ensuite un dossier de projet et initialisez-le. Cela génère un fichier package.json qui décrira vos dépendances.
mkdir mon-bot && cd mon-bot
npm init -y
Vous voilà prêt à installer la bibliothèque qui fait tout le travail.
Installer discord.js
discord.js est la bibliothèque de référence pour les bots en JavaScript. On l’ajoute via npm, avec dotenv pour gérer le token proprement.
npm install discord.js dotenv
Créez un fichier .env à la racine et placez-y votre token (que nous récupérerons à l’étape suivante) :
DISCORD_TOKEN=votre_token_ici
Bon à savoir : ajoutez tout de suite .env et node_modules à votre fichier .gitignore. Cela évite de publier votre token et d'alourdir votre dépôt avec des milliers de fichiers.
Obtenir le token du bot
Le token est l’identifiant secret qui relie votre code à Discord. On le crée sur le Discord Developer Portal.
- Cliquez sur New Application, nommez votre projet.
- Dans l’onglet Bot, créez le bot et copiez son token dans votre fichier
.env. - Activez les intents nécessaires (par exemple Message Content si vous lisez des messages).
- Via OAuth2 > URL Generator, cochez
botetapplications.commands, puis invitez le bot sur votre serveur avec le lien généré.
Coder votre première commande
Place au code. Créez un fichier index.js. Voici un bot complet qui se connecte et répond à une slash command /ping :
require("dotenv").config();
const { Client, GatewayIntentBits, REST, Routes } = require("discord.js");
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once("ready", () => {
console.log(`Connecté : ${client.user.tag}`);
});
client.on("interactionCreate", async (interaction) => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === "ping") {
await interaction.reply("Pong !");
}
});
client.login(process.env.DISCORD_TOKEN);
Pour que /ping apparaisse, il faut enregistrer la commande auprès de Discord. Un petit script suffit :
const commands = [{ name: "ping", description: "Répond Pong" }];
const rest = new REST({ version: "10" }).setToken(process.env.DISCORD_TOKEN);
await rest.put(Routes.applicationCommands(CLIENT_ID), { body: commands });
Lancez ensuite votre bot avec node index.js, tapez /ping sur votre serveur, et il répond.
Structurer le bot pour grandir
Un seul fichier suffit pour débuter, mais un bot qui s’étoffe gagne à être organisé. Quelques principes :
- Séparez chaque commande dans son propre fichier, chargé dynamiquement.
- Utilisez des événements (
messageCreate,guildMemberAdd…) dans des modules dédiés. - Centralisez la configuration et les variables d’environnement.
- Ajoutez une gestion d’erreurs pour éviter qu’une exception ne stoppe tout le bot.
Cette structure vous fera gagner un temps précieux dès que votre bot dépassera quelques commandes.
Réagir aux événements
Un bot ne se limite pas aux commandes : il peut réagir à ce qui se passe sur le serveur. discord.js expose de nombreux événements faciles à écouter.
client.on("guildMemberAdd", (member) => {
const salon = member.guild.systemChannel;
if (salon) salon.send(`Bienvenue ${member} !`);
});
client.on("messageCreate", (message) => {
if (message.author.bot) return;
if (message.content === "ping") message.reply("pong");
});
Pensez toujours à ignorer les messages des bots (message.author.bot) pour éviter les boucles infinies où votre bot se répond à lui-même.
Les erreurs fréquentes en Node.js
Quelques messages reviennent souvent au démarrage. Les identifier d’emblée vous épargne du temps :
Used disallowed intents: un intent privilégié n’est pas activé sur le portail.An invalid token was provided: token mal copié ou absent du.env.Cannot read properties of undefined: vous accédez à un objet (salon, membre) qui n’existe pas, ajoutez une vérification.- Les commandes
/n’apparaissent pas : l’enregistrement n’a pas été exécuté ou a échoué.
Bon à savoir : ajoutez un gestionnaire global pour les promesses rejetées non gérées. Sans lui, une simple erreur asynchrone peut faire planter tout le processus du bot.
process.on("unhandledRejection", (error) => {
console.error("Erreur non gérée :", error);
});
Mettre le bot en ligne 24/7
Votre bot fonctionne en local, mais il s’éteint avec votre terminal. Pour qu’il reste disponible, il doit tourner sur une machine allumée en permanence, avec un gestionnaire de processus comme PM2 qui le relance après un crash.
Un hébergement de bot Discord prend tout cela en charge : vous déposez votre code Node.js, et il tourne 24h/24 en France, avec redémarrage automatique et une disponibilité de 99,9 %.
En résumé
Créer un bot Discord en Node.js avec discord.js demande peu d’étapes : préparer Node, installer la bibliothèque, récupérer le token, coder une première slash command, puis structurer le projet. Le code reste concis et idéal pour qui connaît déjà JavaScript. Une fois prêt, un hébergement stable garantit que votre bot répond à votre communauté sans interruption.
