在Telegram上使用EFB同时推送QQ与微信消息

警告
本文最后更新于 2022-06-24,文中内容可能已过时。

众所周知,待机耗电两巨头皆出自鹅厂,但其对于上班族和大学生而言又是不可或缺的通讯手段。Telegram作为一款合格的IM支持Android众多特性,通知栏回复、消息再提醒、自定义震动以及完整的FCM推送(FCM的特性和优势可以在Google上查询)。使用插件利用Telegram来完成对QQ微信的消息代收是目前较为优秀的解决方案。

事前准备

物品准备

  • 墙外VPS一枚
  • Telegram账号一枚
  • 稳定的飞机
  • Xshell(注意不要下载成苏杰马克丁版)/PUTTY
  • 可联网设备一枚,推荐电脑
  • 基本的Linux和vim知识
注意
本教程基于EFB v2.0.0, efb-qq-slave v2.0.0b2, efb-wechat-slave v2.0.0制作,方案为MASTER SLAVE处于同一系统且QQ微信各使用一个 Bot ,使用 Debian 10

获取 Telegram ID

@get_id_bot 发起会话,击 /start 即可获得你的 Telegram ID

使用EFB转发微信消息

申请 Telegram Bot

@BotFather 发起会话,发送命令 /newbot 以创建Bot https://i.loli.net/2019/05/16/5cdcf8000ca5e71083.jpg 如图所示分别提交bot的名称与用户名(用户名须以Bot为结尾)
设置好后还须对bot进行权限设置
发送 /setprivacy 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”.
发送 /setjoingroups 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”.
发送 /setcommands 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:

1
2
3
4
5
6
7
8
9
rm - 撤回.
link - 将一个对话链接到一个群组.
update_info - 更新信息至已链接群组.
chat - 生成一个对话.
extra -额外功能.
react - 对一条消息发出反应,或者显示反应者的名单.
unlink_all - 解除所有对话与某个群组的联系.
info - 显示当前Telegram聊天的信息.
help - 展示命令列表.

安装 EFB 及其从端

安装相关依赖:

1
apt install python3 python3-pip python3-pil python3-setuptools python3-numpy python3-yaml python3-requests ffmpeg libmagic-dev libwebp-dev vim -y

安装 EFB :

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

创建配置文件

创建 EFB 配置文件:

1
2
mkdir -p ~/.ehforwarderbot/profiles/wx/
vim ~/.ehforwarderbot/profiles/wx/config.yaml

输入以下内容:

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

创建 ETM 配置文件:

1
2
mkdir -p ~/.ehforwarderbot/profiles/wx/blueset.telegram
vim ~/.ehforwarderbot/profiles/wx/blueset.telegram/config.yaml 

输入以下内容:

1
2
3
token: "123456" #值为你在 @BotFather 处获得的 bot token
admins:
- 123456 #值为你在 @get_id_bot 处获得的 chat id

创建 EWS 配置文件:

1
2
mkdir -p ~/.ehforwarderbot/profiles/wx/blueset.wechat
vim ~/.ehforwarderbot/profiles/wx/blueset.wechat/config.yaml

其内容参见可选的配置文件 根据文档配置即可

运行

输入ehforwarderbot --profile wx,扫码登录即可收发消息,使用screen命令保存后台

使用EFB转发QQ消息(4种方案,以自用体验较为稳定的 IOTBot 以及 go-cqhttp 为例)

申请 Telegram Bot

@BotFather 发起会话,发送命令 /newbot 以创建Bot https://i.loli.net/2020/05/14/h1gKPXtFS4IcTDR.jpg 如图所示分别提交bot的名称与用户名(用户名须以Bot为结尾)
设置好后还须对bot进行权限设置
发送 /setprivacy 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”.
发送 /setjoingroups 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”.
发送 /setcommands 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:

1
2
3
4
5
6
7
8
9
rm - 撤回.
link - 将一个对话链接到一个群组.
update_info - 更新信息至已链接群组.
chat - 生成一个对话.
extra -额外功能.
react - 对一条消息发出反应,或者显示反应者的名单.
unlink_all - 解除所有对话与某个群组的联系.
info - 显示当前Telegram聊天的信息.
help - 展示命令列表.

安装 EFB 及其从端

1
2
3
4
5
apt-get install libopus0 ffmpeg libmagic1 python3-pip git nano docker.io libssl-dev python3-dev build-essential #安装相关依赖
pip3 install efb-telegram-master   #安装 EFB
pip3 install -U git+https://github.com/milkice233/efb-qq-slave
pip3 install git+https://github.com/milkice233/efb-qq-plugin-iot # IOTBot 安装此项
pip3 install git+https://github.com/XYenon/efb-qq-plugin-go-cqhttp # go-cqhttp 安装此项

创建配置文件

创建 EFB 配置文件:

1
2
mkdir -p ~/.ehforwarderbot/profiles/qq/
vim ~/.ehforwarderbot/profiles/qq/config.yaml

输入以下内容:

1
2
3
master_channel: blueset.telegram
slave_channels:
- milkice.qq

创建 ETM 配置文件:

