73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
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)
|