import json import discord from discord import app_commands from discord.ext import commands from datetime import datetime from utils.guild_config import has_role class VirementBanquier(commands.Cog): def __init__(self, bot): self.bot = bot banque_choices = [ app_commands.Choice(name="Victoria's Credit Bank", value="Victoria's Credit Bank"), app_commands.Choice(name="NGC Bank", value="NGC Bank"), ] @app_commands.command(name="virement_banquier", description="Effectue un virement au nom d'un client (réservé aux banquiers).") @app_commands.choices(banque=banque_choices) async def virement_banquier( self, interaction: discord.Interaction, rib_emetteur: str, montant: float, rib_destinataire: str, banque: app_commands.Choice[str] ): if not has_role(interaction.user, "banquier"): await interaction.response.send_message("❌ Vous n'avez pas la permission d'utiliser cette commande.", ephemeral=True) return banque_nom = banque.value try: with open("comptes_bancaires.json", "r", encoding="utf-8") as f: comptes = json.load(f) except: await interaction.response.send_message("❌ Erreur de lecture des comptes bancaires.", ephemeral=True) return # Trouver les ID à partir des RIB emetteur_id = None destinataire_id = None for user_id, data in comptes.get(banque_nom, {}).items(): if data.get("rib") == rib_emetteur: emetteur_id = user_id if data.get("rib") == rib_destinataire: destinataire_id = user_id if not emetteur_id: await interaction.response.send_message("❌ Le RIB émetteur est introuvable dans cette banque.", ephemeral=True) return if not destinataire_id: await interaction.response.send_message("❌ Le RIB destinataire est introuvable dans cette banque.", ephemeral=True) return # Vérifier le solde if comptes[banque_nom][emetteur_id]["solde"] < montant: await interaction.response.send_message("❌ Le solde du compte émetteur est insuffisant.", ephemeral=True) return # Exécuter le virement comptes[banque_nom][emetteur_id]["solde"] -= montant comptes[banque_nom][emetteur_id]["transactions"].append({ "date": datetime.now().strftime("%d/%m/%Y %H:%M:%S"), "type": "Virement manuel (par banquier)", "source": f"Vers RIB {rib_destinataire}", "montant": -montant }) comptes[banque_nom][destinataire_id]["solde"] += montant comptes[banque_nom][destinataire_id]["transactions"].append({ "date": datetime.now().strftime("%d/%m/%Y %H:%M:%S"), "type": "Virement reçu (par banquier)", "source": f"RIB {rib_emetteur}", "montant": montant }) with open("comptes_bancaires.json", "w", encoding="utf-8") as f: json.dump(comptes, f, ensure_ascii=False, indent=4) await interaction.response.send_message(f"✅ Virement de **{montant:.2f}€** effectué de **{rib_emetteur}** vers **{rib_destinataire}** dans **{banque_nom}**.", ephemeral=True) async def setup(bot): await bot.add_cog(VirementBanquier(bot))