Bot Discord pour clan Raid shadow legends
| README.md | ||
| RFT.py | ||
RTF Discord Bot - Personal Best Tracker
Un bot Discord pour tracker les Personal Best (PB) de votre guilde sur différents boss avec système de clans et gestion des difficultés.
🎮 Fonctionnalités
- Multi-Boss Support : Hydra (4 difficultés), Chimera (6 difficultés), Clan vs Clan
- Système de Clans : RTF, RTFC, RTFR avec classements séparés
- Screenshots automatiques : Stockage et affichage des preuves
- Base de données SQLite : Stockage persistant et performant
- Suppression automatique : Anciens screenshots supprimés lors de nouveaux records
- Interface intuitive : Commandes simples et embeds Discord
📋 Prérequis
Logiciels requis
- Python 3.9+
- Container Station (QNAP) ou Docker
- Discord Bot Token (Discord Developer Portal)
Dépendances Python
discord.py>=2.3.0
aiohttp>=3.8.0
🏗️ Structure des dossiers sur le NAS
Créez cette structure sur votre QNAP :
/share/Container/discord-bot/
├── bot.py # Script principal du bot
├── requirements.txt # Dépendances Python
├── .env # Variables d'environnement
├── docker-compose.yml # Configuration Docker
├── bot_data.db # Base SQLite (créée automatiquement)
├── logs/ # Logs du bot (optionnel)
└── screenshots/ # Screenshots des PB
├── hydra/
│ ├── normal/
│ ├── hard/
│ ├── brutal/
│ └── nightmare/
├── chimera/
│ ├── easy/
│ ├── normal/
│ ├── hard/
│ ├── brutal/
│ ├── nightmare/
│ └── ultra/
└── cvc/
🐳 Installation Docker (Recommandée)
1. Créer le fichier requirements.txt
discord.py>=2.3.0
aiohttp>=3.8.0
python-dotenv>=1.0.0
2. Créer le fichier .env
DISCORD_TOKEN=your_bot_token_here
AUTHORIZED_CHANNEL_ID=your_channel_id_here
3. Créer le Dockerfile
FROM python:3.9-slim
WORKDIR /app
# Installer les dépendances système
RUN apt-get update && apt-get install -y \
sqlite3 \
&& rm -rf /var/lib/apt/lists/*
# Copier les fichiers de configuration
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copier le code source
COPY bot.py .
# Créer les dossiers nécessaires
RUN mkdir -p screenshots/hydra/normal screenshots/hydra/hard screenshots/hydra/brutal screenshots/hydra/nightmare \
screenshots/chimera/easy screenshots/chimera/normal screenshots/chimera/hard screenshots/chimera/brutal screenshots/chimera/nightmare screenshots/chimera/ultra \
screenshots/cvc
# Variables d'environnement
ENV PYTHONUNBUFFERED=1
CMD ["python", "bot.py"]
4. Créer le docker-compose.yml
version: '3.8'
services:
discord-bot:
build: .
restart: unless-stopped
env_file:
- .env
volumes:
- ./screenshots:/app/screenshots
- ./bot_data.db:/app/bot_data.db
- ./logs:/app/logs
environment:
- TZ=Europe/Paris
container_name: rtf-discord-bot
# Optionnel: Limits des ressources
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M
⚙️ Configuration
1. Obtenir le Token Discord
- Aller sur Discord Developer Portal
- Créer une nouvelle Application
- Dans "Bot" → "Token" → Copier le token
- Dans "Bot" → "Privileged Gateway Intents" → Activer "Message Content Intent"
2. Obtenir l'ID du Channel
- Dans Discord, activer le Mode Développeur (Paramètres → Avancé)
- Clic droit sur votre channel → "Copier l'identifiant"
3. Inviter le bot sur votre serveur
Générez une URL d'invitation avec ces permissions :
- Send Messages
- Read Message History
- Attach Files
- Use External Emojis
- Add Reactions
URL : https://discord.com/api/oauth2/authorize?client_id=YOUR_BOT_ID&permissions=378944&scope=bot
🚀 Déploiement sur QNAP
Via Container Station (Recommandé)
- Installer Container Station via App Center
- Créer le dossier
/share/Container/discord-bot/ - Copier tous les fichiers dans ce dossier
- Modifier le fichier
.envavec vos tokens - Container Station → "Create" → "Create Application via docker-compose"
- Sélectionner votre
docker-compose.yml - Démarrer le container
Via SSH (Alternative)
# Se connecter au QNAP
ssh admin@IP_DE_VOTRE_QNAP
# Naviguer vers le dossier
cd /share/Container/discord-bot/
# Installer les dépendances (si Python est installé)
pip3 install -r requirements.txt
# Lancer le bot (test)
python3 bot.py
# Créer un service auto-start
# Via Interface QNAP : Panneau de contrôle → Applications → Autorun
# Ajouter : cd /share/Container/discord-bot && python3 bot.py &
📊 Base de données SQLite
Structure automatique
Le bot crée automatiquement les tables nécessaires :
- Table
users: PB de tous les boss et difficultés - Table
pb_history: Historique complet des records
Colonnes principales
-- Hydra
pb_hydra_normal, pb_hydra_normal_screenshot, pb_hydra_normal_date
pb_hydra_hard, pb_hydra_hard_screenshot, pb_hydra_hard_date
pb_hydra_brutal, pb_hydra_brutal_screenshot, pb_hydra_brutal_date
pb_hydra_nightmare, pb_hydra_nightmare_screenshot, pb_hydra_nightmare_date
-- Chimera (6 difficultés similaires)
pb_chimera_easy, pb_chimera_normal, pb_chimera_hard,
pb_chimera_brutal, pb_chimera_nightmare, pb_chimera_ultra
-- CvC
pb_cvc, pb_cvc_screenshot, pb_cvc_date
🎯 Utilisation des commandes
Soumettre un PB
!pbhydra brutal 1500000 (+ screenshot attachée)
!pbchimera ultra 2000000 (+ screenshot attachée)
!pbcvc 1800000 (+ screenshot attachée)
Voir des PB
!pbhydra nightmare (votre PB)
!pbchimera easy Alice (PB d'Alice)
!mystats (tous vos PB)
Classements
!top10hydra brutal (global)
!rtfhydra nightmare (clan RTF)
!rtfcchimera ultra (clan RTFC)
🔧 Maintenance
Logs
# Via Docker
docker logs rtf-discord-bot
# Via Container Station
Container Station → Votre container → Logs
Sauvegarde
# Sauvegarder la base de données
cp bot_data.db bot_data_backup_$(date +%Y%m%d).db
# Sauvegarder les screenshots
tar -czf screenshots_backup_$(date +%Y%m%d).tar.gz screenshots/
Nettoyage
Les anciens screenshots sont automatiquement supprimés quand un nouveau PB est établi.
🛠️ Résolution de problèmes
Le bot ne répond pas
- Vérifier que le
AUTHORIZED_CHANNEL_IDest correct - Vérifier que le bot a les bonnes permissions
- Consulter les logs pour les erreurs
Screenshots non sauvegardées
- Vérifier les permissions du dossier
screenshots/ - S'assurer que l'image est dans un format supporté (PNG, JPG, etc.)
Erreurs de base de données
- Vérifier les permissions en écriture sur
bot_data.db - En cas de corruption : supprimer le fichier (il sera recréé)
📈 Performances
Optimisation pour 50+ utilisateurs
- SQLite : Parfait jusqu'à 100+ utilisateurs simultanés
- Screenshots : ~2MB par image, nettoyage automatique
- RAM : ~128MB en utilisation normale
- CPU : Minimal (événements Discord uniquement)
🔒 Sécurité
- Token Discord dans
.env(jamais dans le code) - Bot limité à un seul channel
- Pas d'accès SSH ou système depuis le bot
- Screenshots stockées localement (contrôle total)
📝 Notes importantes
- Clans détectés automatiquement :
[RTF] Usernameou[RTF]Username - Anciens screenshots supprimés automatiquement lors de nouveaux PB
- Classements vides affichent un message informatif
- Format des dates : MM/DD/YYYY at HH:MM AM/PM
- Émojis modifiables dans
BOSS_CONFIGetCLAN_CONFIG
🚀 Extensions possibles
- Ajout de nouveaux boss
- Statistiques avancées (moyennes, progressions)
- Export des données en Excel
- Interface web pour visualiser les stats
- Notifications automatiques de nouveaux records
Développé pour la communauté RTF 🎮