- 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
66 lines
2.6 KiB
Python
66 lines
2.6 KiB
Python
import discord
|
|
from discord import app_commands
|
|
from discord.ext import commands
|
|
from utils.banque_manager import BanqueManager
|
|
from utils.guild_config import has_role
|
|
|
|
banque_manager = BanqueManager()
|
|
|
|
class Transactions(commands.Cog):
|
|
def __init__(self, bot):
|
|
self.bot = bot
|
|
|
|
@app_commands.command(name="transactions", description="Affiche les transactions d'un utilisateur (réservé aux banquiers).")
|
|
async def transactions(self, interaction: discord.Interaction, utilisateur: discord.Member):
|
|
"""Affiche l'historique des transactions d'un utilisateur (banquiers uniquement)."""
|
|
|
|
# ✅ Récupération du vrai membre pour avoir les rôles
|
|
member = interaction.guild.get_member(interaction.user.id)
|
|
if not member:
|
|
await interaction.response.send_message("❌ Impossible de vérifier vos permissions.", ephemeral=True)
|
|
return
|
|
|
|
# ✅ Vérification du rôle banquier
|
|
if not has_role(member, "banquier"):
|
|
await interaction.response.send_message("❌ Vous n'avez pas la permission de voir les transactions.", ephemeral=True)
|
|
return
|
|
|
|
banque_manager.load_data()
|
|
|
|
user_id = str(utilisateur.id)
|
|
|
|
# ✅ Vérification si l'utilisateur a des transactions
|
|
if user_id not in banque_manager.comptes or "transactions" not in banque_manager.comptes[user_id]:
|
|
await interaction.response.send_message(f"❌ {utilisateur.mention} n'a pas d'historique de transactions.", ephemeral=True)
|
|
return
|
|
|
|
transactions = banque_manager.comptes[user_id].get("transactions", [])
|
|
|
|
if not transactions:
|
|
await interaction.response.send_message(f"📜 {utilisateur.mention} n'a encore effectué aucune transaction.", ephemeral=True)
|
|
return
|
|
|
|
# ✅ Création de l'embed
|
|
embed = discord.Embed(
|
|
title=f"📜 Historique des transactions de {utilisateur.name}",
|
|
color=discord.Color.gold()
|
|
)
|
|
|
|
for t in transactions[-10:]:
|
|
embed.add_field(
|
|
name=f"📅 {t['date']}",
|
|
value=(
|
|
f"**Type**: {t['type']}\n"
|
|
f"💰 **Montant**: {t['montant']}€\n"
|
|
f"📤 **Émetteur**: <@{t['emetteur']}>\n"
|
|
f"📥 **Destinataire**: <@{t['destinataire']}>"
|
|
),
|
|
inline=False
|
|
)
|
|
|
|
embed.set_footer(text="Seules les 10 dernières transactions sont affichées.")
|
|
|
|
await interaction.response.send_message(embed=embed)
|
|
|
|
async def setup(bot):
|
|
await bot.add_cog(Transactions(bot))
|