Aller au contenu principal

Héberger un bot Discord sur Pterodactyl

Ce guide vous explique comment héberger et configurer un bot Discord sur un panel Pterodactyl.

Prérequis

Créer votre bot Discord

  1. Rendez-vous sur le Discord Developer Portal
  2. Cliquez sur New Application
  3. Donnez un nom à votre application
  4. Dans le menu de gauche, allez dans Bot
  5. Cliquez sur Add Bot
  6. Copiez le Token de votre bot (gardez-le secret !)
Sécurité du token

Ne partagez jamais votre token Discord. Si vous le perdez ou le divulguez, régénérez-le immédiatement depuis le Developer Portal.

Activer les intents nécessaires

Dans la section Bot du Developer Portal :

  1. Activez les Privileged Gateway Intents dont vous avez besoin :
    • PRESENCE INTENT : Pour voir le statut des membres
    • SERVER MEMBERS INTENT : Pour accéder aux informations des membres
    • MESSAGE CONTENT INTENT : Pour lire le contenu des messages
info

Les intents sont nécessaires pour que votre bot puisse recevoir certains événements de Discord.

Inviter votre bot sur un serveur

  1. Dans le menu de gauche, allez dans OAuth2 > URL Generator
  2. Cochez bot dans Scopes
  3. Sélectionnez les permissions nécessaires dans Bot Permissions
  4. Copiez l'URL générée et ouvrez-la dans votre navigateur
  5. Sélectionnez le serveur où inviter le bot

Préparer votre bot pour l'hébergement

Structure de projet recommandée

Votre projet doit contenir au minimum :

mon-bot-discord/
├── index.js # Point d'entrée principal
├── package.json # Dépendances et scripts
├── .env # Variables d'environnement (ne pas commit !)
└── node_modules/ # Dépendances installées

Exemple de package.json

{
"name": "mon-bot-discord",
"version": "1.0.0",
"description": "Mon bot Discord",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"discord.js": "^14.14.1",
"dotenv": "^16.3.1"
},
"engines": {
"node": ">=18.0.0"
}
}

Exemple de code minimal (index.js)

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

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

client.on('ready', () => {
console.log(`✅ Bot connecté en tant que ${client.user.tag}`);
});

client.on('messageCreate', (message) => {
if (message.author.bot) return;

if (message.content === '!ping') {
message.reply('Pong ! 🏓');
}
});

client.login(process.env.DISCORD_TOKEN);

Configuration sur Pterodactyl

1. Commander votre serveur Discord Bot

Pour héberger votre bot Discord sur YorkHost :

  1. Rendez-vous sur yorkhost.fr/fr/discord
  2. Choisissez l'offre adaptée à vos besoins (minimum 512 Mo de RAM recommandé)
  3. Finalisez votre commande
  4. Une fois le serveur créé, accédez à votre panel de jeu

Votre serveur sera automatiquement configuré avec l'image Node.js nécessaire pour faire fonctionner votre bot Discord.

2. Uploader vos fichiers

Via l'interface web

  1. Dans le panel, allez dans Files
  2. Supprimez les fichiers d'exemple si présents
  3. Uploadez vos fichiers :
    • index.js
    • package.json
    • Autres fichiers de votre projet (sauf node_modules)

Via SFTP

  1. Dans le panel, allez dans Settings
  2. Notez les informations de connexion SFTP
  3. Utilisez un client FTP comme FileZilla ou WinSCP
  4. Transférez vos fichiers
Astuce

N'uploadez jamais le dossier node_modules. Les dépendances seront installées automatiquement sur le serveur.

3. Configurer les paramètres de démarrage (Startup Parameters)

Dans le panel, allez dans Startup Parameters. Voici les paramètres à configurer :

Image

  • Choisissez Node Js 24 (ou 18, 20)
  • C'est la version de Node.js qui exécutera votre bot

Main file

  • Mettez index.js (ou le nom de votre fichier principal)
  • C'est le fichier qui sera lancé au démarrage

Additional Node packages

  • Laissez vide si vos dépendances sont dans package.json
  • Sinon, vous pouvez forcer des versions : discord.js@14.14.1

Token Discord (DISCORD_TOKEN)

  • Collez votre token copié depuis le Developer Portal
  • Ne le partagez jamais !
Configuration simple

Si vous débutez, laissez tous les autres paramètres par défaut. Vous n'avez besoin de modifier que Main file et DISCORD_TOKEN.

Utilisation avec Git (optionnel)

Si votre code est sur GitHub/GitLab :

  • Git Repo Address : https://github.com/username/mon-bot.git
  • Install Branch : main (ou votre branche)
  • Auto Update : 1 pour mettre à jour automatiquement au redémarrage
info

Si vous uploadez vos fichiers manuellement, laissez Git Repo Address vide.

