使用telegram来收发微信消息

我一直非常喜欢使用telegram,我个人觉得这是最好用的社交聊天工具。微信,我就用的少很多了,但是有时候说不得还是要用一下的。今天发现了EH Forwarder Bot这个好东西,可以用来在telegram上收发微信消息,当真是神奇。我马上决定来折腾一下。

前期准备

首要条件

  1. 你需要有一个能翻墙的服务器
  2. 你需要有一个telegram账号
  3. 你需要有一个微信账号

差不多就是这样了。

顺便我的系统是Ubuntu 18.04,仅供参考。

可能存在的问题

  1. 这个bot其实是对微信网页版的一个封装,或许可能会被封微信网页版。我也不清楚,网上是这么说的来着,要做好心理准备。
  2. 虽然可能初始配置比较麻烦,但是想到之后就能用美腻的tg来用微信就很期待了。
  3. 由于是基于网页版微信,手机上的微信还不能关,但是由于微信支持在网页版微信登录的时候关闭手机上通知,所以还行吧。
  4. 需要自行将消息分类,不然会所有消息堆在一起。

安装依赖

安装python3 & pip3

1
apt install python3-pip python3-dev python3-setuptools libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev libmagic-dev ffmpeg -y

安装EH Forwarder Bot

1
2
3
pip3 install ehforwarderbot
pip3 install efb-telegram-master
pip3 install efb-wechat-slave

配置

配置telegram

创建bot

搜索botfather,注意是图中圈出的,不要找错了。

然后发送/newbot,开始创建bot。

如图所示,发过/newbot以后,先发送bot的名称,类似于昵称,可以重复。再发送用户名,用户名需要唯一。顺序注意不要搞错。当然左边也有说明,照着说明来一般没有问题。

结束后,就会把你的http api给你,注意保存。

配置bot

继续在botfather中进行。

  1. 输入/setprivacy,选择你创建的bot,选择Disable
  2. 输入/setjoingroups,选择你创建的bot,选择Enable
  3. 输入/setcommands,选择你创建的bot,输入以下内容:
1
2
3
4
link - 将会话绑定到 Telegram 群组
chat - 生成会话头
recog - 回复语音消息以进行识别
extra - 获取更多功能

获取个人chat id

搜索get_id_bot,同样是图中圈出的。

发送/start即可获取自己的chat id,留作后用。

配置EH Forwarder Bot

2.0版本的EH Forwarder Bot需要自行创建配置文件。

创建配置文件

输入以下命令创建并编辑配置文件,路径可能不存在,需要另外创建。

1
vi ~/.ehforwarderbot/profiles/default/config.yaml

输入以下内容并保存。

1
2
3
master_channel: "blueset.telegram" 
slave_channels:
- "blueset.wechat"

创建主端配置

输入以下命令创建并编辑主端配置文件。

1
vi ~/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml

输入以下内容并保存,token后替换为之前在botfather处获得的http api,admins后面替换成get_id_bot处查询到的个人id。

1
2
3
token: "88888888:dGDe890Pml9lmp9PO9j9pJ9Pn9NMPO0nnki"
admins:
- 88888888

运行

二维码扫描登录

首先需要登录一次,以得到相关文件。输入以下内容启动:

1
ehforwarderbot

终端上将会显示出一个二维码,使用手机微信扫一扫确认登陆。可以看到很快就会登陆成功,手机微信里也会显示网页微信已登录。

按下ctrl+c终止程序。

守护进程

守护进程肯定是需要的,总不能一直开着终端窗口吧。

创建service配置文件。

1
vi /etc/systemd/system/ehforwarderbot.service

输入以下内容并保存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=EH Forwarder Bot instance
After=network.target
Wants=network.target
Documentation=https://github.com/blueset/ehForwarderBot

[Service]
Type=simple
Environment='EFB_PROFILE=/root/.ehforwarderbot/profiles/default/' 'LANG=en_US.UTF-8' 'PYTHONIOENCODING=utf_8' 'EFB_DATA_PATH=/root'
ExecStart=/usr/local/bin/ehforwarderbot --verbose --profile=${EFB_PROFILE}
Restart=on-abort
KillSignal=SIGINT
StandardOutput=journal+file:/var/log/efb.debug
StardardError=journal+file:/var/log/efb.error

[Install]
WantedBy=multi-user.target
Alias=efb
Alias=ehforwarderbot

ExecStart后的地址可能不同,可以输入which ehforwarderbot来查看你的地址进行替换。

接下来即可使用以下service操作。

  • service ehforwarderbot start: 启动
  • service ehforwarderbot status: 查看状态
  • service ehforwarderbot stop: 停止

使用

添加bot

添加刚刚创建的bot,这个应该都明白吧。

常见命令

说明一下,后面的联系人参数是模糊查询,会列出找出的联系人并进行下一步操作。联系人包括人、群组、公众号。

  • /chat 联系人:聊天
  • /link 联系人:可以进行多种操作,将联系人消息绑定到某个群组,或者设置该联系人免打扰。再次运行可重新绑定或取消免打扰。

其他的可以查看参考文档研究研究。

消息分组

不能让所有消息都发到bot里吧,那也太乱了,所以需要对消息进行分组。

我讲一下将公众号消息全部分组到一个群里的过程。

  1. 首先创建一个群组,似乎创建群组必须拉一个其他人的样子,我是自己有个小号,拉进去创建了群,再踢掉。
  2. 进入你刚刚创建的bot,输入/link 联系人,选择绑定,在弹出的窗口中选择你刚刚创建的群组,bot将被加入那个群组,以后该联系人的消息将会发送到那个群组中。
  3. 多个联系人可以绑定到一个群组中,重复进行第2步,即可将公众号都分组到一个群组里。

注意:

  1. 当群组只绑定了一个群组时,直接发消息就是回复该联系人。可以用于绑定单个人或群组。
  2. 当群组绑定了多个群组时,我没有试过直接回复会发生什么情况,或许需要使用/chat命令。我觉得一般用于绑定一堆不需要回复的公众号之类。
  3. 这个程序仅支持网页版微信支持的消息类型,可能会有部分消息接收不正常,被网页微信截断的情况,会提醒你去移动端查看。

后话

我使用微信频率不高,一般也就看看公众号,觉得用着还是非常舒适的,请看官们自行斟酌自己的使用情况。喜欢折腾的也可以自己配置着玩玩,挺有意思的。有点期待,未来会不会也能用tg来收发QQ消息呢?

您的支持将是对我最好的鼓励!