Bot Discord

Comment héberger son bot Discord Node.js (discord.js) ?

Hébergez votre bot discord.js chez Winheberg, token sur le portail Discord, envoi des fichiers sur le panel, fichier .env, version de Node.js et erreurs courantes.

2 novembre 2026 Winheberg
Documentation›Bot Discord›Comment héberger son bot Discord Node.js (discord.js) ?

Contexte

Un bot Discord ne répond que tant que son programme tourne. Lancé depuis votre ordinateur, il se déconnecte dès que vous l'éteignez ou que votre connexion tombe. L'hébergement de bot Discord Winheberg fait tourner votre bot sur un serveur prévu pour cet usage. Vous le pilotez depuis le panel, avec la console en direct, le gestionnaire de fichiers et le choix de la version de Node.js.

Ce guide prend l'exemple d'un bot écrit en Node.js avec la bibliothèque discord.js. Vous allez créer le bot sur le portail des développeurs de Discord, l'inviter sur votre serveur Discord, envoyer son code sur le panel avec son token rangé dans un fichier .env, choisir la version de Node.js, puis démarrer le bot et vérifier dans la console qu'il est bien connecté.

Votre bot est écrit en Python ? Consultez plutôt notre guide « Comment héberger son bot Discord Python (discord.py) ? ».

Prérequis

  • Un service Bot Discord actif chez Winheberg, accessible depuis le panel https://panel.winheberg.com/
  • Un compte Discord et un serveur Discord sur lequel vous avez la permission Gérer le serveur
  • Le code de votre bot avec son fichier package.json, ou l'exemple fourni dans ce guide

1. Créer l'application et récupérer le token

Rendez-vous sur le portail des développeurs de Discord, https://discord.com/developers/applications, et connectez-vous avec votre compte Discord. Cliquez sur New Application, donnez un nom à votre bot puis validez avec Create.

Ouvrez ensuite la page Bot de l'application. Dans la partie Token, cliquez sur Reset Token et confirmez. Discord affiche alors le token de votre bot. Copiez-le tout de suite, car il n'est plus visible une fois la page quittée, et vous devrez alors en générer un nouveau.

Le token donne le contrôle complet de votre bot. Toute personne qui le possède peut contrôler votre bot comme si c'était le sien. Ne le publiez jamais, ni dans une capture, ni dans un message, ni dans un dépôt Git. S'il a fuité, cliquez sur Reset Token pour l'invalider et reportez le nouveau dans votre fichier .env.

Activer les intents privilégiés si votre bot en a besoin

Toujours sur la page Bot, la section Privileged Gateway Intents regroupe trois accès que Discord ne donne pas par défaut. Le bot d'exemple de ce guide n'utilise que GatewayIntentBits.Guilds, qui n'est pas privilégié. Si vous le reprenez tel quel, passez directement à l'étape 2.

Intent dans discord.js Ce qu'il permet
GatewayIntentBits.MessageContent Lire le contenu des messages, par exemple pour des commandes à préfixe comme !ping
GatewayIntentBits.GuildMembers Recevoir la liste et les mouvements des membres du serveur
GatewayIntentBits.GuildPresences Voir le statut et l'activité des membres

Activez uniquement ceux que votre code déclare. Tant que votre application compte moins de 10 000 utilisateurs, l'interrupteur du portail suffit.

2. Inviter le bot sur votre serveur Discord

Dans le portail, ouvrez la page Installation de votre application. Cochez Guild Install sous Installation Contexts, puis choisissez Discord Provided Link sous Install Link.

Dans Default Install Settings, ajoutez à Guild Install les scopes applications.commands et bot. Le menu Permissions apparaît alors. Sélectionnez-y les permissions dont votre bot a besoin, par exemple Send Messages et View Channels.

Copiez le lien d'installation affiché sur la page, ouvrez-le dans votre navigateur, choisissez votre serveur Discord et validez. Le bot apparaît dans la liste des membres, hors ligne tant que son programme ne tourne pas.

