diff --git a/commandes/bug_report.py b/commandes/bug_report.py index 5d0d7b5..5003dc0 100644 --- a/commandes/bug_report.py +++ b/commandes/bug_report.py @@ -187,13 +187,22 @@ class BugReport(commands.Cog): color=discord.Color.blue() ) embed.add_field(name="Nouveaux Labels / Statuts", value=current_labels_str) - await user.send(embed=embed) - if dev: - await dev.send(f"✅ [FIABLE] L'utilisateur {user} ({user.id}) a bien reçu la notification de statut **{current_labels_str}** pour l'issue #{issue_iid} ({issue_title}).") + try: + await user.send(embed=embed) + if dev and dev.id != user.id: + await dev.send(f"✅ [FIABLE] L'utilisateur {user} ({user.id}) a bien reçu la notification de statut **{current_labels_str}** pour l'issue #{issue_iid} ({issue_title}).") + except discord.Forbidden: + kuby_logger.warning(f"Unable to DM user {user} ({user.id}) - DMs are disabled or bot is blocked.") + if dev and dev.id != user.id: + try: + await dev.send(f"⚠️ [DM BLOQUÉ] Impossible de notifier l'utilisateur {user} ({user.id}) pour l'issue #{issue_iid} (DMs désactivés).") + except discord.Forbidden: + pass + except discord.HTTPException as e: + kuby_logger.error(f"HTTP error sending DM to {user}: {e}") except Exception as e: - if dev: - await dev.send(f"❌ [ERREUR] Impossible de notifier l'utilisateur {user} pour l'issue #{issue_iid} : {e}") + kuby_logger.error(f"Unexpected error in label update notification: {e}") # Check if it was closed if action == "close" or payload.get("object_attributes", {}).get("state") == "closed": @@ -205,14 +214,22 @@ class BugReport(commands.Cog): ) embed.add_field(name="Prochaine étape", value="La mise à jour arrive prochainement (ou est déjà là) !") embed.set_footer(text="Merci pour votre aide !") - await user.send(embed=embed) - - if dev: - await dev.send(f"✅ [FIABLE] L'utilisateur {user} ({user.id}) a bien reçu la notification de CLÔTURE pour l'issue #{issue_iid}.") + try: + await user.send(embed=embed) + if dev and dev.id != user.id: + await dev.send(f"✅ [FIABLE] L'utilisateur {user} ({user.id}) a bien reçu la notification de CLÔTURE pour l'issue #{issue_iid}.") + except discord.Forbidden: + kuby_logger.warning(f"Unable to DM user {user} ({user.id}) - DMs are disabled or bot is blocked during closure.") + if dev and dev.id != user.id: + try: + await dev.send(f"⚠️ [DM BLOQUÉ] Impossible d'annoncer la clôture à {user} ({user.id}) pour l'issue #{issue_iid} (DMs désactivés).") + except discord.Forbidden: + pass + except discord.HTTPException as e: + kuby_logger.error(f"HTTP error sending closure DM to {user}: {e}") except Exception as e: - if dev: - await dev.send(f"❌ [ERREUR] Impossible d'annoncer la clôture à {user} pour l'issue #{issue_iid} : {e}") + kuby_logger.error(f"Unexpected error in closure notification: {e}") elif event_type == "note": note_attr = payload.get("object_attributes", {}) @@ -229,14 +246,22 @@ class BugReport(commands.Cog): color=discord.Color.orange() ) embed.set_footer(text=f"Par {author_name}") - await user.send(embed=embed) - - if dev: - await dev.send(f"✅ [FIABLE] L'utilisateur {user} ({user.id}) a bien reçu votre commentaire pour l'issue #{issue_iid}.") - + + try: + await user.send(embed=embed) + if dev and dev.id != user.id: + await dev.send(f"✅ [FIABLE] L'utilisateur {user} ({user.id}) a bien reçu votre commentaire pour l'issue #{issue_iid}.") + except discord.Forbidden: + kuby_logger.warning(f"Unable to DM user {user} ({user.id}) - DMs are disabled or bot is blocked during comment notification.") + if dev and dev.id != user.id: + try: + await dev.send(f"⚠️ [DM BLOQUÉ] Impossible d'envoyer votre commentaire à {user} ({user.id}) pour l'issue #{issue_iid} (DMs désactivés).") + except discord.Forbidden: + pass + except discord.HTTPException as e: + kuby_logger.error(f"HTTP error sending comment DM to {user}: {e}") except Exception as e: - if dev: - await dev.send(f"❌ [ERREUR] Impossible d'envoyer votre commentaire à {user} pour l'issue #{issue_iid} : {e}") + kuby_logger.error(f"Unexpected error in comment notification: {e}") return web.json_response({"status": "success"}, status=200) diff --git a/data/json-export-history.json b/data/json-export-history.json index faef25a..29199ae 100644 --- a/data/json-export-history.json +++ b/data/json-export-history.json @@ -1,6 +1,6 @@ [ { - "date": "2026-03-14T14:26:12.694595+00:00", + "date": "2026-03-15T14:47:52.347860+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -9,7 +9,7 @@ "success": true }, { - "date": "2026-03-14T14:25:42.467679+00:00", + "date": "2026-03-15T14:47:22.217226+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -18,7 +18,7 @@ "success": true }, { - "date": "2026-03-14T14:25:11.992208+00:00", + "date": "2026-03-15T14:46:52.590478+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -27,7 +27,7 @@ "success": true }, { - "date": "2026-03-14T14:24:42.190744+00:00", + "date": "2026-03-15T14:46:22.537297+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -36,7 +36,7 @@ "success": true }, { - "date": "2026-03-14T14:24:12.614886+00:00", + "date": "2026-03-15T14:45:52.476361+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -45,7 +45,7 @@ "success": true }, { - "date": "2026-03-14T14:23:42.012764+00:00", + "date": "2026-03-15T14:45:22.366258+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -54,7 +54,7 @@ "success": true }, { - "date": "2026-03-14T14:23:12.416066+00:00", + "date": "2026-03-15T14:44:52.324714+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -63,7 +63,7 @@ "success": true }, { - "date": "2026-03-14T14:22:42.200744+00:00", + "date": "2026-03-15T14:44:22.457667+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -72,7 +72,7 @@ "success": true }, { - "date": "2026-03-14T14:22:12.128982+00:00", + "date": "2026-03-15T14:43:52.152864+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -81,7 +81,7 @@ "success": true }, { - "date": "2026-03-14T14:21:41.879828+00:00", + "date": "2026-03-15T14:43:22.245658+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -90,7 +90,7 @@ "success": true }, { - "date": "2026-03-14T14:21:25.894956+00:00", + "date": "2026-03-15T14:42:52.214026+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -99,7 +99,7 @@ "success": true }, { - "date": "2026-03-14T14:20:56.179577+00:00", + "date": "2026-03-15T14:42:22.476838+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -108,7 +108,7 @@ "success": true }, { - "date": "2026-03-14T14:20:25.382325+00:00", + "date": "2026-03-15T14:41:52.432825+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -117,7 +117,7 @@ "success": true }, { - "date": "2026-03-14T14:19:55.416432+00:00", + "date": "2026-03-15T14:41:22.797177+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -126,7 +126,7 @@ "success": true }, { - "date": "2026-03-14T14:19:25.281242+00:00", + "date": "2026-03-15T14:40:52.653953+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -135,7 +135,7 @@ "success": true }, { - "date": "2026-03-14T14:18:55.315861+00:00", + "date": "2026-03-15T14:40:24.102863+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -144,7 +144,7 @@ "success": true }, { - "date": "2026-03-14T14:18:25.672058+00:00", + "date": "2026-03-15T14:39:52.271096+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -153,7 +153,7 @@ "success": true }, { - "date": "2026-03-14T14:17:55.409042+00:00", + "date": "2026-03-15T14:39:22.664232+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -162,7 +162,7 @@ "success": true }, { - "date": "2026-03-14T14:17:25.447376+00:00", + "date": "2026-03-15T14:38:52.346842+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13, @@ -171,7 +171,7 @@ "success": true }, { - "date": "2026-03-14T14:16:55.368379+00:00", + "date": "2026-03-15T14:38:22.457672+00:00", "trigger": "auto", "serversCount": 1, "membersCount": 13,