Ce qu'on va construire
Un bot Discord basique qui répond à des commandes slash. On utilisera Discord.js v14 (la version actuelle en 2026) avec Node.js 20.
À la fin de ce guide, votre bot sera en ligne 24h/24 sur Hostlio — sans avoir besoin de laisser votre PC allumé.
Prérequis
- Node.js 18 ou supérieur installé sur votre machine
- Un compte Discord et accès au Discord Developer Portal
- 15 minutes
Étape 1 — Créer l'application Discord
- Connectez-vous sur le Discord Developer Portal
- Cliquez sur New Application → donnez un nom à votre bot
- Dans le menu gauche, allez dans Bot → cliquez sur Add Bot
- Copiez le Token — gardez-le secret, ne le mettez jamais dans votre code
Dans OAuth2 → URL Generator :
- Cochez bot et applications.commands
- Dans les permissions bot, cochez au minimum Send Messages et Use Slash Commands
- Copiez l'URL générée et ouvrez-la pour inviter le bot sur votre serveur
Étape 2 — Initialiser le projet
mkdir mon-bot && cd mon-bot
npm init -y
npm install discord.js
Créez un fichier .env à la racine :
DISCORD_TOKEN=votre_token_ici
CLIENT_ID=votre_client_id_ici
Le Client ID se trouve dans OAuth2 → General sur le Developer Portal.
Étape 3 — Enregistrer les commandes slash
Créez deploy-commands.js :
const { REST, Routes, SlashCommandBuilder } = require('discord.js');
require('dotenv').config();
const commands = [
new SlashCommandBuilder()
.setName('ping')
.setDescription('Répond avec Pong !'),
new SlashCommandBuilder()
.setName('bonjour')
.setDescription('Le bot vous salue'),
].map(cmd => cmd.toJSON());
const rest = new REST().setToken(process.env.DISCORD_TOKEN);
(async () => {
console.log('Enregistrement des commandes...');
await rest.put(
Routes.applicationCommands(process.env.CLIENT_ID),
{ body: commands }
);
console.log('Commandes enregistrées.');
})();
Exécutez-le une seule fois :
node deploy-commands.js
Étape 4 — Le code principal
Créez index.js :
const { Client, GatewayIntentBits, Events } = require('discord.js');
require('dotenv').config();
const client = new Client({
intents: [GatewayIntentBits.Guilds]
});
client.once(Events.ClientReady, () => {
console.log(`Bot connecté : ${client.user.tag}`);
});
client.on(Events.InteractionCreate, async interaction => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === 'ping') {
await interaction.reply('Pong ! 🏓');
}
if (interaction.commandName === 'bonjour') {
await interaction.reply(`Bonjour ${interaction.user.username} !`);
}
});
client.login(process.env.DISCORD_TOKEN);
Testez en local :
node index.js
Étape 5 — Héberger le bot 24h/24
Votre bot fonctionne tant que votre terminal est ouvert. Dès que vous fermez votre PC, il se déconnecte.
Pour le garder en ligne en permanence, hébergez-le sur Hostlio :
- Créez un compte et commandez l'offre Starter gratuite
- Dans le gestionnaire de fichiers, uploadez
index.js,package.jsonet.env - Dans la console, exécutez
npm install - Cliquez sur Démarrer — votre bot est en ligne
Pensez à ajouter vos variables d'environnement (DISCORD_TOKEN, CLIENT_ID) dans l'onglet Variables d'environnement du panel plutôt que dans le fichier .env uploadé.
Pour aller plus loin
- Ajoutez des commandes avec des options (
addStringOption,addUserOption) - Stockez des données dans une base MongoDB ou SQLite
- Utilisez des Embeds pour des messages plus riches visuellement
- Découpez vos commandes en fichiers séparés avec le système de Handlers
Si vous hésitez encore sur le langage à choisir, consultez notre comparatif Discord.js vs Discord.py.