我正在使用discord.py并想從另一個(gè)命令調(diào)用一個(gè)命令。在堆棧溢出中有很多類似的問題,但我的不同之處在于我不希望將要調(diào)用的命令可供用戶調(diào)用。例如:假設(shè)我有一個(gè)動(dòng)物類別,并且在該類別中有兩個(gè)命令,例如(笑話,圖片)。那么如果命令前綴是!.用戶將鍵入!animals joke或!animals pictures。這應(yīng)該返回所需的結(jié)果。我以為我可以通過以下方式做到這一點(diǎn):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')現(xiàn)在,如果用戶鍵入!animals joke它會(huì)工作,但他們將能夠鍵入!joke,這也將工作。如果類別也存在,我怎么能只讓命令被調(diào)用。
1 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以創(chuàng)建一個(gè)動(dòng)物Group
,然后成為joke
一個(gè)子命令:
@commands.group()
async def animals(self, ctx):
? ? pass
@animals.command()
async def joke(self, ctx):
? ?await ctx.send('a random joke')
另一種選擇是添加一個(gè)始終為假的檢查joke
fail = commands.check(lambda ctx: False)
@fail
@commands.command()
async def joke(self, ctx):
? ?await ctx.send('a random joke')
添加回答
舉報(bào)
0/150
提交
取消