用 Telegram 收发微信消息
手机上装的 IM 实在太多,而不同应用的好友圈又不一样,所以不得不留下多个 IM 工具,像是微信、QQ for 学校,Telegram、Slack for 网友。在多个工具之间切换很是费神,而且有的屏蔽消息的群偶尔又会出现重要的消息,有时就不能及时看到。所以合并多个聊天工具真的很有必要。
其实我一直觉得微信和 QQ 留下一个就够了,无奈好友圈里既有只用微信的人,又有只用 QQ 的人,要和他们保持联系就必须把这两个应用挂在后台(有统一的通知推送机制还好,不然两个毒瘤在后台真是了不得)。但最近我觉得不用这俩 IM 还更舒服点,因为能收到的消息不外乎是 QQ 小冰、群签到、支付宝红包。
用 Telegram 收发微信消息主要依靠 ehForwarderBot,这是一个可扩展的聊天通道框架,用户可以通过它收发多个平台的消息。在本文要用到的是默认的 Telegram 主端和 WeChat 从端。官方有完善的 英文文档,网上也有很多相关教程了。本文安装使用的 ehForwarderBot 为 v1 版本,最新的 2.x 版本最近试用了下感觉还不是很稳定。

完成本文操作需要:
- 一个 SSH 客户端。本文使用 MobaXterm。
- 一个海外 VPS 或独立服务器,尽量用网络状况好的。本文用的是 DigitalOcean 512M VPS 阿姆斯特丹节点,点击 此处 新用户注册可获得 $10 余额。
- 一个关注了 BenWong 新闻台 的 Telegram 账号(误)。
服务器环境准备
两种安装方法,请选其一:
1. 用 HyperApp 安装
HyperApp 是一个基于 Docker 的服务器管理应用,其商店内已内置 ehForwarderBot,只需简单几步即可完成部署。但是我部署好以后发现不能在后台保持运行,于是采取了添加 Docker Image 的方法:
在 商店
里找到 Docker Image
,添加到你的服务器,在配置中,Image
填 royx/docker-efb
,Option
里填上:
--restart=always -v $(pwd)/config.py:/opt/ehForwarderBot/config.py -v $(pwd)/tgdata.db:/opt/ehForwarderBot/plugins/eh_telegram_master/tgdata.db
其中 $(pwd)/config.py
指放置配置文件 config.py
的地方,$(pwd)
指的是执行命令的位置,一般是 /root
下,可以改成另外的位置; $(pwd)/tgdata.db
同理,指的是放置数据文件的地方。config.py
和 tgdata.db
这两个文件需要自行准备,可以直接 touch
新建。
配置完以后安装到服务器里,安装完点击服务器,查看日志
,点右上角的 Term
,按 A-
缩小字体直到看见二维码,不行的话可以复制出现的链接,在电脑打开也能看见二维码,用微信扫码登陆。
其实不需要 HyperApp,直接用 Docker 部署也行,具体可看 royx/docker-efb,实际上就是自行 docker pull royx/docker-efb
,然后输入上面图中 docker run
的整条命令。但是用 HyperApp 的话管理上会方便一点。
2. 普通安装方法
首先,克隆项目。
git clone https://github.com/blueset/ehForwarderBot.git
cd ehForwarderBot
然后,新建存储临时文件的文件夹并赋权。
mkdir storage
chmod +rw ./storage
安装非 Python 依赖。本文示例操作于 Ubuntu 16.04 x64 环境下。
sudo apt-get install python3-dev python3-setuptools
sudo apt-get install libwebp-dev
sudo apt-get install libmagic-dev ffmpeg
安装 Python 依赖。在 ehForwarderBot
文件夹下执行:
pip3 install -r requirements.txt
Telegram 准备
点击 @BotFather 发起会话,发送 /newbot
启动新建 Bot 向导,注意 Bot 的账号名(用户名)结尾必须是 Bot
,建立好以后你会得到一串密钥(Token),请将之妥善保管并不要泄露。
接下来还要对 Bot 进行配置。
- 发送
/setprivacy
到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”。 - 发送
/setjoingroups
到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”。 - 发送
/setcommands
到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:
help - 显示指令列表
link - 将会话绑定到 Telegram 群组
info - 显示当前 Telegram 会话信息
chat - 生成会话头
recog - 回复语音消息以进行识别
extra - 获取更多功能
然后还需要获取你自己的 Telegram ID,有很多方法,下面介绍一个方法:与 @get_id_bot 对话,发送 /start
,获得的一串数字就是你的 ID。
@BotFather 里还有很多指令,可以对自己的 Bot 进行个性化,如编辑头像和显示名。
配置 ehForwarderBot
如果使用 HyperApp / Docker 安装的话,config.py
需要建立在你指定的位置或是默认的 /root
下。
使用普通安装方法的话,进入 ehForwarderBot
文件夹。执行以下命令新建 config.py
:
cp config.sample.py config.py
editor config.py
在配置文件中,token
后引号里面的内容替换为你之前获得的 Bot 密钥,admins
后方括号里面填入你自己的 Telegram ID。
配置到这一步已经完成了,如果想进行额外的自定义,可以参考 EFB Telegram Master 和 EFB WeChat Slave Channel。
实验性功能
我的 VPS 网络状况不佳(可能是太便宜了吧),所以经常会收到网络连接错误的提示,但我自知 VPS 没有网络问题,所以我把网络连接错误的提示关掉了:
eh_telegram_master = {
# ...
"flags": {
"network_error_prompt_interval": 0
}
}
ehForwarderBot 的微信端默认以好友 / 群组的名称为 uid 来保存数据,但是有的好友热衷于改微信名,导致绑定好的群组常常失效,这时可以把默认的 uid 改成备注名:
eh_wechat_slave = {
# ...
"flags": {
"uid_order": ["alias","NickName"]
}
}
想要解析微信消息内容中的 HTML 标签,可以这样做:
eh_telegram_master = {
# ...
"flags": {
"text_as_html": True
}
}

