diff --git a/README.md b/README.md index 3efa09d..3ba4bd2 100644 --- a/README.md +++ b/README.md @@ -1,153 +1,47 @@ -# 🖥️ Discord Status Bot +# 🛠️ Mission : Dev GameurBot v2 +## Centralisation du Monitoring et de la Gestion PM2 Sécurisée -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. +**Objectif :** Faire évoluer/créer un bot composé de deux éléments : un agent de télémétrie distant (`agent.py`) qui remonte les métriques du serveur, et le bot Discord principal (`bot.py`) qui gère un tableau de bord en temps réel (embed épinglé) tout en permettant aux utilisateurs autorisés de relancer des services via une passerelle Linux ultra-sécurisée. --- -## Architecture +## 📐 Architecture Générale ``` -[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 ... +[Serveur de Jeux / Minecraft] [Hébergement du Bot] + agent.py (psutil) bot.py + │ ├── Serveur aiohttp (Port 8765) + │─── HTTP POST (/metrics avec Secret) ───▶├── StatusEngine (Analyse & Seuils) + │ └── discord.py / disnake + │ │ (Mise à jour Embed Épinglé) + [Wrapper Bash local & PM2] │ + /usr/local/bin/manage_minecraft.sh ◀──── Applique Sudo ────────┘ (Commandes Slash /minecraft) ``` --- -## Installation +## 1. L'Agent de Télémétrie (`agent.py`) -### 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` : +À installer sur le serveur de jeux. Il s'exécute en tâche de fond (`PUSH_INTERVAL = 15s`) pour remonter les infos systèmes au bot principal. +- **Sécurité :** Authentification obligatoire via un header contenant un `API_SECRET` partagé. +- **Filtrage des processus :** L'agent utilise `psutil` pour calculer la charge des services selon cette table de mots-clés : ```python SERVICE_KEYWORDS = { "minecraft": ["java", "minecraft", "paper"], "satisfactory": ["factoryserver"], "ollama": ["ollama"], - # Ajoute tes propres services ici - "mon_jeu": ["mon_process_name"], } ``` --- -## Lancement +## 2. Le Bot & Serveur d'Écoute (`bot.py`) -### 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` : +Le code principal doit faire tourner un serveur Web léger (`aiohttp`) sur le port `8765` en parallèle du client Discord pour intercepter les requêtes de l'agent. +- **Route `POST /metrics` :** Vérifie le secret. Si incorrect ──▶ renvoie un code `401`. +- **StatusEngine :** Analyse la charge selon les seuils suivants : ```python THRESHOLDS = { "cpu": {"warning": 70, "critical": 85}, @@ -155,38 +49,71 @@ THRESHOLDS = { "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` +*Si un seuil est franchi, le bot doit automatiquement trouver le processus coupable via la table des mots-clés et générer une explication claire (ex: "CPU à 82% — principal consommateur : Minecraft").* --- -## Exemple de rendu +## 3. La Passerelle de Gestion PM2 (Sécurité Maximale) +Pour le redémarrage des serveurs via Discord, **il est strictement interdit de manipuler directement le terminal ou d'utiliser `shell=True` / `os.system`**. Tout doit passer par ce script Bash intermédiaire à placer sur la machine dans `/usr/local/bin/manage_minecraft.sh` (Droits `755`, propriétaire `root`) : + +```bash +#!/bin/bash + +USER_MINECRAFT="discord" +PM2_PATH="/home/discord/.nvm/versions/node/v24.15.0/bin/pm2" +export PM2_HOME="/home/discord/.pm2" + +# Whitelist stricte des applications PM2 gérables +SERVEURS_AUTORISES=("survie" "skyblock" "creatif") + +ACTION=$1 # 'restart' ou 'status' +SERVEUR=$2 # ex: 'survie' + +# 1. Validation de l'action +if [[ "$ACTION" != "restart" && "$ACTION" != "status" ]]; then + echo "Erreur : Action non valide." >&2 + exit 1 +fi + +# 2. Validation du serveur (Contre les injections d'arguments ou de flags) +IN_LIST=false +for s in "${SERVEURS_AUTORISES[@]}"; do + if [[ "$s" == "$SERVEUR" ]]; then + IN_LIST=true + break + fi +done + +if [ "$IN_LIST" = false ]; then + echo "Erreur : Serveur non autorisé." >&2 + exit 1 +fi + +# 3. Exécution propre avec switch d'utilisateur +case "$ACTION" in + restart) + sudo -u $USER_MINECRAFT $PM2_PATH restart "$SERVEUR" + ;; + status) + sudo -u $USER_MINECRAFT $PM2_PATH describe "$SERVEUR" + ;; +esac ``` -🔴 Serveur — Surchargé -📊 Ressources -CPU ████████░░ 82% 🌡️ 74°C -RAM █████████░ 91% (14.6/16.0 GB) -SWAP ████░░░░░░ 43% +> ⚙️ *Note Système : L'utilisateur Linux du bot (`gameurbot`) possédera la règle `gameurbot ALL=(ALL) NOPASSWD: /usr/local/bin/manage_minecraft.sh *` dans le fichier `/etc/sudoers`.* -📈 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 +## 4. Interface Discord & Commandes attendues -🔍 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 +Tu dois implémenter ces 3 commandes d'interaction (en utilisant exclusivement des listes de choix `choices`, **aucune saisie de texte libre** pour les arguments) : -⏱️ Retour à la normale -⏱️ Retour à la normale dans ~8 min +1. `/setup` *(Admin seulement)* : Initialise le salon actuel. Le bot y envoie un Embed et l'**épingle**. C'est cet embed précis qui sera édité dynamiquement toutes les 15-20 secondes avec le rapport d'état de l'infrastructure (graphiques en barres ASCII textuelles, charge système, alertes de goulot d'étranglement). +2. `/status` *(Tous)* : Affiche le statut complet sous forme de message éphémère (invisible pour les autres joueurs). +3. `/minecraft action [choices: restart, status] serveur [choices: survie, skyblock, creatif]` : + - Exécute le script système via un appel `subprocess.run(..., shell=False)`. + - Utilise impérativement `inter.response.defer()` dès le début de la commande pour éviter les déconnexions/timeouts de 3 secondes de Discord pendant les redémarrages d'instances Java. -Dernière mise à jour 26/02/2026 21:34 -``` +### 📜 Traçabilité (Logs d'Audit) +Dès qu'un utilisateur clique sur une commande `/minecraft action`, le bot doit instantanément envoyer un rapport détaillé dans notre salon privé de logs administrateur : `[Audit] Qui a cliqué / Quelle heure / Quel serveur / Statut final de la commande`. diff --git a/agent_output.log b/agent_output.log deleted file mode 100644 index e69de29..0000000 diff --git a/agent_precision.log b/agent_precision.log deleted file mode 100644 index 23ce826..0000000 --- a/agent_precision.log +++ /dev/null @@ -1,14 +0,0 @@ -[Agent] Démarrage — push vers http://localhost:8765/metrics toutes les 5s -[12:25:55] CPU=12.1% RAM=32.5% → ✓ -[12:26:01] CPU=3.6% RAM=32.6% → ✓ -[12:26:07] CPU=5.3% RAM=32.7% → ✓ -[12:26:13] CPU=4.5% RAM=32.5% → ✓ -[12:26:19] CPU=8.6% RAM=32.5% → ✓ -[12:26:25] CPU=6.5% RAM=32.9% → ✓ -[12:26:31] CPU=20.8% RAM=34.2% → ✓ -[12:26:37] CPU=8.1% RAM=33.0% → ✓ -[12:26:43] CPU=3.7% RAM=32.8% → ✓ -[12:26:50] CPU=4.2% RAM=32.3% → ✓ -[12:26:56] CPU=5.7% RAM=32.2% → ✓ -[12:27:02] CPU=15.0% RAM=32.2% → ✓ -[12:27:08] CPU=19.7% RAM=32.9% → ✓ diff --git a/agent_verification.log b/agent_verification.log deleted file mode 100644 index d630171..0000000 --- a/agent_verification.log +++ /dev/null @@ -1,61 +0,0 @@ -[Agent] Démarrage — push vers http://localhost:8765/metrics toutes les 5s -[12:19:48] CPU=24.6% RAM=71.4% → ✓ -[12:19:54] CPU=18.3% RAM=71.7% → ✓ -[12:20:00] CPU=14.2% RAM=71.4% → ✓ -[12:20:06] CPU=14.7% RAM=71.3% → ✓ -[12:20:12] CPU=15.4% RAM=71.2% → ✓ -[12:20:18] CPU=17.9% RAM=71.2% → ✓ -[12:20:24] CPU=16.5% RAM=71.3% → ✓ -[12:20:30] CPU=16.5% RAM=71.5% → ✓ -[12:20:36] CPU=21.5% RAM=71.2% → ✓ -[12:20:42] CPU=31.4% RAM=71.0% → ✓ -[12:20:49] CPU=38.2% RAM=71.2% → ✓ -[12:20:55] CPU=55.5% RAM=35.2% → ✓ -[12:21:01] CPU=31.1% RAM=35.4% → ✓ -[12:21:07] CPU=15.2% RAM=35.0% → ✓ -[12:21:13] CPU=16.2% RAM=34.4% → ✓ -[12:21:19] CPU=9.1% RAM=31.9% → ✓ -[12:21:25] CPU=9.8% RAM=32.1% → ✓ -[12:21:31] CPU=4.9% RAM=31.8% → ✓ -[12:21:37] CPU=5.1% RAM=31.6% → ✓ -[12:21:43] CPU=4.9% RAM=31.6% → ✓ -[12:21:49] CPU=5.6% RAM=31.6% → ✓ -[12:21:55] CPU=14.8% RAM=32.2% → ✓ -[12:22:01] CPU=13.4% RAM=32.1% → ✓ -[12:22:08] CPU=8.7% RAM=32.5% → ✓ -[12:22:14] CPU=4.3% RAM=32.2% → ✓ -[12:22:20] CPU=4.5% RAM=31.8% → ✓ -[12:22:26] CPU=8.6% RAM=31.9% → ✓ -[12:22:32] CPU=5.2% RAM=31.7% → ✓ -[12:22:38] CPU=6.3% RAM=31.6% → ✓ -[12:22:44] CPU=2.4% RAM=31.6% → ✓ -[12:22:50] CPU=3.7% RAM=31.6% → ✓ -[12:22:56] CPU=9.3% RAM=31.1% → ✓ -[12:23:02] CPU=2.6% RAM=31.0% → ✓ -[12:23:08] CPU=15.7% RAM=31.2% → ✓ -[12:23:14] CPU=7.5% RAM=31.4% → ✓ -[12:23:20] CPU=2.5% RAM=31.3% → ✓ -[12:23:27] CPU=4.6% RAM=32.1% → ✓ -[12:23:33] CPU=9.5% RAM=31.4% → ✓ -[12:23:39] CPU=7.6% RAM=31.4% → ✓ -[12:23:45] CPU=8.3% RAM=31.2% → ✓ -[12:23:51] CPU=10.3% RAM=31.2% → ✓ -[12:23:57] CPU=15.0% RAM=31.2% → ✓ -[12:24:03] CPU=11.1% RAM=31.8% → ✓ -[12:24:09] CPU=10.7% RAM=31.7% → ✓ -[12:24:15] CPU=20.2% RAM=34.4% → ✓ -[12:24:21] CPU=15.6% RAM=34.0% → ✓ -[12:24:27] CPU=9.6% RAM=33.5% → ✓ -[12:24:34] CPU=5.1% RAM=32.1% → ✓ -[12:24:40] CPU=8.1% RAM=31.5% → ✓ -[12:24:46] CPU=3.0% RAM=31.4% → ✓ -[12:24:52] CPU=2.7% RAM=31.4% → ✓ -[12:24:58] CPU=3.0% RAM=31.4% → ✓ -[12:25:05] CPU=3.4% RAM=31.9% → ✓ -[12:25:11] CPU=6.4% RAM=31.6% → ✓ -[12:25:17] CPU=7.8% RAM=32.2% → ✓ -[12:25:23] CPU=19.9% RAM=34.0% → ✓ -[12:25:29] CPU=4.0% RAM=32.9% → ✓ -[12:25:35] CPU=6.9% RAM=32.4% → ✓ -[12:25:41] CPU=19.0% RAM=32.3% → ✓ -[12:25:47] CPU=18.7% RAM=32.3% → ✓ diff --git a/bot_output.log b/bot_output.log deleted file mode 100644 index 3f97337..0000000 --- a/bot_output.log +++ /dev/null @@ -1,28 +0,0 @@ -12:37:08 [WARNING] PyNaCl is not installed, voice will NOT be supported -12:37:08 [WARNING] Privileged message content intent is missing, commands may not work as expected. -12:37:08 [INFO] logging in using static token -12:37:09 [INFO] Services de monitoring démarrés. -12:37:09 [INFO] API HTTP en écoute sur le port 8765 -12:37:09 [INFO] Slash commands synced. -12:37:09 [INFO] Shard ID None has connected to Gateway (Session ID: 4e987803b1749930ee6baa8fa100bf49). -12:37:10 [INFO] Métriques reçues de l'agent (CPU: 3.5%) -12:37:10 [INFO] 127.0.0.1 [26/Feb/2026:12:37:10 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:37:11 [INFO] Connecté en tant que Gameurpro12bot#8094 (ID 1074714308660965398) -12:37:12 [WARNING] Impossible de récupérer le salon 123456789012345678: 404 Not Found (error code: 10003): Unknown Channel -12:37:12 [INFO] Message épinglé dans #chat-gameurcorp (1110604692263796746) -12:37:16 [INFO] Métriques reçues de l'agent (CPU: 2.1%) -12:37:16 [INFO] 127.0.0.1 [26/Feb/2026:12:37:16 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:37:22 [INFO] Métriques reçues de l'agent (CPU: 1.9%) -12:37:22 [INFO] 127.0.0.1 [26/Feb/2026:12:37:22 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:37:28 [INFO] Métriques reçues de l'agent (CPU: 6.0%) -12:37:28 [INFO] 127.0.0.1 [26/Feb/2026:12:37:28 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:37:32 [WARNING] Impossible de récupérer le salon 123456789012345678: 404 Not Found (error code: 10003): Unknown Channel -12:37:34 [INFO] Métriques reçues de l'agent (CPU: 4.7%) -12:37:34 [INFO] 127.0.0.1 [26/Feb/2026:12:37:34 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:37:40 [INFO] Métriques reçues de l'agent (CPU: 5.2%) -12:37:40 [INFO] 127.0.0.1 [26/Feb/2026:12:37:40 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:37:46 [INFO] Métriques reçues de l'agent (CPU: 2.4%) -12:37:46 [INFO] 127.0.0.1 [26/Feb/2026:12:37:46 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:37:52 [WARNING] Impossible de récupérer le salon 123456789012345678: 404 Not Found (error code: 10003): Unknown Channel -12:37:53 [INFO] Métriques reçues de l'agent (CPU: 2.3%) -12:37:53 [INFO] 127.0.0.1 [26/Feb/2026:12:37:53 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" diff --git a/bot_precision.log b/bot_precision.log deleted file mode 100644 index c7dad7d..0000000 --- a/bot_precision.log +++ /dev/null @@ -1,41 +0,0 @@ -12:25:51 [WARNING] PyNaCl is not installed, voice will NOT be supported -12:25:51 [WARNING] Privileged message content intent is missing, commands may not work as expected. -12:25:51 [INFO] logging in using static token -12:25:52 [INFO] Slash commands synced. -12:25:52 [INFO] API HTTP en écoute sur le port 8765 -12:25:53 [INFO] Shard ID None has connected to Gateway (Session ID: 1e9cce5a480ef266caf1e55cbf7d415c). -12:25:55 [INFO] Connecté en tant que Gameurpro12bot#8094 (ID 1074714308660965398) -12:25:55 [INFO] Métriques reçues de l'agent (CPU: 12.1%) -12:25:55 [INFO] 127.0.0.1 [26/Feb/2026:12:25:55 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:01 [INFO] Métriques reçues de l'agent (CPU: 3.6%) -12:26:01 [INFO] 127.0.0.1 [26/Feb/2026:12:26:01 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:07 [INFO] Métriques reçues de l'agent (CPU: 5.3%) -12:26:07 [INFO] 127.0.0.1 [26/Feb/2026:12:26:07 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:13 [INFO] Métriques reçues de l'agent (CPU: 4.5%) -12:26:13 [INFO] 127.0.0.1 [26/Feb/2026:12:26:13 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:15 [ERROR] Unhandled exception in internal background task 'update_loop'. -Traceback (most recent call last): - File "/home/gameurpro12/Documents/Mes_projets/Discord_bot/GameurBot/.venv/lib/python3.12/site-packages/discord/ext/tasks/__init__.py", line 246, in _loop - await self.coro(*args, **kwargs) - File "/home/gameurpro12/Documents/Mes_projets/Discord_bot/GameurBot/bot.py", line 114, in update_loop - channel_id = target.get("channel_id") - ^^^^^^^^^^ -AttributeError: 'str' object has no attribute 'get' -12:26:19 [INFO] Métriques reçues de l'agent (CPU: 8.6%) -12:26:19 [INFO] 127.0.0.1 [26/Feb/2026:12:26:19 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:25 [INFO] Métriques reçues de l'agent (CPU: 6.5%) -12:26:25 [INFO] 127.0.0.1 [26/Feb/2026:12:26:25 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:31 [INFO] Métriques reçues de l'agent (CPU: 20.8%) -12:26:31 [INFO] 127.0.0.1 [26/Feb/2026:12:26:31 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:37 [INFO] Métriques reçues de l'agent (CPU: 8.1%) -12:26:37 [INFO] 127.0.0.1 [26/Feb/2026:12:26:37 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:43 [INFO] Métriques reçues de l'agent (CPU: 3.7%) -12:26:43 [INFO] 127.0.0.1 [26/Feb/2026:12:26:43 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:50 [INFO] Métriques reçues de l'agent (CPU: 4.2%) -12:26:50 [INFO] 127.0.0.1 [26/Feb/2026:12:26:50 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:26:56 [INFO] Métriques reçues de l'agent (CPU: 5.7%) -12:26:56 [INFO] 127.0.0.1 [26/Feb/2026:12:26:56 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:27:02 [INFO] Métriques reçues de l'agent (CPU: 15.0%) -12:27:02 [INFO] 127.0.0.1 [26/Feb/2026:12:27:02 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:27:08 [INFO] Métriques reçues de l'agent (CPU: 19.7%) -12:27:08 [INFO] 127.0.0.1 [26/Feb/2026:12:27:08 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" diff --git a/bot_verification.log b/bot_verification.log deleted file mode 100644 index 3539775..0000000 --- a/bot_verification.log +++ /dev/null @@ -1,135 +0,0 @@ -12:19:44 [WARNING] PyNaCl is not installed, voice will NOT be supported -12:19:44 [WARNING] Privileged message content intent is missing, commands may not work as expected. -12:19:44 [INFO] logging in using static token -12:19:45 [INFO] Slash commands synced. -12:19:45 [INFO] API HTTP en écoute sur le port 8765 -12:19:45 [INFO] Shard ID None has connected to Gateway (Session ID: 44cfa7b3e2d7bc3caa7722d82b8d5c85). -12:19:47 [INFO] Connecté en tant que Gameurpro12bot#8094 (ID 1074714308660965398) -12:19:48 [INFO] Métriques reçues de l'agent (CPU: 24.6%) -12:19:48 [INFO] 127.0.0.1 [26/Feb/2026:12:19:48 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:19:54 [INFO] Métriques reçues de l'agent (CPU: 18.3%) -12:19:54 [INFO] 127.0.0.1 [26/Feb/2026:12:19:54 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:00 [INFO] Métriques reçues de l'agent (CPU: 14.2%) -12:20:00 [INFO] 127.0.0.1 [26/Feb/2026:12:20:00 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:06 [INFO] Métriques reçues de l'agent (CPU: 14.7%) -12:20:06 [INFO] 127.0.0.1 [26/Feb/2026:12:20:06 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:07 [ERROR] Unhandled exception in internal background task 'update_loop'. -Traceback (most recent call last): - File "/home/gameurpro12/Documents/Mes_projets/Discord_bot/GameurBot/.venv/lib/python3.12/site-packages/discord/ext/tasks/__init__.py", line 246, in _loop - await self.coro(*args, **kwargs) - File "/home/gameurpro12/Documents/Mes_projets/Discord_bot/GameurBot/bot.py", line 114, in update_loop - channel_id = target.get("channel_id") - ^^^^^^^^^^ -AttributeError: 'str' object has no attribute 'get' -12:20:12 [INFO] Métriques reçues de l'agent (CPU: 15.4%) -12:20:12 [INFO] 127.0.0.1 [26/Feb/2026:12:20:12 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:18 [INFO] Métriques reçues de l'agent (CPU: 17.9%) -12:20:18 [INFO] 127.0.0.1 [26/Feb/2026:12:20:18 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:24 [INFO] Métriques reçues de l'agent (CPU: 16.5%) -12:20:24 [INFO] 127.0.0.1 [26/Feb/2026:12:20:24 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:30 [INFO] Métriques reçues de l'agent (CPU: 16.5%) -12:20:30 [INFO] 127.0.0.1 [26/Feb/2026:12:20:30 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:36 [INFO] Métriques reçues de l'agent (CPU: 21.5%) -12:20:36 [INFO] 127.0.0.1 [26/Feb/2026:12:20:36 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:42 [INFO] Métriques reçues de l'agent (CPU: 31.4%) -12:20:42 [INFO] 127.0.0.1 [26/Feb/2026:12:20:42 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:49 [INFO] Métriques reçues de l'agent (CPU: 38.2%) -12:20:49 [INFO] 127.0.0.1 [26/Feb/2026:12:20:49 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:20:55 [INFO] Métriques reçues de l'agent (CPU: 55.5%) -12:20:55 [INFO] 127.0.0.1 [26/Feb/2026:12:20:55 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:01 [INFO] Métriques reçues de l'agent (CPU: 31.1%) -12:21:01 [INFO] 127.0.0.1 [26/Feb/2026:12:21:01 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:07 [INFO] Métriques reçues de l'agent (CPU: 15.2%) -12:21:07 [INFO] 127.0.0.1 [26/Feb/2026:12:21:07 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:13 [INFO] Métriques reçues de l'agent (CPU: 16.2%) -12:21:13 [INFO] 127.0.0.1 [26/Feb/2026:12:21:13 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:19 [INFO] Métriques reçues de l'agent (CPU: 9.1%) -12:21:19 [INFO] 127.0.0.1 [26/Feb/2026:12:21:19 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:25 [INFO] Métriques reçues de l'agent (CPU: 9.8%) -12:21:25 [INFO] 127.0.0.1 [26/Feb/2026:12:21:25 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:31 [INFO] Métriques reçues de l'agent (CPU: 4.9%) -12:21:31 [INFO] 127.0.0.1 [26/Feb/2026:12:21:31 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:37 [INFO] Métriques reçues de l'agent (CPU: 5.1%) -12:21:37 [INFO] 127.0.0.1 [26/Feb/2026:12:21:37 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:43 [INFO] Métriques reçues de l'agent (CPU: 4.9%) -12:21:43 [INFO] 127.0.0.1 [26/Feb/2026:12:21:43 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:49 [INFO] Métriques reçues de l'agent (CPU: 5.6%) -12:21:49 [INFO] 127.0.0.1 [26/Feb/2026:12:21:49 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:21:55 [INFO] Métriques reçues de l'agent (CPU: 14.8%) -12:21:55 [INFO] 127.0.0.1 [26/Feb/2026:12:21:55 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:01 [INFO] Métriques reçues de l'agent (CPU: 13.4%) -12:22:01 [INFO] 127.0.0.1 [26/Feb/2026:12:22:01 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:08 [INFO] Métriques reçues de l'agent (CPU: 8.7%) -12:22:08 [INFO] 127.0.0.1 [26/Feb/2026:12:22:08 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:14 [INFO] Métriques reçues de l'agent (CPU: 4.3%) -12:22:14 [INFO] 127.0.0.1 [26/Feb/2026:12:22:14 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:20 [INFO] Métriques reçues de l'agent (CPU: 4.5%) -12:22:20 [INFO] 127.0.0.1 [26/Feb/2026:12:22:20 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:26 [INFO] Métriques reçues de l'agent (CPU: 8.6%) -12:22:26 [INFO] 127.0.0.1 [26/Feb/2026:12:22:26 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:32 [INFO] Métriques reçues de l'agent (CPU: 5.2%) -12:22:32 [INFO] 127.0.0.1 [26/Feb/2026:12:22:32 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:38 [INFO] Métriques reçues de l'agent (CPU: 6.3%) -12:22:38 [INFO] 127.0.0.1 [26/Feb/2026:12:22:38 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:44 [INFO] Métriques reçues de l'agent (CPU: 2.4%) -12:22:44 [INFO] 127.0.0.1 [26/Feb/2026:12:22:44 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:50 [INFO] Métriques reçues de l'agent (CPU: 3.7%) -12:22:50 [INFO] 127.0.0.1 [26/Feb/2026:12:22:50 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:22:56 [INFO] Métriques reçues de l'agent (CPU: 9.3%) -12:22:56 [INFO] 127.0.0.1 [26/Feb/2026:12:22:56 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:02 [INFO] Métriques reçues de l'agent (CPU: 2.6%) -12:23:02 [INFO] 127.0.0.1 [26/Feb/2026:12:23:02 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:08 [INFO] Métriques reçues de l'agent (CPU: 15.7%) -12:23:08 [INFO] 127.0.0.1 [26/Feb/2026:12:23:08 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:14 [INFO] Métriques reçues de l'agent (CPU: 7.5%) -12:23:14 [INFO] 127.0.0.1 [26/Feb/2026:12:23:14 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:20 [INFO] Métriques reçues de l'agent (CPU: 2.5%) -12:23:20 [INFO] 127.0.0.1 [26/Feb/2026:12:23:20 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:27 [INFO] Métriques reçues de l'agent (CPU: 4.6%) -12:23:27 [INFO] 127.0.0.1 [26/Feb/2026:12:23:27 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:33 [INFO] Métriques reçues de l'agent (CPU: 9.5%) -12:23:33 [INFO] 127.0.0.1 [26/Feb/2026:12:23:33 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:39 [INFO] Métriques reçues de l'agent (CPU: 7.6%) -12:23:39 [INFO] 127.0.0.1 [26/Feb/2026:12:23:39 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:45 [INFO] Métriques reçues de l'agent (CPU: 8.3%) -12:23:45 [INFO] 127.0.0.1 [26/Feb/2026:12:23:45 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:51 [INFO] Métriques reçues de l'agent (CPU: 10.3%) -12:23:51 [INFO] 127.0.0.1 [26/Feb/2026:12:23:51 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:23:57 [INFO] Métriques reçues de l'agent (CPU: 15.0%) -12:23:57 [INFO] 127.0.0.1 [26/Feb/2026:12:23:57 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:03 [INFO] Métriques reçues de l'agent (CPU: 11.1%) -12:24:03 [INFO] 127.0.0.1 [26/Feb/2026:12:24:03 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:09 [INFO] Métriques reçues de l'agent (CPU: 10.7%) -12:24:09 [INFO] 127.0.0.1 [26/Feb/2026:12:24:09 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:15 [INFO] Métriques reçues de l'agent (CPU: 20.2%) -12:24:15 [INFO] 127.0.0.1 [26/Feb/2026:12:24:15 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:21 [INFO] Métriques reçues de l'agent (CPU: 15.6%) -12:24:21 [INFO] 127.0.0.1 [26/Feb/2026:12:24:21 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:27 [INFO] Métriques reçues de l'agent (CPU: 9.6%) -12:24:27 [INFO] 127.0.0.1 [26/Feb/2026:12:24:27 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:34 [INFO] Métriques reçues de l'agent (CPU: 5.1%) -12:24:34 [INFO] 127.0.0.1 [26/Feb/2026:12:24:34 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:40 [INFO] Métriques reçues de l'agent (CPU: 8.1%) -12:24:40 [INFO] 127.0.0.1 [26/Feb/2026:12:24:40 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:46 [INFO] Métriques reçues de l'agent (CPU: 3.0%) -12:24:46 [INFO] 127.0.0.1 [26/Feb/2026:12:24:46 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:52 [INFO] Métriques reçues de l'agent (CPU: 2.7%) -12:24:52 [INFO] 127.0.0.1 [26/Feb/2026:12:24:52 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:24:58 [INFO] Métriques reçues de l'agent (CPU: 3.0%) -12:24:58 [INFO] 127.0.0.1 [26/Feb/2026:12:24:58 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:25:05 [INFO] Métriques reçues de l'agent (CPU: 3.4%) -12:25:05 [INFO] 127.0.0.1 [26/Feb/2026:12:25:05 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:25:11 [INFO] Métriques reçues de l'agent (CPU: 6.4%) -12:25:11 [INFO] 127.0.0.1 [26/Feb/2026:12:25:11 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:25:17 [INFO] Métriques reçues de l'agent (CPU: 7.8%) -12:25:17 [INFO] 127.0.0.1 [26/Feb/2026:12:25:17 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:25:23 [INFO] Métriques reçues de l'agent (CPU: 19.9%) -12:25:23 [INFO] 127.0.0.1 [26/Feb/2026:12:25:23 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:25:29 [INFO] Métriques reçues de l'agent (CPU: 4.0%) -12:25:29 [INFO] 127.0.0.1 [26/Feb/2026:12:25:29 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:25:35 [INFO] Métriques reçues de l'agent (CPU: 6.9%) -12:25:35 [INFO] 127.0.0.1 [26/Feb/2026:12:25:35 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:25:41 [INFO] Métriques reçues de l'agent (CPU: 19.0%) -12:25:41 [INFO] 127.0.0.1 [26/Feb/2026:12:25:41 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" -12:25:47 [INFO] Métriques reçues de l'agent (CPU: 18.7%) -12:25:47 [INFO] 127.0.0.1 [26/Feb/2026:12:25:47 +0100] "POST /metrics HTTP/1.1" 200 154 "-" "Python/3.12 aiohttp/3.13.3" diff --git a/config.json b/config.json deleted file mode 100644 index c165945..0000000 --- a/config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "_comment": "Copier ce fichier en config.json et remplir les valeurs", - "discord_token": "MTA3NDcxNDMwODY2MDk2NTM5OA.Gj_JQf.V-Xd4DRW0cEOG6PYOBlnWAXFU5MPWlZWeHmgsk", - "api_secret": "Mon-cul-est-tres-doux", - "api_port": 8765, - "guilds": { - "_comment": "Sera rempli automatiquement par la commande /setup dans chaque serveur Discord", - "_example": { - "channel_id": 123456789012345678, - "message_id": null - }, - "1110604692263796746": { - "channel_id": 1227583375704064050, - "message_id": 1476543621137170625 - } - } -} \ No newline at end of file