diff --git a/commandes/modmail.py b/commandes/modmail.py index c5516b4..9ec7167 100644 --- a/commandes/modmail.py +++ b/commandes/modmail.py @@ -1,4 +1,5 @@ import contextlib +import logging import discord from discord import app_commands @@ -27,26 +28,31 @@ class CategorySelect(discord.ui.Select): ) async def callback(self, interaction: discord.Interaction): - category_key = self.values[0] - categories = cfg.get_categories() - cat = categories.get(category_key, {}) - data = cfg.get_config() - guild = interaction.client.get_guild(data.get("guild_id")) - if not guild: - await interaction.response.send_message("Erreur: serveur introuvable.", ephemeral=True) - return + try: + category_key = self.values[0] + categories = cfg.get_categories() + cat = categories.get(category_key, {}) + data = cfg.get_config() + guild = interaction.client.get_guild(data.get("guild_id")) + if not guild: + await interaction.response.send_message("Erreur: serveur introuvable.", ephemeral=True) + return - user = interaction.user - existing = cfg.get_ticket_by_user(user.id) - if existing: - ch = guild.get_channel(existing["channel_id"]) - await interaction.response.send_message( - f"Tu as deja un ticket ouvert: {ch.mention if ch else 'inconnu'}", - ephemeral=True, - ) - return + user = interaction.user + existing = cfg.get_ticket_by_user(user.id) + if existing: + ch = guild.get_channel(existing["channel_id"]) + await interaction.response.send_message( + f"Tu as deja un ticket ouvert: {ch.mention if ch else 'inconnu'}", + ephemeral=True, + ) + return - await interaction.response.send_modal(TicketModal(category_key, cat.get("name", category_key))) + await interaction.response.send_modal(TicketModal(category_key, cat.get("name", category_key))) + except Exception as e: + logging.getLogger("vision").error(f"CategorySelect callback error: {e}", exc_info=True) + if not interaction.response.is_done(): + await interaction.response.send_message(f"Erreur interne: `{e}`", ephemeral=True) class TicketModal(discord.ui.Modal, title="Nouveau Ticket"): @@ -444,7 +450,7 @@ class ModMail(commands.Cog): open_button = discord.ui.Button( label=f"Ouvrir — {cat['name']}", style=discord.ButtonStyle.primary, - custom_id=f"modmail_quick_open:{key}", + custom_id="modmail_quick_open", ) container.add_item(discord.ui.ActionRow(open_button))