Comment créer mon premier bot Node.js ?
Un hébergement bot fournit Node.js, un gestionnaire de fichiers et une console. Le token Discord doit être stocké dans une variable d’environnement.
Un hébergement bot fournit Node.js, un gestionnaire de fichiers et une console. Le token Discord doit être stocké dans une variable d’environnement.
Procédure étape par étape
-
Préparer le projet
Votre dépôt doit contenir package.json, un fichier d’entrée et un script de démarrage.
-
Commander un bot
Choisissez Bots puis l’environnement Node.js dans le configurateur de commande.
-
Importer les fichiers
Utilisez l’import GitHub ou téléversez une archive sans node_modules.
-
Ajouter le token
Créez une variable DISCORD_TOKEN dans Démarrage ou un fichier .env exclu du dépôt.
-
Installer et démarrer
Cliquez sur « Démarrer » dans la console : la plateforme installe les dépendances de package.json, puis lance le script start.
package.json minimal
{
"scripts": { "start": "node src/index.js" },
"dependencies": { "discord.js": "^14.0.0" }
}
Fichier src/index.js minimal
const { Client, Events, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, (c) => {
console.log(`Logged in as ${c.user.tag}`);
});
client.login(process.env.DISCORD_TOKEN);
Avant de commencer
Testez le bot sur votre ordinateur avec la même version majeure de Node.js que celle de l’hébergement : 20, 22 ou 24. La version se change ensuite dans l’onglet « Démarrage », carte « Image Docker ».
- Un package.json à la racine, avec discord.js dans les dépendances et un script start.
- Le lockfile (package-lock.json, yarn.lock ou pnpm-lock.yaml) pour retrouver exactement les versions testées.
- Un .gitignore qui exclut node_modules et .env.
Ce que fait la plateforme
À chaque démarrage, la plateforme compare package.json et le lockfile avec la dernière installation. S’ils ont changé, elle réinstalle les dépendances avant de lancer le bot, et la console affiche une ligne du type « Dépendances installées en 8 s. ». Vous n’avez pas de terminal à ouvrir.
Sans commande définie, la plateforme cherche le point d’entrée : le script start, puis le champ main de package.json, puis un fichier comme index.js, bot.js ou src/index.js. Un script start de la forme node src/index.js est lancé directement, sans processus npm devant le bot.
Un fichier de démarrage .ts est exécuté avec tsx, à partir de Node.js 22. Si votre script start vise un fichier compilé qui n’existe pas encore, la plateforme exécute d’abord le script build de package.json.
Vérifier que tout fonctionne
Ouvrez la console après le démarrage. Vous devez voir la commande lancée, par exemple $ node src/index.js, puis le message de connexion de votre code. Dans Discord, le bot passe en ligne dans la liste des membres quelques secondes plus tard.
Questions fréquentes
Que signifie Error [TokenInvalid]: An invalid token was provided. ?
discord.js n’a reçu aucun token utilisable : la variable DISCORD_TOKEN est vide, mal nommée ou contient l’ID de l’application. Collez le token de l’onglet « Bot » du portail Discord dans « Démarrage », puis redémarrez. Un token de bot compte trois parties séparées par des points.
Pourquoi la console affiche Error: Cannot find module 'discord.js' ?
Le paquet manque dans les dépendances ou la dernière installation a échoué. Ajoutez-le avec npm install discord.js sur votre ordinateur, envoyez le nouveau package.json et son lockfile, puis redémarrez. Quand la console reconnaît un module manquant, elle propose aussi un bouton « Installer discord.js » qui l’ajoute à package.json et redémarre le bot.
Que faire avec SyntaxError: Cannot use import statement outside a module ?
Votre code utilise la syntaxe import, mais Node.js le lit comme du CommonJS. Ajoutez "type": "module" dans package.json ou renommez le fichier en .mjs, puis redémarrez le bot.
Le bot s’arrête avec Used disallowed intents, pourquoi ?
Le code demande un intent privilégié (MessageContent, GuildMembers ou GuildPresences) qui n’est pas activé pour l’application. Activez-le dans le portail développeur Discord, onglet « Bot », section « Privileged Gateway Intents », puis redémarrez.