Migration de Kuby vers disnake

This commit is contained in:
Mathis 2026-05-06 17:07:09 +02:00
parent dc6e235f27
commit c8c579eefe
36 changed files with 1205 additions and 1253 deletions

View file

@ -1,6 +1,5 @@
import discord
from discord import app_commands
from discord.ext import commands
import disnake
from disnake.ext import commands
import json
import os
from typing import List
@ -32,95 +31,60 @@ class Whitelist(commands.Cog):
self.whitelist[str(guild_id)] = users
self.save_whitelist()
@commands.hybrid_group(name="whitelist", aliases=["wl"], description="Gère la whitelist du serveur")
async def whitelist_group(self, ctx):
@commands.slash_command(name="whitelist", description="Gère la whitelist du serveur")
async def whitelist_group(self, interaction: disnake.ApplicationCommandInteraction):
"""Groupe de commandes pour gérer la whitelist"""
if ctx.invoked_subcommand is None:
await ctx.send_help(ctx.command)
pass
# ✅ Ajouter un utilisateur
@whitelist_group.command(name="ajouter", description="Ajoute un utilisateur à la whitelist")
@app_commands.describe(utilisateur="L'utilisateur à ajouter")
async def ajouter(self, ctx, utilisateur: discord.User):
interaction = ctx.interaction
guild_id = ctx.guild.id
@whitelist_group.sub_command(name="ajouter", description="Ajoute un utilisateur à la whitelist")
async def ajouter(self, interaction: disnake.ApplicationCommandInteraction, utilisateur: disnake.User):
guild_id = interaction.guild.id
users = self._get_guild_whitelist(guild_id)
user_id = str(utilisateur.id)
if user_id in users:
msg = f"🔒 {utilisateur.mention} est déjà dans la whitelist."
if interaction:
await interaction.response.send_message(msg, ephemeral=True)
else:
await ctx.send(msg)
return
return await interaction.response.send_message(f"🔒 {utilisateur.mention} est déjà dans la whitelist.", ephemeral=True)
users.append(user_id)
self._set_guild_whitelist(guild_id, users)
msg = f"{utilisateur.mention} a été ajouté à la whitelist."
if interaction:
await interaction.response.send_message(msg, ephemeral=True)
else:
await ctx.send(msg)
await interaction.response.send_message(f"{utilisateur.mention} a été ajouté à la whitelist.", ephemeral=True)
# ❌ Retirer un utilisateur
@whitelist_group.command(name="retirer", description="Retire un utilisateur de la whitelist")
@app_commands.describe(utilisateur="L'utilisateur à retirer")
async def retirer(self, ctx, utilisateur: discord.User):
interaction = ctx.interaction
guild_id = ctx.guild.id
@whitelist_group.sub_command(name="retirer", description="Retire un utilisateur de la whitelist")
async def retirer(self, interaction: disnake.ApplicationCommandInteraction, utilisateur: disnake.User):
guild_id = interaction.guild.id
users = self._get_guild_whitelist(guild_id)
user_id = str(utilisateur.id)
if user_id not in users:
msg = f"⚠️ {utilisateur.mention} n'est pas dans la whitelist."
if interaction:
await interaction.response.send_message(msg, ephemeral=True)
else:
await ctx.send(msg)
return
return await interaction.response.send_message(f"⚠️ {utilisateur.mention} n'est pas dans la whitelist.", ephemeral=True)
users.remove(user_id)
self._set_guild_whitelist(guild_id, users)
msg = f"{utilisateur.mention} a été retiré de la whitelist."
if interaction:
await interaction.response.send_message(msg, ephemeral=True)
else:
await ctx.send(msg)
await interaction.response.send_message(f"{utilisateur.mention} a été retiré de la whitelist.", ephemeral=True)
# 📋 Voir la whitelist
@whitelist_group.command(name="liste", description="Affiche les utilisateurs de la whitelist")
async def liste(self, ctx):
interaction = ctx.interaction
guild_id = ctx.guild.id
@whitelist_group.sub_command(name="liste", description="Affiche les utilisateurs de la whitelist")
async def liste(self, interaction: disnake.ApplicationCommandInteraction):
guild_id = interaction.guild.id
users = self._get_guild_whitelist(guild_id)
if not users:
msg = "📭 La whitelist est vide pour ce serveur."
if interaction:
await interaction.response.send_message(msg, ephemeral=True)
else:
await ctx.send(msg)
return
# Defer if interaction because fetch_user might take time
if interaction:
await interaction.response.defer(ephemeral=True)
return await interaction.response.send_message("📭 La whitelist est vide pour ce serveur.", ephemeral=True)
await interaction.response.defer(ephemeral=True)
membres = []
for user_id in users:
try:
utilisateur = await self.bot.fetch_user(int(user_id))
membres.append(f"- {utilisateur.mention} ({utilisateur.name})")
except discord.NotFound:
except disnake.NotFound:
membres.append(f"- <@{user_id}> (Utilisateur introuvable)")
texte = "\n".join(membres)
msg = f"📃 **Utilisateurs whitelistés pour ce serveur :**\n{texte}"
if interaction:
await interaction.followup.send(msg, ephemeral=True)
else:
await ctx.send(msg)
await interaction.edit_original_response(content=f"📃 **Utilisateurs whitelistés pour ce serveur :**\n{texte}")
def is_whitelisted(self, guild_id: int, user_id: int) -> bool:
"""Check if a user is whitelisted for a specific guild."""