我正在使用discord.py并想从另一个命令调用一个命令。在堆栈溢出中有很多类似的问题,但我的不同之处在于我不希望将要调用的命令可供用户调用。例如:假设我有一个动物类别,并且在该类别中有两个命令,例如(笑话,图片)。那么如果命令前缀是!.用户将键入!animals joke或!animals pictures。这应该返回所需的结果。我以为我可以通过以下方式做到这一点:animals.py:@commands.commandasync def animals(self, ctx, com_name): await ctx.invoke(self.bot.get_command(com_name))jokes.py@commands.commandasync def joke(self, ctx): await ctx.send('a random joke')现在,如果用户键入!animals joke它会工作,但他们将能够键入!joke,这也将工作。如果类别也存在,我怎么能只让命令被调用。
1 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
您可以创建一个动物Group
,然后成为joke
一个子命令:
@commands.group()
async def animals(self, ctx):
pass
@animals.command()
async def joke(self, ctx):
await ctx.send('a random joke')
另一种选择是添加一个始终为假的检查joke
fail = commands.check(lambda ctx: False)
@fail
@commands.command()
async def joke(self, ctx):
await ctx.send('a random joke')
添加回答
举报
0/150
提交
取消