微信机器人进化指南

听说阿尔法狗又要挑战柯杰了。时至今日,人工智能不断刷新我们对这个世界的理解。或许再过不久,你真的不知道跟你在网上聊天的对象还是不是一个“人”,也不知道自己的工作会不会有天就被机器给取代了。

要想不被机器淘汰,那只能“进化”得比机器还快!


之前我们介绍了一个可以记录微信撤回消息的小工具,参见 再也不用担心错过几个亿啦:基于Python的微信消息防撤回工具

今天我们就来讲讲它的实现基础 - itchat。文末将给出一个基于 itchat 开发的微型微信聊天机器人。

itchat 是一个开源的微信个人公众号接口,支持 py2 和 py3 。你可以将其开发为微信群运营助手、自动回复机器人、谁是卧底小游戏的裁判等等,作为一个全能的接口, itchat 支持文本、图片、视频、附件、等内容的收发处理。

该库从原理上是登陆网页微信,将收发的信息打包处理为 dict 形式,然后使用 post 请求进行信息交换。简单来说就是一个可编写脚本控制、无界面的网页版微信客户端。

1、安装及入门

itchat 官网地址:http://itchat.readthedocs.io/zh/latest/

安装 itchat 与其他库并无差别,使用 pip install itchat 即可。

在安装完成之后,就可以开始写代码了,我们以分段的形式逐一介绍登陆、发信息、接收信息等功能。

1.1 登陆

itchat 的登陆函数为 auto_login() ,代码运行之后,会出现一幅二维码图片,使用手机扫码登陆即可。这是因为该库是利用网页微信的接口登陆,这一步相当于登录了网页版微信。整个授权过程的验证部分是通过微信正常的网页登录流程,不涉及账号密码信息。

对此登录原理感兴趣的可参考:

微信扫描二维码登录网页是什么原理 https://www.zhihu.com/question/20368066

itchat 在用户本机运行,除了调用微信接口外,不会向外界发送其他信息,并且源代码都是公开的。所以在使用过程中不必担心会有隐私泄露。

import itchat
# 普通登陆
itchat.auto_login()
# 运行并保持在线状态
itchat.run()

登陆上之后,会提示登陆成功信息:

itchat 也提供短时间内断线重连的功能,只需要添加 hotReload = True 参数,其原理是在登陆之后在 PC 端保存登陆信息,下次登陆时会直接读取存储的信息。

itchat.auto_login(hotReload = True)

关于登陆更详细的内容参见官方文档:https://itchat.readthedocs.io/zh/latest/intro/login/

1.2 发送消息

itchat 可以发送 文本、图片、视频、附件等内容。
代码示例:

# 发送一段文字给 文件助手
itchat.send('hello,helper',toUserName='filehelper')
# 同样也可以使用 发送文本函数
itchat.send_msg('hello,helper',toUserName='filehelper')
# 发送一张图片,给出图片的地址
itchat.send_image(r'photo2.png',toUserName='filehelper')

运行结果:

不要问我图片是从哪里找的,我也不知道,突然就出现在我电脑上了。

同样,发送其他形式的内容参照文档中相应的函数。注意这里的 toUserName 的值为微信号,以下图为例,正确的方式应该是 toUserName='littlecodersh'

关于消息的发送,更多内容参考:https://itchat.readthedocs.io/zh/latest/intro/reply/

1.3 消息的接收

要接受微信中的消息,我们需定义一个消息处理函数 text_reply(msg) ,添加装饰器 @itchat.msg_register(TEXT) 。

msg 参数为字典类型,包含了接收信息的所有细节,比如 msg['FromUserName']为发信息者,msg['ToUserName']为消息的接收者,msg['MsgType'] 为信息类型,msg['Text']为信息内容等等。

注意这里需要导入 itchat.content 下对消息类型做的包装,比如 TEXT 表示文本消息,PICTURE 表示图片消息等等,这里选择导入所有类型。

from itchat.content import *
# 注册文本消息,绑定到 text_reply 处理函数
@itchat.msg_register(TEXT)
def text_reply(msg):
   # 打印出传递的消息,利于我们更好的理解 itchat 的运作方式    print(msg)    # 将消息返回给发送者    itchat.send('recevied msg : %s'%msg['Text'],msg['FromUserName'])
