forked from sass/tipibot
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
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)
|