---
title: "Comment héberger son bot Discord Node.js (discord.js) ?"
description: "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."
category: cloud
subcategory: bot-discord
icon: tabler:brand-discord
date: 2026-11-02
author: Winheberg
slug: "heberger-bot-discord-nodejs"
order: 167
image: /statics/images/docs/fr/cloud/bot-discord/heberger-bot-discord-nodejs.webp
tags: [bot discord, discord.js, node.js, panel]
keywords: [héberger bot discord, hébergement bot discord, bot discord node.js, discord.js, token bot discord, bot discord en ligne]
link_en: "/en/docs/bot-discord/host-discord-bot-nodejs"
---

## 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](https://winheberg.com/cloud/bot-discord) 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.

> [!CAUTION]
> 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.

> [!TIP]
> 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`.

```json
{
  "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.

```javascript
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.

```bash
DISCORD_TOKEN=COLLEZ_ICI_LE_TOKEN_DE_VOTRE_BOT
```

> [!IMPORTANT]
> 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.

<img src="/statics/images/docs/fr/cloud/bot-discord/heberger-bot-discord-nodejs-1793642716357-7538a963b2e3cc5a10e3b297.webp" alt="Menu Upload du gestionnaire de fichiers avec Upload Files et Upload Folders" width="800" />

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`.

<img src="/statics/images/docs/fr/cloud/bot-discord/heberger-bot-discord-nodejs-1793642716660-8d814c3eeecc6fe1ba9903d9.webp" alt="Fichier .env avec la ligne DISCORD_TOKEN et le bouton Create File" width="800" />

Les trois fichiers apparaissent ensuite dans le gestionnaire de fichiers.

<img src="/statics/images/docs/fr/cloud/bot-discord/heberger-bot-discord-nodejs-1793642839230-4d48aa7a45797b25d05cf65f.webp" alt="Fichiers .env, index.js et package.json dans le gestionnaire de fichiers du panel" width="800" />

> [!TIP]
> Pour un projet volumineux ou de nombreux fichiers, passez par le SFTP. Notre guide [« Comment se connecter en SFTP à son serveur gaming ? »](https://winheberg.com/docs/panel-gaming/connexion-sftp-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.

<img src="/statics/images/docs/fr/cloud/bot-discord/heberger-bot-discord-nodejs-1793642839632-8b73cf7d7a949077af9f6db9.webp" alt="Menu Docker Image de la page Startup pour choisir la version de Node.js" width="800" />

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.

<img src="/statics/images/docs/fr/cloud/bot-discord/heberger-bot-discord-nodejs-1793642938117-4abad1cb10dfca10dfabb57c.webp" alt="Variables Startup ADDITIONAL NODE PACKAGES et MAIN FILE du serveur Node.js" width="800" />

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

> [!NOTE]
> 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.

<img src="/statics/images/docs/fr/cloud/bot-discord/heberger-bot-discord-nodejs-1793643098791-84b714e1521dbd6aeacb825c.webp" alt="Software Changer du panel avec les environnements node.js generic, python generic, golang, Java, sinusbot et Red Bot" width="400" />

## 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`.

```bash
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.

```bash
Ready! Logged in as MonBot#1234
```

> [!NOTE]
> 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.

<img src="/statics/images/docs/fr/cloud/bot-discord/heberger-bot-discord-nodejs-1793643098471-6519b11f0d6204c2dad900dd.webp" alt="Console du panel affichant l'erreur DiscordjsError TokenInvalid" width="720" />

- 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

- **Gardez le token dans `.env`**, jamais dans `index.js`, et ajoutez `.env` à votre `.gitignore` si 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 ? »](https://winheberg.com/docs/panel-gaming/creer-restaurer-sauvegarde-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 ? »](https://winheberg.com/docs/panel-gaming/creer-base-donnees-mysql-panel) 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 ? »](https://winheberg.com/docs/panel-gaming/ajouter-sous-utilisateur-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 🤖