Le générateur de lien de la page OAuth2, section OAuth2 URL Generator, fonctionne aussi. Cochez les mêmes scopes bot et applications.commands, puis copiez l'URL générée en bas de page.

3. Préparer les fichiers du bot

Un bot discord.js minimal tient en trois fichiers, tous placés à la racine du serveur.

Fichier Rôle
package.json Liste les bibliothèques dont le bot a besoin
index.js Le code du bot, lancé au démarrage
.env Le token, gardé à part du code

Le fichier package.json déclare discord.js et dotenv, la bibliothèque qui lit le fichier .env.

{
  "name": "mon-bot-discord",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "discord.js": "^14.28.0",
    "dotenv": "^18.0.9"
  }
}

Le fichier index.js charge le token, connecte le bot et écrit une ligne dans la console une fois la connexion établie.

require('dotenv').config();
const { Client, Events, GatewayIntentBits } = require('discord.js');

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

client.once(Events.ClientReady, (readyClient) => {
  console.log(`Ready! Logged in as ${readyClient.user.tag}`);
});

client.login(process.env.DISCORD_TOKEN);

Le fichier .env contient une seule ligne, avec le token copié à l'étape 1 à la place du texte d'exemple.

DISCORD_TOKEN=COLLEZ_ICI_LE_TOKEN_DE_VOTRE_BOT

N'envoyez pas le dossier node_modules. À chaque démarrage, le serveur lance npm install s'il trouve un package.json à la racine et installe lui-même les bibliothèques listées.

4. Envoyer les fichiers sur le serveur

Connectez-vous au panel Winheberg et sélectionnez votre service Bot Discord. Dans le menu latéral, cliquez sur Files.

Le bouton Upload propose Upload Files pour envoyer des fichiers depuis votre ordinateur et Upload Folders pour envoyer un dossier complet. Déposez package.json, index.js et vos éventuels autres fichiers à la racine, c'est-à-dire directement dans le dossier affiché par Files, pas dans un sous-dossier.

Menu Upload du gestionnaire de fichiers avec Upload Files et Upload Folders

Le fichier .env peut être envoyé de la même façon ou créé directement sur le serveur. Pour le créer sur le serveur, cliquez sur New file. Collez la ligne DISCORD_TOKEN= suivie de votre token dans l'éditeur, cliquez sur Create File puis nommez le fichier .env.

Fichier .env avec la ligne DISCORD_TOKEN et le bouton Create File

Les trois fichiers apparaissent ensuite dans le gestionnaire de fichiers.

Fichiers .env, index.js et package.json dans le gestionnaire de fichiers du panel

Pour un projet volumineux ou de nombreux fichiers, passez par le SFTP. Notre guide « Comment se connecter en SFTP à son serveur gaming ? » détaille la connexion avec FileZilla ou WinSCP, elle fonctionne de la même manière pour un service Bot Discord.

5. Choisir la version de Node.js et le fichier principal

Dans le menu latéral, cliquez sur Startup. Le menu Docker Image fixe la version de Node.js utilisée par le bot. Il propose les images Nodejs 12 à Nodejs 25.

Menu Docker Image de la page Startup pour choisir la version de Node.js

Comme discord.js 14 demande Node.js 18 ou une version plus récente, choisissez une image à partir de Nodejs 18. Si votre bot utilise d'autres bibliothèques, vérifiez aussi les versions de Node.js qu'elles acceptent.

Plus bas, la section Variables contient les réglages du démarrage.

Variables Startup ADDITIONAL NODE PACKAGES et MAIN FILE du serveur Node.js
Variable Rôle
MAIN FILE Le fichier lancé au démarrage, index.js par défaut, 16 caractères au maximum
ADDITIONAL NODE PACKAGES Bibliothèques supplémentaires installées à chaque démarrage, séparées par des espaces
UNINSTALL NODE PACKAGES Bibliothèques à désinstaller au démarrage, séparées par des espaces

