第一次写博客,和大家分享一下我在用itchat开发图灵机器人中遇到的若干坑。由于是新手小白,所以踩到了颇多基础的坑,希望各位前辈在博客中发现低级错误,切勿鄙夷,还望斧正。
事情起源于前几天看到CSDN公众号发的一篇文章《如何用30行代码实现微信自动回复机器人》,文中介绍了如何使用itchat配合图灵机器人实现微信自动回复机器人,我对照着微信教程在Python中安装了itchat,这部分一般不会出啥错,有兴趣的就照常规方法安装就行。之后我继续照着教程把代码拷贝了一份,再之后去图灵机器人的官网注册了账号创建了机器人,关于这部分都没遇到啥坑。坑人的地方到了,运行的时候无法实现自动回复,只能回复默认回复。代码如下:
以上代码运行只会返回defaultReply,说明程序接受到了监听的消息,考虑是图灵机器人API接口的问题,查看了官网的文档,接口长这样:
和教程上简单的接口实现完全不同,复杂了不止一个档次,对于接口有兴趣的朋友请移步API V2.0接入文档,在百度上一番搜索后才知道教程上的接口是第一版本,现在官网提供的是第二版本,这个就有点坑了。照着官网文档上的接口实现了一下,程序还是不能运行。再次进行BUG的排查,进入图灵机器人后台查看日志,后台显示已经收到程序发送的信息,并且返回消息。那就是在接收返回消息到把消息发送给微信的代码出问题了。确定了问题接下来就一步步排查,先测试是否接受到了后台返回的消息。再次网上搜索,发现有人遇到相似问题,原因是json数据需要使用json.dumps()解析,插入代码后依旧不能运行,继续排查,测试代码如下:
一番操作之后数据终于能传出来了,但运行调整好的程序,还是没能达到理想的效果。继续排除问题,现在就比较明确了,问题在itchat的部分。最后解决了问题,但不知道问题出在哪。itchat部分的测试代码如下
代码使用官方文档上的测试代码改编,但是在运行时还是没反应,至今没搞懂,希望有大神赐教。
最后没使用return,使用msg.user.send()来传递返回值。目前还只能达到聊天功能,看到图灵机器人上有斗图功能,但目前没发现文档可以参考,以后技术进步再写吧。最后附上完整代码: