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

认真发呆
认真发呆
发布时间:2026-10-11| 2人浏览过
原创

本文介绍如何利用Python的itchat库实现微信群消息同步机器人。通过模拟网页版微信登录,监听指定群聊的文本、图片及分享消息,并将其转发至其他目标群聊。文章涵盖环境配置、核心代码逻辑、群聊处理机制及服务器部署方法,帮助开发者快速搭建个人微信消息同步工具。

实现原理与准备工作

该方案的核心在于使用Python模拟微信网页版的登录机制。itchat库提供了调用微信接口的能力,允许程序以网页版身份登录微信账号。为了实现群消息同步,需要注册一个专用的微信号用于代码模拟登录,并将聊天内容上传至数据库或转发至其他群聊。

在开始之前,需完成以下准备工作:

  1. 安装依赖库:使用pip命令安装itchat库。
  2. 准备微信号:注册一个专用微信号,用于运行代码模拟登录。
  3. 保持在线:需保持该微信号手机在线以维持网页版登录状态。注意,手机端退出登录会导致其他终端认证账号退出。
pip install itchat

基础登录与消息发送

程序运行后会生成二维码,用户需扫码完成登录。登录成功后,可以向“文件传输助手”发送消息以验证功能。itchat支持注册消息响应事件,并定义了文本、图片、分享等多种消息类型。

基础登录与发送示例代码如下:

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

若需监听并回复文本消息,可注册TEXT类型的消息响应事件。注意,isGroupChat参数默认为False,若需处理群聊消息,必须显式指定isGroupChat=True。

import itchat
# 注册消息响应事件,消息类型为itchat.content.TEXT,即文本消息
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
  # 返回同样的文本消息
  return msg['Text']

itchat.auto_login()
# 绑定消息响应事件后,让itchat运行起来,监听消息
itchat.run()

群聊消息同步核心逻辑

实现群消息同步的关键在于维护一个字典groups,存储需要同步的源群聊ID和目标群聊ID及名称。当接收到群聊消息时,根据消息类型分别处理:

  1. 文本与分享消息:获取源群聊ID,判断是否在同步列表中。若在,则遍历目标群聊列表,将消息内容(包括发送者名称、文本内容或分享链接)转发至其他群聊。
  2. 多媒体消息:包括图片、视频等。通过msg['Text']获取文件下载函数,下载文件后,以特定格式(如@img@文件名)转发至目标群聊。

以下是处理群聊文本与分享消息的代码示例:

@itchat.msg_register([TEXT, SHARING], isGroupChat=True)
def group_reply_text(msg):
  # 获取群聊的ID,即消息来自于哪个群聊
  # 这里可以把source打印出来,确定是哪个群聊后
  # 把群聊的ID和名称加入groups
  source = msg['FromUserName']

  # 处理文本消息
  if msg['Type'] == TEXT:
    # 消息来自于需要同步消息的群聊
    if groups.has_key(source):
      # 转发到其他需要同步消息的群聊
      for item in groups.keys():
        if not item == source:
          # groups[source]: 消息来自于哪个群聊
          # msg['ActualNickName']: 发送者的名称
          # msg['Content']: 文本消息内容
          # item: 需要被转发的群聊ID
          itchat.send('%s: %s\n%s' % (groups[source], msg['ActualNickName'], msg['Content']), item)
  # 处理分享消息
  elif msg['Type'] == SHARING:
    if groups.has_key(source):
      for item in groups.keys():
        if not item == source:
          # msg['Text']: 分享的标题
          # msg['Url']: 分享的链接
          itchat.send('%s: %s\n%s\n%s' % (groups[source], msg['ActualNickName'], msg['Text'], msg['Url']), item)

处理图片和视频类消息的代码如下:

# 处理图片和视频类消息
@itchat.msg_register([PICTURE, VIDEO], isGroupChat=True)
def group_reply_media(msg):
  source = msg['FromUserName']

  # 下载图片或视频
  msg['Text'](msg['FileName'])
  if groups.has_key(source):
    for item in groups.keys():
      if not item == source:
        # 将图片或视频发送到其他需要同步消息的群聊
        itchat.send('@%s@%s' % ({'Picture': 'img', 'Video': 'vid'}.get(msg['Type'], 'fil'), msg['FileName']), item)

高级功能与服务器部署

itchat还支持处理好友添加请求、位置、名片、通知等多种消息类型。例如,处理好友添加时,可自动将新好友消息录入通讯录并发送问候语。处理多媒体消息时,可下载图片、录音、文件、视频等。

为了保持登录状态,可在auto_login()中设置hotReload=True,这样即使程序关闭,一定时间内重新开启也可以不用重新扫码。

import itchat
# import全部消息类型
from itchat.content import *

# 处理文本类消息
# 包括文本、位置、名片、通知、分享
@itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING])
def text_reply(msg):
  # 微信里,每个用户和群聊,都使用很长的ID来区分
  # msg['FromUserName']就是发送者的ID
  # 将消息的类型和文本内容返回给发送者
  itchat.send('%s: %s' % (msg['Type'], msg['Text']), msg['FromUserName'])

# 处理多媒体类消息
# 包括图片、录音、文件、视频
@itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
def download_files(msg):
  # msg['Text']是一个文件下载函数
  # 传入文件名,将文件下载下来
  msg['Text'](msg['FileName'])
  # 把下载好的文件再发回给发送者
  return '@%s@%s' % ({'Picture': 'img', 'Video': 'vid'}.get(msg['Type'], 'fil'), msg['FileName'])

# 处理好友添加请求
@itchat.msg_register(FRIENDS)
def add_friend(msg):
  # 该操作会自动将新好友的消息录入,不需要重载通讯录
  itchat.add_friend(**msg['Text']) 
  # 加完好友后,给好友打个招呼
  itchat.send_msg('Nice to meet you!', msg['RecommendInfo']['UserName'])

# 处理群聊消息
@itchat.msg_register(TEXT, isGroupChat=True)
def text_reply(msg):
  if msg['isAt']:
    itchat.send(u'@%s\u2005I received: %s' % (msg['ActualNickName'], msg['Content']), msg['FromUserName'])

# 在auto_login()里面提供一个True,即hotReload=True
# 即可保留登陆状态
# 即使程序关闭,一定时间内重新开启也可以不用重新扫码
itchat.auto_login(True)
itchat.run()

部署机器人到服务器运行时,可使用screen或IPython保持服务运行。账号下线后重新运行代码即可恢复。此外,可编写API将数据POST到服务器并存入数据库,实现更复杂的数据处理。

以上就是基于itchat实现微信群消息同步机器人的详细内容,更多关于Python微信机器人开发资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。