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

众所周知,待机耗电两巨头皆出自TX,但其对于上班族和大学生而言又是不可或缺的通讯手段.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 如图所示分别提交bot的名称与用户名(用户名须以Bot为结尾) 设置好后还须对bot进行权限设置 发送 /setprivacy 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”. 发送 /setjoingroups 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”. 发送 /setcommands 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:

help - 显示命令列表.
link - 将聊天链接到群组.
unlink_all - 取消所有聊天与群组的链接.
info - 显示当前Telegram聊天的信息.
chat - 生成聊天对话框.
update_info - 更新组名称和资料图片.

安装 EFB 及其从端

安装相关依赖:

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

安装 EFB :

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

创建配置文件

创建 EFB 配置文件:

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

输入以下内容:

master_channel: blueset.telegram
slave_channels:
- blueset.wechat

创建 ETM 配置文件:

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

输入以下内容:

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

创建 EWS 配置文件:

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 如图所示分别提交bot的名称与用户名(用户名须以Bot为结尾) 设置好后还须对bot进行权限设置 发送 /setprivacy 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”. 发送 /setjoingroups 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”. 发送 /setcommands 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:

link - 将会话绑定到 Telegram 群组.
chat - 生成会话头.
recog - 回复语音消息以进行识别.
extra - 获取更多功能.

安装 EFB 及其从端

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 安装此项
pip install git+https://github.com/XYenon/efb-qq-plugin-go-cqhttp # go-cqhttp 安装此项

创建配置文件

创建 EFB 配置文件:

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

输入以下内容:

master_channel: blueset.telegram
slave_channels:
- milkice.qq

创建 ETM 配置文件:

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

输入以下内容:

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

配置 EQS 及插件:

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

填写以下内容

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

下载 IOTBot 文件并解压

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")

进入到文件目录 执行命令

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

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

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

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

填写以下内容:

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 并解压

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

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

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: ''                   # 密钥保持为空

进入到文件目录 执行命令

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

运行:

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


问题发现及解决方案

  • 提示错误: 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

特别鸣谢奶冰的解答