Première version non terminer du nouveau système de ticket § ajout du système de boutons persistant (non tester)

This commit is contained in:
Mathis 2026-01-04 00:01:15 +01:00
parent 10173132a2
commit 93e2f9bb44
15 changed files with 3788 additions and 209 deletions

View file

@ -32,6 +32,26 @@ class Blacklist(commands.Cog):
def cog_unload(self):
self.check_ban_expiry.cancel()
async def cog_load(self):
"""Enregistrer les vues persistantes au démarrage"""
await self._register_persistent_views()
async def _register_persistent_views(self):
"""Enregistre les vues pour les tickets ouverts"""
try:
tickets = load_json(TICKETS_FILE, {})
for user_id_str, data in tickets.items():
user_id = int(user_id_str)
# Enregistrer le bouton d'ouverture de ticket
view = TicketButton(user_id)
self.bot.add_view(view)
# Enregistrer le bouton de fermeture
close_view = CloseTicketView(user_id)
self.bot.add_view(close_view)
print(f"[Blacklist] {len(tickets)} vues de tickets enregistrées")
except Exception as e:
print(f"[Blacklist] Erreur lors de l'enregistrement des vues: {e}")
def is_agent(self, user_id: int):
agents = load_json(AGENTS_FILE, {"agents": []})
@ -180,7 +200,7 @@ class TicketButton(discord.ui.View):
super().__init__(timeout=None)
self.user_id = user_id
@discord.ui.button(label="📩 Ouvrir une demande de révision", style=discord.ButtonStyle.primary)
@discord.ui.button(label="📩 Ouvrir une demande de révision", style=discord.ButtonStyle.primary, custom_id="blacklist_open_ticket")
async def open_ticket(self, interaction: discord.Interaction, button: discord.ui.Button):
if interaction.user.id != self.user_id:
return await interaction.response.send_message("❌ Ce bouton ne tappartient pas.", ephemeral=True)
@ -219,7 +239,7 @@ class CloseTicketView(discord.ui.View):
super().__init__(timeout=None)
self.user_id = user_id
@discord.ui.button(label="❌ Fermer le ticket", style=discord.ButtonStyle.danger)
@discord.ui.button(label="❌ Fermer le ticket", style=discord.ButtonStyle.danger, custom_id="blacklist_close_ticket")
async def close_ticket(self, interaction: discord.Interaction, button: discord.ui.Button):
if not interaction.client.get_cog("Blacklist").is_agent(interaction.user.id):
return await interaction.response.send_message("⛔ Seuls les agents peuvent fermer ce ticket.", ephemeral=True)
@ -232,7 +252,7 @@ class ConfirmCloseView(discord.ui.View):
super().__init__(timeout=30)
self.user_id = user_id
@discord.ui.button(label="✅ Oui", style=discord.ButtonStyle.success)
@discord.ui.button(label="✅ Oui", style=discord.ButtonStyle.success, custom_id="blacklist_confirm_close")
async def confirm(self, interaction: discord.Interaction, button: discord.ui.Button):
if not interaction.client.get_cog("Blacklist").is_agent(interaction.user.id):
return await interaction.response.send_message("⛔ Tu nas pas la permission.", ephemeral=True)
@ -270,7 +290,7 @@ class ConfirmCloseView(discord.ui.View):
await interaction.response.send_message("✅ Ticket fermé avec succès.", ephemeral=True)
@discord.ui.button(label="❌ Non", style=discord.ButtonStyle.secondary)
@discord.ui.button(label="❌ Non", style=discord.ButtonStyle.secondary, custom_id="blacklist_cancel_close")
async def cancel(self, interaction: discord.Interaction, button: discord.ui.Button):
await interaction.response.send_message("❌ Fermeture annulée.", ephemeral=True)