Discord.py如何在另一个命令中调用另一个命令?

时间:2020-06-18 22:11:12

标签: python discord discord.py

我希望我的机器人在使用已定义的功能键入+ playtest时播放特定的歌曲(+ play) 但是我说一个错误

“ Discord.ext.commands.errors.CommandInvokeError:命令引发了 异常:TypeError:'Command'对象不可调用“

除此命令外,整个代码都可以正常工作 我想知道ctx.invoke是否启用传递参数吗?或者我只是错过了一些东西

这是我的简短代码

import os
import re
#for all files in current directory
for f in os.listdir('./'):
    #if the first 7 chars are numbers
    if re.search('[0-9]{7}',f):
        lead_int = int(f.split('_')[0])
        #if the leading integer is less than 100
        if lead_int < 100:
            # rename this file with leading integer + 100
            os.rename(f,'%07d_%s'%(lead_int + 100,f.split('_')[-1]))

1 个答案:

答案 0 :(得分:5)

ctx.invoke确实允许传递参数,但是需要以不同于您习惯的方式处理参数(function(params)

必须在调用中显式显示参数(例如param = 'value'),并且命令必须是命令对象。 这就是调用命令的方式:

@commands.command()
async def playtest(self, ctx):
   await ctx.invoke(self.bot.get_command('play'), query='hi')