import discord from discord import app_commands from discord.ext import commands from utils.banque_manager import BanqueManager banque_manager = BanqueManager() class Compte(commands.Cog): def __init__(self, bot): self.bot = bot @app_commands.command( name="compte", description="Afficher vos comptes bancaires et vos 3 dernières transactions" ) @app_commands.describe( membre="Afficher le compte d'un autre membre (réservé au gouvernement)" ) async def compte(self, interaction: discord.Interaction, membre: discord.Member = None): """Affiche les soldes et dernières transactions de l'utilisateur ou d'un autre membre (si gouvernement)""" banque_manager.load_data() # Par défaut, on cible l'utilisateur qui exécute la commande cible = interaction.user user_id = str(cible.id) # Si un autre membre est précisé, on vérifie le rôle if membre and membre != interaction.user: role_gouv = discord.utils.get(interaction.guild.roles, name="🌍│Gouvernement") if role_gouv not in interaction.user.roles: await interaction.response.send_message( "❌ Vous devez avoir le rôle **gouvernement** pour consulter le compte d'un autre membre.", ephemeral=True ) return cible = membre user_id = str(membre.id) comptes = banque_manager.comptes embed = discord.Embed( title=f"💳 Comptes bancaires de {cible.display_name}", color=discord.Color.blue() ) banques_trouvees = False for banque, data in comptes.items(): if not isinstance(data, dict) or user_id not in data: continue # Ce n'est pas une banque valide pour cet utilisateur compte = data[user_id] rib = compte.get("rib", "Non défini") solde = compte.get("solde", 0) transactions = compte.get("transactions", []) # Récupérer les 3 dernières transactions avec date last_transactions = transactions[-3:] if transactions else [] tx_str = "" for tx in last_transactions: date = tx.get("date", "Date inconnue") tx_type = tx.get("type", "Inconnu") montant = tx.get("montant", 0) source = tx.get("emetteur", tx.get("source", "Inconnu")) dest = tx.get("destinataire", "Inconnu") if tx_type.lower() == "virement" or tx_type.lower().startswith("virement"): tx_str += f"- 🕒 {date} : **{tx_type}** de **{montant}€** à <@{dest}>\n" elif tx_type.lower() == "virement reçu": tx_str += f"- 🕒 {date} : **{tx_type}** de **{montant}€** de <@{source}>\n" else: tx_str += f"- 🕒 {date} : **{tx_type}** de **{montant}€**\n" if not tx_str: tx_str = "*Aucune transaction.*" embed.add_field( name=f"🏦 {banque}", value=f"💳 **RIB** : `{rib}`\n💰 **Solde** : `{solde}€`\n📜 **Transactions récentes :**\n{tx_str}", inline=False ) banques_trouvees = True if not banques_trouvees: embed.description = "❌ Aucun compte bancaire trouvé dans les banques enregistrées pour cet utilisateur." await interaction.response.send_message(embed=embed, ephemeral=True) async def setup(bot): await bot.add_cog(Compte(bot))