from __future__ import annotations import discord from discord import app_commands import config <<<<<<< HEAD def is_bot_admin(member: discord.abc.User | None) -> bool: """True when the member has the configured admin role for their guild.""" if not isinstance(member, discord.Member) or member.guild is None: return False ======= def is_bot_admin(member: discord.Member) -> bool: """Return True if the member has the configured bot-admin role for their guild.""" >>>>>>> 42f7bae68124fa6a9824780ba17b46d00f3f2b36 role_id = config.BOT_ADMIN_ROLES.get(member.guild.id) if role_id is None: return False return any(r.id == role_id for r in member.roles) def bot_admin_check(): <<<<<<< HEAD """Slash-command decorator that gates execution behind ``is_bot_admin``.""" async def predicate(interaction: discord.Interaction) -> bool: if is_bot_admin(interaction.user): return True raise app_commands.MissingPermissions(["bot_admin_role"]) ======= """Slash-command check decorator: raises MissingPermissions if not a bot admin.""" def predicate(interaction: discord.Interaction) -> bool: member = interaction.user if not isinstance(member, discord.Member): raise app_commands.MissingPermissions(["bot_admin"]) if not is_bot_admin(member): raise app_commands.MissingPermissions(["bot_admin"]) return True >>>>>>> 42f7bae68124fa6a9824780ba17b46d00f3f2b36 return app_commands.check(predicate)