Bot destiné à la gestion des programmes hébergés sur le serveur de Gameur, permettant aux utilisateurs de gérer de manière autonome certaines actions et de résoudre des incidents mineurs.
L’objectif principal de ce bot est de simplifier l’administration des services, d’offrir aux utilisateurs une plus grande autonomie dans la gestion de leurs programmes, et de réduire significativement la charge de travail de Gameur, en limitant les interventions manuelles aux cas nécessitant réellement une expertise technique.
| __pycache__ | ||
| agent.py | ||
| agent_output.log | ||
| agent_precision.log | ||
| agent_verification.log | ||
| bot.py | ||
| bot_output.log | ||
| bot_precision.log | ||
| bot_verification.log | ||
| config.example.json | ||
| README.md | ||
| requirements.txt | ||
| status_engine.py | ||
🖥️ 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