Si le point d'entrée de votre bot porte un autre nom, bot.js ou main.js par exemple, indiquez-le dans MAIN FILE. Déclarez vos bibliothèques dans package.json et gardez ADDITIONAL NODE PACKAGES pour un dépannage ponctuel.

Le menu Software Changer du panel permet de passer le service sur un autre environnement, comme Python, Go ou Java, ou sur un bot prêt à l'emploi comme SinusBot ou Red Bot. Faites une sauvegarde avant de changer d'environnement.

Software Changer du panel avec les environnements node.js generic, python generic, golang, Java, sinusbot et Red Bot

6. Démarrer le bot et vérifier la console

Dans le menu latéral, cliquez sur Console puis sur Start. Le serveur affiche la version de Node.js, installe les bibliothèques du package.json puis lance index.js. Au passage, dotenv indique qu'il a chargé une variable depuis .env.

Node.js Version: v25.9.0
added 26 packages, and audited 27 packages in 7s
◇ injected env (1) from .env

Une fois la connexion à Discord établie, le bot d'exemple écrit la ligne suivante, avec le nom de votre bot. Il passe alors en ligne dans la liste des membres de votre serveur Discord.

Ready! Logged in as MonBot#1234

Avec les versions récentes de Node.js, la ligne [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated. peut s'afficher au démarrage. Elle n'empêche pas le bot de se lancer.

Au démarrage suivant, npm install répond simplement up to date si rien n'a changé dans package.json.

En cas de problème

❌ DiscordjsError [TokenInvalid]: An invalid token was provided.

Console du panel affichant l'erreur DiscordjsError TokenInvalid
  • Vérifiez que le fichier s'appelle exactement .env et qu'il se trouve à la racine, à côté de index.js
  • Vérifiez que le nom de la variable est identique dans .env et dans le code, DISCORD_TOKEN dans l'exemple
  • Recopiez le token en entier, sans espace avant ou après
  • Si vous avez cliqué sur Reset Token entre-temps, reportez le nouveau token dans .env, l'ancien ne fonctionne plus

❌ Error: Used disallowed intents

  • Votre code demande un intent privilégié qui n'est pas activé sur la page Bot du portail des développeurs
  • Activez dans Privileged Gateway Intents l'intent correspondant, MessageContent, GuildMembers ou GuildPresences
  • Ou retirez de votre code l'intent dont le bot n'a pas besoin, puis redémarrez

❌ Error: Cannot find module 'discord.js'

  • Vérifiez que package.json se trouve à la racine et que discord.js figure dans sa section dependencies
  • Vérifiez que package.json n'est pas resté dans un sous-dossier après l'envoi d'une archive ou d'un dossier
  • Redémarrez le serveur pour que npm install installe la bibliothèque manquante

❌ Le bot s'arrête et ne redémarre pas tout seul

  • Après un plantage, le serveur relance le bot automatiquement, sauf si le plantage précédent date de moins de 60 secondes
  • La console l'indique avec la ligne Aborting automatic restart, last crash occurred less than 60 seconds ago.
  • Remontez dans la console jusqu'au premier message d'erreur, corrigez sa cause puis cliquez sur Start

Bonnes pratiques

Besoin d'aide ?

Si votre bot refuse de démarrer ou ne se connecte pas à Discord malgré ces vérifications, notre équipe est là pour vous aider. Ouvrez un ticket dans le département Technique depuis votre espace client, renseignez le champ Produit lié avec votre service Bot Discord et indiquez le message d'erreur affiché dans la console, sans jamais y joindre le token.

Votre bot Discord tourne désormais sur Winheberg 🤖

Besoin d'un serveur Bot Discord ?

Découvrez nos offres adaptées à vos besoins et lancez-vous dès maintenant.

Voir les offres