由于 QQ 官方声明,WebSocket 协议将在2024年年底不再维护,
然而目前 adapter-qq 还并未适配 WebHook 方法。
所以为各位开发者提供此思路,
可以快速将 QQ 机器人 WebHook 转换为 WebSocket 协议,
并通过 WebSocket 协议将消息推送到 Koishi(使用 koishi-plugin-adapter-qq-webhook-websocket
进行处理)。
请注意,本项目仅为过渡性解决方案,
存在不稳定性,不保证长期有效性,
使用时请谨慎评估风险!
1 个赞
在教程开始之前,你还需要准备几样东西哦:
一个域名
2 一个SSL
你需要确保可以通过
https://你的域名
访问得到内容
比如这样网页这样 → https://webhook.company/
(如果你已经完成此步/达到此要求,请向下移步至对应教程处)
当然如果你完全不知道该怎么做
我们接下来也会教你如何搭建这样一模一样的网站
1 个赞
购买-搭建 域名+SSL
为了演示
我们此处示例使用介于 野鸡和大厂之间的 雨云 服务器
来演示
可以首先来到雨云官网 → https://app.rainyun.com/
在登录/注册账号后,我们前往购买一台服务器+域名+申请SSL证书
第一步 → 购买云服务器
我们前往 → 雨云 - 新一代云服务提供商
这里我选择的是 香港的服务器
考虑到大部分看此教程的用户,我们此处电脑系统选择 Windows server 2025
当然,4G 内存就够我们使了,2G其实也行 只是操作起来太卡了啦~
购买之后 我们就可以在这里看到我们购买了的服务器了
→ 雨云 - 新一代云服务提供商
第二步 → 购买域名
来到 域名注册的页面 → 雨云 - 新一代云服务提供商
我们可以搜索自己喜欢的英文单词作为域名
这里呢
我们演示的话 就选一个叫 webhook
的吧
然后看看价格 我们差不多选择这个吧 → webhook.company
由于我之前已经买过了 所以这里显示的是暂不可用
然后我们就需要付款了捏
注意这里 如果你是第一次买 那么这里是需要填写【实名认证模板】的
请如实填写哦~
然后点击最下方的【付款】
买完域名之后 我们需要把他与我们对应的服务器IPV4地址相对应解析
我们来到这个页面 → 雨云 - 新一代云服务提供商
选择你购买的对应的域名,然后点击【设置】按钮
我们需要先添加一个解析记录
然后按照我们这个来选即可
注意其中:
一定要选择对应的雨云产品ID(就是云服务器的产品ID)
主机名称要写 @
,不是让你起名字。。。。
其他默认即可
点击【添加】
在这之后的 2 到 24 小时之内 这个就会生效啦~
你就可以通过域名访问了呢
为了成为安全的网站
我们还必须要有证书呢!
第三步 → 申请 SSL 证书
我们可以在雨云免费申请SSL证书
→ 雨云 - 新一代云服务提供商
我们刚才购买的是
webhook.company
所以在这里我们需要这样填写哦
我们点击【立即验证】之后就会有一个这个 申请记录 啦
我们点击右侧的【小眼睛】
我们需要先分别记录一下这两个内容
然后我们来到 【域名解析设置】 这里 → 雨云 - 新一代云服务提供商
填入之后呢
应该就会有这样的两个记录啦
然后 这个时候 我们再回到 SSL证书 这里 点击 【立即验证】
如果你出现了
那请你再仔细检查检查 是不是弄错了什么
如果你出现了
那你需要再等待一会
毕竟上面说啦嘛 2 到 24 小时生效
你也可以在这里验证SSL的有效性 → SSL Server Test (Powered by Qualys SSL Labs)
最终 我们可以得到这样的结果
然后我们来下载一下证书
下载得到一个压缩包
这个压缩包里有我们需要的证书啦
你需要解压后放到一个文件夹里
接下来 我们需要配置 Nginx 啦
1 个赞
配置 Nginx
我们登录到 云服务器
这里如果你的 Windows 连接 Windows
我们可以使用 RDP 来远程桌面连接
我们在这里找到服务器的 公网IP 用户名 密码
填入到对应的地方 然后就可以连接啦
注意用户名不要写错哦
然后我们来到了服务器上,
需要先去几个地方下载/安装一些软件
我这里列出本教程需要下载的软件哦
这些软件的安装就不在此赘述了
好的 假设你现在已经安装好了 python环境 和一个编辑器 可以编辑python文件、nginx配置文件
那现在我们就可以继续了
配置 nginx
我们找到 nginx 所在位置
找到配置文件 nginx.conf
我们可以使用VScode打开,
并且编辑
我们需要修改内容哦
你可以参考我的呢~
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 重定向所有 HTTP 请求到 HTTPS
server {
listen 80;
server_name localhost webhook.company;
return 301 https://$host$request_uri;
}
# HTTPS 服务器(443端口)
server {
listen 443 ssl;
server_name webhook.company;
ssl_certificate C:/server/nginx/ssl/cert.pem; # 你的证书路径
ssl_certificate_key C:/server/nginx/ssl/cert.key; # 你的私钥路径
# 反向代理到 FastAPI 服务(这是之后要用到的python转换webhook所需的)
location / {
proxy_pass http://127.0.0.1:8000;
# 支持 WebSocket 的必要头字段
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 传递客户端的真实 IP 地址等信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
注意!
这里的
ssl_certificate C:/server/nginx/ssl/cert.pem; # 你的证书路径
ssl_certificate_key C:/server/nginx/ssl/cert.key; # 你的私钥路径
必须换成你的自己的路径
】
这两个文件就是你的证书文件,这在上一步的最后 我们下载的压缩包里有哦
你需要把他放到服务器上,并且填的是服务器上的证书的绝对路径
然后保存这个文件
我们在nginx.exe所在文件夹 的地址栏 输入
cmd
然后回车
就会弹出一个 黑框框
然后我们让nginx检查一下我们的配置文件对不对,
我们输入
nginx -t
如果输出有【successful】字眼,即代表正确
C:\server\nginx>nginx -t
nginx: the configuration file C:\server\nginx/conf/nginx.conf syntax is ok
nginx: configuration file C:\server\nginx/conf/nginx.conf test is successful
C:\server\nginx>
然后我们就可以双击 nginx 让他启动服务
要确保他在运行哦
到这里
你的网页应该就是和我一样了!
尝试使用 https 和你的 域名 访问看看吧!
1 个赞
配置 WebHook 转 WebSocket ——python中转后端
灵感来源 感谢 GitHub - DevOpen-Club/qbot-webhook-to-websocket: ✨将QQ机器人的WebHook方式的消息推送变换为Websocket
也十分感谢 霆生 的代码
此项目为 原版 开源 不带授权系统
本教程分享的文件的这个授权是霆生加上去的 (是霆生加上去的,但是没传项目)
放到这个 蓝凑云 里 单纯是方便下载呢(总不能放我的项目下吧((()
先下载项目
并且解压到服务器上的某一处文件夹
在文件夹地址栏输入
cmd
在有python环境 的基础下
我们使用 pip 安装依赖
pip install -r requirements.txt
然后我们启动这个项目
python main.py
出现
http://0.0.0.0:8000e[0m (Press CTRL+C to quit)
这样的字眼就是代表启动成功了呢
遇到问题的话 大概率是什么依赖没安装
尝试百度或者问问AI吧?
接下来 哦我们需要配置 一下这个项目
文件结构:
project/
├── auth.json
├── static/
│ └── favicon.ico(这个没了也无所谓)
├── doc.md
├── main.py
├── README.md
└── requirements.txt
其中关于 auth.json
需要重点说明
{
"机器人1的秘钥": {
"auth_time": "2077-12-06T14:10:40.506893",
"create_time": "2024-12-06T13:10:40.506893"
},
"机器人2的秘钥": {
"auth_time": "2077-12-06T14:10:40.506893",
"create_time": "2024-12-06T13:10:40.506893"
},
}
实际使用的时候呢
我们可能会需要多个机器人同时连接同一个中转服务器
所以这里可以填多个机器人的秘钥用于验证
秘钥
:必填哦,官方机器人的秘钥
auth_time
: 授权结束时间
create_time
: 注册时间
然后我们的地址是这样的
webhook地址:
https://{域名}/webhook?secret=机器人密钥
ws地址:
https://域名/ws/密钥
如果是同台服务器,
127.0.0.1:8000/ws/密钥
就行了
注意:此项目仅是不成熟的尝试
你可以改下python项目
让密钥不暴露到回调地址上
要多个机器人的话
仅需多个秘钥即可
无需多开 python main.py
、换端口运行再跑一个py
…
1 个赞
迁移机器人
配置开放平台
确保 python 中转运行正常的情况下
像我这样就好啦
你可以看到 终端有这样的输出
[1mPOST /webhook?secret=Po.......................0 HTTP/1.1e[0m" e[32m200 OKe[0m
就是代表验证成功啦
(200 OK)
配置 koishi
在koishi安装插件
koishi-plugin-adapter-qq-webhook-websocket
至于目前怎么安装 请参考
最近好像是 npm 那边有点问题 导致插件市场搜不到部分插件
影响列表
影响的插件列表 [插件市场更新]
删除:@hieuzest/mjob
删除:@hieuzest/mjob-fid
删除:@hieuzest/mjob-filter
删除:@hieuzest/mjob-majsoul
删除:@hieuzest/mjob-riichi-city
删除:@hieuzest/mjob-subscr…
这个插件的配置项,仅有一个与原 adapter-qq 不一样
你需要填入的格式是
wss://你的域名/ws/秘钥
比如本教程演示的就是
wss://webhook.company/ws/Po..............................0
然后我们开启插件
可以看到日志输出
2024-12-09 21:32:57 [I] loader apply plugin adapter-qq-webhook-websocket:akybey
2024-12-09 21:32:57 [I] adapter connect to server: wss://webhook.company/ws/Po...........................0
这就代表我们链接成功了!
可以尝试与机器人对话了哦~
1 个赞
期待 官方适配
这样的方法 不是长久之计哦~
希望 adapter-qq 能早些适配 webhook 吧~
1 个赞
adapter-qq 支持 WebHook 的 PR 目前应该是已经可用的状态,不过作者还没有做完所有工作。作者似乎这两天比较忙?
2 个赞