From 30ebe7c7739c3d51e7e1391c9ce14b9ff102b095 Mon Sep 17 00:00:00 2001 From: Mathis Date: Fri, 5 Jun 2026 17:42:07 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20bouton=20permettant=20de=20d?= =?UTF-8?q?=C3=A9sactiver=20la=20fonctionnalit=C3=A9=20de=20restauration?= =?UTF-8?q?=20des=20r=C3=B4les?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 10 ++++++++++ commandes/security.py | 34 ++++++++++++++++++++++++++++++++++ data/security_settings.json | 3 ++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/bot.py b/bot.py index eb88dde..8b6bae8 100755 --- a/bot.py +++ b/bot.py @@ -166,6 +166,16 @@ class MyBot(commands.Bot): kuby_logger.info(f"👋 {member} joined {member.guild.name}") if hasattr(self, 'advanced_logger'): self.advanced_logger.log_member_join(member) + + # Vérifier si la restauration des rôles est activée pour ce serveur + from commandes.security import load_settings + settings = load_settings(member.guild.id) + role_restore_enabled = settings.get("role_restore_enabled", True) + + if not role_restore_enabled: + kuby_logger.debug(f"Restauration des rôles désactivée pour {member.guild.name}, saut...") + return + previous_roles = self.advanced_logger.check_previous_roles(member.id) if previous_roles: guild = member.guild diff --git a/commandes/security.py b/commandes/security.py index 3a2416a..44fddcf 100755 --- a/commandes/security.py +++ b/commandes/security.py @@ -249,6 +249,8 @@ class SecurityView(disnake.ui.View): self.build_whitelist_view() elif self.category == "rules": self.build_rules_view() + elif self.category == "membres": + self.build_members_view() def build_spam_view(self): """Construit la vue Anti-Spam""" @@ -674,6 +676,27 @@ class SecurityView(disnake.ui.View): ephemeral=True ) + def build_members_view(self): + """Construit la vue Paramètres Membres""" + # Toggle Restauration des rôles + role_restore = self.settings.get("role_restore_enabled", True) + btn_restore = ToggleButton( + label="Restauration des rôles", + emoji="🔄", + is_enabled=role_restore, + custom_id="role_restore_enabled" + ) + self.add_item(btn_restore) + + # Bouton retour + btn_back = disnake.ui.Button( + label="Retour", + style=disnake.ButtonStyle.gray, + emoji="⬅️" + ) + btn_back.callback = self.back_to_main + self.add_item(btn_back) + async def back_to_main(self, interaction: disnake.Interaction): """Retour au menu principal""" self.category = None @@ -815,6 +838,12 @@ class MainCategorySelect(disnake.ui.Select): emoji="👥", value="whitelist", description="Gérer les utilisateurs immunisés" + ), + disnake.SelectOption( + label="Membres", + emoji="👤", + value="membres", + description="Paramètres liés aux membres" ) ] super().__init__( @@ -868,6 +897,11 @@ class MainCategorySelect(disnake.ui.Select): "Gestion Whitelist", "Gérez les utilisateurs immunisés aux protections.\n\n" "Ces utilisateurs ne seront jamais sanctionnés." + ), + "membres": view.create_category_embed( + "Paramètres Membres", + "Paramètres liés à la gestion des membres.\n\n" + "• **Restauration des rôles** : Restaurer automatiquement les rôles des membres de retour" ) } diff --git a/data/security_settings.json b/data/security_settings.json index 7801857..5d48cb8 100644 --- a/data/security_settings.json +++ b/data/security_settings.json @@ -7,6 +7,7 @@ "rules_content": "vfkj,oejfrsknezfrijugn,krvjgfinkrze,fgjin,", "rules_channel_id": 1369669999677145101, "rules_accept_role_id": 1369769836028231730, - "rules_message_type": "embed" + "rules_message_type": "embed", + "role_restore_enabled": true } } \ No newline at end of file