从另一个命令调用命令 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,这也将工作。如果类别也存在,我怎么能只让命令被调用。


Qyouu
浏览 106回答 1
1回答

扬帆大鱼

您可以创建一个动物Group,然后成为joke一个子命令:@commands.group()async def animals(self, ctx):    pass@animals.command()async def joke(self, ctx):   await ctx.send('a random joke')另一种选择是添加一个始终为假的检查jokefail = commands.check(lambda ctx: False)@fail@commands.command()async def joke(self, ctx):   await ctx.send('a random joke')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python