三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

微信群消息自动转发:三分钟配置,多个群同步从此全自动

微信群消息自动转发:三分钟配置,多个群同步从此全自动

微信群消息自动转发:三分钟配置,多个群同步从此全自动

【免费下载链接】wechat-forwarding在微信群之间转发消息项目地址: https://gitcode.com/gh_mirrors/we/wechat-forwarding

凌晨一点,运营阿楠把同一条公告在四个微信群里各发了一遍。这不是勤奋,是无奈。而 wechat-forwarding 这个开源小工具,用一份 JSON 配置就能在微信群之间自动转发消息,把这类重复劳动直接清零。

阿楠的处境,你大概率也经历过:通知要同步、公告要传达、文件要共享,可微信群只认"手动复制粘贴"这条死规矩。她的好消息是,这套规矩可以用几行配置改写——而且不用懂编程。这篇文章就按她走过的路,带你一关一关把"群消息同步"变成全自动。

这个微信自动转发脚本,先替你省下什么

先看一组最直观的对比:

没有 wechat-forwarding有了 wechat-forwarding
逐群复制粘贴,一次至少 3 分钟一条消息自动抵达所有目标群
忙起来容易漏发某个群规则写死在配置里,永远不会忘
接收方不知道消息来自哪自动加上"[来源群]"前缀
图片、文件要逐个下载再重发随消息一并转发,无需手动操作

原理其实很朴素:程序用 itchat 库登录你的微信网页版,实时监听群消息;收到消息后对照config.json里的规则,命中来源群就补上前缀,扔进发送队列,由后台线程异步发往目标群。监听、匹配、转发,三个环节全自动,你只需要在配置里写明"谁的消息去哪"。

第一关:三分钟让消息自动流转起来

不用学 Python,三步就够:

git clone https://gitcode.com/gh_mirrors/we/wechat-forwarding cd wechat-forwarding pip install itchat requests timeout-decorator

三条命令各干一件事:把项目拉回本地、进到项目目录、装齐三个依赖(itchat 负责微信协议,requests 发网络请求,timeout-decorator 给下载加超时保护)。如果系统装的是 Python 3,pip可能需要换成pip3;报权限错误就加个--user参数。

然后复制一份配置模板并启动:

cp config_sample.json config.json python wechat-forwarding.py

终端里会出现一个微信登录二维码,手机扫码确认,工具立刻开始工作。

避坑提示:如果二维码显示成乱码,把wechat-forwarding.pyauto_loginenableCmdQR=2改成1-1试试;实在不行改成enableCmdQR=True,会以图片形式弹出二维码。另外hotReload=True已开启,登录状态会被记住,重启后不用反复扫码。

第二关:读懂微信群消息转发规则的三个词

核心全在config.jsonforward.config里。看一个最小例子:

{ "forward": { "config": { "市场部通知群": { "prefix": "[市场动态]", "sub": ["销售团队群", "产品部群"] } }, "data_path": "data", "max_file_size": 500000 } }

逐行拆解,其实只有三个关键概念:

  • 来源群(外层 key):"市场部通知群"。这个群里的消息才会被处理。
  • prefix:转发时自动加在消息前的前缀,接收方一眼就能看出消息来自哪个群,天然解决"消息来源不明"的困扰。
  • sub:目标群列表。想一对多?多写几个群名就行。

data_path是图片、文件下载后存放的目录,max_file_size是单文件转发上限(单位字节)。要搭建多对多网络也很简单:config里多写几个来源群,各自指定自己的 sub 即可。

避坑提示:群名必须和微信里显示的名字一字不差,包括空格和标点。工具是按群名精确匹配的,差一个字符就静默跳过。最稳的做法是先把群名完整复制出来,再粘贴进配置。

第三关:图片、文件、匿名消息也能自动同步

