Ajout du système de sanctions, mise en déploiement pour test à grande échelle See merge request Omega_Kube/kuby!12 |
||
|---|---|---|
| banners | ||
| commandes | ||
| data | ||
| scratch | ||
| src | ||
| utils | ||
| .gitignore | ||
| background_template.png | ||
| background_template_goodbye.png | ||
| bot.py | ||
| check_cols.py | ||
| check_db.py | ||
| check_schema.py | ||
| custom_font_large.otf | ||
| custom_font_small.otf | ||
| kuby.py | ||
| note_dev | ||
| README.md | ||
| requirements.txt | ||
| serveur_flask.py | ||
| test_staff_ratings.py | ||
🤖 Kuby - Bot Discord Multi-Fonctions
Kuby est un bot Discord complet développé en Python avec discord.py. Il offre une suite complète d'outils de modération, de sécurité, de sauvegarde et de gestion communautaire.
📋 Table des Matières
- ✨ Fonctionnalités
- 🛠️ Installation
- ⚙️ Configuration
- 📖 Commandes
- 🏗️ Architecture
- 🔐 Système de Permissions
- 📊 Système de Logs
- 🧪 Tests
✨ Fonctionnalités
🛡️ Sécurité
- Anti-Raid : Protection contre les attaques de raid
- Anti-Spam : Détection et sanction du spam (5 msgs/5s par défaut)
- Anti-Link : Blocage des liens non autorisés (discord.gg, http, https, www)
- Anti-Mention : Protection contre les mentions abusives
- Anti-Nuke : Protection contre la suppression massive de salons/ rôles
💾 Sauvegardes
- Backup Complet : Sauvegarde rôles, catégories, salons, membres
- Export des Messages : Option pour inclure l'historique des messages
- Archives ZIP : Fichiers compressés pour faciliter le stockage
🎫 Système de Tickets
- Création de tickets via bouton interactif
- Gestion des permissions par rôle staff
- Logs des actions
- Réouverture et suppression
👋 Bienvenue / Au Revoir
- Images de bienvenue personnalisées avec avatar
- Messages DM automatisés
- Images d'au revoir avec temps de présence
📝 Logs & Monitoring
- Logs des événements membres (join/leave)
- Logs des messages (édit/ suppression)
- Logs vocaux (connexion/ déconnection)
- Restauration des rôles à la reconnexion
🔒 Gestion des Utilisateurs
- Whitelist : Liste d'utilisateurs autorisés à utiliser les commandes sensibles
- Blacklist Réseau : Système de blacklist global pour tous les serveurs partenaires
🎮 Commandes Fun
- Commandes variées pour animer le serveur
🛠️ Installation
Prérequis
- Python 3.10 ou supérieur
- pip (gestionnaire de paquets Python)
1. Cloner le Repository
git clone <url-du-repo>
cd backup_kuby
2. Créer un Environnement Virtuel (Recommandé)
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
.\venv\Scripts\activate # Windows
3. Installer les Dépendances
pip install -r requirements.txt
Les dépendances incluent :
discord.py>=2.3.0- Framework Discordpython-dotenv>=1.0.0- Variables d'environnementPIL- Traitement d'images (pour les images de bienvenue)aiohttp- Requêtes HTTP asynchrones
⚙️ Configuration
1. Créer un Fichier .env
Créez un fichier .env à la racine du projet avec le contenu suivant :
# Token de votre bot Discord
DISCORD_TOKEN=your_bot_token_here
# ID de l'application Discord (optionnel)
APPLICATION_ID=your_application_id_here
2. Obtenir le Token du Bot
- Allez sur le Discord Developer Portal
- Créez une nouvelle application
- Allez dans l'onglet "Bot"
- Créez un bot et copiez le token
- Activez les intents nécessaires :
SERVER MEMBERS INTENTMESSAGE CONTENT INTENTVOICE STATES
3. Inviter le Bot sur votre Serveur
Générez un lien d'invitation avec les permissions suivantes :
Administrator(recommandé pour toutes les fonctionnalités)
📖 Commandes
🔐 Sécurité
| Commande | Description |
|---|---|
/security |
Ouvrir le panneau de configuration de sécurité |
Le panneau de sécurité permet de configurer :
- Anti-Raid : Protection contre les raids
- Anti-Spam : Bloque le spam excessif
- Anti-Link : Interdit les liens non autorisés
- Anti-Mention : Protection contre les mentions de masse
- Anti-Nuke : Protection contre la suppression de salons/rôles
- Logs : Activer/désactiver les logs
💾 Sauvegardes
| Commande | Description |
|---|---|
/backup create |
Créer une sauvegarde complète du serveur |
/backup list |
Lister les sauvegardes disponibles |
Options pour /backup create :
save_messages: Inclure les messages (défaut: True)privacy_notice: Afficher un avertissement public (défaut: True)message_limit_per_channel: Limite de messages par salon (défaut: 10000)
🎫 Tickets
| Commande | Description |
|---|---|
/ticket setup |
Configurer le système de tickets |
/ticket panel [channel] |
Créer un panneau de création de tickets |
Fonctionnement :
- Les utilisateurs cliquent sur "Créer un ticket"
- Un salon privé est créé automatiquement
- Les membres staff peuvent fermer/rouvrir
👋 Bienvenue / Au Revoir
| Commande | Description |
|---|---|
/setwelcome <channel> [message_dm] |
Configurer le salon de bienvenue et message DM |
/setgoodbye <channel> |
Configurer le salon d'au revoir |
Variables pour les messages DM :
{username}- Nom d'utilisateur{servername}- Nom du serveur{member_count}- Nombre de membres
👥 Whitelist
| Commande | Description |
|---|---|
/whitelist ajouter <utilisateur> |
Ajouter un utilisateur à la whitelist |
/whitelist retirer <utilisateur> |
Retirer un utilisateur de la whitelist |
/whitelist liste |
Lister les utilisateurs whitelistés |
🔒 Blacklist (Agents uniquement)
| Commande | Description |
|---|---|
/blacklist <utilisateur> [raison] |
Blacklister un utilisateur du réseau |
/unblacklist <utilisateur> |
Retirer de la blacklist |
🏗️ Architecture
backup_kuby/
├── bot.py # Point d'entrée principal du bot
├── kuby.py # Script de lancement alternatif
├── requirements.txt # Dépendances Python
├── .env # Variables d'environnement (à créer)
├── README.md # Documentation
│
├── commandes/ # Cog Discord (modules de commandes)
│ ├── whitelist.py # Gestion de la whitelist
│ ├── whitelist_monitor.py # Monitoring whitelist
│ ├── security.py # Panneau de sécurité
│ ├── ticket.py # Système de tickets
│ ├── backup.py # Sauvegardes serveur
│ ├── blacklist.py # Blacklist réseau
│ ├── welcome.py # Messages de bienvenue
│ ├── goodbye.py # Messages d'au revoir
│ ├── fun.py # Commandes fun
│ ├── snipe.py # Commande snipe
│ ├── scan.py # Scan de sécurité
│ ├── no_link.py # Anti-liens basique
│ │
│ └── modules_security/ # Modules de sécurité avancés
│ ├── antispam.py # Anti-spam & Anti-liens
│ ├── antiraid.py # Anti-raid
│ └── logs_manager.py # Gestion des logs
│
├── data/ # Données et configurations
│ ├── config.db # Base SQLite (welcome/goodbye)
│ ├── whitelist.json # Utilisateurs whitelistés
│ ├── blacklist.json # Utilisateurs blacklistés
│ ├── security_settings.json # Paramètres de sécurité
│ ├── agents.json # Agents de la blacklist
│ ├── tickets_blacklist.json # Tickets blacklist
│ │
│ ├── logs/ # Logs d'événements
│ │ ├── member_events_*.json
│ │ ├── messages_*.json
│ │ └── voice_*.json
│ │
│ ├── security_backups/ # Sauvegardes serveur
│ └── member_logs/ # Historique des rôles membres
│
├── ressources/ # Ressources statiques
│ └── assets/
│
└── src/ # Code source utilitaire
├── logger.py # Système de logging
└── advanced_logger.py # Logging avancé & historique
🔐 Système de Permissions
Whitelist
La whitelist est un système de permissions qui contrôle l'accès aux commandes sensibles. Seuls les utilisateurs whitelistés peuvent utiliser certaines commandes administratives.
Fichiers :
data/whitelist.json- Stockage des utilisateurs whitelistés
Gestion :
- Les propriétaires de serveur sont automatiquement whitelistés
- Gestion via
/whitelist ajouter/retirer/liste
Rôles de Staff
Pour le système de tickets, les rôles staff sont définis lors de la configuration. Ces rôles ont accès aux tickets des utilisateurs.
Permissions Requises
Le bot nécessite les permissions suivantes sur le serveur :
Administrator(recommandé) OUManage Roles- Pour la modérationManage Channels- Pour les ticketsBan Members- Pour la sécuritéManage Messages- Pour l'anti-spamView Audit Log- Pour les logs
📊 Système de Logs
Types d'Événements Trackés
Événements Membres
- Join : Arrivée d'un nouveau membre
- Leave : Départ d'un membre
- Restauration de rôles : Les rôles sont restaurés si le membre revient
Événements Messages
- Suppression : Message supprimé (contenu, auteur, salon)
- Édition : Message modifié (avant/après)
Événements Vocaux
- Connexion : Arrivée dans un salon vocal
- Déconnexion : Départ d'un salon vocal
- Déplacement : Changement de salon vocal
Fichiers de Logs
Les logs sont stockés dans data/logs/ avec la structure suivante :
member_events_YYYY-MM-DD.json- Événements membresmessages_YYYY-MM-DD.json- Événements messagesvoice_YYYY-MM-DD.json- Événements vocaux
Restauration des Rôles
Le système advanced_logger.py сохраняе l'historique des rôles des membres dans data/member_logs/{user_id}.json. Lorsqu'un membre rejoint à nouveau, ses rôles précédents sont automatiquement restaurés.
🧪 Tests
Lancer le Bot
# Méthode 1 : Via kuby.py
python kuby.py
# Méthode 2 : Via bot.py (avec gestion d'erreur)
python bot.py
Vérifier le Fonctionnement
- Le bot doit apparaître en ligne sur Discord
- Vérifiez les logs dans la console
- Testez les commandes :
/whitelist liste- Doit fonctionner/security- Doit ouvrir le panneau/backup create- Doit créer une sauvegarde
Dépannage
Problèmes Courants :
-
Token manquant
Erreur: Token Discord non trouvé dans les variables d'environnement!➡️ Vérifiez le fichier
.env -
Intentions manquantes
discord.IntentsRequired: ...➡️ Activez les intents sur le portail développeur
-
Permissions insuffisantes
Je n'ai pas la permission d'exclure ce membre➡️ Vérifiez la position du bot dans la hiérarchie des rôles
📝 Notes de Développement
Structure des Cogs
Chaque module est un "Cog" Discord.py qui permet une organisation modulaire du code :
class NomDuModule(commands.Cog):
def __init__(self, bot):
self.bot = bot
# Commandes slash
@app_commands.command(name="commande", description="Description")
async def ma_commande(self, interaction: discord.Interaction):
# Logique
pass
async def setup(bot):
await bot.add_cog(NomDuModule(bot))
Système de Logging
Le bot utilise un système de logging personnalisé via src/logger.py :
kuby_logger.info()- Informations généraleskuby_logger.debug()- Messages de débogagekuby_logger.error()- Erreurskuby_logger.audit()- Audits de sécurité
📄 Licence
Ce projet est développé pour le réseau Omega Kube. Toute utilisation est soumise aux conditions du projet.
🤝 Contribution
Pour contribuer au projet :
- Forkez le repository
- Créez une branche (
git checkout -b feature/ma-fonctionnalite) - Commitez vos changements (
git commit -m 'Ajout de...') - Push sur la branche (
git push origin feature/ma-fonctionnalite) - Ouvrez une Pull Request
Développé avec ❤️ pour Omega Kube