Un bot Discord se connecte à la passerelle de Discord et reste connecté, il lui faut donc une machine toujours allumée. Un petit VPS est peu coûteux, reste en ligne et ne dépend pas de votre connexion Internet personnelle. Ce guide déploie un bot Node.js avec discord.js et le maintient en vie avec systemd.
Quelle taille de VPS ?
1 vCPU et 1 à 2 Go de RAM suffisent pour la plupart des bots. Les bots plus gros, qui mettent en cache de nombreux serveurs ou traitent de l’audio, ont besoin de plus. Voir l’hébergement de bots Discord pour les offres.
Étape 1 : créer le bot dans Discord
- Ouvrez le Discord Developer Portal et créez une nouvelle application.
- Ajoutez un Bot, copiez son jeton et gardez-le secret.
- Sous OAuth2, générez un lien d’invitation avec les scopes
botetapplications.commandset ajoutez le bot à votre serveur.
Étape 2 : installer Node.js
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node -v
sudo adduser --disabled-password --gecos "" discord
Étape 3 : écrire le bot
sudo -iu discord
mkdir ~/bot && cd ~/bot
npm init -y
npm install discord.js
// index.js
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once('ready', () => console.log('Logged in as ' + client.user.tag));
client.on('interactionCreate', async (i) => {
if (i.isChatInputCommand() && i.commandName === 'ping') await i.reply('Pong!');
});
client.login(process.env.DISCORD_TOKEN);
Enregistrez la commande slash /ping une seule fois en utilisant la méthode du guide discord.js.
Étape 4 : garder le jeton hors du code
echo "DISCORD_TOKEN=your-token-here" > ~/bot/.env
chmod 600 ~/bot/.env
Étape 5 : l’exécuter avec systemd
[Unit]
Description=Discord bot
After=network-online.target
[Service]
User=discord
WorkingDirectory=/home/discord/bot
EnvironmentFile=/home/discord/bot/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now discordbot
journalctl -u discordbot -f
Nommez le fichier /etc/systemd/system/discordbot.service.
Bonnes habitudes
- N’utilisez que les intents dont vous avez besoin. Les intents privilégiés doivent être activés dans le portail.
- Si un jeton fuite un jour, réinitialisez-le immédiatement dans le portail.
- Le redémarrage en cas d’échec est configuré ci-dessus. Ajoutez une supervision si le bot compte pour une communauté.