Discord.py 在命令方法上使用多个权限检查装饰器

Posted

技术标签:

【中文标题】Discord.py 在命令方法上使用多个权限检查装饰器【英文标题】:Discord.py using multiple permission check decorators on command methods 【发布时间】:2021-07-15 01:37:29 【问题描述】:

我正在发出命令test。 我只希望用户能够使用该命令;

是机器人所有者 拥有manage_channels 权限

目前我正在做

@client.command()
@commands.has_permissions(manage_channels=True)
@commands.check(commands.is_owner())
async def test(ctx):
  await ctx.reply("Success!")

但是一旦我 - 机器人所有者 - 尝试在没有 manage_channels 许可的情况下使用它,它就不起作用。我假设它一看到我没有权限就被@commands.has_permissions() 阻止了?

我知道我总是可以只检查方法本身,但我知道使用装饰器是更好的方法?

提前致谢。

【问题讨论】:

【参考方案1】:

你可以使用commands.check_any装饰器

@client.command()
@commands.check_any(commands.is_owner(), commands.has_permissions(manage_channels=True))
async def ...

参考:

commands.check_any

【讨论】:

以上是关于Discord.py 在命令方法上使用多个权限检查装饰器的主要内容,如果未能解决你的问题,请参考以下文章

权限检查 Discord.py 机器人

Discord.py:有一个检查有两个不同的错误输出

在python中同时运行多个协程[Discord.py]

discord.py 如何检查用户是不是在服务器上?

Discord.py:在检查中使用特殊响应导致不同的输出

有没有一种方法 discord.py 可以一次监听多个命令?