Docker配置并使用CoolQ机器人

各语言框架
CoolQ HTTP API 插件
近期要求搭建docker容器,就玩起了之前很早就想玩的CoolQ机器人。

1、Docker拉取CoolQ环境

sudo docker pull richardchien/cqhttp:latest
sudo docker pull richardchien/cqhttp:4.8.0

这里拉取的版本我拉取了4.8.0是因为之后我使用的java框架是只支持4.8.0的,所以在拉取的时候应该选取自己框架对应的版本拉取。

2、创建镜像的参数

我创建镜像的参数

docker run -ti --rm --name cqhttp-test \
--network host \
-v $(pwd)/coolq:/home/user/coolq \
-e COOLQ_ACCOUNT=106******** \
-e CQHTTP_POST_URL=http://127.0.0.1:9999 \
-e CQHTTP_SERVE_DATA_FILES=yes \
richardchien/cqhttp:4.8.0

朋友那挖的参数,比较全面,对应着看。

#sudo docker run -ti --rm --name cqhttp-coolq \   #
#             -d \   # daemon,后台运行
#             --network host \   # host 模式下,容器的 localhost,就是宿主机的 localhost。即与宿主机共用网络
#             -v ~/coolq:/home/user/coolq \   # 将容器的 /home/user/coolq 文件夹映射到宿主机
#             -e COOLQ_ACCOUNT=$COOLQ_ACCOUNT  \   # 酷Q 账号(QQ账号)
#             -e VNC_PASSWD=$VNC_PASSWD \     # nvc 密码
#             -e FORCE_ENV=$FORCE_ENV \       # 强制覆盖原有配置,否则配置不会更新。。
#             -e CQHTTP_USE_HTTP=no \         # 关闭 http api
#             -e CQHTTP_USE_WS_REVERSE=yes  \  # 启用反向 websocket api
#             -e CQHTTP_ACCESS_TOKEN=$CQHTTP_ACCESS_TOKEN  \  # api 连接时需要的 token
#             -e CQHTTP_SECRET=$CQHTTP_SECRET \   # secret 用于数据签名,反向 websocket 中不需要(因为握手阶段没有数据要传输)
#             -e CQHTTP_WS_REVERSE_API_URL=$CQHTTP_WS_REVERSE_API_URL  \
#             -e CQHTTP_WS_REVERSE_EVENT_URL=$CQHTTP_WS_REVERSE_EVENT_URL  \
#             -e CQHTTP_SERVE_DATA_FILES=$CQHTTP_SERVE_DATA_FILES  \  # 允许访问 data 文件夹中的文件
#             richardchien/cqhttp:latest

对于为什么需要,--network host,师傅说,程序访问酷Q,可以直接走端口映射。但是酷Q要将消息发给你,就有问题了,docker 内部访问宿主机,默认是要走网桥的
咱也不知道,咱也不敢问。

3、VNC登录QQ

在这步我出现了问题,是因为我将9000的端口映射给了docker的GUI,pointer,然而我的VNC映射设置为--network host,所以只能将别的端口映射移开,将9000端口让给VNC界面。
登录时要是一路顺风就没什么好说的,但会出现一个坑,就是异地登录,如果遇到异地登录会让你用chrome插件来验证,然而我尝试了也没什么用,
验证码还是不会出现。

 

14899865-596eec97d5b15667.png

获取chrome

解决方法就是,在提示你用chrome的时候,你选择否,再登录一次就会使用到旧版的VNC。后面会让你开启设备锁发短信来验证登录(来自论坛管理回复,亲测有效)

 

14899865-954305dc43c20cf2.png

解决方式

14899865-4c254ee579564538.png

登录QQ后的界面

 

这个时候,部署就已经完成了

4、调用API

几个常用的调用API

http://你的IP:5700/send_private_msg?user_id=QQ号&message=要发送的消息
http://你的IP:5700/send_group_msg?group_id=QQ群号&message=要发送的消息
http://你的IP:5700/delete_msg?message_id=消息ID

5、使用java库响应QQ消息

注意这里创建机器人对象的的openIP为返回消息的端口
添加机器人账户为机器人接受消息的端口
我使用的是PicqBotX框架

14899865-c5f3daaabf1f5441.png

机器人配置Json

 

public class TestBot
{
    public static void main(String[] args)
    {
        // 创建机器人对象 ( 传入配置 )
        PicqBotX bot = new PicqBotX(new PicqConfig(9999).setDebug(true));

        // 添加一个机器人账户 ( 名字, 发送URL, 发送端口 )
        bot.addAccount("Bot01", "127.0.0.1", 5700);

        // 注册事件监听器, 可以注册多个监听器
        bot.getEventManager().registerListeners(
                new TestListener(), 
                new RequestListener(),
                new ExceptionListener()
        );

        // 启用指令管理器
        // 这些字符串是指令前缀, 比如指令"!help"的前缀就是"!"
        bot.enableCommandManager("bot -", "!", "/", "~");

        // 注册指令, 可以注册多个指令
        bot.getCommandManager().registerCommands(
                new CommandSay(),
                new CommandTest(),
                new CommandVersion()
        );

        // 启动机器人, 不会占用主线程
        bot.startBot();
    }
}

