Merge branch 'dev' into 'main'

Debug GitLab note DM v7

See merge request Omega_Kube/kuby!23
This commit is contained in:
Gameur 2026-05-20 15:50:12 +02:00
commit 8f2e33559e

View file

@ -165,8 +165,9 @@ class FeatureSuggestionModal(disnake.ui.Modal):
class BugReport(commands.Cog): class BugReport(commands.Cog):
def __init__(self, bot): def __init__(self, bot):
self.bot = bot self.bot = bot
# disnake 2.12: `cog_load` async n'est pas appelé comme dans discord.py.
# On lance le serveur aiohttp de façon différée. async def cog_load(self):
# Disnake appelle automatiquement cette méthode dès que la boucle d'événements est active.
self.bot.loop.create_task(self._start_webhook_server()) self.bot.loop.create_task(self._start_webhook_server())
async def _start_webhook_server(self): async def _start_webhook_server(self):
@ -301,24 +302,18 @@ class BugReport(commands.Cog):
current_labels_str = "Mis à jour" current_labels_str = "Mis à jour"
try: try:
components = [ embed = disnake.Embed(
disnake.ui.Container( title="🛠️ Mise à jour de votre signalement !",
disnake.ui.Section( description=(
"🛠️ Mise à jour de votre signalement !", f"Le statut de votre rapport **{issue_title}** a été mis à jour par l'équipe.\n\n"
accessory=disnake.ui.Thumbnail(self.bot.user.display_avatar.url), f"📌 **Nouveaux Labels / Statuts :** {current_labels_str}"
), ),
disnake.ui.Separator(divider=True), color=disnake.Color.blue()
disnake.ui.TextDisplay( )
f"Le statut de votre rapport **{issue_title}** a été mis à jour par l'équipe." embed.set_thumbnail(url=self.bot.user.display_avatar.url)
),
disnake.ui.TextDisplay(
f"📌 **Nouveaux Labels / Statuts :** {current_labels_str}"
),
)
]
try: try:
await user.send(components=components) await user.send(embed=embed)
kuby_logger.info( kuby_logger.info(
f"Notification de label envoyée à {user} ({user.id}) pour l'issue #{issue_iid}" f"Notification de label envoyée à {user} ({user.id}) pour l'issue #{issue_iid}"
) )
@ -350,25 +345,19 @@ class BugReport(commands.Cog):
if is_closing_now: if is_closing_now:
try: try:
components = [ embed = disnake.Embed(
disnake.ui.Container( title="🛠️ Bug / Suggestion Terminé(e) !",
disnake.ui.Section( description=(
"🛠️ Bug / Suggestion Terminé(e) !", f"Bonne nouvelle ! Votre signalement **{issue_title}** a été marqué comme terminé ou résolu.\n\n"
accessory=disnake.ui.Thumbnail(self.bot.user.display_avatar.url), f"🚀 **Prochaine étape :** La mise à jour arrive prochainement (ou est déjà là) !\n"
), f"✨ Merci pour votre aide !"
disnake.ui.Separator(divider=True), ),
disnake.ui.TextDisplay( color=disnake.Color.green()
f"Bonne nouvelle ! Votre signalement **{issue_title}** a été marqué comme terminé ou résolu." )
), embed.set_thumbnail(url=self.bot.user.display_avatar.url)
disnake.ui.TextDisplay(
"🚀 **Prochaine étape :** La mise à jour arrive prochainement (ou est déjà là) !"
),
disnake.ui.TextDisplay("✨ Merci pour votre aide !"),
)
]
try: try:
await user.send(components=components) await user.send(embed=embed)
kuby_logger.info( kuby_logger.info(
f"Notification de clôture envoyée à {user} ({user.id}) pour l'issue #{issue_iid}" f"Notification de clôture envoyée à {user} ({user.id}) pour l'issue #{issue_iid}"
) )
@ -402,7 +391,6 @@ class BugReport(commands.Cog):
) )
if not is_system: if not is_system:
# GitLab peut envoyer des champs différents selon version/config
note_body = ( note_body = (
note_attr.get("note") note_attr.get("note")
or note_attr.get("body") or note_attr.get("body")
@ -413,24 +401,19 @@ class BugReport(commands.Cog):
author_name = payload.get("user", {}).get("name", "Développeur") author_name = payload.get("user", {}).get("name", "Développeur")
try: try:
components = [ embed = disnake.Embed(
disnake.ui.Container( title="💬 Nouveau commentaire sur votre signalement",
disnake.ui.Section( description=(
"💬 Nouveau commentaire sur votre signalement", f"Le développeur a répondu à votre rapport **{issue_title}** :\n\n"
accessory=disnake.ui.Thumbnail(self.bot.user.display_avatar.url), f">>> {note_body}\n\n"
), f"✍️ **Par :** {author_name}"
disnake.ui.Separator(divider=True), ),
disnake.ui.TextDisplay( color=disnake.Color.orange()
f"Le développeur a répondu à votre rapport **{issue_title}** :" )
), embed.set_thumbnail(url=self.bot.user.display_avatar.url)
disnake.ui.TextDisplay(f">>> {note_body}"),
disnake.ui.Separator(divider=True),
disnake.ui.TextDisplay(f"✍️ **Par :** {author_name}"),
)
]
try: try:
await user.send(components=components) await user.send(embed=embed)
kuby_logger.info( kuby_logger.info(
f"Commentaire GitLab envoyé à {user} ({user.id}) pour l'issue #{issue_iid}" f"Commentaire GitLab envoyé à {user} ({user.id}) pour l'issue #{issue_iid}"
) )
@ -467,14 +450,12 @@ class BugReport(commands.Cog):
choices={"Basse": "Low", "Normale": "Normal", "Haute": "High", "Urgente": "Urgent"}, choices={"Basse": "Low", "Normale": "Normal", "Haute": "High", "Urgente": "Urgent"},
), ),
): ):
# Simulate app_commands.Choice behavior for existing code
from collections import namedtuple from collections import namedtuple
Choice = namedtuple('Choice', ['name', 'value']) Choice = namedtuple('Choice', ['name', 'value'])
mapping = {"Basse": "Low", "Normale": "Normal", "Haute": "High", "Urgente": "Urgent"} mapping = {"Basse": "Low", "Normale": "Normal", "Haute": "High", "Urgente": "Urgent"}
reverse = {v: k for k, v in mapping.items()} reverse = {v: k for k, v in mapping.items()}
# priority vient du value GitLab (Low/Normal/High/Urgent)
p_name = reverse.get(priority, "Normal") p_name = reverse.get(priority, "Normal")
choice = Choice(name=p_name, value=priority) choice = Choice(name=p_name, value=priority)