Initial commit: bot Discord Vicy V1.8
This commit is contained in:
commit
56958c5832
70 changed files with 8469 additions and 0 deletions
96
commandes/compte_urssaf.py
Normal file
96
commandes/compte_urssaf.py
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
import discord
|
||||
from discord import app_commands
|
||||
from discord.ext import commands
|
||||
import json
|
||||
import math
|
||||
|
||||
URSAFF_ROLE_ID = 1362056014584615213 # Remplace par l’ID réel du rôle URSAFF # Remplace par l’ID réel du rôle URSAFF
|
||||
|
||||
class CompteUrssaf(commands.Cog):
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
|
||||
def get_all_transactions(self):
|
||||
try:
|
||||
with open("comptes_entreprises.json", "r", encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
except Exception as e:
|
||||
print(f"Erreur lecture comptes_entreprises.json : {e}")
|
||||
return 0.0, []
|
||||
|
||||
# Si URSAFF n'existe pas, on le crée
|
||||
if "ursaff" not in data:
|
||||
data["ursaff"] = {
|
||||
"URSSAFF": {
|
||||
"rib": "00000 00000 00000000000 01",
|
||||
"solde": 0.0,
|
||||
"transactions": []
|
||||
}
|
||||
}
|
||||
with open("comptes_entreprises.json", "w", encoding="utf-8") as f:
|
||||
json.dump(data, f, ensure_ascii=False, indent=4)
|
||||
|
||||
ursaff_data = data.get("ursaff", {}).get("URSAFF", {})
|
||||
return ursaff_data.get("solde", 0.0), ursaff_data.get("transactions", [])
|
||||
|
||||
@app_commands.command(name="compte_ursaff", description="Affiche le solde et l'historique complet du compte URSAFF (réservé aux membres URSAFF).")
|
||||
async def compte_ursaff(self, interaction: discord.Interaction):
|
||||
# Vérifie que l'utilisateur a le rôle URSAFF
|
||||
if not any(role.id == URSAFF_ROLE_ID for role in interaction.user.roles):
|
||||
await interaction.response.send_message("❌ Vous n'avez pas la permission d'accéder à ce compte.", ephemeral=True)
|
||||
return
|
||||
|
||||
solde, transactions = self.get_all_transactions()
|
||||
|
||||
# Pagination setup
|
||||
pages = []
|
||||
per_page = 5
|
||||
total_pages = max(1, 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="📄 Historique URSSAF",
|
||||
description=f"Page {i+1}/{total_pages}",
|
||||
color=discord.Color.dark_purple()
|
||||
)
|
||||
embed.add_field(name="💼 Solde actuel", value=f"{solde:.2f}€", inline=False)
|
||||
|
||||
if chunk:
|
||||
for tx in chunk:
|
||||
description = (
|
||||
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=description, inline=False)
|
||||
else:
|
||||
embed.add_field(name="📄 Transactions", value="Aucune transaction récente.", inline=False)
|
||||
|
||||
pages.append(embed)
|
||||
|
||||
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(CompteUrssaf(bot))
|
||||
Loading…
Add table
Add a link
Reference in a new issue