Créer un bot Discord pour nettoyer automatiquement les canaux d'un serveur.
Créer un bot Discord pour envoyer un message pré-rédigé à différents canaux est faisable avec Python et la bibliothèque discord.py
. Voici un guide simple pour le mettre en place sous Debian.
Étapes pour créer et exécuter le bot
1. Créer une application Discord
- Rendez-vous sur le portail des développeurs Discord.
- Cliquez sur New Application, donnez-lui un nom, et cliquez sur Create.
- Allez dans l’onglet Bot et cliquez sur Add Bot. Confirmez.
- Sous Token, cliquez sur Copy pour sauvegarder le token du bot (gardez-le privé).
2. Inviter le bot sur votre serveur
- Sous l’onglet OAuth2 > URL Generator, cochez :
-
bot
dans Scopes. - Les permissions nécessaires dans Bot Permissions (par exemple,
Send Messages
).
-
- Copiez l’URL générée et ouvrez-la dans votre navigateur.
- Invitez le bot sur votre serveur Discord en suivant les instructions.
3. Installer les dépendances
Sur votre Debian, installez Python et les bibliothèques nécessaires :
sudo apt update
sudo apt install python3 python3-pip -y
pip3 install discord.py
4. Écrire le script Python
Créez un fichier bot.py
avec le contenu suivant :
import discord
from discord.ext import commands, tasks
import asyncio
# Remplacez par votre propre token
TOKEN = "VOTRE_TOKEN_ICI"
# Remplacez par les IDs des canaux ou vous souhaitez effacer des messages
CHANNEL_IDS = [123456789012345678, 987654321098765432] # Exemple d'IDs de canaux
# Nombre maximum de messages a supprimer par execution
AMOUNT_TO_CLEAR = 100
# Initialisation du bot avec les intentions necessaires
intents = discord.Intents.default()
intents.messages = True # Permet au bot d'interagir avec les messages
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.event
async def on_ready():
print(f"Bot connecte comme {bot.user}")
# Demarre la tache qui effacera les messages tous les 7 jours
if not clear_messages.is_running():
clear_messages.start()
@tasks.loop(hours=168) # Boucle toutes les 7 jours (168 heures)
async def clear_messages():
for channel_id in CHANNEL_IDS:
channel = bot.get_channel(channel_id)
if channel:
try:
# Purge des messages dans le canal
deleted = await channel.purge(limit=AMOUNT_TO_CLEAR)
print(f"✅ {len(deleted)} messages supprimes dans le canal {channel_id}.")
except discord.errors.Forbidden:
print(f"⚠️ Acces refuse pour supprimer les messages dans le canal {channel_id}.")
except discord.errors.HTTPException as e:
print(f"❌ Erreur HTTP lors de la tentative de purge dans le canal {channel_id}: {e}")
else:
print(f"Canal avec ID {channel_id} introuvable.")
# Arreter la boucle apres l'execution
clear_messages.stop()
print("La tache a ete terminee. La boucle sera relancee dans 7 jours.")
# Lancer le bot
bot.run(TOKEN)
5. Obtenir les IDs des canaux
Activez le Mode Développeur dans Discord (Paramètres > Avancés > Mode Développeur). Faites un clic droit sur le canal concerné et sélectionnez Copier l’identifiant.
6. Exécuter le script
Lancez le bot avec :
7. Automatiser l’exécution
Utilisez cron
pour exécuter le script régulièrement :
-
Ouvrez l’éditeur
crontab
: -
Ajoutez une ligne pour exécuter le bot à une heure spécifique (remplacez le chemin par celui de votre script) :
0 9 * * * /usr/bin/python3 /chemin/vers/bot.py
Points importants
- Gardez votre token secret : Ne partagez jamais votre token. Si vous pensez qu'il est compromis, régénérez-le depuis le portail Discord.
- Permissions du bot : Vérifiez que le bot a bien les permissions nécessaires sur chaque canal.
- Testez localement : Assurez-vous que le script fonctionne correctement avant de l’automatiser.