命令(command)
wxrobot是一个命令行友好的框架,允许开发者编写自己的命令,并可以在wxrobot运行时读取命令并执行。与消息机制相同,命令也提供了两种方式:
robot.addCommand(command,func,helpMsg)
其中command是一个字符串,是命令名,func是命令实体,是键入命令后执行的方法,helpMsg是一个字符串,用于输出帮助帮助信息给用户,你可以在此输入命令的使用方法;- 装饰器方式,
@robot.command(command,helpMsg)
参数与上一种方式相同。
自带命令
当启动wxrobot后,wxrobot已经自带了3个命令:
=================================================
quit --> 退出微信
help --> 显示可用命令
delfriend --> 清理好友
=================================================
自定义命令
以第二种方式为例,自定义一个发送消息的命令:
@robot.command('send','send [name] [message]')
def sendCommand(name,text):
api.sendTextMsg(name,text)
运行wxrobot后,可以看到
=================================================
help --> 显示可用命令
delfriend --> 清理好友
quit --> 退出微信
send --> send [name] [message]
=================================================
参数问题
关于参数,必须多说几句:
- 自定义命令的handler方法参数是没有限制的,甚至没有参数也是可以的;
- wxrobot允许同名命令存在,但是参数数目不能相同;
- wxrobot在遇到同名参数选择handler方法的策略是:选择那些参数少于输入参数并且最接近的handler。
举个例子,我们定义了两个command:
@robot.command('test','test [arg]')
def test1(arg):
print('test1 %s'%arg)
@robot.command('test','test [arg] [arg]')
def test2(arga,argb):
print('test2 %s %s'%(arga,argb))
运行wxrobot后,输入不同命令得到输出如下:
test #没有参数,找不到对应的handle
[*] 系统识别不了命令
test a #一个参数,找到最接近的test1 handler
test1 a
test a b #两个参数,找到最接近的test2 handler
test2 a b
test a b c #三个参数,找到最接近的test2 handler
test2 a b