有两个监听

一个为事件监听器继承IcqListener类

监听事件

事件类名    事件介绍
Event   所有事件(不推荐监听)
EventMessage    所有消息事件
EventDiscussMessage 讨论组消息事件
EventGroupMessage   群聊消息事件
EventPrivateMessage 私聊消息事件
EventNotice 所有提醒事件
EventNoticeFriendAdd    加好友提醒
EventNoticeGroupAdminChange 所有群管理员数量更改事件
EventNoticeGroupAdminSet    群员被设为管理员事件
EventNoticeGroupAdminRemove 群员被取消管理员事件
EventNoticeGroupMemberChange    所有群员数量更改事件
EventNoticeGroupMemberDecrease  所有群员数量减少事件
EventNoticeGroupMemberKick  群员被踢事件
EventNoticeGroupMemberKickBot   自己被踢事件
EventNoticeGroupMemberLeave 群员主动退出事件
EventNoticeGroupMemberIncrease  所有群员数量增加事件
EventNoticeGroupMemberApprove   群员被同意进群事件
EventNoticeGroupMemberInvite    群员被邀请进群事件
EventNoticeGroupUpload  上传群文件事件
EventRequest    所有请求事件
EventFriendRequest  加好友请求事件
EventGroupAddRequest    加群请求事件
EventGroupInviteRequest 拉你入群请求事件
EventLocal  所有本地事件
EventLocalSendMessage   所有本地向外发送的事件
EventLocalSendDiscussMessage    发送讨论组消息事件
EventLocalSendGroupMessage  发送群聊消息事件
EventLocalSendPrivateMessage    发送私聊消息事件
EventLocalHttpRecieveEvent  接收HTTP请求事件
EventLocalHttpFailEvent 接收HTTP请求失败事件
EventMeta   Meta事件
EventMetaLifecycle  生命周期事件
EventMetaHeartbeat  心跳事件

@EventHandler
    public void 方法名(事件类型 event)

另一个为指令,实现的是EverywhereCommand接口


public class CommandVersion implements EverywhereCommand // 实现EverywhereCommand就是无论私聊群聊还是讨论组都能收到的指令
{
    // 指令属性
    @Override
    public CommandProperties properties()
    {
        // 这个括号里填指令名和其他名称, 指令名必须至少有一个
        // 这个的话, 用"!v", "!version", 和"!版本"都能触发指令 (感叹号为你设置的前缀, 不一定必须要感叹号)
        return new CommandProperties("version", "v", "版本");
    }
    
    // 机器人接到指令后会执行这个方法 ( 实现不同的接口的话方法名不一定一样 )
    @Override
    public String run(EventMessage event, User sender, String command, ArrayList<String> args)
    {
        // 处理, 返回值会自动回复回去
        // 这里因为这个指令是用来查版本的, 所以直接返回字符串了
        return "TestBot - PicqBotX v4.10.1.928";
    }
}

例子都搬运自使用手册,这里只举最基础的。可以自行去插件下载页面看readme

 

14899865-aff4982c8e02994a.png

人工智障

做大自然的搬运工,Cool!Q!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些基本的步骤来搭建CoolQ机器人。 1. 安装DockerDocker Compose 首先,您需要在您的机器上安装DockerDocker Compose。如果您还没有安装,请先安装。 2. 下载CoolQ Pro镜像 您可以从CoolQ官网下载CoolQ Pro镜像。将下载好的镜像保存在您的机器上。 3. 创建Docker Compose文件 在您的机器上创建一个新的Docker Compose文件,例如docker-compose.yml。您可以使用以下模板: ``` version: '3' services: coolq: image: coolq/wine-coolq environment: - VNC_PASSWD=yourpassword ports: - "9000:9000" - "5700:5700" volumes: - ./coolq:/home/user/coolq ``` 将“yourpassword”替换为您的VNC密码。此文件将创建一个名为“coolq”的Docker容器,并将其映射到主机的端口9000和5700。此外,该文件还指定了一个名为“./coolq”的本地目录,该目录将包含CoolQ的数据和配置。 4. 启动CoolQ容器 在您的终端中,导航到Docker Compose文件所在的目录,并运行以下命令: ``` docker-compose up -d ``` 此命令将启动CoolQ容器并在后台运行。 5. 配置CoolQ 使用VNC客户端连接到主机的端口9000,例如使用RealVNC Viewer。输入您在Docker Compose文件中指定的密码。现在您应该能够看到CoolQ的界面。在此界面上,您可以配置CoolQ,包括添加QQ帐户、设置插件等。 6. 启用API插件 要使用CoolQ API,您需要启用API插件。在CoolQ的界面上,单击“应用管理”,然后单击“添加应用”。在应用商店中搜索“HTTP API”并安装。启用插件后,您可以使用CoolQ API与机器人进行交互。 希望这些步骤可以帮助您成功搭建CoolQ机器人
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值