93 lines
3.6 KiB
Python
93 lines
3.6 KiB
Python
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))
|