# Superviseur Bot (Bêta) Bot Discord IA d'assistance et de modération avancée, utilisant **Ollama** pour l'inférence LLM locale. ## Fonctionnalités - **IA conversationnelle** : Répond aux questions et exécute des actions sur Discord via JSON - **Modération silencieuse** : Scan de toxicité de chaque message via LLM en arrière-plan - **Gestion vocale** : Transcription Whisper en temps réel + détection de mots-clés - **Mémoire utilisateur** : Historique par utilisateur avec résumé automatique (via LLM) - **Dispatch d'insights** : Coordination staff avec boutons d'acceptation Discord - **RGPD** : Purge automatique des données > 30 jours ## Installation ### Prérequis - Python 3.10+ - **Ollama** installé et en cours d'exécution (https://ollama.com) - Modèle `gpt-oss:20b` disponible dans Ollama ### Dépendances ```bash pip install -r requirements.txt ``` ### Configuration Ollama ```bash # Pull le modèle dans Ollama ollama pull gpt-oss:20b ``` ### Configuration Créer un fichier `.env` à la racine du dossier `beta/` : ```bash # Discord DISCORD_TOKEN=your_discord_bot_token GUILD_ID=your_guild_id # LLM (Ollama) OLLAMA_MODEL=gpt-oss:20b OLLAMA_BASE_URL=http://localhost:11434 # Staff ADMIN_IDS=123456789,987654321 PRIMARY_ASSETS_IDS=111222333,444555666 # Channel d'introspection INTROSPECTION_CHANNEL_ID=123456789 ``` ## Utilisation ```bash cd beta python main.py ``` Le bot va : 1. Se connecter à Ollama 2. Initialiser tous les composants (mémoire, modération, vocal) 3. Se connecter à Discord 4. Traiter les messages ## Architecture ``` beta/ ├── main.py # Point d'entrée ├── core/ │ ├── bot.py # Classe Beta (événements, orchestration) │ ├── llm.py # Gestionnaire LLM (Ollama API) │ ├── action_executor.py # Routage des actions IA → Discord │ ├── action_router.py # (legacy, redirige vers action_executor) │ ├── response_handler.py # Nettoyage, parsing JSON, envoi réponses │ ├── log_parser.py # Parsing des logs d'actions │ ├── content.py # Préparation du contenu pour le LLM │ ├── context_builder.py # Construction du contexte serveur │ ├── dispatcher.py # Dispatch d'insights vers staff │ ├── voice.py # Gestion vocale + Whisper │ ├── task_manager.py # Tâches de fond │ ├── messaging.py # Envoi de messages │ └── permissions.py # Whitelist et permissions ├── brain/ │ ├── memory.py # Mémoire utilisateur (wrapper) │ ├── memoire.py # Mémoire utilisateur (implémentation, JSON/Redis + cache) │ ├── moderation.py # Modération IA + SQLite │ └── infos_serveurs.py # Infos serveur ├── commandes/ │ ├── security/ # kick, ban, mute, warn, purge... │ ├── salons/ # Créer, supprimer, modifier salons │ ├── roles/ # Créer, supprimer, modifier rôles │ ├── categories/ # Créer, supprimer, modifier catégories │ └── autres/ # Config, status, ping, etc. ├── data/ # Logs, DB SQLite └── memoires/ # Historique utilisateur (JSON, par guild) ``` ## Actions IA Le bot peut exécuter les actions suivantes via LLM : - `CREATE_CHANNEL`, `DELETE_CHANNEL`, `MODIFY_CHANNEL`, `RENAME_CHANNEL`, `MOVE_CHANNEL` - `CREATE_ROLE`, `DELETE_ROLE`, `ADD_ROLE_TO_USER`, `REMOVE_ROLE_FROM_USER` - `CREATE_CATEGORY`, `DELETE_CATEGORY`, `MODIFY_CATEGORY`, `RENAME_CATEGORY` - `KICK`, `BAN`, `UNBAN`, `MUTE`, `UNMUTE`, `TIMEOUT`, `WARN`, `PURGE` - `JOIN_VOICE`, `LEAVE_VOICE` - `ALERT`, `INSIGHT`, `FORGET_USER`, `READ_LOGS` - `SEND_MESSAGE`, `HELP`, `STATUS` ## Variables d'environnement | Variable | Description | Défaut | |----------|-------------|--------| | `DISCORD_TOKEN` | Token du bot Discord | *requis* | | `GUILD_ID` | ID du serveur principal | *requis* | | `OLLAMA_MODEL` | Nom du modèle Ollama | `gpt-oss:20b` | | `OLLAMA_BASE_URL` | URL de l'API Ollama | `http://localhost:11434` | | `ADMIN_IDS` | IDs des administrateurs (virgule) | — | | `PRIMARY_ASSETS_IDS` | IDs du staff (virgule) | — | | `INTROSPECTION_CHANNEL_ID` | Channel de logs internes | — | | `TIMEZONE` | Fuseau horaire | `Europe/Paris` | | `SUPERVISEUR_MAX_CONCURRENT` | Requêtes LLM simultanées max | `4` | | `SUPERVISEUR_MEM_DIR` | Répertoire des mémoires | `memoires` | | `SUPERVISEUR_MAX_RECENT` | Messages avant résumé | `20` | | `SUPERVISEUR_REDIS_URL` | URL Redis (optionnel) | — | | `LOG_LEVEL` | Niveau de log | `INFO` | ## Tests ```bash # Tests unitaires pytest test_bot.py -v # Tests mémoire python -m brain.memoire ``` ## Monitoring Le bot inclut des métriques intégrées : - Nombre de requêtes LLM (succès/échecs) - Temps de réponse moyen - Métriques mémoire (hits/misses cache, lectures/écritures) ## Sécurité - **Local uniquement** : Pas d'appels réseau externes - **RGPD** : Purge automatique des données > 30 jours - **Permissions** : Vérification admin pour les actions destructrices - **Whitelist** : Système de niveaux de permissions ## Support 1. Vérifier les logs dans `data/bot.log` 2. Activer le mode debug : `LOG_LEVEL=DEBUG` 3. Vérifier qu'Ollama est actif : `ollama list`