fix(rules): améliorer le système de règlement

- Rendu markdown via Container avec TextDisplay au lieu de embed.description
- Commandes bug/suggestion utilisables avec arguments directs (copy-paste supporté)
- Échappement des mentions @everyone/@here pour éviter notifications involontaires

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lowei 2026-05-23 13:15:53 +02:00
parent e11f0d8b4a
commit fac7ed1e6b
2 changed files with 96 additions and 8 deletions

View file

@ -447,11 +447,14 @@ class BugReport(commands.Cog):
async def signaler_bug(
self,
interaction: disnake.ApplicationCommandInteraction,
titre: str = commands.Param(description="Titre/Courte description du bug"),
description: str = commands.Param(description="Description détaillée (copy-paste accepté !)"),
priority: str = commands.Param(
description="Priorité du bug",
choices={"Basse": "Low", "Normale": "Normal", "Haute": "High", "Urgente": "Urgent"},
),
):
"""Signale un bug directement avec arguments - copy-paste supporté."""
from collections import namedtuple
Choice = namedtuple('Choice', ['name', 'value'])
@ -461,14 +464,80 @@ class BugReport(commands.Cog):
p_name = reverse.get(priority, "Normal")
choice = Choice(name=p_name, value=priority)
await interaction.response.send_modal(BugReportModal(choice))
await interaction.response.send_message("Envoi de votre rapport de bug à GitLab...", ephemeral=True)
bug_title = titre.strip() if titre else "Sans titre"
priority_name = choice.name
description_value = description
description_text = f"**Rapporté par:** {interaction.user} ({interaction.user.id})\n"
description_text += f"**Priorité:** {priority_name}\n\n"
description_text += f"**Description:**\n{description_value}"
labels = ["bug", "manual-report", f"Priority::{choice.value}"]
result = await gitlab_client.create_issue(
title=f"[MANUAL] {bug_title}",
description=description_text,
labels=labels,
)
if result:
issue_iid = result.get("iid")
save_report(issue_iid, interaction.user.id)
await interaction.edit_original_response(
content=(
"✅ Votre bug a été signalé avec succès ! "
"Nous avons bien été averti et le bug sera réglé dans la prochaine mise à jour. "
f"[Voir l'issue]({result.get('web_url')})"
)
)
else:
await interaction.edit_original_response(
content="❌ Une erreur est survenue lors de l'envoi du rapport à GitLab. Veuillez contacter un administrateur."
)
@commands.slash_command(
name="suggerer_fonctionnalite",
description="Proposer une nouvelle fonctionnalité pour le bot",
)
async def suggerer_fonctionnalite(self, interaction: disnake.ApplicationCommandInteraction):
await interaction.response.send_modal(FeatureSuggestionModal())
async def suggerer_fonctionnalite(
self,
interaction: disnake.ApplicationCommandInteraction,
titre: str = commands.Param(description="Titre de la suggestion"),
description: str = commands.Param(description="Détails de la fonctionnalité (copy-paste accepté !)"),
):
"""Suggère une fonctionnalité directement avec arguments - copy-paste supporté."""
await interaction.response.send_message("Envoi de votre suggestion à GitLab...", ephemeral=True)
suggestion_title = titre.strip() if titre else "Sans titre"
description_value = description
description_text = f"**Sugéré par:** {interaction.user} ({interaction.user.id})\n\n"
description_text += f"**Description:**\n{description_value}"
labels = ["enhancement", "manual-suggestion"]
result = await gitlab_client.create_issue(
title=f"[SUGGESTION] {suggestion_title}",
description=description_text,
labels=labels,
)
if result:
issue_iid = result.get("iid")
save_report(issue_iid, interaction.user.id)
await interaction.edit_original_response(
content=(
"✅ Votre suggestion a été envoyée avec succès ! "
"Merci de contribuer à l'amélioration du bot. "
f"[Voir l'issue]({result.get('web_url')})"
)
)
else:
await interaction.edit_original_response(
content="❌ Une erreur est survenue lors de l'envoi de la suggestion à GitLab."
)
def setup(bot):