Fix de la base de données
This commit is contained in:
parent
9f92d0d212
commit
ca5c966c9c
16 changed files with 7980 additions and 79 deletions
|
|
@ -3162,6 +3162,7 @@ class TicketCommands(commands.Cog):
|
|||
if not (
|
||||
str(custom_id).startswith("ticket_")
|
||||
or str(custom_id).startswith("catv2_")
|
||||
or str(custom_id).startswith("cat_")
|
||||
or str(custom_id) in {"close_confirm", "close_cancel", "delay_cancel"}
|
||||
):
|
||||
return
|
||||
|
|
@ -3208,6 +3209,9 @@ class TicketCommands(commands.Cog):
|
|||
else:
|
||||
modal = TicketPriorityModal(self.bot, config, category)
|
||||
|
||||
# Sécurité anti-crash : Limite stricte de Discord à 45 caractères pour le titre
|
||||
if hasattr(modal, "title") and modal.title:
|
||||
modal.title = str(modal.title)[:45]
|
||||
await inter.response.send_modal(modal)
|
||||
except Exception as e:
|
||||
kuby_logger.error(f"[TicketSystem] cat| routing error: {e}", exc_info=True)
|
||||
|
|
@ -3230,12 +3234,70 @@ class TicketCommands(commands.Cog):
|
|||
else:
|
||||
modal = TicketPriorityModal(self.bot, config, category)
|
||||
|
||||
# Sécurité anti-crash : Limite stricte de Discord à 45 caractères pour le titre
|
||||
if hasattr(modal, "title") and modal.title:
|
||||
modal.title = str(modal.title)[:45]
|
||||
await inter.response.send_modal(modal)
|
||||
except Exception as e:
|
||||
kuby_logger.error(f"[TicketSystem] catv2_ routing error: {e}", exc_info=True)
|
||||
if not inter.response.is_done():
|
||||
await inter.response.send_message(f"Erreur interne: {e}", ephemeral=True)
|
||||
|
||||
elif custom_id == "ticket_create":
|
||||
# Construction du layout de sélection Premium V2
|
||||
category_items = [
|
||||
disnake.ui.TextDisplay(
|
||||
content="# 📂 Sélectionner une Catégorie - Omega Kube\n\n"
|
||||
"Veuillez choisir la catégorie qui correspond au motif de votre demande pour ouvrir un ticket."
|
||||
)
|
||||
]
|
||||
|
||||
# Génération dynamique des sections avec Emojis et Descriptions configurées
|
||||
for cat in config.categories[:5]:
|
||||
cat_emoji = getattr(cat, "emoji", "") or ""
|
||||
cat_desc = getattr(cat, "description", "") or getattr(cat, "desc", "") or ""
|
||||
|
||||
category_items.append(disnake.ui.Separator(divider=True))
|
||||
category_items.append(
|
||||
disnake.ui.Section(
|
||||
f"### {cat_emoji} {cat.name}\n{cat_desc}" if cat_desc else f"### {cat_emoji} {cat.name}",
|
||||
accessory=disnake.ui.Button(
|
||||
label="Choisir",
|
||||
style=disnake.ButtonStyle.blurple,
|
||||
custom_id=f"cat_{cat.id}_select"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
await inter.response.send_message(
|
||||
components=[disnake.ui.Container(*category_items)],
|
||||
ephemeral=True
|
||||
)
|
||||
elif custom_id == "ticket_my_tickets":
|
||||
# Afficher les tickets de l'utilisateur
|
||||
user_tickets = self.storage.get_user_tickets(inter.guild.id, inter.user.id)
|
||||
if not user_tickets:
|
||||
await inter.response.send_message("Vous n'avez aucun ticket ouvert.", ephemeral=True)
|
||||
return
|
||||
|
||||
# Créer un message avec la liste des tickets
|
||||
ticket_list = []
|
||||
for ticket in user_tickets:
|
||||
channel = self.bot.get_channel(ticket.channel_id)
|
||||
if channel:
|
||||
ticket_list.append(f"• {channel.mention} - {ticket.status.value}")
|
||||
else:
|
||||
ticket_list.append(f"• #{ticket.channel_id} - {ticket.status.value}")
|
||||
|
||||
embed = disnake.Embed(
|
||||
title="📂 Vos Tickets",
|
||||
description="\n".join(ticket_list) if ticket_list else "Aucun ticket trouvé.",
|
||||
color=0x9B59B6
|
||||
)
|
||||
await inter.response.send_message(embed=embed, ephemeral=True)
|
||||
elif custom_id == "ticket_analytics":
|
||||
panel_view = TicketPanelView(self.bot, config, self.storage)
|
||||
await panel_view._analytics_callback(inter)
|
||||
elif custom_id == "ticket_claim":
|
||||
ticket = self.storage.load_ticket(inter.channel.id)
|
||||
if ticket:
|
||||
|
|
@ -3747,7 +3809,7 @@ class TicketCommands(commands.Cog):
|
|||
"""Ouvre le panel des tickets"""
|
||||
config = self.storage.load_config(inter.guild.id)
|
||||
view = TicketPanelView(self.bot, config, self.storage)
|
||||
await inter.response.send_message(components=view.get_components_v2(), view=view, ephemeral=True)
|
||||
await inter.response.send_message(components=view.get_components_v2(), ephemeral=True)
|
||||
|
||||
@commands.slash_command(name="ticketpanel", description="Envoie le panel de création de tickets dans un canal")
|
||||
@commands.has_permissions(administrator=True)
|
||||
|
|
@ -3818,4 +3880,3 @@ class TicketCommands(commands.Cog):
|
|||
def setup(bot):
|
||||
"""Setup function"""
|
||||
bot.add_cog(TicketCommands(bot))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue