# MamieHenriette đŸ‘” **Bot multi-plateformes pour Discord, Twitch et YouTube Live** ## Table des matiĂšres - [Vue d'ensemble](#vue-densemble) - [FonctionnalitĂ©s](#fonctionnalitĂ©s) - [Discord](#discord) - [Twitch](#twitch) - [YouTube Live](#youtube-live-en-dĂ©veloppement) - [Interface d'administration](#interface-dadministration) - [Installation](#installation) - [PrĂ©requis](#prĂ©requis) - [CrĂ©ation du bot Discord](#crĂ©ation-du-bot-discord) - [DĂ©marrage rapide](#dĂ©marrage-rapide) - [Volumes persistants](#volumes-persistants) - [Commandes Docker utiles](#commandes-docker-utiles) - [Mise Ă  jour](#mise-Ă -jour) - [Architecture du projet](#architecture-du-projet) - [Interface d'administration](#interface-dadministration-1) - [Structure des modules](#structure-des-modules) - [Composants principaux](#composants-principaux) - [SpĂ©cifications techniques](#spĂ©cifications-techniques) - [Base de donnĂ©es (SQLite)](#base-de-donnĂ©es-sqlite) - [Architecture multi-thread](#architecture-multi-thread) - [Monitoring et logging](#monitoring-et-logging) - [DĂ©pendances principales](#dĂ©pendances-principales) - [DĂ©veloppement](#dĂ©veloppement) - [Installation locale](#installation-locale) - [Contribution](#contribution) - [Licence](#licence) ## Vue d'ensemble Mamie Henriette est un bot intelligent open-source dĂ©veloppĂ© spĂ©cifiquement pour la communautĂ© de [STEvE](https://www.facebook.com/ChaineSTEvE) sur [YouTube](https://www.youtube.com/@513v3), [Twitch](https://www.twitch.tv/chainesteve) et [Discord](https://discord.com/invite/UwAPqMJnx3). > ⚠ **Statut** : En cours de dĂ©veloppement ### CaractĂ©ristiques principales - Interface web d'administration complĂšte - Gestion multi-plateformes (Discord opĂ©rationnel, Twitch intĂ©grĂ©, YouTube Live en dĂ©veloppement) - SystĂšme de notifications automatiques - Base de donnĂ©es intĂ©grĂ©e pour la persistance ## FonctionnalitĂ©s ### Discord - **Statuts dynamiques** : Rotation automatique des humeurs (10 min) - **Notifications Humble Bundle** : Surveillance et alertes automatiques (30 min) - **Commandes personnalisĂ©es** : Gestion via interface web - **Recherche ProtonDB** : Commande `!protondb ` pour vĂ©rifier la compatibilitĂ© Linux/Steam Deck - **ModĂ©ration** : Outils intĂ©grĂ©s ### Twitch - **Chat bot** : Commandes et interactions automatiques - **Alertes Live** : Surveillance automatique des streamers (vĂ©rification toutes les 5 minutes) - Support jusqu'Ă  100 chaĂźnes simultanĂ©ment - Notifications Discord avec aperçu du stream - Gestion via interface d'administration - DĂ©tection automatique des dĂ©buts/fins de stream ### YouTube Live *(en dĂ©veloppement)* - **Chat bot** : ModĂ©ration et commandes - **ÉvĂ©nements** : Notifications de diffusion ### Interface d'administration - **Dashboard** : Vue d'ensemble et statistiques - **Configuration** : Tokens, paramĂštres des plateformes, configuration ProtonDB - **Gestion des humeurs** : CrĂ©ation et modification des statuts - **Commandes** : Édition des commandes personnalisĂ©es - **ModĂ©ration** : Outils de gestion communautaire ## Installation ### PrĂ©requis - [Docker Engine](https://docs.docker.com/engine/install/) ou [Docker Desktop](https://docs.docker.com/desktop/) - Token Discord pour le bot - Token Twitch (optionnel) pour les fonctionnalitĂ©s Twitch ### CrĂ©ation du bot Discord Avant d'installer MamieHenriette, vous devez crĂ©er un bot Discord et obtenir son token : 1. **AccĂ©der au portail dĂ©veloppeur** : Rendez-vous sur [Discord Developer Portal](https://discord.com/developers/applications) 2. **CrĂ©er une nouvelle application** : - Cliquez sur "New Application" - Donnez un nom Ă  votre bot (ex: "MmeMichue") - Acceptez les conditions et cliquez sur "Create" 3. **Configurer le bot** : - Dans le menu latĂ©ral, cliquez sur "Bot" - Ajoutez une photo de profil et un pseudo Ă  votre bot - **Important : activez les intents** : - ☑ Presence Intent - ☑ Server Members Intent - ☑ Message Content Intent - Cliquez sur "Save Changes" 4. **RĂ©cupĂ©rer le token** : - Dans la section "Token", cliquez sur "Reset Token" - Copiez le token gĂ©nĂ©rĂ© (gardez-le secret !) 5. **Inviter le bot sur votre serveur** : - Allez dans "OAuth2" > "URL Generator" - SĂ©lectionnez les scopes : `bot` et `applications.commands` - SĂ©lectionnez les permissions nĂ©cessaires (Administrator recommandĂ© pour simplifier) - Utilisez l'URL gĂ©nĂ©rĂ©e pour inviter le bot sur votre serveur ### DĂ©marrage rapide ```bash # 1. Cloner le projet git clone https://github.com/skylanix/MamieHenriette.git ``` ```bash cd MamieHenriette ``` ```bash # 2. Lancer avec Docker docker compose up --build -d ``` > ⚠ **Important** : AprĂšs configuration via l'interface web http://localhost:5000, **redĂ©marrez le conteneur** pour que les changements soient pris en compte : > ```bash > docker compose restart MamieHenriette > ``` ### Volumes persistants - `./instance/` : Base de donnĂ©es SQLite et configuration - `./logs/` : Logs applicatifs rotatifs (50MB max par fichier) ### Commandes Docker utiles ```bash # Logs d'un conteneur en cours d'exĂ©cution docker logs -f MamieHenriette ``` ```bash # RedĂ©marrer docker compose restart MamieHenriette ``` ```bash # ArrĂȘter docker compose down ``` ### Mise Ă  jour #### Avec Docker (recommandĂ©) ```bash # 1. ArrĂȘter les conteneurs docker compose down # 2. RĂ©cupĂ©rer les derniĂšres modifications git pull origin main # 3. Mettre Ă  jour l'image Docker docker compose pull # 4. Reconstruire et relancer docker compose up --build -d ``` #### Sans Docker (installation locale) ```bash # 1. ArrĂȘter l'application # (Ctrl+C si elle tourne en premier plan) # 2. RĂ©cupĂ©rer les modifications git pull origin main # 3. Mettre Ă  jour les dĂ©pendances pip install -r requirements.txt # 4. Relancer python run-web.py ``` ## Architecture du projet ### Interface d'administration | Section | Fonction | |---------|----------| | **Configurations** | Tokens Discord/Twitch, paramĂštres gĂ©nĂ©raux et configuration ProtonDB | | **Humeurs** | Gestion des statuts Discord rotatifs | | **Commandes** | Commandes personnalisĂ©es multi-plateformes (Discord/Twitch) | | **Alertes Live** | Configuration surveillance streamers Twitch avec notifications Discord | | **Messages** | Messages automatiques et notifications pĂ©riodiques | | **ModĂ©ration** | Outils de gestion communautaire | ### Structure des modules ``` ├── database/ # Couche donnĂ©es │ ├── models.py # ModĂšles ORM │ ├── helpers.py # Utilitaires BDD │ └── schema.sql # Structure initiale │ ├── discordbot/ # Module Discord │ ├── __init__.py # Bot et handlers principaux │ └── humblebundle.py # Surveillance Humble Bundle │ ├── twitchbot/ # Module Twitch │ ├── __init__.py # Bot Twitch et handlers │ └── live_alert.py # Surveillance des streams live │ ├── protondb/ # Module ProtonDB │ └── __init__.py # API Algolia et recherche compatibilitĂ© │ └── webapp/ # Interface d'administration ├── static/ # Assets statiques (CSS, JS, images) ├── templates/ # Vues HTML Jinja2 ├── live_alert.py # Gestion des alertes Twitch ├── twitch_auth.py # Authentification Twitch OAuth └── *.py # Autres contrĂŽleurs par section ``` ### Composants principaux | Fichier | RĂŽle | |---------|------| | `run-web.py` | Point d'entrĂ©e principal | | `start.sh` | Script de dĂ©marrage Docker | | `docker-compose.yml` | Configuration des services | | `requirements.txt` | DĂ©pendances Python | ## SpĂ©cifications techniques ### Base de donnĂ©es (SQLite) - **Configuration** : ParamĂštres et tokens des plateformes - **Humeur** : Statuts Discord rotatifs avec gestion automatique - **Commande** : Commandes personnalisĂ©es multi-plateformes (Discord/Twitch) - **LiveAlert** : Configuration surveillance streamers Twitch (nom, canal Discord, statut) - **GameAlias** : Alias pour amĂ©liorer les recherches ProtonDB - **GameBundle** : Historique et notifications Humble Bundle - **Message** : Messages automatiques pĂ©riodiques (implĂ©mentĂ©) ### Architecture multi-thread - **Thread 1** : Interface web Flask (port 5000) avec logging rotatif - **Thread 2** : Bot Discord et tĂąches automatisĂ©es (humeurs, Humble Bundle) - **Thread 3** : Bot Twitch et surveillance live streams (vĂ©rification 5min) ### Monitoring et logging - **Healthcheck Docker** : Surveillance processus Python + dĂ©tection erreurs logs - **Logs rotatifs** : Fichiers limitĂ©s Ă  50MB avec rotation automatique - **Persistance** : Logs sauvegardĂ©s sur l'hĂŽte dans `./logs/` ### DĂ©pendances principales ``` discord.py==2.3.2 # API Discord avec support async flask>=2.3.2 # Interface web et API REST flask-sqlalchemy>=3.0.3 # ORM SQLAlchemy pour base de donnĂ©es flask[async] # Extensions async pour Flask requests>=2.32.4 # Client HTTP pour APIs externes waitress>=3.0.2 # Serveur WSGI de production algoliasearch>=4,<5 # API ProtonDB via Algolia twitchAPI>=4.5.0 # API Twitch pour streams et chat python-dotenv==1.0.0 # Gestion variables d'environnement aiohttp>=3.7.4,<4 # Client HTTP async (requis par discord.py) audioop-lts # CompatibilitĂ© audio Python 3.13+ ``` ## DĂ©veloppement ### Installation locale ```bash python3 -m venv venv ``` ```bash source venv/bin/activate ``` ```bash pip install -r requirements.txt ``` ```bash python run-web.py ``` ### Contribution 1. Fork du projet 2. Branche feature 3. Pull Request ## Licence MamieHenriette - Bot multi-plateformes pour Discord, Twitch et YouTube Live Copyright (C) 2025 Philippe Favre Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique GĂ©nĂ©rale GNU Affero telle que publiĂ©e par la Free Software Foundation, soit la version 3 de la Licence, ou (Ă  votre choix) toute version ultĂ©rieure. Ce programme est distribuĂ© dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans mĂȘme la garantie implicite de COMMERCIALISATION ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la Licence Publique GĂ©nĂ©rale GNU Affero pour plus de dĂ©tails. Vous devriez avoir reçu une copie de la Licence Publique GĂ©nĂ©rale GNU Affero avec ce programme. Si ce n'est pas le cas, voir . --- *Mamie Henriette vous surveille ! đŸ‘”đŸ‘€*