import discord from discord import app_commands from discord.ext import commands from utils.data_manager import DataManager from utils.card_generator import CardGenerator card_generator = CardGenerator() class VoirIdentite(commands.Cog): def __init__(self, bot): self.bot = bot @app_commands.command(name="voir_carte_identite", description="Afficher votre carte d'identité ou celle d'un autre utilisateur") async def voir_carte_identite(self, interaction: discord.Interaction, utilisateur: discord.Member = None): """Affiche la carte d'identité d'un utilisateur""" # Remplacer par l'ID de ton rôle gouvernement GOUVERNEMENT_ROLE_ID = 1360236421872484403 target_user = utilisateur or interaction.user # 🔒 Vérification si l'utilisateur peut voir la carte d'un autre if utilisateur and utilisateur != interaction.user: gouvernement_role = interaction.guild.get_role(GOUVERNEMENT_ROLE_ID) if gouvernement_role not in interaction.user.roles: await interaction.response.send_message( "🚫 Vous n'avez pas l'autorisation de voir la carte d'identité d'un autre utilisateur.", ephemeral=True ) return user_id = str(target_user.id) # 🧠 Recréer un DataManager à chaque commande data_manager = DataManager() # 🔎 Récupération des données identity_data = data_manager.identities.get(user_id) if identity_data is None: await interaction.response.send_message( "❌ Cet utilisateur ne possède pas de carte d'identité.", ephemeral=True ) return # 🛡️ Vérification que l'identité est complète if "date_expiration" not in identity_data: identity_data["date_expiration"] = "Non spécifiée" # 🖼️ Génération de l'image de la carte card_buffer = await card_generator.create_identity_card(target_user, identity_data) # 📩 Envoi du fichier + embed file = discord.File(card_buffer, filename="carte_identite.png") embed = discord.Embed( title=f"🪪 Carte d'identité de {target_user.display_name}", color=0x2ecc71 ) embed.set_image(url="attachment://carte_identite.png") await interaction.response.send_message(file=file, embed=embed, ephemeral=False) async def setup(bot): await bot.add_cog(VoirIdentite(bot))