一个基于Python的微信群消息自动转发系统,支持将群消息转发到公众号查询,并将查询结果自动回复到对应的群。
本系统通过WebSocket接收微信消息回调,当群消息包含指定关键词时,自动转发到公众号进行查询,然后将公众号的回复发送回对应的群。
核心特点:
- ✅ 串行消息处理,确保消息不丢失、不乱回
- ✅ 支持多群并发,自动队列管理
- ✅ 超时保护机制,公众号无响应时自动跳过
- ✅ 完全可配置,支持自定义超时时间和提示消息
- 支持多个群同时发送消息
- 关键词触发机制
- 自动识别群昵称
- 一次只处理一条消息,避免混乱
- 自动队列管理,按顺序处理
- 消息不会丢失或发错群
- 可配置超时时间(默认300秒)
- 超时自动跳过,继续处理下一条
- 自动发送超时提示到群
git clone https://github.com/oocsoo/WeChatMessageFarward
cd WeChatMessageFarward-mainpip install -r requirements.txt复制 .env.example 为 .env,并修改配置:
cp .env.example .env编辑 .env 文件,配置以下参数:
# 机器人ID
ROBOT_ID=wxid_xxxxx
# 服务器配置
SERVER_IP=服务器IP地址
SERVER_PORT=5555# 需要接入转发的群昵称(支持多个)
GROUP_NICK_NAME=['群昵称1','群昵称2']
# 触发转发的关键词(支持多个)
KEYWORDS=["查","找","搜","查询","搜索"]# 超时时间(秒),默认10秒
TIMEOUT=10
# 超时提示消息
TIMEOUT_MESSAGE=抱歉,公众号响应超时,请稍后重试或联系管理员。python main.py- 用户在群里发送包含关键词的消息
- 系统自动转发到公众号
- 公众号回复后,系统将回复发送到对应的群
- 如果公众号超时未回复,自动发送超时提示并处理下一条
用户在群里发送: "查询订单123"
↓
系统转发到公众号
↓
公众号回复: "订单123的物流信息..."
↓
系统将回复发送到群里
群1发消息 → 入队 → 立即发送到公众号 → 等待回复
群2发消息 → 入队 → 等待
群3发消息 → 入队 → 等待
↓
公众号回复 → 回复到群1 → 自动发送群2消息 → 等待回复
↓
公众号回复 → 回复到群2 → ...
- 每次有新消息入队时,自动检查当前消息是否超时
- 如果超过设定时间(默认300秒)未收到回复,自动跳过
- 发送超时提示到对应的群
- 继续处理队列中的下一条消息
.
├── main.py # WebSocket客户端主程序
├── schedule.py # 消息调度处理
├── serial_message_manager.py # 串行消息管理器
├── env_loader.py # 环境变量加载
├── .env # 配置文件
├── requirements.txt # 依赖列表
├── action/ # 动作模块
│ └── solo/
│ ├── get_group_nickname.py # 获取群昵称
│ └── sendtextmessage.py # 发送文本消息
└── record/ # 消息记录目录
└── record.json # 当前处理的消息记录
-
超时时间设置
- 建议根据公众号实际响应时间调整
- 过短可能导致正常消息被跳过
- 过长会影响队列处理效率
-
关键词配置
- 关键词不宜过于宽泛,避免误触发
- 支持多个关键词,任意一个匹配即触发
-
群昵称配置
- 必须与微信群的实际昵称完全一致
- 区分大小写
-
消息队列
- 系统采用串行处理,确保消息不会混乱
- 多个群同时发送消息时会自动排队
- Python 3.x
- asyncio - 异步IO处理
- websockets - WebSocket客户端
- python-dotenv - 环境变量管理
本项目仅供学习和研究使用。
欢迎提交Issue和Pull Request!
注意:请确保遵守微信相关使用规范,不要用于违规用途。