装饰员工作不正常

时间:2016-08-06 10:43:51

标签: python python-3.x

我试图让我的装饰工作,但我一直带着

返回
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))

1 个答案:

答案 0 :(得分:0)

您正在使用bot.command进行装饰。

如果bot是一个对象,那么bot.command是一个方法,在self参数之前使用command参数调用,因此给出了“2”。