import discord from discord import app_commands from discord.ext import commands import json import math from utils.guild_config import has_role class CompteGouvernement(commands.Cog): def __init__(self, bot): self.bot = bot def get_gouv_data(self): try: with open("comptes_entreprises.json", "r", encoding="utf-8") as f: data = json.load(f) gouv_data = data.get("Gouvernement", {}).get("GOUV", {}) return gouv_data.get("solde", 0.0), gouv_data.get("transactions", []) except Exception as e: print(f"Erreur lecture comptes_entreprises.json : {e}") return 0.0, [] @app_commands.command(name="compte_gouvernement", description="Affiche le solde et les transactions du compte Gouvernement.") async def compte_gouvernement(self, interaction: discord.Interaction): if not has_role(interaction.user, "gouvernement"): await interaction.response.send_message("❌ Vous n'avez pas la permission d'accéder à ce compte.", ephemeral=True) return solde, transactions = self.get_gouv_data() if not transactions: await interaction.response.send_message("📄 Aucune transaction trouvée pour le gouvernement.", ephemeral=True) return # Pagination setup pages = [] per_page = 5 total_pages = math.ceil(len(transactions) / per_page) for i in range(total_pages): start = i * per_page end = start + per_page chunk = transactions[start:end] embed = discord.Embed( title="🏛️ Compte Gouvernement", description=f"Page {i+1}/{total_pages}", color=discord.Color.dark_gold() ) embed.add_field(name="💰 Solde", value=f"{solde:.2f}€", inline=False) for tx in chunk: desc = ( f"**Date**: {tx.get('date', 'N/A')}\n" f"**Type**: {tx.get('type', 'N/A')}\n" f"**Montant**: {tx.get('montant', 0)}€\n" f"**Source**: {tx.get('source', 'N/A')}" ) embed.add_field(name="📄 Transaction", value=desc, inline=False) pages.append(embed) # Vue de pagination class Pagination(discord.ui.View): def __init__(self): super().__init__(timeout=None) self.current = 0 @discord.ui.button(label="⬅️", style=discord.ButtonStyle.grey) async def previous(self, interaction_btn: discord.Interaction, button: discord.ui.Button): if self.current > 0: self.current -= 1 await interaction_btn.response.edit_message(embed=pages[self.current], view=self) @discord.ui.button(label="➡️", style=discord.ButtonStyle.grey) async def next(self, interaction_btn: discord.Interaction, button: discord.ui.Button): if self.current < len(pages) - 1: self.current += 1 await interaction_btn.response.edit_message(embed=pages[self.current], view=self) await interaction.response.send_message(embed=pages[0], view=Pagination(), ephemeral=True) async def setup(bot): await bot.add_cog(CompteGouvernement(bot))