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

  介绍

小编给大家分享一下python基于itchat实现微信群消息同步机器人的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

最近全栈数据工程师养成攻略的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了个消息同步机器人,在任意群收到消息时同步到其他群,并且将聊天内容上传至数据库,以供进一步分析,统计和展示。

基本思路,是用python模拟微信登陆,接收到群里消息后,对文,本图片,分享等各类消息类型分别处理,并转发至其他群。

<强>前期准备

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

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

pip  install  itchat

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

<强>初步尝试

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

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

#,加载包   import  itchat   #,登陆   itchat.auto_login ()   #,发送文本消息,发送目标是“文件传输助手”   itchat.send(& # 39;你好,,filehelper& # 39;,, toUserName=& # 39; filehelper& # 39;)

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

import  itchat   #,注册消息响应事件,消息类型为itchat.content.TEXT,即文本消息   @itchat.msg_register (itchat.content.TEXT)   def  text_reply(味精):   #,才能返回同样的文本消息   return 才能;味精(& # 39;文本# 39;】      itchat.auto_login ()   #,绑定消息响应事件后,让itchat运行起来,监听消息   itchat.run ()

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

import  itchat   #,进口全部消息类型   得到itchat.content  import  *      #,处理文本类消息   #,包括文本,位置,名片,通知,分享   @itchat.msg_register([文本,地图,,,,,,共享))   def  text_reply(味精):   #才能,微信里,每个用户和群聊,都使用很长的ID来区分   #才能,味精(& # 39;FromUserName& # 39;]就是发送者的ID   #,才能将消息的类型和文本内容返回给发送者   itchat.send才能(& # 39;% s: % & # 39;, %,(味精(& # 39;类型# 39;],,味精(& # 39;文本# 39;]),,味精(& # 39;FromUserName& # 39;])      #,处理多媒体类消息   #,包括图片,录的音,文件,视频   @itchat.msg_register([图片,录音,,附件,,视频))   def  download_files(味精):   #才能,味精(& # 39;文本# 39;]是一个文件下载函数   #,才能传入文件名,将文件下载下来   味精才能[& # 39;文本# 39;](味精(& # 39;文件名# 39;])   #,才能把下载好的文件再发回给发送者   return 才能;& # 39;@ % s@ % & # 39;, %,({& # 39;图片# 39;:,& # 39;img # 39;,, & # 39;视频# 39;:,& # 39;视频# 39;}. get(味精(& # 39;类型# 39;],,& # 39;费尔# 39;),,味精(& # 39;文件名# 39;])      #,处理好友添加请求   @itchat.msg_register(朋友)   def  add_friend(味精):   #,才能该操作会自动将新好友的消息录入,不需要重载通讯录   itchat.add_friend才能(* *味精[& # 39;文本# 39;]),   #,才能加完好友后,给好友打个招呼   itchat.send_msg才能(& # 39;Nice 用meet 你! & # 39;,,味精(& # 39;RecommendInfo& # 39;][& # 39;用户名# 39;])      #,处理群聊消息   @itchat.msg_register(文本、,isGroupChat=True)   def  text_reply(味精):   if 才能;味精(& # 39;成绩测试标准# 39;):   ,,,itchat.send (u # 39; @ % s \ u2005I 接受:,% & # 39;,%,(味精(& # 39;ActualNickName& # 39;],,味精(& # 39;内容# 39;]),,味精(& # 39;FromUserName& # 39;])      #,在auto_login()里面提供一个事实,即hotReload=True   #,即可保留登陆状态   #,即使程序关闭,一定时间内重新开启也可以不用重新扫码   itchat.auto_login(真正的)   itchat.run ()

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