如何解决从另一个命令discord.py
我正在使用discord.py
,想从另一个命令中调用一个命令。在堆栈溢出中有很多类似的问题,但是我的不同之处在于我不希望要被调用的命令可供用户调用。
例如:
假设我有一个动物类别,并且在该类别中有两个命令,例如(笑话,图片)。然后,如果命令前缀为!
。
用户将输入!animals joke
或!animals pictures
。
这应该返回期望的结果。
我想我可以通过以下方式做到这一点:
animals.py:
@commands.command
async def animals(self,ctx,com_name):
await ctx.invoke(self.bot.get_command(com_name))
jokes.py
@commands.command
async def joke(self,ctx):
await ctx.send('a random joke')
现在,如果用户键入!animals joke
,它将可以使用,但随后他们将可以键入!joke
,并且也可以使用。如果类别也存在,我怎么只能让命令被调用。
谢谢。
解决方法
您可以创建动物Group
,然后将joke
用作子命令:
@commands.group()
async def animals(self,ctx):
pass
@animals.command()
async def joke(self,ctx):
await ctx.send('a random joke')
另一种选择是在joke
上添加始终为假的check
fail = commands.check(lambda ctx: False)
@fail
@commands.command()
async def joke(self,ctx):
await ctx.send('a random joke')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。