-
Notifications
You must be signed in to change notification settings - Fork 5.7k
Plugin
#已有插件介绍
该微信机器人提供了完备的接口,可以很容易的加入新的插件。
先就两个简单的插件做一个介绍,若想要了解具体如何编写新的插件,可以快速阅读这一节。
##vote
该插件实现了基于用户识别的投票功能,即使机器人下线也不会影响用户的投票数据。
###配置
- 配置投票选项:在plugin/config/vote.json中更改投票选项
- 若要更改文字说明,可以在plugin/msgdealers/vote.py中修改
- 投票记录在storage/account/用户名.db的表vote中
##autoreply
该插件实行了基于正则表达式匹配的自动回复。
###配置
- 配置自动回复的内容与匹配规则:在plugin/config/autoreply.db中增加或删除
- 以
@fil@
开头后面接具体路径(一般建议放在storage/upload/文件夹下)可以自动回复文件 - 以
@img@
开头后面接具体路径(一般建议放在storage/upload/文件夹下)可以自动回复图片 - 若以文件方式发送图片将不会以缩略图方式收到信息
#自定义插件配置
##编写插件
编写插件并不困难,具体的调用可以参照已有的两个插件。
需要注意,文件的相对路径以ItChat.py所在位置为起始。
###编写插件的流程
- 编写插件、编写插件测试与样例
- 更新itchat/robot.py、PluginTest.py、pluginlist.json中的插件与测试文件
- 使用
python PluginTest.py
测试插件是否正常工作
第一步将在下面具体介绍。
其中第二步的配置是指:
在itchat/robot.py中以(方法名,方法)
的元组加入插件序列(次序代表优先匹配)
在PluginTest.py中加入编写好的测试方法:
若需要测试,将插件插入PluginTest.py的测试名单中:
在pluginlist.json中加入改插件名字:
至此第二步配置就完成了。
##给出的接口
插件需要提供一个方法并通过这个方法返回值。
该方法将会获得三个输入,分别为文本内容、全局存储对象、发送人的UserName
这样就可以基于用户发送过来的消息作出反馈
通过全局存储对象,可以获得所有用户的信息与来往消息,下面以获取用户信息为例:
# 全局存储对象存储为storageClass, 发送人UserName存储为userName
# 更多的方法可以在itchat/storage.py中获取
# 获取昵称、唯一标示符
nickName = storageClass.find_nickname(userName)
pyid = storageClass.find_PYQuanPin(userName)
# 获取用户个人数据
status = storageClass.get_dict_of_other(storageClass.get_other(userName))
# 存储用户个人数据
storageClass.update_user(pyid, Other = storageClass.get_str_of_other(status))
##返回类型
- 插件需要返回一个Unicode格式的文本或是False
- 若匹配该插件成功,那么回复用户要通过返回Unicode格式的文本完成
- 回复内容同样可以以
@fil@
等标示符开头,但请一定记得配置相关测试以免运行出现意外 - 若匹配插件失败,回复False即可
##插件放置位置
- 插件本身需要被放置于plugin/msgdealers/文件夹中
- 插件调用的文件内容原则上建议存储在plugin文件夹中
##测试相关配置
如果涉及到活动用户信息的设置暂时没有编写完成,建议可以基于已有用户信息模拟测试。
测试中的异常情况通过sys_print('WARN', msg)
输出信息,系统将会识别出测试出现了问题。
测试中的普通输出可以通过sys_print
方法输出信息。
运行python PluginTest.py
将会进入交互的测试,你可以测试返回内容是否如你所愿。
#结语
只是一个简单的介绍,若有错误或是任何建议,我会很高兴收到你的邮件!
You can view the whole project on my ItChat@Github.
If you have any idea about this project, feel free to contact me through [email protected].
For continues update, you may want to click the Star⭐ on top right corner.