如何检查作者是否在角色列表中具有特定角色?

时间:2021-04-16 03:00:32

标签: python discord.py

因此,当您在角色列表中拥有一个角色时,我试图创建一个检查功能,该功能将起作用(该功能上的用户 dev id 也可以绕过它),但没有成功。< /p>

mod_roles = [792816637488281642,
             792626568488713617,
             827277277488728524]

devs = [341837496763678731,
        382761658858276714]


def is_mod():
  def predicate(ctx):
    if ctx.author.id not in config.devs \
     and any(role.id not in config.mod_roles for role in ctx.author.roles):
      raise
    else:
      return True
  return commands.check(predicate)

@checks.is_mod()
@bot.command()
async def test(ctx):
  await ctx.send("testing")

当我运行它时:

discord.ext.commands.errors.CheckFailure: The check functions for command test failed.

1 个答案:

答案 0 :(得分:0)

如果您想保留 ID 列表并只允许它们执行命令,您可以内置不同的检查。

为此,我们必须检查命令 idauthor

看看下面的代码:

mod_roles = [] # Insert IDs
devs = [] # Insert IDs
    
@bot.command()
async def test(ctx):
    user = ctx.author.id # Check the ID of the user
    if user in mod_roles or devs: # If mod or dev
        await ctx.send("Testing")
    else:
        return await ctx.send("You are not allowed to use the command") # No Mod/Dev