我试图让我的装饰工作,但我一直带着
返回TypeError: command() takes 1 positional argument but 2 were given
我不确定发生了什么,是否有人能够向我解释我做错了什么?
装饰员代码
def command(command):
def method(self, *args, **kwargs):
return command(self, *args, **kwargs)
return method
使用装饰器的功能
@bot.command
async def speak(msg : str):
await bot.say(msg)
示范
我希望有一个机器人能够对触发器上的命令做出反应。
例如,我发送聊天消息:
?eval 1 * 2
机器人将回复
2
通过使用@bot.command
,我将能够创建一个灵活的系统,告诉应用程序该函数是触发命令。
e.g
@bot.command
async def eval(self, *args)
await bot.send(eval(*args))
答案 0 :(得分:0)
您正在使用bot.command
进行装饰。
如果bot
是一个对象,那么bot.command
是一个方法,在self
参数之前使用command
参数调用,因此给出了“2”。