CentOS 下 通过 EH Forwarder Bot 转发 QQ 消息到 Telegram 的尝试
EH Forwarder Bot(简称 EFB)是一个可扩展的聊天平台隧道框架,允许用户同时连接多个即时通讯平台,如 微信,QQ,Facebook 等,远程收发管理消息。
原本使用 Rikka 开发的 FFM - FCM for Mojo Web-QQ
,对于 Android 的新特性适配的很好。无奈 Web QQ 关闭业务,只好通过 Telegram 转发来实现。
安装
须知:本教程仅确保文章发表期间可行,随时间推移文章内容可能不再适用。
部分资源引用自外部网站,将会在文章末尾处注明。如侵权请联系博主删除。
想要尝试这一番操作,必须先确保你拥有:
- SSH 工具(Putty,XShell 等)链接的墙外 VPS
- 一枚 Telegram 账号
- 可行的科学上网方式
- FTP 工具(FileZilla 等)
- 一定的英语基础
想要一瞬安装?很幸运,大佬已经准备好了 Docker 镜像!点我跳转
构建运行环境
安装 Python
1
2
3yum install -y https://centos7.iuscommunity.org/ius-release.rpm
yum install -y https://repo.ius.io/ius-release-el7.rpm #如果源失效可换用此源
yum install -y python36u python36u-libs python36u-devel python36u-pip python36u-setuptools安装 ffmpeg
1
2
3sudo rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
sudo yum install ffmpeg -y安装 EH Forwarder Bot
1
2pip3.6 install setuptools wheel
pip3.6 install ehforwarderbot
Telegram 上的步骤
Telegram Bot 是 Telegram 上极具特色的功能。它提供给用户一个便利的数据输出渠道。我们需要创建一个自己的 Bot 来输出聊天信息,
先向 Bot 设置向导 @BotFather 发起会话。https://t.me/BotFather
发送指令 /newbot
以启动向导。随后发送指令 /newbot
设置名称(name)和用户名(username)。要注意用户名必须以bot
结尾。此处以 Ojhdt-QQ Bot
和 OjhdtBot
为例。
你会获得一串由数字和字母组成的 token
。 请妥善保存这个密钥。为保护您的隐私及信息安全,请不要向任何人提供你的 Bot 用户名及密钥。
然后对 Bot 进行进一步配置。发送指令后根据提示选择按钮或键入内容发送即可。
- 允许将 Bot 添加进群组:/setjoingroups 选择刚创建的 Bot , 选择 Enable
- 允许 Bot 读取非指令信息:/setprivacy 选择刚创建的 Bot , 选择 Disable
- 设置指令列表:
发送/setcommands
,然后编辑发送以下内容
1 | link - 将会话绑定到 Telegram 群组 |
EFB 的配置
现在我们返回 VPS ,安装 ETM。
1 | pip3.6 install efb-telegram-master |
ehForwarderBot安装后不会生成配置文件,需要我们手动生成。
1 | mkdir -p ~/.ehforwarderbot/profiles/default/ |
通过你的 FTP 客户端访问服务器存储,进入/root/.ehforwarderbot/profiles/default/
,创建名为 config.yaml
的文件,内容如下:
1 | master_channel: blueset.telegram |
进入 /root/.ehforwarderbot/profiles/default/blueset.telegram/ ,创建名为 config.yaml 的文件,内容如下:
1 | token: "上一步骤中获得的token" |
token 必须完整复制
“数字:字母”
格式。admins 项填写管理员 Telegram ID ,该 ID 可以通过 Bot 发送
/start
获取。只有在管理员账户列表中的 Telegram 用户才可以以你的名义发送消息到 QQ 。
CoolQ 安装及配置
使用 docker 安装 酷Q 是比较方便的一种操作。
安装 docker
1
yum install docker -y
重启 docker
1
service docker restart
运行下列命令,安装由 Richard Chien 魔改的 由酷Q官方提供的 docker 镜像。
1
2
3
4
5
6
7
8
9
10
11
12
13
14docker pull richardchien/cqhttp:latest
mkdir coolq # 包含CoolQ程序文件
docker run -ti --rm --name cqhttp-test --net="host" \
-v $(pwd)/coolq:/home/user/coolq `# mount coolq folder` \
-p 9000:9000 `# 网页noVNC端口` \
-p 5700:5700 `# 酷Q对外提供的API接口的端口` \
-e VNC_PASSWD=MAX8char `# 请修改 VNC 密码!!!!` \
-e COOLQ_PORT=5700 `# 酷Q对外提供的API接口的端口` \
-e COOLQ_ACCOUNT=123456 `# 在此输入要登录的QQ号,虽然可选但是建议填入` \
-e CQHTTP_POST_URL=http://127.0.0.1:8000 `# efb-qq-slave监听的端口/地址 用于接受传入的消息` \
-e CQHTTP_SERVE_DATA_FILES=yes `# 允许以HTTP方式访问酷Q数据文件` \
-e CQHTTP_ACCESS_TOKEN=ac0f790e1fb74ebcaf45da77a6f9de47 `# Access Token` \
-e CQHTTP_POST_MESSAGE_FORMAT=array `# 回传消息时使用数组(必选)` \
richardchien/cqhttp:latest
下图为一个启动成功的实例:
注意:
建议先将以上内容复制到记事本中按照注释修改,再转到控制台执行。
VNC_PASSWD
一项为稍后进行酷Q后台登陆的密码,长度不可超过8
位。其余内容一般不必修改。
如果出现错误提示
1 | Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. |
请尝试执行步骤 2 重启 docker 。
- 在浏览器内访问
http://<ip或者域名>:9000
,输入刚刚设定的 VNC 密码登陆,然后在 酷Q 内登陆 QQ 账号。
运行及后续
安装 EQS
1
pip3.6 install efb-qq-slave
修改
milkice.qq
配置文件
FTP 访问服务器存储,进入root/.ehforwarderbot/profiles/default/milkice.qq/
,修改config.yaml
。1
2
3
4
5
6
7
8
9
10Client: CoolQ # 指定要使用的 QQ 客户端(此处为CoolQ)
CoolQ:
type: HTTP # 指定 efb-qq-slave 与 酷Q 通信的方式 现阶段仅支持HTTP
access_token: ac0f790e1fb74ebcaf45da77a6f9de47
api_root: http://127.0.0.1:5700/ # 酷Q API接口地址/端口
host: 127.0.0.1 # efb-qq-slave 所监听的地址用于接收消息
port: 8000 # 同上
is_pro: true # 若为酷Q Pro则为true,反之为false
air_option: # 包含于 air_option 的配置选项仅当 is_pro 为 false 时才有效
upload_to_smms: true # 将来自 EFB主端(通常是Telegram) 的图片上传到 sm.ms 服务器并以链接的形式发送到 QQ 端启动服务
使用指令1
ehforwarderbot
服务启动完成,enjoy it!
- 打开 Telegram ,搜索你之前创建的 Bot , 进入会话,输入
/start
即可开始消息互通!
以下是使用方法:
要向指定联系人发送消息,需要先发送
/chat
指令生成会话头,然后 Reply(回复)该会话头,再输入需要回复的消息。要回复他人发送的消息,只需要 Reply(回复)该消息,再输入内容即可。
不希望每一次发送消息都进行回复操作?EFB 还支持分流指定消息到指定 Telegram 群组:
- 在 Telegram 中新建一个空群组,并将你的 Bot 加入到这个群组中。(如果找不到 Bot ,尝试搜索
@你的Bot用户名
) - 回到 Bot 会话,发送
/link
,选择一个会话,并点击 “Link”。在弹出的列表中选择刚刚创建的空群组即可。
- 在 Telegram 中新建一个空群组,并将你的 Bot 加入到这个群组中。(如果找不到 Bot ,尝试搜索
*Docker 快速安装
以下内容来自 Rat’s Blog 的文章 使用EH Forwarder Bot实现Telegram同时收发多个微信/QQ消息
有了镜像就可以直接无视上面的繁琐操作了。只需要完成以下几个步骤。
安装 Docker 及 docker-compose
1 | curl -sSL https://get.docker.com/ | sh |
1 | curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose |
拉取源码
1 | git clone https://github.com/Earth-Online/efb-qq-coolq-docker.git |
如果没有安装 git ,请执行
yum install git -y
编辑配置
使用 FTP 工具修改 root/efb-qq-coolq-docker/ehforward_config/profiles/default/blueset.telegram
下的 config.yaml
,内容与手动安装时一致。
1 | token: "你的TG机器人Token" |
回退到目录 root/efb-qq-coolq-docker/
,编辑 docker-compose.yml
文件:
1 | - VNC_PASSWD=VNC密码 |
后台启动
使用指令一瞬启动:
1 | docker-compose up -d |
至此安装已经完成,访问 ip:9801
登陆酷Q就可以开始使用啦。
已知问题
无法从 Telegram 发送图片到 QQ 。该功能可通过购买 酷Q Pro 实现。
注意:根据 Milkice’s IceBox 的提示,若要使用 酷Q Pro,请在进行手动安装时,在 docker run 中添加额外参数 (-e COOLQ_URL = “http://dlsec.cqp.me/cqp-tuling") ,以便docker下载CoolQ Pro而不是Air。另外,在修改
milkice.qq
从端配置文件时,也要将is_pro
修改为true
。无法接收/发送语音信息。
无法处理 好友请求处理,加群请求处理 等消息类型
参考文章
[1]Milkice’s IceBox.安装并使用 EFB:在 Telegram 收发 QQ 消息
[2]Rat’s Blog.使用EH Forwarder Bot实现Telegram同时收发多个微信/QQ消息
写在后面
此文章为原创作品,禁止转载。如需转载请先经过许可,并在转载中注明原作者及出处。
请 收藏
本博客,本博客将持续更新。
CentOS 下 通过 EH Forwarder Bot 转发 QQ 消息到 Telegram 的尝试