# 图片以及视频消息,绑定到 reply_pic_video 函数
@itchat.msg_register(PICTURE,VIDEO)
def reply_pic_video(msg):    print(msg)
   # 下载收到的图片或者视频    msg['Text'](msg['FileName'])    # 回复发送者    itchat.send('hello world', toUserName=msg['FromUserName']

注意:在处理图片、视频、附件信息时,itchat 提供了下载的功能,如代码中所示 msg['Text'] (msg['FileName'])msg['Text']为下载的方法,msg['FileName']为下载的文件,下载路径为代码的运行路径。

详细的消息类型参考:
https://itchat.readthedocs.io/zh/latest/intro/handler/
https://itchat.readthedocs.io/zh/latest/intro/messages/

1.4 其他功能

除了以上提到的功能,itchat 还拥有添加好友、搜索好友、获取头像、创建群、修改群名、邀请、踢人等等一系列的功能。

各项功能可查看源码:https://github.com/littlecodersh/ItChat/blob/master/itchat/core.py

2、实战

这里我们制作了一个简单的微信机器人,在 itchat 的基础上接入了图灵机器人和百度翻译,实现了自动回复与翻译的功能,正常对话调用图灵接口,带 “#” 前缀调用翻译接口,实际效果如下:

(0)

相关推荐

  • 第73天: itchat 微信机器人简介

    今天来为大家介绍一个有意思的开源微信个人号 API,它是基于 Python 调用微信网页版实现,只需要编写少量的代码,就可以完成一个能够处理所有信息的微信机器人.那它到底能实现了什么功能,接下来为大家 ...

  • 企业微信群机器人使用指南和python示例

    流程简述 目前只支持发送数据,无法进行交互.对于监控和报告类任务,比如监控机器性能和一些指数等工作,可以极大简化工作量,末尾有简单的python示例. 在终端某个群组成功添加机器人之后,可以获取到we ...

  • 【直播干货】微信直播变现指南

    经过2020年直播带货的爆炸式增长,在2021年,新的直播风口会在哪呢? 小编认为会在微信直播中.微信直播有两个直播渠道,一是小程序,二是视频号.虽然二者目标用户各不相同,但这二者之间对应的直播类型也 ...

  • 小红书运营方案:从0到1的引流微信私域指南(旅游版)

    │ 前言│ 前天下午和学生在沟通,她做的是小红书旅游类项目,目的是用户流量,转微信私域.学生面临的问题,不止是小红书营销传播,还要打磨服务产品. 她自己做过几年运营,思路相对清晰,我也给她罗列了7个框 ...

  • 微信表情使用指南

    由于每个人对表情的理解都不同,所以本文的解读只代表个人观点,具有较强的主观色彩.同时如果聊天双方的年龄差距越大,对于表情的理解差异就越大.本文的观点是从20-40这个年龄段的角度出发,谈谈对不同表情的 ...

  • “你有张良计,我有过桥梯”——《最新规避微信提现手续费指南》出炉

    这两天,企鹅(腾讯)偷偷宣布修改了零钱提现规则,3月1日起,对提现功能开始收取0.1%的手续费,据说是给银行的.BUT好友间转账功能停止收取手续费. 什么? 你不造这消息? 打开微信,选择右下角&qu ...

  • 微信联系人清理指南

    这两天我在清理微信联系人,清理原因很简单,即,不想自己被纷杂的人事物打扰. 具体要删哪些人呢?我想了如下几条原则,大家看看是否合理: 1 一直"掉线"者--我们之间的唯一联系发生在 ...

  • 世界第一弹跳机器人进化版Salto-1P逆天发布!它用“翅膀”进化成“暴跳僵尸”

    去年12月份,国际著名杂志<科学>(Science)的子刊<科学·机器人>(Science Robotics)的创刊,封面上刊登了一款弹跳机器人Salto号称世界上身手最敏捷的 ...

  • 书单丨机器阅读理解与问答&聊天机器人实践指南

    编者按:机器阅读理解.机器问答.聊天机器人都是近年大热的方向,其研究与应用领域都进展飞速.本期书单我们有请微软高级研究员.斯坦福大学计算机系博士朱晨光为大家推荐一组相关书籍,并对机器阅读理解任务作了解 ...