启动
用 HyperApp / Docker 部署的直接使用相应的启动方法即可,可忽略此节。
首先在 VPS 启动 ehForwarderBot。启动方法有两种,一是可以用自带的 daemon.py
:
python3 daemon.py start
第二种方法是使用 screen
:
sudo apt-get install screen
screen -S efb
python3 main.py
之后就会在 SSH 客户端里显示一个二维码,看不到的可以打开出现的链接。然后用微信扫一扫进行登录授权,然后手机会出现「网页微信已登录」的提示。之后就可以关闭输出:使用 daemon.py
的按 Ctrl + C
;使用 screen
的按 Ctrl + A
再按 D
。
使用
现在到 Telegram,搜索你之前设定的 Bot 用户名并点击 Start
发起会话,就可以和微信互通消息了。
一开始所有的微信消息都会通过 Bot 发给你,要回复一条微信,需要选中消息,选择 Reply
,再输入回复内容。要发起会话,需要给 Bot 发送 /chat 关键词
,关键词可选,输入对方备注或昵称的关键词可以进行搜索。

要对微信消息进行分类(分流),可以新建一个空群组,并在搜索框输入 Bot 的用户名即可把 Bot 邀请入群组。然后向 Bot 发送 /link 关键词
,选择一个会话,并点击 Link
(在这里点击 Mute
可以屏蔽掉一个会话),选择刚刚建好的群组。这样以后,该会话的消息全都会发送到新群组里。
在绑定会话中,你可以像普通聊天一样直接发送消息。也可以通过指定回复的形式来 @ 其他人。
一个妙用:把所有订阅号绑定到一个群组里,就可以集合所有订阅号消息,不需要再逐个点进去看。
如果重装系统或是换服务器,不想丢失自己做的 Link
或 Mute
设置,可以备份 tgdata.db
文件,HyperApp / Docker 安装的就在自己指定的位置或者 /root
下,普通安装方法在 /ehForwarderBot
下 /plugins/eh_telegram_master
里。
参考资料
其他自定义功能及问题解答请参考: