OffshoreVps
Tutoriels7 oct. 20265 min de lecturePar l’équipe OffshoreVps

Comment héberger un bot Discord sur un VPS

Créez un bot Discord, déployez un bot discord.js sur un VPS Linux et gardez-le en ligne avec systemd, avec des conseils sur le jeton et les intents.

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.

Fenêtre de terminal sur un VPS montrant les commandes utilisées pour héberger un bot Discord, à commencer par « curl -fsSL https://deb.nodesource.com/setup_22.x »
Le type de commandes que vous exécuterez sur votre serveur dans ce guide.

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

  1. Ouvrez le Discord Developer Portal et créez une nouvelle application.
  2. Ajoutez un Bot, copiez son jeton et gardez-le secret.
  3. Sous OAuth2, générez un lien d’invitation avec les scopes bot et applications.commands et 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
Les étapes de ce guide dans l’ordre : 1. Quelle taille de VPS ? ; 2. créer le bot dans Discord ; 3. installer Node.js ; 4. garder le jeton hors du code ; 5. l’exécuter avec systemd ; 6. Bonnes habitudes
Les étapes de ce guide, dans l’ordre.

É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é.