1
2
mkdir -p ~/.ehforwarderbot/profiles/qq/blueset.telegram
vim ~/.ehforwarderbot/profiles/qq/blueset.telegram/config.yaml

输入以下内容:

1
2
3
token: "123456" #值为你在 @BotFather 处获得的 bot token
admins:
- 123456 #值为你在 @get_id_bot 处获得的 chat id

配置 EQS 及插件(二选一)

IOTBot
1
2
mkdir -p ~/.ehforwarderbot/profiles/qq/milkice.qq
vim ~/.ehforwarderbot/profiles/qq/milkice.qq/config.yaml

填写以下内容

1
2
3
4
5
6
Client: iot
iot:
  qq: 1234567890              # 此处填写登录的QQ号
  host: "http://X.X.X.X"    # 默认IP为本地
  port: 8888                  # 默认端口为 8888
  receive_self_msg: False     # 不接收自己发出的消息

下载 IOTBot 文件并解压

1
2
wget https://github.com/opq-osc/OPQ/releases/download/v6.0.20/OPQBot_6.0.20_darwin_amd64.tar.gz  #根据需要版本自行更改链
tar -xzvf OPQBot_6.0.20_darwin_amd64.tar.gz # 解压

启动需要到Gitter获取token并填入CoreConf.conf文件

如果需要更改API的端口请更改Port (例如更改成2333端口,就改成Port = “0.0.0.0:2333”)

进入到文件目录 执行命令

1
2
screen -S iot
./OPQBot  #输入完毕后 Ctrl+A+D 

登录请 等待控制台输出Everything is ok!后 再用浏览器访问 http://X.X.X.X:8888/v1/Login/GetQRcode (IP为你机子的内网ip或者公网ip,PORT为你上一步更改的端口,默认8888)

然后用手机扫码登录,不支持帐号密码登陆

go-cqhttp
1
2
mkdir -p ~/.ehforwarderbot/profiles/qq/milkice.qq
vim ~/.ehforwarderbot/profiles/qq/milkice.qq/config.yaml

填写以下内容:

1
2
3
4
5
6
7
Client: GoCQHttp                      # 指定要使用的 QQ 客户端(此处为 GoCQHttp)
GoCQHttp:
    type: HTTP                        # 指定 efb-qq-plugin-go-cqhttp 与 GoCQHttp 通信的方式 现阶段仅支持 HTTP
    access_token:
    api_root: http://127.0.0.1:5700/  # GoCQHttp API接口地址/端口
    host: 127.0.0.1                   # efb-qq-slave 所监听的地址用于接收消息
    port: 8000                        # 同上

下载 go-cqhttp 并解压

1
2
wget https://github.com/Mrs4s/go-cqhttp/releases/download/v1.0.0-rc3/go-cqhttp_linux_amd64.tar.gz  #根据需要版本自行更改链
tar -xzvf go-cqhttp_linux_amd64.tar.gz # 解压

编辑config.yaml配置文件,注意修改如下部分

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
account:         # 账号相关
  uin: 000000000 # QQ 账号
  password: ''   # QQ 密码,为空时使用扫码登录

message:
  # 上报数据类型
  # efb-qq-plugin-go-cqhttp 仅支持 array 类型
  post-format: array
  # 为Reply附加更多信息
  extra-reply-data: true


# 默认中间件锚点
default-middlewares: &default
  # 访问密钥,强烈推荐在公网的服务器设置
  access-token: ''

servers:
  # HTTP 通信设置
  - http:
      # 是否关闭正向 HTTP 服务器
      disabled: false
      # 服务端监听地址
      host: 127.0.0.1
      # 服务端监听端口
      port: 5700
      # 反向 HTTP 超时时间, 单位秒
      # 最小值为 5,小于 5 将会忽略本项设置
      timeout: 5
      middlewares:
        <<: *default # 引用默认中间件
      # 反向 HTTP POST 地址列表
      post:
        - url: 'http://127.0.0.1:8000' # 地址
          secret: ''                   # 密钥保持为空

进入到文件目录 执行命令

1
2
screen -S iot
./go-cqhttp  #输入完毕后 Ctrl+A+D 

运行

输入ehforwarderbot --profile qq 即可,同样可以使用screen命令保存后台

中间件(middleware)

EFB2.0 使用中间件进行消息屏蔽(仅限微信)和其他扩展功能。
推荐几个中间件自行阅读 Wiki 使用
消息搜索
微信聊天链接预览
语音转文字
启用TG页面预览
消息屏蔽

问题发现及解决方案

  • 提示错误: efb-wechat-slave 2.0.0 has requirement requests>=2.22.0, but you'll have requests 2.21.0 which is incompatible.
    输入 pip3 install requests==2.22.0 解决
  • 升级相关组件输入 pip3 install --upgrade efb-qq-slave efb-wechat-slave efb-telegram-master

参考链接

安装并使用 EFB:在 Telegram 收发 QQ 消息 - Milkice’s IceBox
在 Telegram 上实现微信收发,EHForwarderBot 搭建记录 - Eliot’s Blog
EFB WeChat Slave Channel:EFB 微信从端 (EWS) - blueset

感谢
efb-qq-slave 作者奶冰的解答

0%