目录
一、准备
1.python环境
2.go-cqhttp插件
二、配置
1.go-cqhttp配置
(1)解压go-cqhttp
win端解压后,直接打开go-cqhttp_windows_amd64.exe 点击确认三次
会生成 go-cqhttp.bat 文件,运行。
(2)选择 3: 反向WebSocket通信
然后关闭 cmd 窗口,可以看到会生成配置文件config.yml
(3)修改配置文件config.yml
1.需要修改第4行
uin: <QQ号> # QQ账号
2.第98行,Websocket 连接地址。
universal: ws://127.0.0.1:<端口号>/qqbot/ #如果不冲突就填8080
(4)修改device.json
修改device.json文件中protocol 的数字为2(含义为- 手表 -其他的可能无法登陆)
3.使用 sanic 来启动 Websocket 服务
先创建一个要执行的脚本,如 server.py (复制粘贴请更改配置)
import json
from sanic import Sanic
app = Sanic('qqbot')
base_path = "/<自定义回复的txt文件路径>"
@app.websocket('/qqbot')
async def qqbot(request, ws):
"""QQ机器人"""
while True:
data = await ws.recv()
data = json.loads(data)
print(json.dumps(data, indent=4, ensure_ascii=False))
# if 判断是群消息且文本消息不为空
if data.get('message_type') == 'group' and data.get('raw_message'):
raw_message = data['raw_message']
if raw_message == "/菜单":
with open(base_path + "菜单.txt", encoding="utf8") as f:
msg = f.read()
ret = {
'action': 'send_group_msg',
'params': {
'group_id': data['group_id'],
'message': msg,
}
}
await ws.send(json.dumps(ret))
elif raw_message == "/群主介绍":
with open(base_path + "群主介绍.txt", encoding="utf8") as f:
msg = f.read()
ret = {
'action': 'send_group_msg',
'params': {
'group_id': data['group_id'],
'message': msg,
}
}
await ws.send(json.dumps(ret))
elif raw_message == "/群主主页":
with open(base_path + "群主主页.txt", encoding="utf8") as f:
msg = f.read()
ret = {
'action': 'send_group_msg',
'params': {
'group_id': data['group_id'],
'message': msg,
}
}
await ws.send(json.dumps(ret))
elif raw_message == "/Python学习目录":
with open(base_path + "Python学习目录.txt", encoding="utf8") as f:
msg = f.read()
ret = {
'action': 'send_group_msg',
'params': {
'group_id': data['group_id'],
'message': msg,
}
}
await ws.send(json.dumps(ret))
elif raw_message == "/开发项目":
with open(base_path + "开发项目.txt", encoding="utf8") as f:
msg = f.read()
ret = {
'action': 'send_group_msg',
'params': {
'group_id': data['group_id'],
'message': msg,
}
}
await ws.send(json.dumps(ret))
if __name__ == '__main__':
app.run(debug=True,port=<上面写的端口>,auto_reload=True)
三、启动
1.win端
运行 go-cqhttp.bat 文件,根据提示扫码登录。
四、linux服务器配置
1.需要多下载一个go-cqhttp文件一起打包上传
2.修改之前的配置文件config.yml
universal: ws://<服务器地址>:<端口号>/qqbot/ #如果不冲突就填8080
3.我的.py无法获取连接 所以我更改了最后一行代码
if __name__ == '__main__':
app.run(host='0.0.0.0',debug=True,port=<你的端口>,auto_reload=True)
4.docker部署准备
两个文件当前目录配置Dockerfile
(1).go-cqhttp
#基于的基础镜像
FROM alpine:latest
#维护镜像的用户信息
LABEL maintainer="cc 1525349212@qq.com"
COPY . /workspace
WORKDIR /workspace
#启动执行脚本
CMD ["./go-cqhttp"]
(2).qqbotserver
#基于的基础镜像
FROM python:3.9
# 维护者信息
LABEL maintainer="cc 1525349212@qq.com"
ADD ./ /code
#设置code文件夹是工作目录
WORKDIR /code
RUN pip install --default-timeout=1000 -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
CMD ["python", "/code/qqbotserver.py"]
编写py所需文件列表<简单版 详细请百度py部署linux>
新建编写txt文件requirements.txt放入qqbotserver的文件夹
requests==2.28.2
sanic==23.3.0
5.构建部署docker
1.构建
docker build -t <设置docker镜像名> .
2.部署运行
(1).qqbotserver:
docker run -d -p <端口号>:<端口号> --name <设置实例名> <刚才的镜像名>
(2).go-cqhttp:
docker run -d --name <设置实例名> <刚才的镜像名>