用Python实现简单的微信机器人
虽然不知道这个东西对个人来说有什么用,但感觉还是蛮好玩的。
不过如果需要进行群组管理时,还是很有效的,比如陪群里人聊天,活跃氛围,或者提供一些第三方查询功能,或者进行群组成员的管理都是可行的。
动手吧。
环境准备
必要环境准备:python软件环境(2.7或3.x都可),itchat。
假设你pyhton环境已经安装完毕了,现在需要安装itchat,itchat是一个可以模拟微信登录以及进行操作的python库,我们可以用下面的命令安装:
pip install itchat
安装完成后就可以进行代码编写了,由于主要功能来自于itchat,那么实现一个机器人需要人为进行编码是没有什么技术含量的。
IDE我使用的是jupyter,你也可以使用记事本开发。
代码实现
点击项目名,修改下,好看一些:
下面开始编写代码,导包,定义函数,先写个简单版的,完成基本功能:
好了,架子写完了。运行它,会让你扫码登录,虽然你找他聊天并不会给你想要的回复,但功能已经可用了。
因为itchat封装了很多功能,所以我们可以自己编写其他逻辑,完成更多的可能性。
我们继续完善下机器人,现在它只能登录,但无法做到自动回复,如果想快速完成,使用第三方api是很方便的。这里使用的是图灵机器人,点击可进入网址,注册下很方便。
修改下代码,需要新引入requests包,以及定义方法,请求数据进行回复。
使用上图的方式请求api即可,然后把key换成你自己的图灵给的key(很明显,上图的key是假的),userid你随意填写,然后你就可以测试了,免费的api每天只可调用100次。
另外图灵还可添加私有语料库:
以及可设置是否开放某些功能:
至此一个简单的自动回复就做好了,主要是搭个架子。
其他可能的场景
消息转发
接收消息后转发给某人(如管理员,以及管理员回复),使用以下方法
# 通过备注名获取用户
adminUser = itchat.search_friends(name=u'醒来')[0]
# 主动发送
adminUser.send(nickName + ":" + receiveText + "\n我:" + responseText)
同样的,根据发送者姓名(msg对象中有),来确认发送者是否是管理员以及确认是否是指令信息,从而进行一些操作。
分析微信好友列表
通过代码代码获取好友列表(返回一个字典):
friends = itchat.get_friends(update=True)[0:]
通过返回的数据进行解析处理,我们可以进行性别分布,地区分布,签名语义分布,再往后,我们可以将好友列表信息导入到我们自己的程序,之前一直想做一个朋友关系管理的,有了这些初始化数据,与itchat相结合,应该还有很多好玩的东西。
更多有趣的
完整代码:
import itchat
import requests
# 装饰器 接收文本信息
@itchat.msg_register(itchat.content.TEXT)
def receive_msg(msg):
user = msg['User']
nickName = user['NickName']
receiveText = msg['Text']
responseText = get_auto_response(receiveText)
adminUser = itchat.search_friends(name=u'醒来')[0]
adminUser.send(nickName + ":" + receiveText + "\n我:" + responseText)
return responseText
# 获取自动回复
def get_auto_response(msg):
# 填写信息回复逻辑 可定义自己的词库等等
apiUrl = 'http://www.tuling123.com/openapi/api'
data = {'key': 'd1dc55f479479f2', 'info': msg, 'userid': 'russell'}
rtv = requests.post(apiUrl, data=data).json()
return rtv.get('text')
# 通过微信扫描二维码登录
itchat.auto_login()
itchat.run()
itchat更多功能可查看:itchat项目简介
完于 2019-04-19 00:16