2026-08-16 19:37:15 +02:00
|
|
|
import discord
|
|
|
|
|
from discord import app_commands
|
|
|
|
|
from discord.ext import commands
|
|
|
|
|
from utils.banque_manager import BanqueManager
|
|
|
|
|
import random
|
Modularize bot: per-guild config system for roles/channels/categories
- Add utils/guild_config.py: centralized config loader per guild (data/guilds/{id}.json)
- Add commandes/config.py: /config set_role, /config set_channel, /config set_category, /config voir, /config reset
- Replace ALL hardcoded role IDs (banquier, gouvernement, citoyen, staff, ems, permis, fbm, ursaff, etc.) with guild_config lookups
- Replace ALL hardcoded channel IDs (welcome, candidature, questions, mp_reception) with guild_config lookups
- Replace ALL hardcoded category IDs (ticket) with guild_config lookups
- Remove duplicate commandes/welcome_message.py (kept utils/ version)
- Remove 20+ hardcoded snowflake IDs across 22 files
- Guilds configure via /config on Discord, no code changes needed
2026-08-17 00:12:57 +02:00
|
|
|
from utils.guild_config import has_role
|
2026-08-16 19:37:15 +02:00
|
|
|
|
|
|
|
|
# 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
|
Modularize bot: per-guild config system for roles/channels/categories
- Add utils/guild_config.py: centralized config loader per guild (data/guilds/{id}.json)
- Add commandes/config.py: /config set_role, /config set_channel, /config set_category, /config voir, /config reset
- Replace ALL hardcoded role IDs (banquier, gouvernement, citoyen, staff, ems, permis, fbm, ursaff, etc.) with guild_config lookups
- Replace ALL hardcoded channel IDs (welcome, candidature, questions, mp_reception) with guild_config lookups
- Replace ALL hardcoded category IDs (ticket) with guild_config lookups
- Remove duplicate commandes/welcome_message.py (kept utils/ version)
- Remove 20+ hardcoded snowflake IDs across 22 files
- Guilds configure via /config on Discord, no code changes needed
2026-08-17 00:12:57 +02:00
|
|
|
if not has_role(interaction.user, "banquier"):
|
2026-08-16 19:37:15 +02:00
|
|
|
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))
|