我正在尝试创建一个可以在每个服务器中使用的命令,但是当其他人使用“-help”时,它不会显示在命令列表中。我知道这样做的正常方法是:
if ctx.author.id == myID:
#do some code
但是如果我这样做,用户在使用“-help”时仍然可以看到该命令存在。有没有办法解决这个问题?有没有 @commands.command @commands.is_user(myID) ?
答案 0 :(得分:1)
共有三个选项,您可以进行检查、进行装饰器或进行全局检查:
1.
def is_user(ctx):
return not ctx.author.id == myID
@bot.command()
@commands.check(is_user)
async def foo(ctx):
...
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):
...
@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(...):
...