光转发文字还不过瘾。好消息是,图片、视频、地图定位、分享链接、语音和普通附件都在它的射程内。

  • 图片视频:转发时自动带上原文件,接收方直接点开就能看。
  • 普通文件:先下载到data_path目录,再以附件形式发出;超过max_file_size的文件会被拦下,0 字节的空文件也不会转发。
  • 匿名消息:消息以//开头时,转发后不显示发送者名字,统一显示"匿名"。适合在群里转达不便署名的话。

经验之谈:文件转发依赖先下载到本地。如果data_path没配或者目录没有写权限,文件下载失败,转发就会悄悄失败。排查"文件转不出去"的问题,先看本地目录里到底有没有那个文件。

第四关:群位提醒和自动回复,两个隐藏技能

如果你觉得转发就到此为止,那就小看它了。config.json里还藏着两个彩蛋。

技能一:群位空出来了,自动喊人。微信群满 500 人后,有人退群腾出位置,空位往往几秒就被抢。把群名写进add.groups,把需要通知的好友写进add.users,一旦检测到该群有空位,工具会自动给你的好友们发消息:"这个群有空位了,快拉人!"每个群 30 分钟内最多提醒一次,不会轰炸:

{ "add": { "groups": {"新人群": 0}, "users": ["我自己", "管理员小周"] } }

技能二:@ 它,它替你回消息。chat里填上图灵机器人 API,群里有人 @ 你的机器人账号,它就会自动回复;别人私聊你,它也能代答。加好友请求还会被自动通过:

{ "chat": { "apikey": "你的图灵机器人Key", "apiurl": "http://openapi.turingapi.com/openapi/api/v2" } }

经验之谈:机器人也不是什么都答。源码里做了兜底——只要回答里出现"不知道""不会""抱歉",这条回复就不会发出去,避免机器人当众露怯。这类细节让它更像一个懂分寸的助手,而不是复读机。

终极挑战:别让消息在群之间无限循环

这是最容易翻车的一关,也是老玩家和新手的差距所在。

如果你配置了 A 群 ↔ B 群互相转发,麻烦就来了:A 的原始消息转发到 B 后,会再次触发"B 群消息→转发到 A"的规则,于是两条消息在 A、B 之间来回反弹,变成永动机。

注意,当前版本并没有内置关键词过滤(只有前缀、目标群、文件大小这几类规则),所以防循环只能靠规则设计,两条铁律:

  1. 转发网络做成"树状"而非"环状":消息从主干流向分支,分支不要有回流规则。
  2. 单向转发优先:只让 A 流向 B,B 不配置转回 A 的规则。

三个高频坑,提前帮你填平

坑一:登录状态失效。它基于微信网页版协议,长时间挂机后登录态可能失效。对策是定期重启服务,配合hotReload减少重新扫码次数;另注意部分新注册账号无法登录网页版微信,要用可登录网页版的微信号。

坑二:群名对不上,转发静默失败。症状是"工具看起来在跑,但消息没过去"。99% 的原因是群名有细微差异。排查时先用一次测试消息验证,别拿真实业务消息试错。

坑三:转发有轻微延迟。发送端是队列异步处理,消息量大的时候会排队,这是设计使然,几秒到十几秒的延迟正常,不用慌。

让第一个群,现在就跑起来

回到阿楠。现在的她,四群同步只需要在其中一个群里发一次,其余群自动跟上,前缀标明了来源,文件原样抵达。她省下来的那三分钟,用来做了真正需要人的判断和沟通——那才是运营的价值所在。

消息搬运这种没有技术含量的事,交给脚本就够了。你只需要:clone 项目、装好依赖、填一份看得懂的配置、扫码登录。三分钟之后,你会感谢现在的自己。🚀

如果你配出了好用的转发网络,或者踩过本文没提到的坑,欢迎把这些经验告诉身边的人——每一份配置智慧,都能让更多群摆脱手动转发的苦役。

【免费下载链接】wechat-forwarding在微信群之间转发消息项目地址: https://gitcode.com/gh_mirrors/we/wechat-forwarding

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表