一句话介绍
很久之前就做,不过那时侯只有文本处理。年底有时间刚好把项目同步上来。
这套 tgpmbot(仓库:https://github.com/kroyoo/Telegram-GroupTopic-Wechat)的核心能力是:把 Telegram 私聊消息自动分流到群组里对应的话题(Topic),并且在开启企业微信配置后,同步转发到企业微信应用;你可以直接在企业微信里回复,再路由回原 Telegram 用户的话题上下文。
示例: @FungitPMBot
解决的问题
- 多用户私聊机器人时,消息会混在一起,不方便管理。
- Telegram 消息接收不及时,消息同步到微信。
- 需要“可回”的链路,而不仅是单向通知。
这个项目把三件事一起做了:
- Telegram 私聊按用户映射到群组 Topic。
- 可选同步到企业微信应用(文本/图片/语音等)。
- 企业微信回复可回流到 Telegram 对应用户上下文。
功能总览(基于最新 README)
- 私聊 -> 群组 Topic 转发。
- Topic -> 私聊反向转发。
- 双向 reply 映射(保持回复关系)。
- 企业微信集成(可选):文本、图片、语音桥接。
- 企业微信回复路由:
- 显式路由:
#TGROUTE:<id>或id:<id> - 上下文路由:基于微信发送者上下文,不必每次带 id
- 显式路由:
- 自动同步用户管理(owner 命令):
/wx_add <tg_user_id>/wx_del <tg_user_id>/wx_list
- 安全防护:
TG -> WeCom敏感词拦截与违规拉黑- Telegram 私聊防刷(10 秒 8 条,超限临时静默)
部署前准备
- 一个 Telegram Bot Token。
- 一个开启了 Forum Topic 的 Telegram 群组,拿到
group_id(-100...)。 - Python 3 环境与依赖安装能力。
- 建议安装
ffmpeg(语音转码更完整)。 - 若要用企业微信应用,提前准备:
corpid、corpsecret、agentid- 回调 token、EncodingAESKey、receive_id
- 可被企业微信访问到的回调地址
最小可用启动(只启 Telegram Topic 转发)
pip install -r requirements.txt
python main.py -token "<BOT_TOKEN>" -group_id "-100xxxxxxxxxx"
可选参数(数据库路径):
python main.py -token "<BOT_TOKEN>" -group_id "-100xxxxxxxxxx" -db_path "./data/forwarder.db"
开启企业微信双向联动
完整参数示例:
python main.py \
-token "<BOT_TOKEN>" \
-group_id "-100xxxxxxxxxx" \
-owner_tg_id "123456789" \
-wecom_enabled \
-wecom_corpid "wwxxxx" \
-wecom_corpsecret "xxxx" \
-wecom_agentid "1000002" \
-wecom_touser "@all" \
-wecom_token "xxxx" \
-wecom_encoding_aes_key "43charsEncodingAESKey" \
-wecom_receive_id "wwxxxx" \
-wecom_callback_host "0.0.0.0" \
-wecom_callback_port 58090 \
-wecom_callback_path "/wecom/callback"
企业微信应用回调 URL 配置为:
http://<your-host>:58090/wecom/callback
如果你的网络环境需要代理,也可以配置 -proxy、-get_updates_proxy、-wecom_proxy。
微信里怎么“回到对应 Telegram 用户”
有两种方式:
-
显式指定路由(最直接) 在企业微信里发:
#TGROUTE:<tg_user_id> 你的消息 -
绑定上下文后直接回复(日常更方便) 在企业微信里使用:
/list查看可绑定的 TG 用户/bind <tg_user_id>绑定当前微信发送者上下文/status查看当前绑定状态/unbind解绑
绑定后,在有效期(默认 1800 秒)内可直接回复文本,不用每条带 id。
自动同步到企业微信(关键点)
默认情况下,私聊消息会转发到 Telegram 群 Topic。
当某个用户被 owner 执行 /wx_add <tg_user_id> 后,该用户消息也会自动同步到企业微信:
- text -> WeCom text
- photo -> WeCom image
- voice -> 优先转码后发语音,失败回退文件
- video/document -> 按能力发送,必要时回退文件
这适合“重点用户”或“值班用户”场景,避免全量消息都进企业微信造成噪音。
管理命令速查
Telegram 侧:
/start:帮助/call <text>:私聊手动发企业微信/ball <text>:/call兼容别名/wx_add <tg_user_id>:开启自动同步/wx_del <tg_user_id>:关闭自动同步/wx_list:查看自动同步列表
企业微信侧:
/status/list/bind <tg_user_id>/unbind
安全与风控(实战里很重要)
- 敏感内容拦截只作用于
TG -> WeCom转发链路。 - 防刷针对 Telegram 私聊入口,超过阈值会临时静默,重复违规会拉黑。
-owner_tg_id建议务必配置,便于命令权限控制与白名单豁免。
小结
如果你的目标是“一个机器人同时承接 Telegram 私聊客服 + 群 Topic 管理 + 企业微信协同回复”,这个项目基本是开箱可用的方案。
核心价值不只是转发,而是把“路由、上下文、回复链路、安全策略”一起补齐,实现跨平台沟通。
Comments