自从傻妞砍了获取TG群组带图的消息功能,一直同步QQ与tg消息就不得劲儿,然后通过搜索找到了ehForwarderBot项目,以下简称efb。这玩意儿配置起来挺麻烦的,我尽量写简单点。
准备工作
TG端准备
创建一个机器人
这个懂得都懂吧?不会的谷歌。略。
配置机器人
- 发送
/setprivacy
到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”. - 发送
/setjoingroups
到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”. - 发送
/setcommands
到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:
help - 查看帮助列表.link - 将会话绑定到 Telegram 群组.unlink_all - 取消 Telegram 群组的链接.info - 显示当前的 群组的信息.chat - 生成一个聊天.extra - 获取更多功能.recog - 回复语音消息以进行识别.update_info - 更新绑定的 Telegram 群组的信息.react - 向一条消息作出回应,或列出回应者列表.rm - 从远端会话中删除一个消息.info - 展示频道相关信息
获取你的ID
这个也是基础了吧?略。
QQ端准备
QQ端在这个项目里叫从端,EFB项目可以对接多个从端,包括QQ、WX等。我这里用 go-cqhttp 登录QQ。
安装go-cqhttp
略。不是很想写,网上教程一大堆。
配置go-cqhttp
主要是配置以下部分:
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: '' # 密钥保持为空
对于已经对接过傻妞的配置文件,注意修改 post-format:
与添加#HTTP通信设置。
其中的端口如果与服务器其他服务有冲突,记得改。
若是对接的efb不在本机,则修改 port
为 0.0.0.0 ,post.url
修改为相应地址端口。如果双方通信内容必须经过 Internet 传输,请确保已配置 Access Token
并启用 HTTPS
确保双方通信内容不会在公网被窃听 / 篡改。
安装EFB
安装主端、QQ从端
在EFB项目中,TG端就是主端,主端与从端需要分别安装。本来是想找其他大佬打包好的镜像的,试了几个发现不适合我用,无奈参考其他大佬的Dockerfile自己打包了一个,就这花了我两天时间,实在是菜!
因为需要连接TG,所以最好是放在国外VPS上,我这里用甲骨文安装。
DaoCloud方式
打开DaoCloud,发现镜像->Docker Hub->搜索 dswang2233
回车,找到 dswang2233/ehforwarderbot
就是我打包的镜像了,只有amd版!我不会打包arm!
点击部署,输入
- 应用名称::随意
- 版本号:latest
- 运行环境:选择主机
点击下一步。
- 添加端口 :8000 或其他,自己改
- 添加 Volume:主机路劲随意、容器路径填写
/root/.ehforwarderbot |
点击部署,等待完成。
然后再 Portainer 里修改网络模式为 host。
命令行方式
通过ssh工具连接到服务器,输入以下命令:
docker run -dit --name 容器名 --restart always --network=host -v 主机目录:/root/.ehforwarderbot dswang2233/ehforwarderbot
其中的容器名和主机目录自己改。
配置主程序
进入配置目录
cd 主机目录/profiles/default
创建EFB配置文件
nano config.yaml
没有装nano
的装一个或者使用vi
编辑,输入以下内容:
master_channel: blueset.telegram
slave_channels:
- milkice.qq
按住 ctrl + x
退出编辑,输入 y 确认,回车确认保存。
以后对接微信也是在这里添加。
配置
创建主端和从端文件夹
mkdir -p blueset.telegram
mkdir -p milkice.qq
配置主端
nano blueset.telegram/config.yaml
输入以下内容:
##################
# Required items #
##################
# [Bot Token]
# This is the token you obtained from @BotFather
token: "12345678:QWFPGJLUYarstdheioZXCVBKM"
# [List of Admin User IDs]
# ETM will only process messages and commands from users
# listed below. This ID can be obtained from various ways
# on Telegram.
admins:
- 123456
##################
# Optional items #
##################
# [Experimental Flags]
# This section can be used to toggle experimental functionality.
# These features may be changed or removed at any time.
# Options in this section is explained afterward.
flags:
option_one: 10
option_two: false
option_three: "foobar"
# [Network Configurations]
# [RPC Interface]
# Refer to relevant sections afterwards for details.
其中的 token
就是之前创建的机器人 token
,admins
就是管理员的ID,每行一个。
保存退出。
配置从端
nano 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
不在本机,host也需要改成 0.0.0.0
启动go-cqhttp后,有以下提示表示配置完成
[INFO]: CQ HTTP 服务器已启动: 0.0.0.0:5700
[INFO]: HTTP POST上报器已启动: http://192.168.196.202:8000
使用efb
找到你刚才创建的机器人,点击 /start
然后参考 使用 EFB Telegram 主端 部分。
优化设置(可选)
减少go-cqhttp空间占用
打开 go-cqhttp
配置文件,找到 output.log-aging
数字改小一点
屏蔽进出群消息
打开 go-cqhttp
配置文件,在 default-middlewares.filter
添加 filter.json
在当前目录创建文件 filter.json
,填写以下代码:
{
".not":{
".or":[
{
"notice_type":"group_decrease"
},
{
"notice_type":"group_increase"
}
]
}
}
更多事件过滤请参考:事件过滤器 | go-cqhttp 帮助中心