From d43bc24453c97a26272fdd06e63c5da39482398e Mon Sep 17 00:00:00 2001 From: Mathis Date: Sun, 20 Sep 2026 19:43:41 +0200 Subject: [PATCH] fix(modmail): validate categories exist before opening ticket + clean stale tickets --- commandes/modmail.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/commandes/modmail.py b/commandes/modmail.py index 02e4b55..af801fb 100644 --- a/commandes/modmail.py +++ b/commandes/modmail.py @@ -31,7 +31,11 @@ class CategorySelect(discord.ui.Select): try: category_key = self.values[0] categories = cfg.get_categories() - cat = categories.get(category_key, {}) + cat = categories.get(category_key) + if not cat: + await interaction.response.send_message("Cette categorie n'existe plus.", ephemeral=True) + return + data = cfg.get_config() guild = interaction.client.get_guild(data.get("guild_id")) if not guild: @@ -73,6 +77,9 @@ class TicketModal(discord.ui.Modal, title="Nouveau Ticket"): await interaction.response.defer(ephemeral=True) bot = interaction.client data = cfg.get_config() + if self.category_key not in cfg.get_categories(): + await interaction.followup.send("La categorie n'existe plus. Reessayez.", ephemeral=True) + return guild = bot.get_guild(data.get("guild_id")) if not guild: await interaction.followup.send("Erreur serveur.", ephemeral=True) @@ -422,6 +429,15 @@ class ModMail(commands.Cog): await self._send_to_ticket(ch, message.author, message) return + categories = cfg.get_categories() + if not categories: + with contextlib.suppress(discord.HTTPException): + await message.author.send( + "Le systeme de tickets n'est pas encore configure. " + "Un administrateur doit d'abord configurer les categories." + ) + return + await self._send_ticket_creation_panel(message) async def _send_ticket_creation_panel(self, message: discord.Message):