Vicy_Publique/commandes/ouvrir_compte.py
2026-08-16 19:37:15 +02:00

76 lines
No EOL
3.1 KiB
Python

import discord
from discord import app_commands
from discord.ext import commands
from utils.banque_manager import BanqueManager
import random
# Rôle nécessaire pour créer un compte
BANQUIER_ROLE_ID = 1360314740567576616 # ID du rôle des banquiers # ID du rôle banquier
# Liste des banques disponibles (id interne : nom affiché)
BANQUES = {
"Victoria's Credit Bank": "Victoria's Credit Bank",
"NGC Bank": "Nexus Global Corporation Bank"
}
banque_manager = BanqueManager()
class OuvrirCompte(commands.Cog):
def __init__(self, bot):
self.bot = bot
@app_commands.command(name="ouvrir_compte", description="Ouvre un compte bancaire pour un utilisateur (banquier uniquement).")
@app_commands.choices(
banque=[app_commands.Choice(name=nom, value=id_banque) for id_banque, nom in BANQUES.items()]
)
async def ouvrir_compte(self, interaction: discord.Interaction, utilisateur: discord.Member, banque: app_commands.Choice[str]):
banque_id = banque.value
banque_nom = BANQUES[banque_id]
# Vérification du rôle de banquier
if not any(role.id == BANQUIER_ROLE_ID for role in interaction.user.roles):
await interaction.response.send_message("❌ Vous n'avez pas la permission d'ouvrir un compte.", ephemeral=True)
return
user_id = str(utilisateur.id)
banque_manager.load_data()
# Conversion automatique si l'ancien format est utilisé
if all(isinstance(v, dict) and 'rib' in v for v in banque_manager.comptes.values()):
banque_manager.comptes = {"vicynationale": banque_manager.comptes}
# Vérification si la banque existe dans les données
if banque_id not in banque_manager.comptes:
banque_manager.comptes[banque_id] = {}
# Vérification si l'utilisateur a déjà un compte dans cette banque
if user_id in banque_manager.comptes[banque_id]:
await interaction.response.send_message(
f"❌ {utilisateur.mention} possède déjà un compte à la {banque_nom} !",
ephemeral=True
)
return
# Génération du RIB aléatoire
rib = f"{random.randint(10000, 99999)} {random.randint(10000, 99999)} {random.randint(10000000000, 99999999999)} {random.randint(10, 99)}"
# Création du compte
banque_manager.comptes[banque_id][user_id] = {
"rib": rib,
"solde": 0.0,
"transactions": []
}
banque_manager.save_data()
# Envoi du RIB en MP à l'utilisateur cible
try:
await utilisateur.send(f"🏦 Un compte a été créé pour vous à la **{banque_nom}**.\nVoici votre RIB : `{rib}`")
except discord.Forbidden:
await interaction.response.send_message("❌ Impossible d'envoyer le RIB en message privé (l'utilisateur a les MP fermés).", ephemeral=True)
return
await interaction.response.send_message(f"✅ Compte créé avec succès pour {utilisateur.mention} à la **{banque_nom}**.", ephemeral=True)
async def setup(bot):
await bot.add_cog(OuvrirCompte(bot))