Mise à jour du système de whitelist, sécurité et logging

This commit is contained in:
Mathis 2026-03-29 19:29:17 +02:00
parent d82f704c75
commit 1e384032be
7 changed files with 199 additions and 145 deletions

View file

@ -188,10 +188,10 @@ async def generate_servers_json(bot: discord.Client) -> dict:
entry["verificationLevel"] = str(guild.verification_level)
if fields.get("memberCount"):
try:
members = [m async for m in guild.fetch_members(limit=None)]
entry["memberCount"] = sum(1 for m in members if not m.bot)
except Exception:
# Use cache if available (intents.members is True), otherwise fallback to count
if guild.members:
entry["memberCount"] = sum(1 for m in guild.members if not m.bot)
else:
entry["memberCount"] = guild.member_count
if fields.get("owner"):
@ -209,22 +209,27 @@ async def generate_servers_json(bot: discord.Client) -> dict:
pass
# Membres avec un rôle dont le nom correspond à founderRoles
try:
async for member in guild.fetch_members(limit=None):
if member.bot or member.id == guild.owner_id:
continue
for role in member.roles:
if any(key in role.name.lower() for key in founder_keys):
founders.append({
"id": str(member.id),
"username": member.name,
"displayName": member.display_name,
"avatar": str(member.display_avatar.url),
"isOwner": False,
})
break
except Exception:
pass
# Use cache if possible
members_to_check = guild.members if guild.members else []
if not members_to_check:
try:
members_to_check = [m async for m in guild.fetch_members(limit=None)]
except Exception:
pass
for member in members_to_check:
if member.bot or member.id == guild.owner_id:
continue
for role in member.roles:
if any(key in role.name.lower() for key in founder_keys):
founders.append({
"id": str(member.id),
"username": member.name,
"displayName": member.display_name,
"avatar": str(member.display_avatar.url),
"isOwner": False,
})
break
entry["founders"] = founders
@ -259,7 +264,14 @@ async def generate_members_json(bot: discord.Client, guild_id: Optional[int] = N
raise ValueError(f"Serveur introuvable : {target_id}")
members_list = []
async for member in guild.fetch_members(limit=None):
# Use cached members if available, or fetch if not
source = guild.members if guild.members else []
if not source:
async for m in guild.fetch_members(limit=None):
if not m.bot:
source.append(m)
for member in source:
if member.bot:
continue