# Bot Discord - Accès Serveur Minecraft Ce bot Discord permet de gérer automatiquement les demandes d'accès à un serveur Minecraft via un système de whitelist. ## Fonctionnalités ### 🎮 Système de demande d'accès - Message automatique avec bouton pour demander l'accès - Modal pour saisir le pseudo Minecraft - Vérification automatique si le joueur est déjà whitelisté - Envoi de la demande au canal staff avec boutons Accept/Refuse ### ⚙️ Commandes administrateur - `/minecraft list` - Affiche la liste des joueurs whitelistés - `/minecraft add ` - Ajoute un joueur à la whitelist - `/minecraft remove ` - Retire un joueur de la whitelist - `/minecraft status` - Affiche le statut du serveur Minecraft - `/setup-access` - Envoie le message de demande d'accès ## Installation 1. **Cloner le projet et installer les dépendances :** ```bash npm install ``` 2. **Configurer le fichier .env :** Assurez-vous que votre fichier `.env` contient toutes les variables nécessaires : ```env 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 ``` 3. **Lancer le bot :** ```bash npm start ``` Pour le développement : ```bash npm run dev ``` ## Structure du projet ``` ├── start.js # Point d'entrée principal ├── 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 │ ├── minecraftServer.js # Utilitaires serveur Minecraft │ └── whitelistManager.js # Gestionnaire de whitelist ``` ## Utilisation ### Configuration initiale 1. **Inviter le bot sur votre serveur** avec les permissions nécessaires 2. **Utiliser `/setup-access`** dans le canal où vous voulez le message de demande d'accès 3. **Configurer les rôles** dans votre serveur Discord selon les IDs dans le `.env` ### Workflow des demandes 1. **Utilisateur :** Clique sur le bouton "Demander l'accès" 2. **Utilisateur :** Remplit le modal avec son pseudo Minecraft 3. **Système :** Vérifie si le joueur est déjà whitelisté 4. **Système :** Envoie la demande au canal staff 5. **Staff :** Clique sur "Accepter" ou "Refuser" 6. **Système :** Ajoute le joueur à la whitelist (si accepté) et notifie l'utilisateur ### 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 messages - `Use Slash Commands` - Utiliser les commandes slash - `Embed Links` - Incorporer des liens - `Manage Messages` - Gérer les messages - `Read Message History` - Lire l'historique des messages ## Notes importantes - Le fichier `whitelist.json` doit être accessible en lecture/écriture - Le serveur Minecraft doit être accessible pour la vérification du statut - Les IDs Discord dans le `.env` doivent ê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 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