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.
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.
Les trois fichiers apparaissent ensuite dans le gestionnaire de fichiers.
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.
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.
| 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.
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.
- Vérifiez que le fichier s'appelle exactement
.envet qu'il se trouve à la racine, à côté deindex.js - Vérifiez que le nom de la variable est identique dans
.envet dans le code,DISCORD_TOKENdans 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,GuildMembersouGuildPresences - 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.jsonse trouve à la racine et que discord.js figure dans sa sectiondependencies - Vérifiez que
package.jsonn'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 installinstalle 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
- Gardez le token dans
.env, jamais dansindex.js, et ajoutez.envà votre.gitignoresi votre code est sur Git - N'envoyez pas
node_modules, le serveur installe lui-même les bibliothèques au démarrage - Faites une sauvegarde avant une mise à jour importante du bot ou de discord.js, notre guide « Comment créer et restaurer une sauvegarde de son serveur gaming ? » explique la marche à suivre
- Utilisez une base MySQL si votre bot doit conserver des données, notre guide « Comment créer une base de données MySQL depuis le panel gaming ? » s'applique aussi au service Bot Discord
- Donnez un accès sous-utilisateur aux personnes qui vous aident plutôt que de partager votre mot de passe, comme l'explique notre guide « Comment ajouter un sous-utilisateur à son panel gaming ? »
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 🤖
