| src | ||
| .env | ||
| .env.example | ||
| .gitignore | ||
| emojis.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| start.js | ||
Bot Discord - Gestion Serveur Minecraft
Un bot Discord complet pour gérer la whitelist et le contrôle d'un serveur Minecraft hébergé sur VPS.
🚀 Fonctionnalités
🎯 Système de demandes d'accès automatique
- Message automatique avec bouton de demande d'accès
- Attribution automatique du rôle "En attente"
- Mise à jour du statut serveur toutes les 2 minutes
- Interface avec embeds et emojis personnalisés
👥 Gestion de la whitelist
- Ajout/suppression de joueurs avec récupération automatique d'UUID
- Rechargement automatique de la whitelist sur le serveur
- Liste des joueurs whitelistés
- Formatage correct des UUID pour Minecraft
🎮 Contrôle complet du serveur
- Démarrage/arrêt/redémarrage via systemctl
- Envoi de commandes directes au serveur
- Consultation des logs en temps réel
- Sauvegarde automatique du monde
- Vérification du statut en temps réel
🎨 Interface utilisateur
- Emojis personnalisés configurables
- Embeds Discord avec couleurs et formatage
- Messages d'erreur informatifs
- Gestion des permissions par propriétaire
📋 Prérequis
- Node.js v16+
- Serveur Minecraft configuré avec systemctl
- Bot Discord avec permissions appropriées
- Accès sudo sur le VPS (pour contrôle serveur)
🛠️ Installation
1. Sur votre VPS
# Cloner et installer (ou uploader vos fichiers)
cd /home/votre-user/bots/
# ... copier vos fichiers ici ...
cd mcgestionbot
npm install
2. Configuration automatique
# Génération automatique du .env
./configure.sh
# Éditer avec vos tokens Discord
nano .env
3. Lancement
# Le bot configure automatiquement tout au démarrage !
node start.js
C'est tout ! 🎉 Le bot se charge de :
- ✅ Créer l'utilisateur
minecraft - ✅ Configurer les permissions
- ✅ Activer la whitelist dans server.properties
- ✅ Créer les dossiers nécessaires
- ✅ Configurer les sauvegardes
🎮 Utilisation
Démarrage du bot
node start.js
Commandes disponibles
/minecraft - Gestion du serveur (Owner only)
Gestion whitelist :
/minecraft list- Liste des joueurs whitelistés/minecraft add <pseudo>- Ajouter un joueur/minecraft remove <pseudo>- Retirer un joueur/minecraft reload- Recharger la whitelist
Contrôle serveur :
/minecraft status- Statut du serveur/minecraft start- Démarrer le serveur/minecraft stop- Arrêter le serveur/minecraft restart- Redémarrer le serveur/minecraft logs [lines]- Afficher les logs/minecraft command <cmd>- Envoyer une commande/minecraft backup- Sauvegarder le monde/minecraft setup- Configuration automatique du serveur
Système de demandes automatique
Le bot gère automatiquement :
- Message persistant dans le channel configuré
- Bouton de demande toujours disponible
- Attribution du rôle "En attente" automatique
- Mise à jour du statut serveur toutes les 2 minutes
🎨 Personnalisation
Emojis personnalisés
Modifiez emojis.json pour vos emojis :
{
"online": "<:online:123456789>",
"offline": "<:offline:123456789>",
"addedWhitelist": "<:added:123456789>",
"removedWhitelist": "<:removed:123456789>",
"success": "✅",
"error": "❌",
"info": "ℹ️"
}
🔧 Dépannage
Problèmes courants
1. "Command not found" node
# Installer Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
2. "Permission denied" systemctl
# Configurer sudo
sudo ./setup-sudo.sh
./test-permissions.sh
3. "Whitelist not enforced"
# Vérifier server.properties
grep "enforce-whitelist" /opt/minecraft/server/server.properties
# Doit être : enforce-whitelist=true
4. "UUID format incorrect"
- Le bot formate automatiquement les UUID
- Utilise l'API Mojang pour récupérer les UUID
Logs et debug
# Logs du bot
node start.js
# Logs du serveur Minecraft
sudo journalctl -u minecraft -f
# Test des permissions
./test-permissions.sh
# Test de la whitelist
node test-whitelist.js
📁 Structure du projet
mc-acces-bot/
├── start.js # Point d'entrée
├── package.json # Dépendances
├── .env # Configuration
├── emojis.json # Emojis personnalisés
├── setup-sudo.sh # Config permissions
├── test-permissions.sh # Test sudo
└── src/
├── commands/
│ └── minecraft.js # Commandes serveur
├── events/
│ ├── ready.js # Démarrage bot
│ └── interactionCreate.js # Gestion interactions
├── handlers/
│ └── interactionHandler.js # Boutons/modals
└── utils/
├── whitelistManager.js # Gestion whitelist
├── minecraftServer.js # Statut serveur
├── serverControlManager.js # Contrôle VPS
├── autoMessageManager.js # Messages auto
└── emojiManager.js # Gestion emojis
🚀 Déploiement en production
Avec PM2 (recommandé)
# Installer PM2
npm install -g pm2
# Démarrer le bot
pm2 start start.js --name "mc-bot"
# Configurer auto-start
pm2 startup
pm2 save
Avec systemctl
# Créer le service
sudo nano /etc/systemd/system/mc-bot.service
# Contenu :
[Unit]
Description=Minecraft Discord Bot
After=network.target
[Service]
Type=simple
User=loicv
WorkingDirectory=/home/loicv/Documents/Wors/mc-acces-bot
ExecStart=/usr/bin/node start.js
Restart=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
# Activer le service
sudo systemctl enable mc-bot
sudo systemctl start mc-bot
📝 Notes importantes
- Sécurité : Le bot a accès sudo - utilisez uniquement sur un serveur dédié
- Permissions : Seul le propriétaire (OWNER_ID) peut utiliser les commandes
- Backup : Les sauvegardes sont stockées dans
/opt/minecraft/backups/ - Logs : Tous les logs sont visibles via
journalctlet dans Discord
🤝 Support
En cas de problème :
- Vérifiez les logs :
sudo journalctl -u minecraft -f - Testez les permissions :
./test-permissions.sh - Vérifiez la configuration : fichier
.envcomplet - Validez le service :
sudo systemctl status minecraft
Fonctionnalités
🎮 Système de demande d'accès
- Message simple automatique avec bouton pour demander l'accès
- Embed de status du serveur mis à jour automatiquement toutes les 2 minutes
- Modal pour saisir le pseudo Minecraft
- Attribution automatique du rôle "Waiter" lors de la demande
- Vérification automatique si le joueur est déjà whitelisté
- Envoi de la demande au canal staff avec boutons Accept/Refuse
- Gestion automatique des rôles : Verified (accepté) ou suppression du Waiter (refusé)
- Emojis personnalisés pour tous les messages
⚙️ Commandes administrateur
/minecraft list- Affiche la liste des joueurs whitelistés/minecraft add <pseudo>- Ajoute un joueur à la whitelist/minecraft remove <pseudo>- Retire un joueur de la whitelist/minecraft status- Affiche le statut du serveur Minecraft/minecraft reload- Instructions pour recharger la whitelist sur le serveur/setup-access- Envoie le message de demande d'accès (facultatif)
Installation
- Cloner le projet et installer les dépendances :
npm install
- Configurer le fichier .env :
Assurez-vous que votre fichier
.envcontient toutes les variables nécessaires :
TOKEN=votre_token_bot_discord
CLIENT_ID=id_du_bot
OWNER_ID=votre_id_discord
SUPPORT_SERVER_ID=id_du_serveur_discord
CHANNEL_REQUEST_ACCESS_ID=id_canal_demandes_publiques
CHANNEL_ACCESS_STAFF_REQUESTS_ID=id_canal_staff_demandes
ROLE_WAITER_ID=id_role_attente
ROLE_VERIFIED_ID=id_role_verifie
ROLE_ADMIN_ID=id_role_admin
MINECRAFT_SERVER_IP=adresse:port
MINECRAFT_WHITELIST_PATH=/chemin/vers/whitelist.json
- Lancer le bot :
npm start
Pour le développement :
npm run dev
Pour tester le formatage UUID :
npm run test-uuid
Pour tester la connexion au serveur Minecraft :
npm run test-server
Pour tester la whitelist :
npm run test-whitelist
Structure du projet
├── start.js # Point d'entrée principal
├── emojis.json # Configuration des emojis personnalisés
├── src/
│ ├── commands/
│ │ ├── minecraft.js # Commandes /minecraft
│ │ └── setup-access.js # Commande /setup-access
│ ├── events/
│ │ └── ready.js # Événement de démarrage
│ ├── handlers/
│ │ ├── commandHandler.js # Chargeur de commandes
│ │ ├── eventHandler.js # Chargeur d'événements
│ │ └── interactionHandler.js # Gestionnaire d'interactions
│ └── utils/
│ ├── accessRequestManager.js # Gestionnaire de demandes d'accès
│ ├── emojiManager.js # Gestionnaire d'emojis personnalisés
│ ├── roleManager.js # Gestionnaire de rôles Discord
│ ├── minecraftServer.js # Utilitaires serveur Minecraft
│ └── whitelistManager.js # Gestionnaire de whitelist
Utilisation
Configuration initiale
- Inviter le bot sur votre serveur avec les permissions nécessaires
- Le message de demande d'accès est envoyé automatiquement au démarrage dans le canal configuré
- Configurer les rôles dans votre serveur Discord selon les IDs dans le
.env
⚠️ Note : Il n'est plus nécessaire d'utiliser
/setup-accessmanuellement. Le bot gère automatiquement l'envoi et la mise à jour du message de demande d'accès.
Workflow des demandes
- Utilisateur : Clique sur le bouton "Demander l'accès"
- Système : Attribue automatiquement le rôle "Waiter" à l'utilisateur
- Utilisateur : Remplit le modal avec son pseudo Minecraft
- Système : Vérifie si le joueur est déjà whitelisté
- Système : Envoie la demande au canal staff avec emojis personnalisés
- Staff : Clique sur "Accepter" ou "Refuser"
- Système (si accepté) : Ajoute le joueur à la whitelist + donne le rôle "Verified" + retire le rôle "Waiter"
- Système (si refusé) : Retire simplement le rôle "Waiter"
- Système : Notifie l'utilisateur par MP avec les emojis appropriés
Commandes administrateur
Seul l'OWNER_ID peut utiliser les commandes /minecraft :
- Lister les joueurs :
/minecraft list - Ajouter un joueur :
/minecraft add pseudo:NomDuJoueur - Retirer un joueur :
/minecraft remove pseudo:NomDuJoueur - Status du serveur :
/minecraft status
Permissions requises
Le bot a besoin des permissions Discord suivantes :
Send Messages- Envoyer des messagesUse Slash Commands- Utiliser les commandes slashEmbed Links- Incorporer des liensManage Messages- Gérer les messagesRead Message History- Lire l'historique des messagesManage Roles- Gérer les rôles (pour attribuer Waiter/Verified)
Configuration des rôles
Assurez-vous que ces rôles existent sur votre serveur Discord :
- Rôle Waiter (
ROLE_WAITER_ID) : Attribué automatiquement lors d'une demande - Rôle Verified (
ROLE_VERIFIED_ID) : Attribué quand l'accès est accepté - Rôle Admin (
ROLE_ADMIN_ID) : Requis pour traiter les demandes d'accès
Notes importantes
- Le fichier
whitelist.jsondoit être accessible en lecture/écriture - Le serveur Minecraft doit être accessible pour la vérification du statut
- Les IDs Discord dans le
.envdoivent être valides - Le bot vérifie automatiquement les pseudos via l'API Mojang
Dépannage
Le bot ne répond pas aux commandes
- Vérifiez que le TOKEN est correct
- Vérifiez que les permissions sont accordées
- Consultez les logs dans la console
Erreurs de whitelist
- Vérifiez le chemin vers
whitelist.json - Vérifiez les permissions de fichier
- Assurez-vous que le format JSON est valide
Problèmes d'UUID
- Les UUIDs sont automatiquement formatés au bon format (avec tirets)
- Si un joueur n'est pas trouvé, vérifiez que le pseudo existe sur Minecraft
- Utilisez
npm run test-uuidpour tester le formatage - Format attendu:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Problèmes de serveur Minecraft
- Vérifiez que l'adresse IP et le port sont corrects
- Assurez-vous que le serveur est en ligne
- Vérifiez les paramètres du pare-feu
- Utilisez
npm run test-serverpour tester la connexion - Le timeout de connexion est de 10 secondes
Messages automatiques
- Le message de demande d'accès est envoyé automatiquement au démarrage
- Les anciens messages sont supprimés automatiquement
- Un seul message actif est maintenu par canal
- Le status du serveur se met à jour automatiquement toutes les 2 minutes
Configuration serveur Minecraft
- Assurez-vous que
white-list=truedans server.properties - IMPORTANT:
enforce-whitelist=truedoit être activé pour que la whitelist soit appliquée - Utilisez
/whitelist reloaddans la console serveur après modifications - Ou utilisez la commande
/minecraft reloaddu bot pour avoir les instructions