# 🖥️ Discord Status Bot Bot Discord de monitoring serveur en temps réel. Affiche et met à jour automatiquement un message épinglé dans chaque serveur Discord avec l'état des ressources, la cause des ralentissements, et une ETA de retour à la normale. --- ## Architecture ``` [Serveur de jeux] [n'importe où] agent.py ──── HTTP POST ────▶ bot.py (psutil) /metrics ├── serveur aiohttp (port 8765) ├── StatusEngine (analyse) └── discord.py (mise à jour embed épinglé) │ ┌─────────┼─────────┐ Guilde 1 Guilde 2 Guilde 3 ... ``` --- ## Installation ### 1. Dépendances ```bash pip install -r requirements.txt ``` ### 2. Configuration ```bash cp config.example.json config.json ``` Remplis `config.json` : | Clé | Description | |-----------------|--------------------------------------------------------------------| | `discord_token` | Token de ton bot (https://discord.com/developers/applications) | | `api_secret` | Mot de passe partagé entre le bot et l'agent (chaîne aléatoire) | | `api_port` | Port HTTP du bot (défaut : 8765) | > ⚠️ Le même `api_secret` doit être renseigné dans `agent.py` (`API_SECRET`) et dans `config.json`. ### 3. Adapter l'agent Dans `agent.py`, modifie : ```python BOT_API_URL = "http://ADRESSE_DU_BOT:8765/metrics" API_SECRET = "le_meme_secret_que_dans_config.json" ``` Si le bot et l'agent tournent sur la même machine, laisse `http://localhost:8765/metrics`. Si le bot est sur une autre machine (VPS dédié Discord), utilise son IP/domaine. ### 4. Ajouter les mots-clés de tes services Dans `agent.py`, `SERVICE_KEYWORDS` : ```python SERVICE_KEYWORDS = { "minecraft": ["java", "minecraft", "paper"], "satisfactory": ["factoryserver"], "ollama": ["ollama"], # Ajoute tes propres services ici "mon_jeu": ["mon_process_name"], } ``` --- ## Lancement ### Bot (à lancer en premier) ```bash python bot.py ``` Ou en service systemd : ```ini [Unit] Description=Discord Status Bot After=network.target [Service] WorkingDirectory=/chemin/vers/discord-status-bot ExecStart=/usr/bin/python3 bot.py Restart=always [Install] WantedBy=multi-user.target ``` ### Agent (sur le serveur de jeux) ```bash python agent.py ``` Idem, peut être lancé en service systemd. --- ## Configuration Discord ### Créer le bot Discord 1. Aller sur https://discord.com/developers/applications 2. **New Application** → donne-lui un nom 3. Onglet **Bot** → **Reset Token** → copier le token dans `config.json` 4. Activer **Server Members Intent** et **Message Content Intent** si nécessaire 5. Onglet **OAuth2 > URL Generator** : - Scopes : `bot`, `applications.commands` - Bot Permissions : `Send Messages`, `Manage Messages`, `Embed Links`, `Read Message History` 6. Copier l'URL générée et l'ouvrir pour inviter le bot sur tes serveurs ### Configurer chaque serveur Discord Une fois le bot invité sur un serveur et lancé localement : 1. Va dans le salon où tu veux le tableau de bord 2. Tape `/setup` 3. Le bot envoie et épingle le premier message de statut 4. Répète sur chaque serveur Discord --- ## Commandes slash disponibles | Commande | Description | Permissions | |--------------|--------------------------------------------------|-------------| | `/status` | Affiche l'état actuel (message éphémère) | Tous | | `/services` | Détail de chaque service détecté | Tous | | `/setup` | Configure le salon actuel comme tableau de bord | Admin | --- ## Personnalisation ### Seuils d'alerte Dans `status_engine.py`, modifie `THRESHOLDS` : ```python THRESHOLDS = { "cpu": {"warning": 70, "critical": 85}, "ram": {"warning": 80, "critical": 90}, "swap": {"warning": 40, "critical": 70}, } ``` ### Fréquence de mise à jour - **Agent** → `PUSH_INTERVAL` dans `agent.py` (défaut : 15s) - **Bot** → `@tasks.loop(seconds=20)` dans `bot.py` --- ## Exemple de rendu ``` 🔴 Serveur — Surchargé 📊 Ressources CPU ████████░░ 82% 🌡️ 74°C RAM █████████░ 91% (14.6/16.0 GB) SWAP ████░░░░░░ 43% 📈 Charge (1m / 5m / 15m) : 7.42 / 6.80 / 5.12 🎮 Services actifs ▸ ⛏️ Minecraft 🔥 — CPU 45% | RAM 4.2 GB ▸ 🤖 Ollama (IA) 🔥 — CPU 38% | RAM 8.1 GB ▸ 🏭 Satisfactory ⚡ — CPU 12% | RAM 2.1 GB 🔍 Pourquoi ça rame ? • CPU à 82% — principal consommateur : Minecraft (45%) • RAM à 91% (14.6/16.0 GB) — Ollama (IA) occupe 8.1 GB • 💡 Conflit probable : Ollama (IA) et Minecraft, Satisfactory se partagent les ressources ⏱️ Retour à la normale ⏱️ Retour à la normale dans ~8 min Dernière mise à jour 26/02/2026 21:34 ```