检查特定用户是否执行了命令 discord.py

时间:2020-12-19 01:36:58

标签: python discord.py

我正在尝试创建一个可以在每个服务器中使用的命令,但是当其他人使用“-help”时,它不会显示在命令列表中。我知道这样做的正常方法是:

if ctx.author.id == myID:
  #do some code

但是如果我这样做,用户在使用“-help”时仍然可以看到该命令存在。有没有办法解决这个问题?有没有 @commands.command @commands.is_user(myID) ?

2 个答案:

答案 0 :(得分:1)

共有三个选项,您可以进行检查、进行装饰器或进行全局检查:

1.

def is_user(ctx):
    return not ctx.author.id == myID

@bot.command()
@commands.check(is_user)
async def foo(ctx):
    ...
  1. 装饰器
def is_user(func):
    def wrapper(ctx):
        return not ctx.author.id == myID
    return commands.check(wrapper)

@bot.command()
@is_user
async def foo(ctx):
    ...
  1. 全局检查
@bot.check
async def is_user(ctx):
    return not ctx.author.id == myID

如果检查返回 False,将引发 commands.CheckFailure,您可以创建一个错误处理程序并发送诸如“您不能使用此命令”之类的内容。

参考:

答案 1 :(得分:0)

https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#help-commands

帮助命令可以有一个 hidden 属性,这使得它们不会出现在帮助命令中。

@commands.command(..., hidden=True)
def my_command(...):
    ...