Python实现基于itchat的微信群消息同步机器人

    最近,由全栈数据工程师开发的微信小组有近500人。在打开两个群组后,为了在不同的微信群组之间打开消息,花了一些时间构建了一个消息同步机器人,该机器人在任何一组接收到消息时都会进行同步。发送给其他组,并将聊天内容上载到数据库以进行进一步的分析,统计和显示。  

 

    基本思想是使用Python模拟微信登录。在接收到该组中的消息后,他们将处理各种类型的消息,例如文本,图片和共享,并将其转发给其他组。


    前期准备


    首先得有一个微信号,用于代码模拟登陆。由于我的微信号得自己留着用,现阶段注册微信又必须要手机号,于是只好特意办了个电信号,用来申请了一个新的微信,微信号是 honlanbot。虽说似乎可以用阿里小号来注册微信,不过听说存在反复回收和安全隐患问题,故不采用。


    其次,需要用到一个Python库 itchat,这个库已经做好了用代码调用微信的大多数功能,非常好用,官方文档在这里,安装的时候使用 pip 即可。

1.png

    我的手机支持双卡双待,于是把两张卡都装手机里,再双开微信,同时保持两个微信号手机在线,差不多就可以开始写代码了。用 itchat 调用微信主要是模拟微信网页版登陆,所以必须保持微信号手机在线,因为手机端微信一旦退出,其在网页、PC、MAC、IPAD等相应终端认证的账号也会随之退出。


    初步尝试


    itchat 提供了一些官方代码,让我们在自己的本本或电脑上新建一个 py 文件,初步尝试一下。


    运行以下代码,会出现出现一张二维码,扫码登陆之后将会给“文件传输助手”发送一条消息。

2.png

    以下代码则注册了一个消息响应事件,用来定义接收到文本消息后如何处理。在 itchat 里定义了文本、图片、名片、位置、通知、分享、文件等多种消息类型,可以分别执行不同的处理。

3.png

    再来看看如何处理其他类型消息,可以把在消息响应事件里把 msg 打印出来,是一个字典,看看有哪些感兴趣的字段。

4.png

    开发消息同步机器人


    经过以上示例代码,可以总结出消息同步机器人的开发思路:


    维护一个字典,叫做 groups 好了,用来存所有需要同步消息的群聊,key 为群聊的ID,value 为群聊的名称;


    接收到群聊消息时,如果消息来自于需要同步消息的群聊,就根据消息类型进行处理,同时转发到其他需要同步的群聊。


    直接上代码好了,首先定义一个消息响应函数,文本类消息我感兴趣的是 TEXT 和 SHARING 两类,使用 isGroupChat=True 指定消息来自于群聊,这个参数默认为 False。

5.png

    再来处理下图片等多媒体类消息。

6.png

    上面的代码实现了四种消息的处理:文本,共享,图片和视频。如果您还对其他类型的消息感兴趣,则可以进行相应的处理。在前面添加import 的代码,在后面添加登录和运行代码,就完成了。

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题