You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.py权限问题:需实现命令在用户拥有管理员或封禁权限时生效

在discord.py中实现多权限校验的命令逻辑

你可以通过**自定义权限检查器(Check)**来实现这个需求,让命令仅对拥有管理员权限或封禁成员权限的用户开放,具体实现如下:

1. 自定义权限检查函数

先编写一个自定义的检查器,用来验证用户是否满足任一权限条件:

from discord.ext import commands
import discord

def has_required_perms():
    async def predicate(ctx):
        # 校验用户是否是管理员,或拥有封禁成员权限
        return ctx.author.guild_permissions.administrator or ctx.author.guild_permissions.ban_members
    return commands.check(predicate)

2. 给命令绑定权限检查

用上面的自定义检查器装饰你的命令:

# 假设你的bot实例名为bot
@bot.command(name="你的命令名")
@has_required_perms()
async def your_command(ctx):
    await ctx.send("权限校验通过,命令执行中...")

3. 权限不足的错误提示

可以添加错误处理逻辑,当用户权限不足时给出明确提示:

@your_command.error
async def command_error_handler(ctx, error):
    if isinstance(error, commands.CheckFailure):
        await ctx.send("你需要拥有管理员权限或封禁成员权限,才能执行此命令!")

这个逻辑完全符合你想要的效果:只要用户满足两个权限中的任意一个,就能正常执行命令;否则会触发权限不足的提示。

内容的提问来源于stack exchange,提问作者BArbosspirat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:50:26