191 lines
5.5 KiB
Markdown
191 lines
5.5 KiB
Markdown
# 🤖 TwitchBot Controller - Architecture Centralisée
|
|
|
|
## Vue d'ensemble
|
|
|
|
Le TwitchBot Controller a été refactorisé pour utiliser une architecture centralisée qui permet un contrôle complet depuis l'interface web. Cette nouvelle architecture résout les problèmes de synchronisation et de duplication observés dans les logs.
|
|
|
|
## 🏗️ Architecture
|
|
|
|
### Composants principaux
|
|
|
|
1. **Interface Web** (`web_interface.py`)
|
|
- Contrôle central de tous les composants
|
|
- API REST pour la gestion des flux et composants
|
|
- Interface utilisateur moderne avec Bootstrap
|
|
|
|
2. **BotController** (classe dans `web_interface.py`)
|
|
- Gestion centralisée de tous les bots
|
|
- Contrôle des états et synchronisation
|
|
- Gestion des erreurs et récupération
|
|
|
|
3. **Composants modulaires**
|
|
- **IA_generator** : Génération automatique de réponses
|
|
- **Control_Twitch** : Envoi de messages sur Twitch
|
|
- **RecordTwitch** : Enregistrement audio des streams
|
|
- **Subtitle_translation** : Traitement des sous-titres
|
|
- **TwitchChatBot** : Connexion aux chats Twitch
|
|
|
|
## 🔧 Fonctionnalités
|
|
|
|
### Contrôle depuis l'interface web
|
|
|
|
#### Gestion des flux
|
|
- ✅ Ajouter/supprimer des flux Twitch
|
|
- ✅ Activer/désactiver les flux
|
|
- ✅ Surveillance en temps réel
|
|
- ✅ Gestion des erreurs
|
|
|
|
#### Contrôle des composants
|
|
- ✅ **IA Generator** : Démarrage/arrêt depuis l'interface
|
|
- ✅ **Control Twitch** : Contrôle de l'envoi de messages
|
|
- ✅ **Auto Subtitle** : Génération automatique de sous-titres
|
|
- ✅ **Auto Messages** : Envoi automatique de messages
|
|
|
|
#### Gestion des utilisateurs
|
|
- ✅ Ajouter/modifier/supprimer des utilisateurs Twitch
|
|
- ✅ Gestion des tokens OAuth
|
|
- ✅ Sélection d'utilisateur pour l'envoi de messages
|
|
|
|
#### Configuration
|
|
- ✅ Gestion des prompts IA
|
|
- ✅ Configuration des paramètres
|
|
- ✅ Sauvegarde automatique
|
|
|
|
## 🚀 Démarrage
|
|
|
|
### Prérequis
|
|
```bash
|
|
pip install flask flask-socketio requests pytmi
|
|
```
|
|
|
|
### Configuration
|
|
1. Créez les fichiers de configuration :
|
|
- `config/config.json` : Configuration générale
|
|
- `config/user.json` : Utilisateurs Twitch
|
|
|
|
2. Configurez vos paramètres :
|
|
- Tokens OAuth Twitch
|
|
- Noms de canaux
|
|
- Prompts IA
|
|
|
|
### Lancement
|
|
```bash
|
|
python start_web_interface.py
|
|
```
|
|
|
|
L'interface sera disponible sur : http://localhost:5000
|
|
|
|
## 📊 Interface utilisateur
|
|
|
|
### Tableau de bord
|
|
- **Statut des flux** : Nombre de flux actifs
|
|
- **Enregistrements** : Flux avec enregistrement audio
|
|
- **Connexions chat** : Flux connectés aux chats
|
|
|
|
### Contrôles principaux
|
|
- **Générateur IA** : Toggle pour démarrer/arrêter
|
|
- **Contrôleur Twitch** : Toggle pour l'envoi de messages
|
|
- **Auto Subtitle** : Génération automatique de sous-titres
|
|
- **Auto Messages** : Envoi automatique de messages
|
|
|
|
### Gestion des flux
|
|
- Ajouter de nouveaux flux Twitch
|
|
- Activer/désactiver les flux
|
|
- Surveillance du statut en temps réel
|
|
- Gestion des erreurs
|
|
|
|
## 🔄 Flux de données
|
|
|
|
### 1. Enregistrement audio
|
|
```
|
|
RecordTwitch → Fichiers MP3 → Whisper → Sous-titres
|
|
```
|
|
|
|
### 2. Génération IA
|
|
```
|
|
Sous-titres → IA_generator → Réponses IA → Stockage
|
|
```
|
|
|
|
### 3. Envoi de messages
|
|
```
|
|
Stockage → Control_Twitch → Chat Twitch
|
|
```
|
|
|
|
## 🛠️ API Endpoints
|
|
|
|
### Flux
|
|
- `GET /api/flux` : Liste des flux
|
|
- `POST /api/flux` : Ajouter un flux
|
|
- `DELETE /api/flux/<id>` : Supprimer un flux
|
|
- `POST /api/flux/<id>/toggle` : Activer/désactiver
|
|
|
|
### Composants
|
|
- `POST /api/ia-generator/start` : Démarrer IA Generator
|
|
- `POST /api/ia-generator/stop` : Arrêter IA Generator
|
|
- `POST /api/control-twitch/start` : Démarrer Control Twitch
|
|
- `POST /api/control-twitch/stop` : Arrêter Control Twitch
|
|
|
|
### Statut
|
|
- `GET /api/system-status` : Statut de tous les composants
|
|
- `GET /api/status` : Statut général
|
|
|
|
## 🔍 Résolution des problèmes
|
|
|
|
### Problèmes résolus
|
|
|
|
1. **Générations dupliquées** ✅
|
|
- Contrôle centralisé de l'IA Generator
|
|
- Vérification des états avant génération
|
|
|
|
2. **Messages dupliqués** ✅
|
|
- Contrôle centralisé de Control Twitch
|
|
- Suppression automatique des messages envoyés
|
|
|
|
3. **Synchronisation** ✅
|
|
- États centralisés dans BotController
|
|
- Communication via API REST
|
|
|
|
4. **Gestion des erreurs** ✅
|
|
- Try/catch dans tous les composants
|
|
- Récupération automatique
|
|
|
|
### Logs améliorés
|
|
|
|
Les logs sont maintenant plus clairs et informatifs :
|
|
```
|
|
[12:04:15] IA Generator démarré
|
|
[12:04:20] Control Twitch démarré
|
|
[12:04:25] Message envoyé: Réponse IA...
|
|
[12:04:30] Génération créée: Nouvelle réponse...
|
|
```
|
|
|
|
## 🔧 Maintenance
|
|
|
|
### Redémarrage propre
|
|
```bash
|
|
# Arrêter tous les composants depuis l'interface
|
|
# Puis redémarrer l'application
|
|
python start_web_interface.py
|
|
```
|
|
|
|
### Debug
|
|
- Logs détaillés dans la console
|
|
- Statut en temps réel dans l'interface
|
|
- Gestion des erreurs avec messages explicites
|
|
|
|
## 📈 Avantages de la nouvelle architecture
|
|
|
|
1. **Contrôle centralisé** : Tous les composants sont gérés depuis l'interface web
|
|
2. **Synchronisation** : Élimination des conflits et duplications
|
|
3. **Modularité** : Chaque composant peut être démarré/arrêté indépendamment
|
|
4. **Observabilité** : Statut en temps réel de tous les composants
|
|
5. **Maintenabilité** : Code plus propre et mieux organisé
|
|
6. **Extensibilité** : Facile d'ajouter de nouveaux composants
|
|
|
|
## 🎯 Utilisation recommandée
|
|
|
|
1. **Démarrage** : Lancez l'interface web
|
|
2. **Configuration** : Ajoutez vos flux et utilisateurs
|
|
3. **Activation** : Démarrez les composants depuis l'interface
|
|
4. **Surveillance** : Surveillez les statuts en temps réel
|
|
5. **Ajustement** : Modifiez les paramètres selon vos besoins |