Docker运行coolq+HTTP接口教程

Mmx的博客中已经有了一篇Linux中用docker运行coolq的文章,但那个不支持http接口。要使用http接口的话,需要使用专用的镜像并映射更多端口。其余的参数什么的倒是一致的。

一、HTTP接口有什么用

http接口可以随时让你控制机器人发送消息,也可以使所有机器人收到的消息发送到一个后端网址。

也就是说,有了接口,咱就可以为所欲为,大大降低了开发新功能的门槛。且由于互联网是各设备联通媒介的特性,所以http接口可以做到比普通插件的更多(其实也可以定制)。比如用脚本监控某台电脑开机、使用情况并使用机器人播报等。

我想,这大概就是正经机器人和某宝买的机器人的本质区别了。

二、安装使用

更详细的图文教程与视频请参照普通coolq在docker内运行教程。那个会了这个也就会了。

当然,必须要有公网ip或端口映射。不然只能在内网调用。

配备接口的bot将占用更多内存

①安装Docker

Centos:

yum install docker

Debian/Ubuntu:

apt-get install -y docker.io

启动docker

systemctl start docker

设置开机启动

systemctl enable docker

②安装镜像

docker pull richardchien/cqhttp

③准备并启动coolq

下载最新版coolq Air(要是充了钱pro什么的也行),删除所有自带插件(有些插件在docker环境下可能导致账号异常冻结(风控),比如自带的图灵插件)。安上自己要的插件并设置好,然后上传到服务器,至于上传到哪,可以通过设定参数随便放。

然后通过命令创建coolq容器:

docker run --name=coolq --restart=always  -p 8080:9000-p 5700:5700 -v /root/coolq-data:/home/user/coolq -e VNC_PASSWD=11223344 -e COOLQ_ACCOUNT=abcdefg  richardchien/cqhttp

蓝色部分为可更改

参数说明:

coolq:容器名称,可更改,用于启动、停止容器,命令为docker start/stop coolq。创建多个机器人时使用不同容器名与端口即可。

--restart=always:官方文档中给的是--rm--rm的含义是容器停止后删除容器,而--restart=always则表示容器停止后保留并自动运行,这样无论是重启了服务器还是重启docker,都能保证机器人的正常自动运行。

11223344:控制面板[noVNC]的登陆密码。

8080:控制面板[noVNC]使用的端口,国内主机应避免使用804438080等特殊端口。

5700:http接口的端口,可通过访问[http://ip:5700]访问接口。

/root/coolq-data:用于储存酷Q AIR的目录,插件目录、数据都在这里,需与上文创建的注明可修改的目录一致。

abcdefg:机器人帐号,其值会自动填入酷Q AIR的QQ账号栏中,酷Q也会储存密码,对自动化有利,此处给的字母是不会自动填入的,因为账号应是数字的。

可选参数:

-d:不会显示详细的调试信息,仅输出容器ID并挂起,不需要再次手动启动容器。不建议第一次开机器人时使用。

--memory:用于限制物理内存占用,例如:--memory=200M

---memory-swap:限制swap占用,值设为-1表示不限制,必须与---memory一起使用。正常情况下当内存占用超出物理内存与swap占用限制总和时会被kill。

--oom-kill-disable:使用后进程即使超出限制也不会被kill。

上述可选参数请注意放置位置,否则可能不会成功。


然后容器就创建成功了。如果没有加-d参数的话,需要在确认机器人正常运行(noVNC进得去)后,按ctrl+D结束运行然后输入docker start coolq重新启动。

④设置接口配置文件

参考官方文档,添加一个简单的配置文件就行。

⑤机器人使用与http接口用法

管理、控制机器人可通过noVNC图形界面控制。基本和windows差不多。noVNC地址是[http://ip:8080],密码是参数中的11223344

更多登陆coolq机器人可能遇到的问题和官方槛请参照Linux运行QQ机器人中的“连接[noVNC]”和“机器人使用”。

http接口详细用法可参照官方API文档:

https://cqhttp.cc/docs/4.14/#/API

关于“Docker运行coolq+HTTP接口教程”的1条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注