Première version non terminer du nouveau système de ticket § ajout du système de boutons persistant (non tester)
This commit is contained in:
parent
10173132a2
commit
93e2f9bb44
15 changed files with 3788 additions and 209 deletions
|
|
@ -12,6 +12,7 @@ class WhitelistMonitor(commands.Cog):
|
|||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
self.whitelist_file = "data/whitelist.json"
|
||||
self.persistent_views_added = False
|
||||
self.big_permissions = [
|
||||
discord.Permissions.administrator,
|
||||
discord.Permissions.manage_guild,
|
||||
|
|
@ -114,6 +115,33 @@ class WhitelistMonitor(commands.Cog):
|
|||
except Exception as e:
|
||||
print(f"Error sending whitelist notification: {e}")
|
||||
|
||||
async def cog_load(self):
|
||||
"""Register persistent views when cog is loaded"""
|
||||
await self._register_persistent_views()
|
||||
|
||||
async def _register_persistent_views(self):
|
||||
"""Register all persistent views for guilds with whitelist alerts"""
|
||||
if self.persistent_views_added:
|
||||
return
|
||||
|
||||
try:
|
||||
import json
|
||||
security_file = "data/security_settings.json"
|
||||
if os.path.exists(security_file):
|
||||
with open(security_file, "r", encoding="utf-8") as f:
|
||||
all_settings = json.load(f)
|
||||
|
||||
# For each guild with whitelist monitoring, register a default view
|
||||
# We'll use a generic view that gets recreated when needed
|
||||
# The key is that each unique custom_id needs to be registered once
|
||||
view = WhitelistRemovalView(0, 0) # Placeholder with dummy IDs
|
||||
self.bot.add_view(view)
|
||||
print(f"[WhitelistMonitor] Persistent view registered")
|
||||
|
||||
self.persistent_views_added = True
|
||||
except Exception as e:
|
||||
print(f"[WhitelistMonitor] Error registering views: {e}")
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_member_update(self, before: discord.Member, after: discord.Member):
|
||||
"""Monitor role changes for whitelist members."""
|
||||
|
|
@ -170,14 +198,15 @@ class WhitelistRemovalView(View):
|
|||
"""View with button to remove user from whitelist."""
|
||||
|
||||
def __init__(self, user_id: int, guild_id: int):
|
||||
super().__init__(timeout=3600) # 1 hour timeout
|
||||
super().__init__(timeout=None) # Persistent view
|
||||
self.user_id = user_id
|
||||
self.guild_id = guild_id
|
||||
|
||||
@discord.ui.button(
|
||||
label="Retirer de la whitelist",
|
||||
style=discord.ButtonStyle.red,
|
||||
emoji="🗑️"
|
||||
emoji="🗑️",
|
||||
custom_id="whitelist_remove_button"
|
||||
)
|
||||
async def remove_whitelist(
|
||||
self,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue