Héberger un bot Discord Node.js

3 min de lecture07 novembre 2026

Un bot Discord n'est pas un site web : il ouvre une connexion persistante vers la passerelle Discord et n'a besoin d'aucun port HTTP public. Sur l'hébergement d'applications, il doit rester en vie, se reconnecter après une coupure réseau et garder son jeton hors du code. Voici une configuration minimale et les points qui font la différence entre un bot qui tourne une heure et un bot qui tourne des semaines.

Préparer le projet

Choisissez un runtime Node.js récent parmi ceux proposés (22 LTS est un bon compromis). Le projet contient au minimum package.json, index.js et les dépendances installées par la plateforme.

Bash
npm install discord.js
JavaScript
const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({
  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages]
});

client.once('ready', (c) => console.log(`connecté en tant que ${c.user.tag}`));

client.on('messageCreate', async (message) => {
  if (message.author.bot) return;
  if (message.content === '!ping') await message.reply('pong');
});

client.login(process.env.DISCORD_TOKEN);

client.login bloque le processus et maintient la connexion. Aucun listen n'est nécessaire. Le jeton se crée dans le portail développeur Discord et se place dans les variables d'environnement du panneau, jamais dans index.js.

Intents et commandes

Les intents déclarent ce que le bot reçoit. Demandez le minimum : Guilds suffit pour les commandes slash. MessageContent est un intent privilégié : il doit être activé dans le portail développeur, et Discord refuse la connexion sinon avec Used disallowed intents.

Pour les commandes slash, enregistrez-les une fois, pas à chaque démarrage. Un script séparé ou une variable REGISTER_COMMANDS=true que vous désactivez ensuite évite les doublons et les appels inutiles à l'API.

Mémoire et stabilité

discord.js garde des caches de guildes, salons et membres. Sur un serveur volumineux, ces caches consomment vite la mémoire de l'offre.

  • N'activez pas GuildMembers si vous n'en avez pas besoin.
  • Évitez de parcourir et stocker tous les membres au démarrage.
  • Surveillez les Map et tableaux qui grandissent sans limite.
  • Ne laissez pas un setInterval sans référence si vous le recréez à chaque événement.

La bibliothèque gère la reconnexion, mais une exception non capturée dans un gestionnaire d'événement peut faire tomber le processus. Ajoutez un écouteur error sur le client et journalisez sans quitter brutalement. Les limites de débit sont gérées par la file interne : évitez les boucles qui envoient des messages en rafale.

Sécurité du jeton

Le jeton donne un contrôle total sur le bot. S'il fuit, réinitialisez-le immédiatement dans le portail développeur : l'ancien est invalidé. Vérifiez aussi l'historique Git si le jeton y a été commité ; le retirer du dernier commit ne suffit pas. Accordez au bot les permissions strictement nécessaires sur le serveur et validez côté code les actions sensibles, sans faire confiance aux paramètres d'une commande.

Vérifier

La console affiche connecté en tant que ..., le bot apparaît en ligne, une commande répond et la mémoire reste stable après trente minutes. Une boucle de reconnexion indique souvent un jeton invalide ou un intent refusé, pas un problème réseau.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi