import discord import django import os, sys import dotenv from discord.ext import commands # On import django pour communiquer avec BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) if BASE_DIR not in sys.path: sys.path.insert(0, BASE_DIR) os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'devart.settings') django.setup() # Import des fonctions from role_logic import check_role_reaction from announces_logic import check_announcements from random_phrase import get_random_phrase from level_logic import check_add_xp, get_xp import BotClass # CONFIGURATION TOKEN = dotenv.get_key(BASE_DIR + '/.env', 'D_TOKEN') MESSAGE_ID = 1450928822156263505 # L'ID du message des règles (clic droit > Copier l'identifiant) ROLE_ID = 1450920002868875435 # L'ID du rôle "Membres" ANNOUNCEMENT_CHANNEL_ID = 1450912559774306346 EMOJI_VALIDATION = "✅" # LES INTENTS (PERMISSIONS DU BOT) intents = discord.Intents.default() intents.members = True # Important pour pouvoir donner des rôles intents.message_content = True client = BotClass.Bot(intents=intents) client.tree.add_command(get_random_phrase) client.tree.add_command(get_xp) @client.event async def on_ready(): print(f'✅ Bot connecté : {client.user}') try: synced = await client.tree.sync() print(f"🌍 {len(synced)} commandes slash synchronisées !") except Exception as e: print(f"❌ Erreur de synchronisation : {e}") if not check_announcements.is_running(): check_announcements.start(client, ANNOUNCEMENT_CHANNEL_ID) @client.event async def on_message(message): if message.author == client.user: return if message.guild is None: author = message.author await message.channel.send("Bonjour !\nJe suis un bot destiné à tester les nouvelles fonctionnalités de Discord. Pour le moment, je suis qu'en lecture seule.") else: await check_add_xp(message, client) @client.event async def on_raw_reaction_add(payload): # On envoie tout le nécessaire à notre fonction dans role_logic.py await check_role_reaction( payload, client, MESSAGE_ID, ROLE_ID, EMOJI_VALIDATION ) client.run(TOKEN)