Le bug faisait que les rôles staff ajoutés via le panneau d'une
catégorie spécifique étaient incorrectement stockés dans config_roles
au lieu de staff_roles de la catégorie. Corrige PermissionConfigView
pour gérer correctement config_type="cat_{id}".
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
Les boutons ticket_create, ticket_my_tickets et ticket_analytics avaient
leur callback assigné directement dans TicketPanelView ET étaient aussi
routés via on_interaction. Cela provoquait une double réponse
d'interaction → erreur 40060 "Interaction has already been acknowledged".
Suppression des assignations de callback directes pour ces trois boutons.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Return None instead of crashing when check_previous_roles finds no
parsable JSON lines in a member's log file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Ajout catégorie recrutement avec questions personnalisées
- Modal dynamique affichant les questions lors de la création
- Envoi des réponses dans un salon staff configurable
- Fermeture avec boutons Accepter/Refuser et envoi DM automatique au candidat
- Mise à jour des modèles TicketCategory et TicketData
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Ajout d'un DM formaté (action, modérateur, durée, raison, lien contestation, lien règlement)
- Envoi automatique du DM pour warn, timeout, kick, ban
- Nouvelle commande /sanctions pour voir l'historique d'un membre
- Nouveau champ appeal_channel_id pour le salon de contestation
- Mise à jour de /modconfig avec bouton de configuration du salon de contestation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Si user.send() et dev.send() échouent tous deux avec Forbidden,
l'exception était rattrapée par le handler externe qui réessayait
d'envoyer à dev. On ignore désormais silencieusement l'échec.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix(Ticket Whitelist): Ajout système async et tracking pour le deblocage des validation rate limitees (10 min) + infos MP
See merge request Omega_Kube/kuby!10