66 lines
2.5 KiB
Python
66 lines
2.5 KiB
Python
|
|
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))
|