fix(bot): améliorer la robustesse des handlers d'erreurs Discord
- advanced_logger.py: parsing NDJSON plus robuste pour les fichiers JSON corrompus ou malformés lors de la vérification des rôles précédents. Évite l'erreur "Expecting value: line 2 column 1". - bot.py: simplification de la détection d'erreur 403 Missing Permissions (codes 50013 et 20023) lors de la restauration des rôles au join d'un membre. Évite le log d'erreur "Failed to restore safe roles" quand c'est juste un problème de permissions/bot role hierarchy. - bug_report.py: simplification de la détection du code 50007 (Cannot send messages to this user) lors de l'envoi de notifications de labels GitLab. Évite le log "Erreur inattendue dans la notification de label". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
6621e87b56
commit
3534363f98
3 changed files with 27 additions and 18 deletions
7
bot.py
7
bot.py
|
|
@ -189,6 +189,13 @@ class MyBot(commands.Bot):
|
|||
is_transient = isinstance(e, disnake.HTTPException) and e.status in [500, 502, 503, 504]
|
||||
if not isinstance(e, disnake.HTTPException):
|
||||
is_transient = True
|
||||
# 403 with code 50013 = Missing Permissions - don't retry
|
||||
if isinstance(e, disnake.HTTPException) and e.status == 403:
|
||||
error_code = getattr(e, 'code', None)
|
||||
# 50013 = Missing Permissions, 20023 = Cannot modify a role higher than bot's highest role
|
||||
if error_code in (50013, 20023):
|
||||
kuby_logger.warning(f"Missing Manage Roles permission to restore safe roles for {member} in {member.guild.name} - please ensure the bot has the Manage Roles permission")
|
||||
break
|
||||
if is_transient and i < retries - 1:
|
||||
await asyncio.sleep((i + 1) * 2)
|
||||
continue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue