{"id":23533505,"url":"https://github.com/mhommet/discordbot","last_synced_at":"2026-05-07T07:39:05.546Z","repository":{"id":225389905,"uuid":"765867893","full_name":"mhommet/DiscordBOT","owner":"mhommet","description":"A discord bot made for fun with discord.py","archived":false,"fork":false,"pushed_at":"2024-10-17T14:41:11.000Z","size":34618,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-14T17:13:08.670Z","etag":null,"topics":["bot","discord","discord-py","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mhommet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-01T19:26:40.000Z","updated_at":"2024-10-17T14:41:15.000Z","dependencies_parsed_at":"2024-10-20T15:51:42.008Z","dependency_job_id":null,"html_url":"https://github.com/mhommet/DiscordBOT","commit_stats":null,"previous_names":["milan144/komradebot","milan144/discordbot","mhommet/discordbot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhommet%2FDiscordBOT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhommet%2FDiscordBOT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhommet%2FDiscordBOT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhommet%2FDiscordBOT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mhommet","download_url":"https://codeload.github.com/mhommet/DiscordBOT/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254190431,"owners_count":22029636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","discord","discord-py","python"],"created_at":"2024-12-25T23:27:21.066Z","updated_at":"2026-05-07T07:39:05.539Z","avatar_url":"https://github.com/mhommet.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🤖 KomradeBot - Bot Discord Multifonctions\n\n![Python](https://img.shields.io/badge/Python-3.11+-blue.svg)\n![Discord.py](https://img.shields.io/badge/Discord.py-2.5.2-brightgreen.svg)\n![Docker](https://img.shields.io/badge/Docker-Compatible-blue.svg)\n![License](https://img.shields.io/badge/License-MIT-green.svg)\n\n**Un bot Discord complet développé en Python avec plus de 20 commandes pour la musique, le divertissement et les utilitaires !**\n\n## ✨ Fonctionnalités\n\n### 🎵 **Musique YouTube**\n\n-   Lecture de musique depuis YouTube (URL ou recherche)\n-   File d'attente avec gestion complète\n-   Contrôles : pause, reprendre, skip, stop\n-   Déconnexion automatique après 5 minutes d'inactivité\n\n### 🎮 **Divertissement**\n\n-   Mèmes aléatoires depuis Reddit\n-   Photos d'animaux mignons (chats, chiens, renards)\n-   Citations inspirantes\n-   Mini-jeu Pierre-Feuille-Ciseaux\n-   Blagues françaises (6 catégories : dev, limites, beauf, etc.)\n\n### 🔧 **Utilitaires**\n\n-   Prix des cryptomonnaies en temps réel (Bitcoin, Ethereum)\n-   Météo pour n'importe quelle ville\n-   Système de sondages personnalisés\n-   Système de rappels programmés\n\n### 📊 **Gestion Communautaire**\n\n-   Sondages avec réactions automatiques\n-   Rappels personnels et publics (admins)\n-   Menu d'aide intégré\n-   Informations détaillées du bot\n-   Système XP/niveaux automatique\n-   Statistiques d'activité complètes\n\n## 🚀 Installation\n\n### Prérequis\n\n-   Docker et Docker Compose\n-   Token de bot Discord\n-   Clé API OpenWeather (optionnel)\n\n### 📋 Configuration\n\n1. **Cloner le projet :**\n\n```bash\ngit clone \u003cvotre-repo\u003e\ncd DiscordBOT\n```\n\n2. **Créer le fichier `.env` :**\n\n```bash\n# OBLIGATOIRE\nTOKEN=votre_token_discord_ici\n\n# OPTIONNEL (améliore la météo)\nOPENWEATHER_API_KEY=votre_clé_openweather\n\n# OPTIONNEL (blagues françaises)\nBLAGUES_API_TOKEN=votre_token_blagues_api\n```\n\n3. **Créer le répertoire de données :**\n\n```bash\nmkdir data\n```\n\n4. **Lancer avec Docker :**\n\n```bash\ndocker-compose up --build\n```\n\nLe répertoire `./data` sera automatiquement monté dans le container pour persister la base de données et les caches API.\n\n## 🔑 Obtenir les Clés API\n\n### Discord Bot Token\n\n1. Aller sur https://discord.com/developers/applications\n2. Créer une nouvelle application\n3. Aller dans \"Bot\" → Créer un bot\n4. Copier le token dans `.env`\n\n### OpenWeather API (Optionnel)\n\n1. S'inscrire sur https://openweathermap.org/api\n2. Récupérer la clé gratuite\n3. L'ajouter dans `.env`\n\n**Note :** Sans clé OpenWeather, la météo utilisera un service de fallback.\n\n### Blagues API (Optionnel)\n\n1. Aller sur https://www.blagues-api.fr/\n2. Créer un compte gratuit\n3. Récupérer le token Bearer dans votre profil\n4. L'ajouter dans `.env`\n\n**Note :** Sans token Blagues API, les commandes `/blague` afficheront un message d'aide.\n\n## 🎯 Système XP/Niveaux\n\nLe bot inclut un système de niveaux automatique :\n\n### 📊 **Fonctionnement**\n\n-   **+15 à 50 XP** par message (basé sur la longueur)\n-   **Cooldown de 60 secondes** entre chaque gain d'XP\n-   **Niveaux progressifs** : 100 XP pour le niveau 2, puis +50 XP par niveau\n-   **Notifications automatiques** lors des montées de niveau\n\n### 📈 **Statistiques trackées**\n\n-   Messages envoyés par utilisateur et serveur\n-   Heures d'activité les plus fréquentes\n-   Jours de la semaine les plus actifs\n-   Classement des utilisateurs les plus actifs\n\n### 🗄️ **Base de données**\n\n-   **SQLite** intégrée dans le container Docker\n-   **Persistance** des données entre redémarrages\n-   **Performances optimisées** pour les requêtes stats\n\n## 📖 Commandes Disponibles\n\n### 🎵 **Musique** (7 commandes)\n\n| Commande                | Description                        |\n| ----------------------- | ---------------------------------- |\n| `/play [url/recherche]` | Joue de la musique YouTube         |\n| `/pause`                | Met en pause la musique            |\n| `/resume`               | Reprend la musique                 |\n| `/skip`                 | Passe à la chanson suivante        |\n| `/stop`                 | Arrête la musique (déco auto 5min) |\n| `/leave`                | Déconnecte le bot immédiatement    |\n| `/queue`                | Affiche la file d'attente          |\n\n### 🎮 **Divertissement** (8 commandes)\n\n| Commande              | Description                            |\n| --------------------- | -------------------------------------- |\n| `/meme`               | Mème aléatoire depuis Reddit           |\n| `/chaton`             | Photo de chat mignon                   |\n| `/chien`              | Photo de chien mignon                  |\n| `/fox`                | Photo de renard mignon                 |\n| `/quote`              | Citation inspirante                    |\n| `/pfc [choix]`        | Pierre-Feuille-Ciseaux                 |\n| `/blague [catégorie]` | Blague française (6 types disponibles) |\n| `/blagueinfo`         | Statistiques de l'API Blagues          |\n\n### 🔧 **Utilitaires** (5 commandes)\n\n| Commande                     | Description                          |\n| ---------------------------- | ------------------------------------ |\n| `/btc`                       | Prix du Bitcoin en temps réel        |\n| `/eth`                       | Prix d'Ethereum en temps réel        |\n| `/weather [ville]`           | Météo d'une ville                    |\n| `/poll [question] [options]` | Sondage personnalisé (max 5 options) |\n| `/quickpoll [question]`      | Sondage Oui/Non rapide               |\n\n### ⏰ **Rappels** (2 commandes)\n\n| Commande                      | Description                      |\n| ----------------------------- | -------------------------------- |\n| `/remindme [durée] [message]` | Rappel personnel                 |\n| `/remind [durée] [message]`   | Rappel public (admin uniquement) |\n\n**Formats de durée :** `5m`, `2h`, `1d` (maximum 7 jours)\n\n### 📊 **Stats \u0026 XP** (3 commandes)\n\n| Commande               | Description                    |\n| ---------------------- | ------------------------------ |\n| `/level [utilisateur]` | Affiche niveau et XP d'un user |\n| `/leaderboard`         | Classement des niveaux top 10  |\n| `/stats`               | Statistiques complètes serveur |\n\n**Système XP :** +15-50 XP par message (cooldown 60s), montée de niveau automatique\n\n### ℹ️ **Aide** (2 commandes)\n\n| Commande | Description                    |\n| -------- | ------------------------------ |\n| `/help`  | Menu d'aide complet et stylé   |\n| `/info`  | Informations techniques du bot |\n\n## 🛠️ Technologies Utilisées\n\n-   **Python 3.11+** - Langage principal\n-   **Discord.py 2.5.2** - Librairie Discord\n-   **yt-dlp** - Téléchargement YouTube\n-   **FFmpeg** - Processing audio\n-   **aiohttp** - Requêtes HTTP asynchrones\n-   **SQLite** - Base de données stats/XP\n-   **Docker** - Conteneurisation\n\n## 🌐 APIs Externes\n\n-   **YouTube** - Extraction audio (yt-dlp)\n-   **CoinGecko** - Prix des cryptomonnaies (gratuit)\n-   **OpenWeatherMap** - Données météo (optionnel)\n-   **Reddit API** - Mèmes aléatoires\n-   **TheCatAPI / TheDogAPI** - Photos d'animaux\n-   **ZenQuotes** - Citations inspirantes\n-   **Blagues-API** - Blagues françaises (2700+ blagues, optionnel)\n\n## 🔧 Configuration Docker\n\nLe bot utilise `docker-compose.yml` avec :\n\n-   **Image :** `komradebot:2.0` (taguée)\n-   **Mode réseau :** `host` (pour la voix Discord)\n-   **Volumes :**\n    -   `.env` monté pour les variables\n    -   `./data` monté pour la persistance (DB SQLite + cache API)\n-   **Redémarrage :** Automatique sauf arrêt manuel\n\n### 📁 **Structure des données persistantes**\n\n```\n./data/\n├── bot_data.db          # Base SQLite (XP, stats, utilisateurs)\n└── openweather_usage.json  # Cache limite API météo\n```\n\nCes fichiers sont **automatiquement créés** au premier lancement et **persistent** entre les redémarrages.\n\n## 🚨 Dépannage\n\n### Problèmes de connexion vocale\n\n-   **WebSocket 4006 :** Bug Discord connu, le bot retry automatiquement\n-   **FFmpeg manquant :** Installé automatiquement dans le container\n\n### Variables d'environnement\n\n-   Vérifier que `TOKEN` existe dans `.env`\n-   Redémarrer après modification : `docker-compose restart`\n\n### Commandes slash non visibles\n\n```bash\n# Forcer la synchronisation avec rebuild complet\ndocker-compose down\ndocker-compose up --build\n\n# Le rebuild créera l'image komradebot:2.0\n```\n\n## 📈 Statistiques\n\n-   **27+ commandes** disponibles\n-   **7 catégories** de fonctionnalités\n-   **Auto-déconnexion** intelligente\n-   **APIs multiples** intégrées\n-   **Interface française** complète\n-   **Base SQLite** intégrée\n\n## 📝 Logs \u0026 Monitoring\n\nLes logs sont visibles avec :\n\n```bash\ndocker logs discordbot-komradebot-1 --follow\n```\n\n## 🤝 Contribution\n\n1. Fork le projet\n2. Créer une branche feature\n3. Commit les changements\n4. Push et créer une Pull Request\n\n## 📄 License\n\nCe projet est sous licence MIT. Voir le fichier `LICENSE` pour plus de détails.\n\n---\n\n**Développé avec ❤️ en Python | KomradeBot v2.0**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhommet%2Fdiscordbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmhommet%2Fdiscordbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhommet%2Fdiscordbot/lists"}