Bot Discord intelligent et moderne pour la communauté SaucisseLand
🚀 Installation • ✨ Fonctionnalités • 📚 Documentation • 🤝 Contribution
Hermes Bot est un bot Discord multifonctionnel conçu pour la communauté SaucisseLand. Il combine modération avancée, gestion vocale intelligente, intégration d'articles anime et fonctionnalités divertissantes dans une solution complète et moderne.
- 🛡️ Modération Complète : Système d'avertissements, sanctions temporaires, gestion des rôles
- 🎤 Gestion Vocale Avancée : Suivi automatique du temps vocal avec classements
- 📰 Intégration Anime : Récupération automatique d'articles depuis Animotaku.fr
- 🎮 Fonctionnalités Fun : Blagues, confessions anonymes, jeux
- ⚙️ Administration Avancée : Gestion dynamique des commandes, logs détaillés
- 🗄️ Base de Données PostgreSQL : Persistance robuste et performances optimales
| Fonctionnalité | Description | Commandes |
|---|---|---|
| Avertissements | Système complet avec base de données | /warn, /check-warn |
| Sanctions Temporaires | Bannissement et mute temporaires | /tempban, /tempmute |
| Expulsion & Bannissement | Sanctions permanentes | /kick, /ban |
| Mute/Unmute | Contrôle vocal des utilisateurs | /mute, /unmute |
| Nettoyage | Suppression de messages | /clear |
| Règlement | Affichage des règles du serveur | /reglement |
- Suivi Automatique : Enregistrement du temps passé en vocal
- Classements : Top des utilisateurs les plus actifs
- Attribution de Rôles : Rôles automatiques basés sur le temps vocal
- Logs Détaillés : Historique complet des événements vocaux
- Commandes :
/voice,/check-voice
- Récupération Automatique : Articles depuis Animotaku.fr
- Filtrage Intelligent : Articles d'hier uniquement
- Système de Cache : Évite les doublons
- Envoi Automatique : Toutes les 5 minutes
- Commandes :
/anime-status,/anime-cache
- Système de Blagues : API Blagues intégrée
- Confessions Anonymes : Système de confessions sécurisé
- Jeux : Commandes de divertissement
- Gestion des Rôles : Attribution automatique
- Gestion des Commandes : Activation/désactivation dynamique
- Système de Cache : Optimisation des performances
- Logs Système : Interface console moderne avec Rich
- Scheduler : Planification des tâches automatiques
- Logs Membres : Suivi des arrivées/départs
- Python 3.8 ou supérieur
- PostgreSQL 12 ou supérieur
- Token Discord Bot (créé via Discord Developer Portal)
- Serveur Discord avec permissions administrateur
- Cloner le repository
git clone <repository-url>
cd Hermes- Installer les dépendances
pip install -r requirements.txt- Configurer PostgreSQL
# Créer la base de données
createdb saucisseland
# Initialiser les tables
psql -d saucisseland -f init-postgres.sql- Configurer l'environnement
cp env.example .env
# Éditer .env avec vos configurationsCréez un fichier .env avec les variables suivantes :
# === CONFIGURATION DISCORD (OBLIGATOIRE) ===
DISCORD_TOKEN=your_discord_bot_token
GUILD_ID=your_guild_id
# === CONFIGURATION API (OBLIGATOIRE) ===
BLAGUES_API_TOKEN=your_blagues_api_token
# === CANAUX DISCORD (OBLIGATOIRE) ===
BOT_CHANNEL_START=your_bot_channel_id
LOG_CHANNEL_ID=your_log_channel_id
VOICE_LOG_CHANNEL_ID=your_voice_log_channel_id
CONFESSION_CHANNEL_ID=your_confession_channel_id
ANIME_NEWS_CHANNEL_ID=your_anime_news_channel_id
WELCOME_CHANNEL_ID=your_welcome_channel_id
MEMBER_LOGS_CHANNEL_ID=your_member_logs_channel_id
# === RÔLES DISCORD (OBLIGATOIRE) ===
AUTHORIZED_ROLES=role1,role2,role3
ROLE_BATMAN=your_batman_role_name
VOICE_HOURS_FOR_ROLE=100
# === CONFIGURATION POSTGRESQL (OBLIGATOIRE) ===
PG_HOST=localhost
PG_PORT=5432
PG_DB=saucisseland
PG_USER=your_database_user
PG_PASSWORD=your_database_password
# === URLS (OBLIGATOIRE) ===
ANIME_THUMBNAIL_URL=your_anime_thumbnail_url
ANIME_AUTHOR_AVATAR_URL=your_anime_author_avatar_url# Validation de la configuration
python config.py
# Configuration des commandes
python setup_command_status_table.py
# Démarrage du bot
python main.pyHermes/
├── 📁 cogs/ # Modules de commandes
│ ├── 🎮 fun/ # Commandes divertissantes
│ │ ├── anime.py # Intégration articles anime
│ │ ├── blague.py # Système de blagues
│ │ ├── confess.py # Confessions anonymes
│ │ └── games.py # Jeux et divertissement
│ ├── 🛡️ moderation/ # Outils de modération
│ │ ├── voice.py # Gestion vocale
│ │ ├── warn.py # Système d'avertissements
│ │ ├── kick.py # Expulsion
│ │ ├── ban.py # Bannissement
│ │ ├── mute.py # Mute/Unmute
│ │ └── ... # Autres commandes
│ └── ⚙️ system/ # Commandes système
│ ├── command_management.py # Gestion des commandes
│ ├── member_logs.py # Logs des membres
│ └── reload.py # Rechargement
├── 📁 utils/ # Utilitaires
│ ├── database.py # Gestionnaire PostgreSQL
│ ├── command_manager.py # Gestion des commandes
│ ├── constants.py # Constantes
│ └── logging.py # Système de logs
├── 📁 scripts/ # Scripts utilitaires
├── main.py # Point d'entrée
├── config.py # Configuration
└── requirements.txt # Dépendances
Tables principales :
user_voice_data: Statistiques vocales des utilisateurswarn: Avertissements et sanctionsuser_message_stats: Statistiques des messagescommand_status: Statuts des commandes (activé/désactivé)
| Commande | Description | Utilisation |
|---|---|---|
/warn |
Avertir un utilisateur | /warn @user raison |
/check-warn |
Voir les avertissements | /check-warn @user |
/kick |
Expulser un utilisateur | /kick @user raison |
/ban |
Bannir un utilisateur | /ban @user raison |
/mute |
Muter un utilisateur | /mute @user durée raison |
/tempban |
Bannir temporairement | /tempban @user durée raison |
| Commande | Description | Utilisation |
|---|---|---|
/voice |
Voir le temps vocal | /voice [@user] |
/check-voice |
Classement vocal | /check-voice [nombre] |
| Commande | Description | Utilisation |
|---|---|---|
/anime-status |
Statut de la récupération | /anime-status |
/anime-cache |
Gérer le cache | /anime-cache [action] |
| Commande | Description | Utilisation |
|---|---|---|
/command-management |
Gérer les commandes | /command-management |
/reload |
Recharger les cogs | /reload |
/shutdown |
Arrêter le bot | /shutdown |
- Créer le cog
# cogs/fun/ma_commande.py
import discord
from discord.ext import commands
from discord import app_commands
from utils.command_manager import CommandStatusManager
import logging
logger = logging.getLogger(__name__)
class MaCommandeCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
@app_commands.command(name="macommande", description="Description de ma commande")
async def ma_commande(self, interaction: discord.Interaction):
command_name = interaction.command.name
is_enabled = await CommandStatusManager.get_command_status(
command_name,
guild_id=interaction.guild_id,
use_cache=False
)
if not is_enabled:
await interaction.response.send_message(
f"❌ La commande `/{command_name}` est actuellement désactivée.",
ephemeral=True
)
return
await interaction.response.send_message("Ma commande fonctionne !")
async def setup(bot):
await bot.add_cog(MaCommandeCog(bot))- Redémarrer le bot - La commande sera automatiquement ajoutée
# Nettoyer les fichiers temporaires
python scripts/cleanup_project.py
# Nettoyer l'environnement
python scripts/clean_env.py
# Migrer de SQLite vers PostgreSQL
python scripts/migrate_sqlite_to_postgres.py- +15 commandes de modération
- +10 commandes fun et divertissement
- +5 commandes système et administration
- Base de données PostgreSQL pour la persistance
- Interface console moderne avec Rich
- Logs détaillés pour le debugging
Le bot est conçu pour s'intégrer avec le site web SaucisseLand :
- Articles automatiques : Récupération quotidienne depuis Animotaku.fr
- Base de données partagée : PostgreSQL pour la persistance
- API REST : Communication bidirectionnelle
- Authentification unifiée : Système commun
- ✅ Migration complète vers PostgreSQL
- ✅ Système de gestion des commandes avec activation/désactivation
- ✅ Intégration articles anime avec cache intelligent
- ✅ Nettoyage complet du code et ajout de docstrings
- ✅ Suppression des commandes de test
- ✅ Interface console moderne avec Rich
- ✅ Gestion avancée des erreurs et logging
- ✅ Scripts de maintenance et nettoyage
- Système de modération basique
- Gestion vocale avec SQLite
- Commandes fun et divertissement
Nous accueillons les contributions ! Voici comment participer :
- Fork le projet
- Créer une branche feature (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
- Respectez le style de code existant
- Ajoutez des tests pour les nouvelles fonctionnalités
- Documentez les nouvelles commandes
- Testez sur un serveur de développement
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Dr.TableBasse
- 🌐 Site web : homepage.drtablebasse.fr
- 🐙 GitHub : @drtablebasse
- Discord.py pour l'API Discord
- PostgreSQL pour la base de données robuste
- Rich pour l'interface console moderne
- APScheduler pour la planification des tâches
- BeautifulSoup pour le parsing HTML
- Pillow pour le traitement d'images
⭐ N'oubliez pas de mettre une étoile si ce projet vous a aidé ! ⭐