虽然不知道这个东西对个人来说有什么用,但感觉还是蛮好玩的。

不过如果需要进行群组管理时,还是很有效的,比如陪群里人聊天,活跃氛围,或者提供一些第三方查询功能,或者进行群组成员的管理都是可行的。

动手吧。

环境准备

必要环境准备:python软件环境(2.7或3.x都可),itchat。

假设你pyhton环境已经安装完毕了,现在需要安装itchat,itchat是一个可以模拟微信登录以及进行操作的python库,我们可以用下面的命令安装:

pip install itchat

安装完成后就可以进行代码编写了,由于主要功能来自于itchat,那么实现一个机器人需要人为进行编码是没有什么技术含量的。

IDE我使用的是jupyter,你也可以使用记事本开发。

代码实现

新建一个项目

点击项目名,修改下,好看一些:

修改项目名称

下面开始编写代码,导包,定义函数,先写个简单版的,完成基本功能:

编写代码

好了,架子写完了。运行它,会让你扫码登录,虽然你找他聊天并不会给你想要的回复,但功能已经可用了。

运行结果

因为itchat封装了很多功能,所以我们可以自己编写其他逻辑,完成更多的可能性。

我们继续完善下机器人,现在它只能登录,但无法做到自动回复,如果想快速完成,使用第三方api是很方便的。这里使用的是图灵机器人,点击可进入网址,注册下很方便。

修改下代码,需要新引入requests包,以及定义方法,请求数据进行回复。

请求api

使用上图的方式请求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