# Déployer un bot Discord.js

> Guide pas à pas pour déployer un bot Discord.js (Node.js) sur Daki Hosting.

Ce guide vous accompagne dans le déploiement d'un bot Discord.js sur Daki Hosting — de la création de votre serveur à la mise en ligne de votre bot, en passant par la lecture sécurisée de son token.

## Ce que vous allez apprendre

- Comment créer un serveur Node.js pour votre bot
- Comment téléverser votre code
- Comment configurer la commande d'installation, la commande de démarrage et l'image Docker
- Comment définir le token de votre bot en toute sécurité avec un fichier `.env`
- Comment démarrer votre bot et vérifier qu'il fonctionne

---

## Prérequis

- Un compte Daki (Free Tier ou payant) — voir [Créer un compte](https://daki.cc/fr/wiki/guides/account-create)
- Un bot Discord avec un **token de bot**, créé dans le [Discord Developer Portal](https://discord.com/developers/applications)
- Le code source de votre bot, avec un `package.json` incluant `discord.js` et `dotenv` comme dépendances

> **Info:** Les bots Discord se connectent **en sortant** vers les serveurs de Discord et n'ont pas besoin de port entrant. Les bots Discord fonctionnent donc aussi bien sur le Free Tier que sur les offres payantes. Si votre bot sert aussi des requêtes HTTP (par ex. pour les interactions de commandes slash ou les webhooks), vous aurez besoin d'une offre payante, car les ports accessibles publiquement ne sont disponibles que sur les offres payantes. Voir [Réseau et allocations](https://daki.cc/fr/wiki/guides/network-allocations).

---

## Déploiement

**Étape 1: Créez un serveur Node.js**

1. Connectez-vous au Dashboard Free Tier sur [free.daki.cc](https://free.daki.cc) ou au Billing Panel sur [billing.daki.cc](https://billing.daki.cc).
2. Créez un nouveau serveur et sélectionnez l'egg **Node.js**.
3. Donnez un nom à votre serveur (par ex. `MyDiscordBot`).

Voir [Créer votre premier serveur gratuit](https://daki.cc/fr/wiki/guides/create-server) pour le parcours complet.

**Étape 2: Accédez au Portail**

Connectez-vous au Portail via SSO (**Open Portal** sur la page Account du dashboard, ou sur la page de votre service dans le Billing Panel), ou directement sur [portal.daki.cc](https://portal.daki.cc). Voir [Vue d'ensemble du Portail](https://daki.cc/fr/wiki/guides/portal).

**Étape 3: Téléversez le code de votre bot**

**Option A — Téléversement en ZIP (le plus simple) :**
1. Compressez le dossier de votre projet dans un fichier `.zip` sur votre ordinateur.
2. Dans le Portail, allez dans l'onglet **Files** et cliquez sur **Upload**.
3. Faites un clic droit sur le `.zip` et cliquez sur **Extract**.

**Option B — Utilisez SFTP (sans limite de taille) :**
Connectez-vous avec vos identifiants SFTP depuis l'onglet **Settings** et téléversez directement votre dossier. Voir [Gestionnaire de fichiers](https://daki.cc/fr/wiki/guides/file-manager).

> **Info:** N'incluez **pas** le dossier `node_modules` dans le téléversement : il sera installé automatiquement par la commande d'installation. Incluez en revanche votre `package.json` et votre `package-lock.json`.

**Étape 4: Configurez l'onglet Startup**

Ouvrez l'onglet **Startup** et configurez les trois champs :

**1. Docker Image** — Sélectionnez la version de Node.js dont votre bot a besoin (par ex. **Node.js 22** ou **Node.js 24**). Node.js 24 LTS est une valeur par défaut sûre en cas de doute. Évitez les versions marquées **EOL** : elles ne reçoivent plus de mises à jour de sécurité.

**2. Install Command** — Définissez-la pour installer automatiquement vos dépendances :
```
npm install
```
**3. Startup Command** — Définissez la commande qui lance votre bot :
- `node index.js` — si votre fichier d'entrée est `index.js`
- `node bot.js` — si votre fichier d'entrée est `bot.js`
- `npm start` — si votre `package.json` contient un script `start`

Vous pouvez adapter librement ces commandes à la structure de votre projet.

Voir [Paramètres de démarrage](https://daki.cc/fr/wiki/guides/startup-settings) pour une explication complète.

**Étape 5: Ajoutez le token de votre bot via un fichier .env**

Votre bot a besoin de son token Discord pour se connecter. Enregistrez-le dans un fichier `.env` sur le serveur afin qu'il n'apparaisse jamais dans votre code source.

1. Dans l'onglet **Files**, cliquez sur **New File** et nommez-le `.env`.
2. Ajoutez votre token :
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. Cliquez sur **Save**.

Dans le code de votre bot, chargez-le avec `dotenv` :
```js
require('dotenv').config();

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('ready', () => {
    console.log(`Logged in as ${client.user.tag}`);
});

client.login(process.env.BOT_TOKEN);
```
Vérifiez que `dotenv` figure bien dans les dépendances de votre `package.json` afin qu'il soit installé par la commande d'installation.

Voir [Variables d'environnement](https://daki.cc/fr/wiki/guides/environment-variables) pour plus de détails sur l'utilisation des fichiers `.env`.

**Étape 6: Démarrez votre bot**

Cliquez sur **Start** dans l'onglet **Console**. Un lancement réussi affiche la confirmation de connexion de votre bot :

```

Logged in as MyBot#1234!

```
Si des erreurs apparaissent à la place, consultez le guide [Dépannage](https://daki.cc/fr/wiki/guides/troubleshooting).

---

## Problèmes courants

**Error: Cannot find module 'discord.js'**

Vos dépendances n'ont pas été installées. Vérifiez que votre `package.json` liste `discord.js` comme dépendance et que la commande d'installation est bien `npm install` dans l'onglet Startup. Redémarrez le serveur pour relancer l'installation.

**Error: Cannot find module 'dotenv'**

Ajoutez `dotenv` aux dépendances de votre `package.json` et redémarrez le serveur pour réinstaller.

**Error: An invalid token was provided**

Le token de votre bot dans le fichier `.env` est incorrect ou manquant. Allez dans l'onglet Files, ouvrez `.env` et vérifiez la valeur. Assurez-vous qu'il n'y a ni espaces superflus, ni guillemets, ni retours à la ligne en trop.

**Le bot démarre mais se déconnecte peu après**

Cela est généralement dû à des Gateway Intents manquants. Dans le Discord Developer Portal, activez les intents privilégiés requis (par ex. Message Content Intent) pour l'application de votre bot, et vérifiez que votre code les demande.

**Le serveur plante dès le démarrage**

Ouvrez l'onglet Console et lisez l'erreur. Causes courantes : une mauvaise commande de démarrage (faute de frappe dans le nom du fichier), une mauvaise version de Node.js ou un `node_modules` manquant. Voir [Dépannage](https://daki.cc/fr/wiki/guides/troubleshooting).

---

## Étapes suivantes

- [Variables d'environnement](https://daki.cc/fr/wiki/guides/environment-variables) — Guide complet sur les fichiers `.env` et la lecture des variables dans le code.
- [Renouveler votre serveur gratuit](https://daki.cc/fr/wiki/guides/save-free-server-from-purge) — Regardez des publicités pour garder votre serveur Free Tier en vie.
- [Gestionnaire de fichiers](https://daki.cc/fr/wiki/guides/file-manager) — Mettez à jour vos fichiers de code après des modifications.

---
Source: https://daki.cc/fr/wiki/guides/deploy-discordjs
