5.1 KiB
5.1 KiB
🖥️ 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
pip install -r requirements.txt
2. Configuration
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_secretdoit être renseigné dansagent.py(API_SECRET) et dansconfig.json.
3. Adapter l'agent
Dans agent.py, modifie :
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 :
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)
python bot.py
Ou en service systemd :
[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)
python agent.py
Idem, peut être lancé en service systemd.
Configuration Discord
Créer le bot Discord
- Aller sur https://discord.com/developers/applications
- New Application → donne-lui un nom
- Onglet Bot → Reset Token → copier le token dans
config.json - Activer Server Members Intent et Message Content Intent si nécessaire
- Onglet OAuth2 > URL Generator :
- Scopes :
bot,applications.commands - Bot Permissions :
Send Messages,Manage Messages,Embed Links,Read Message History
- Scopes :
- 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 :
- Va dans le salon où tu veux le tableau de bord
- Tape
/setup - Le bot envoie et épingle le premier message de statut
- 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 :
THRESHOLDS = {
"cpu": {"warning": 70, "critical": 85},
"ram": {"warning": 80, "critical": 90},
"swap": {"warning": 40, "critical": 70},
}
Fréquence de mise à jour
- Agent →
PUSH_INTERVALdansagent.py(défaut : 15s) - Bot →
@tasks.loop(seconds=20)dansbot.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