前言
此文小白向
我看见群里的 鸟 和 鱼鱼鱼 ,非常心动,自己也照着论坛内的文章照着弄,结果遇到许多问题,后来一一解决了,成功拥有属于我自己的“兔叽”!
在此
感谢 @Sid Vicious 大佬在论坛的文章
感谢 @Gray.Ad 大佬愿意花时间帮我分析问题
材料
-
docker
-
cool-q
-
python2
-
QQ_bot.rar (170.0 KB)
-
virtualenv
安装所需程序
安装 python2
和 python-pip
sudo apt install python2 python-pip
安装 virtualenv
sudo pip install virtualenv
正式开始
0x01 解压压缩包
在你喜欢的地方解压 QQ_bot.rar
(我喜欢在 ~/
目录)
unrar x QQ_bot.rar
0x02 创建所需虚拟环境
作用是防止各个程序之间所需库的冲突
进入文件夹,创建文件夹
cd QQ_bot/
mkdir QQ_bot_env
虚拟化环境
cd QQ_bot_env/
virtualenv QQ_bot_env
提示:三个常用的
virtualenv
命令(可保存为 readme 方便查看)# virtualenv常用命令 # 创建 virtualenv QQ_bot_env # 激活 source bin/activate # 退出 deactivate
0x03 安装所需库
安装所需库
pip install -r ../requirements.txt
(注意根据需要更新pip和安装提到的其他所必须的库)
0x04 安装集成好的docker
以下可参考 coolq-http-api 的官网文档:https://cqhttp.cc/docs/4.5/#/Docker
安装 docker
sudo wget -qO- https://get.docker.io|sh
下载集成好的 docker
sudo docker pull richardchien/cqhttp:latest
0x05 启动容器
创建用于储存酷Q程序文件的文件夹
mkdir ~/coolq/
启动容器
# 先看清楚,不要无脑复制命令
# docker部署coolq,所有操作都要sudo权限
sudo docker run -ti --rm --name cqhttp-test -v ~/coolq:/home/user/coolq -e VNC_PASSWD=12345678 -p 9000:9000 -p 127.0.0.1:5700:5700 -e COOLQ_ACCOUNT=212521306 -e CQHTTP_POST_URL=http://127.0.0.1:8080/ -e CQHTTP_SERVE_DATA_FILES=no richardchien/cqhttp:latest
# 参数说明
-v ~/coolq:/home/user/coolq \ # 将宿主目录挂载到容器内用于持久化酷Q的程序文件
-p 9000:9000 \ # noVNC端口(这端口意思类似只开放一个端口,如果改为8999:9001,估计是占用8999,9000,9001都可以访问登陆酷Q的控制面板了吧),用于从浏览器登陆服务器,控制酷Q(当然你也可以搞为其他端口,类似7788:7788,这就你从服务器登陆控制面板就是 服务器ip:7788)
-p 5700:5700 \ # HTTP API 插件开放的端口(用于监听QQ群消息,端口都可以随意设置)
-e COOLQ_ACCOUNT=212521306 \ # 要登录的 QQ 账号,可选但建议填
-e CQHTTP_POST_URL=http://127.0.0.1:8080/ \ # 相当于request api,把群里的信息上报(访问)到地址,如果提示端口占用,那么就相应得修改此参数的端口值
-e CQHTTP_SERVE_DATA_FILES=no \ # 不允许通过 HTTP 接口访问酷 Q 数据文件
相关注意事项
- 嘤嘤机器人的flask后台,用于监听qq数据的api接口是http://127.0.0.1:8080/msg
- 详见代码的131行
- 所以你启动docker的时候CQHTTP_POST_URL要改为(或者docker启动后再修改coolq/app/io.github.richardchien.coolqhttpapi/config里面的ini文件或json文件)
- CQHTTP_POST_URL=http://127.0.0.1:8080/msg
- 如有需要长期在后台运行docker,可把
--rm
换成-d
0x06 配置 config 配置文件
大佬的相关config配置文件
*.ini 前面是 你自己 的qq号码,它将会在你第一次运行
docker run
后出现在~/coolq/app/io.xxxxxx/config/
里面
212521306.ini
[212521306]
host=0.0.0.0
port=5700
use_http=yes
post_url=http://内网ip:8080/msg
post_message_format=string
注意!尽量看清楚了跟着教程来,不要添加自己的想法 ( /捂脸 我就是吃了这个的亏 )
内网IP 根据情况填
192.168.x.x
,没有的话就填外网ip,不是填127.0.0.1
( 我就是自己多想,填了
127.0.0.1:8080/msg
,导致一直消息无法上报,浪费了好几天 )
212521306.json
{
"host": "0.0.0.0",
"port": 5700,
"use_http": true,
"ws_host": "0.0.0.0",
"ws_port": 6700,
"use_ws": false,
"post_url": "http://127.0.0.1:8080/msg",
"ws_reverse_url": "",
"ws_reverse_api_url": "",
"ws_reverse_event_url": "",
"ws_reverse_reconnect_interval": 3000,
"ws_reverse_reconnect_on_code_1000": true,
"use_ws_reverse": false,
"post_url": "",
"access_token": "",
"secret": "",
"post_message_format": "string",
"serve_data_files": false,
"update_source": "github",
"update_channel": "stable",
"auto_check_update": false,
"auto_perform_update": false,
"show_log_console": false,
"log_level": "info"
}
0x07 flask相关配置
填好你的机器人QQ号
atMe = '[CQ:at,qq=xxxxxx]' # 18行
配置flask端口,端口是你docker启动后CQHTTP_POST_URL的端口
CQHTTP_POST_URL配置的端口不是占用此端口,而是数据请求此端口
比如我docker配置的CQHTTP_POST_URL端口是8080,那么我flask的启动端口就是8080
http = WSGIServer(('', 8080), app) # 308行
0x08 gevent启动flask
直接启动
python webhook.py
0x09 根据需要修改代码
根据自己的需求修改 webhook.py
以此打造属于自己的QQ机器人
后记
参考链接:
如有更优方法或何处出现错误,可在下方留言告知~