4. Installer les dépendances

Pterodactyl installera automatiquement les dépendances au démarrage. Si ce n'est pas le cas :

  1. Allez dans Console
  2. Le serveur exécutera npm install automatiquement
  3. Attendez que l'installation se termine

Démarrer votre bot

  1. Dans le panel, cliquez sur Start
  2. Surveillez la console pour voir les logs
  3. Vous devriez voir le message : ✅ Bot connecté en tant que VotreBot#1234
Vérification

Allez sur Discord et vérifiez que votre bot est en ligne (statut vert).

Gestion du bot

Redémarrage automatique

Pour redémarrer automatiquement le bot en cas de crash, modifiez votre package.json :

{
"scripts": {
"start": "node index.js"
}
}

Pterodactyl redémarrera automatiquement le processus si l'option est activée dans les paramètres du serveur.

Activer le redémarrage automatique

  1. Dans le panel, allez dans Startup
  2. Vérifiez que l'option de redémarrage automatique est activée
  3. Configurez le délai de redémarrage si nécessaire

Surveiller les logs

Les logs sont disponibles dans la Console du panel. Vous pouvez :

  • Voir les messages de démarrage
  • Détecter les erreurs
  • Surveiller l'activité du bot

Mise à jour du bot

Méthode 1 : Via l'interface web

  1. Arrêtez le bot
  2. Uploadez les fichiers modifiés
  3. Redémarrez le bot

Méthode 2 : Via SFTP

  1. Connectez-vous en SFTP
  2. Remplacez les fichiers modifiés
  3. Redémarrez le bot depuis le panel

Méthode 3 : Via Git (recommandé)

Si votre bot est sur GitHub/GitLab :

  1. Accédez à la console du serveur
  2. Exécutez git pull pour récupérer les modifications
  3. Redémarrez le bot
Automatisation

Vous pouvez créer un script pour automatiser la mise à jour via un webhook Discord ou une commande personnalisée.

Problèmes courants

Le bot ne démarre pas

Vérifications :

  • Le token Discord est correct et valide
  • Le fichier package.json est valide (vérifiez la syntaxe JSON)
  • Les dépendances sont installées (npm install)
  • La version de Node.js est compatible (18+ pour Discord.js v14)

Solution : Consultez les logs dans la console pour identifier l'erreur exacte.

Token invalide

Error: Used disallowed intents

Solution : Activez les intents nécessaires dans le Discord Developer Portal.

Erreur de mémoire

JavaScript heap out of memory

Solution : Augmentez la RAM allouée au serveur dans les paramètres Pterodactyl.

Le bot se déconnecte régulièrement

Vérifications :

  • La RAM allouée est suffisante (minimum 512 Mo)
  • Aucune erreur dans les logs
  • La connexion réseau est stable

Solution : Vérifiez les logs pour identifier les erreurs et ajustez les ressources si nécessaire.

Optimisation et bonnes pratiques

Gestion des erreurs

Ajoutez des gestionnaires d'erreurs pour éviter les crashs :

client.on('error', (error) => {
console.error('Erreur Discord:', error);
});

process.on('unhandledRejection', (error) => {
console.error('Promesse rejetée non gérée:', error);
});

Utiliser PM2 (optionnel)

PM2 est un gestionnaire de processus qui peut redémarrer automatiquement votre bot :

{
"scripts": {
"start": "pm2 start index.js --name mon-bot"
}
}

Logging

Utilisez une bibliothèque de logging comme Winston pour mieux gérer les logs :

npm install winston

Base de données

Si votre bot utilise une base de données :

  • Utilisez les variables d'environnement pour les credentials
  • Privilégiez SQLite pour les petits projets
  • Utilisez MySQL/PostgreSQL pour les projets plus importants

Sécurité

Protection du token

  • ✅ Utilisez toujours .env pour stocker le token
  • ✅ Ajoutez .env au .gitignore
  • ✅ Ne commitez jamais le token sur GitHub
  • ❌ Ne partagez jamais votre token

Permissions du bot

N'accordez que les permissions strictement nécessaires :

  • Évitez les permissions d'administrateur sauf si absolument nécessaire
  • Utilisez le principe du moindre privilège
  • Révisez régulièrement les permissions

Rate limiting

Discord applique des limites de taux (rate limits). Assurez-vous de :

  • Ne pas envoyer trop de messages rapidement
  • Utiliser les fonctions de cache de Discord.js
  • Gérer correctement les erreurs 429 (Too Many Requests)

Ressources utiles

Support

Si vous rencontrez des problèmes :

  1. Consultez les logs du serveur dans la console Pterodactyl
  2. Vérifiez la documentation Discord.js pour votre version
  3. Contactez le support YorkHost pour les problèmes d'hébergement