如何使用Java开发QQ机器人 方法一

使用Java开发QQ机器人- CQ & HTTP API

使用库Q平台下的CQ HTTP API插件以及simple-robot核心标准库作为依赖。

此插件与框架的 简陋 简单介绍:文档处简介

前往项目Github地址点击star以收获作者的感谢:GayHub

如果需要获得更好的阅读体验,请前往 原文档 -> 组件-酷Q-CoolQ HTTP API(推荐) -> 快速开始 处阅读
或尝试直接进入快速开始

快速开始



一、安装

1. 下载并安装 酷Q

前往酷Q官方下载地址下载酷Q应用,并安装(启动一次),然后关闭。


2. 下载并安装 CQ HTTP API插件

①. 前往CQ HTTP APIreleases 下载最新版本。
②. 将下载好的.cpk格式文件移动至酷Q根目录下的/app文件夹下。此时你有可能会发现此目录下已经存在一些.cpk文件了,那可能是酷Q应用下载的时候自带的。你可以选择保留它们,也可以选择删除它们。
③. 启动一次酷Q程序,右键酷Q标志,选择:应用 > 应用管理,如图所示:
应用-应用管理
然后将会出现应用管理界面,选择HTTP API插件并选择启用,如图所示:
选择-启用
默认情况下,插件会弹出一个黑窗口,并输出日志信息。此时如果你关闭黑窗口,酷Q可能会崩溃并提示错误信息。不过没有关系,可以先暂时关闭它并暂时关闭酷Q。安装完插件后的此次启动主要目的是为了让插件自动生成一次配置文件。

如果你有信心,可以选择直接查看CQ HTTP API插件的 配置文档 进行手动配置。


3. 创建Java项目

你可以使用一切支持的方式来自动构建项目,以下将会举几个例子:

版本号请自行替换为 Maven仓库中的最新版本:https://search.maven.org/artifact/io.github.ForteScarlet.simple-robot-core/component-forcoolqhttpapi

①. Maven

<dependency>
    <groupId>io.github.ForteScarlet.simple-robot-core</groupId>
    <artifactId>component-forcoolqhttpapi</artifactId>
    <version>${version}</version>
</dependency>

②. Gradle

compile group: 'io.github.ForteScarlet.simple-robot-core', name: 'component-forcoolqhttpapi', version: '${version}'

③. Grape

@Grapes(
    @Grab(group='io.github.ForteScarlet.simple-robot-core', module='component-forcoolqhttpapi', version='${version}')
)

二、 使用

4. 配置

有两个地方需要你进行配置:

  • 酷Q的CQ HTTP API
  • 你需要启动的Java程序

OK,让我们一个一个来。

①. CQ HTTP API插件配置

首先,这里给出CQ HTTP API插件配置的官方说明文档地址:配置文档
如果你有能力根据文档自己进行配置,可以选择跳过此小节。
其次,上面提到了启动一次应用,可以自动生成插件的一个配置文件,此文件位于{酷Q根目录}\data\app\io.github.richardchien.coolqhttpapi下的config.ini文件。

[warning] 如果没有,那么请参照官方配置文档进行寻找。

你需要将文件内容大致修改为如下内容:

[warning] 其中标注${…}的参数请根据描述自行修改为想要设置的值,且暂时记住它们,后续的Java配置中会用到。

[general]
host = 0.0.0.0
post_url = http://${java程序所在IP}:${Java程序监听端口}${Java程序Http服务请求路径}
port = ${酷Q插件监听的端口}

[info] 其余参数可查看文档并根据需求选填。框架暂时不支持请求头验证,所以请暂时不要开启access_tokensecret参数,且post_message_format参数也请使用默认,即string

②. Java配置

Java配置有两种方式:

  • 代码配置
  • 文件配置

由于目前文件配置尚比较繁琐,便暂时先只介绍代码配置的方式。如果对目前的较为繁琐的文件配置有兴趣,请在了解代码配置的情况下查看 文件配置方式

首先,创建一个类,实现com.forte.component.forcoolqhttpapi.CoolQHttpApp接口,并实现接口中的beforeafter方法。

现在假定你这个类叫做**RunApp**, 方便后续的代称。当然,它实际上叫做什么都无所谓。

可以发现,before方法中存在一个叫做CoolQHttpConfiguration的参数,我们就要通过这个参数对象进行配置。
以下我将会列举最常见的几项配置信息,而全面的配置可选项请查看核心通用配置组件额外配置

还记得上面提到的 . . .   {...}替换吗?这里也一样哦~而且注意,如果 {…}的提示信息是一样的,那么它们的值也应该是一样的哦!

configuration.setIp("${酷Q所在的IP}");
configuration.setJavaPort(${Java程序监听端口});
configuration.setServerPort(${酷Q插件监听的端口});
// 默认为一个斜杠"/"
configuration.setServerPath("${Java程序Http服务请求路径}");

③. 举个例子

此处我会给上述所有的${...}赋上一个值,来举个例子。
假如:

${java程序所在IP}=192.168.0.1
${Java程序监听端口}=15514
${Java程序Http服务请求路径}=/coolq
${酷Q插件监听的端口}=5700
${酷Q所在的IP}=192.168.101.101

那么两边的对应配置就分别为:
酷Q:

[general]
host = 0.0.0.0
post_url = http://192.168.0.1:15514/coolq
port = 5700

Java:

configuration.setIp("192.168.101.101");
configuration.setJavaPort(15514);
configuration.setServerPort(5700);
configuration.setServerPath("/coolq");

5. 运行

历尽千辛万苦,终于到了这一步。
首先,新建一个main方法在任意地方。
写下以下代码,并且别忘了那个RunApp实际上代表了什么:

CoolQHttpApplication application = new CoolQHttpApplication();
// 启动
application.run(new RunApp());

如果这时候一看到控制台所输出的日志中最终出现了你的机器人的一些信息,那么恭喜,这说明你已经发送、获取、设置消息了。

那么能不能监听到消息呢?写一些代码来测试一下吧。

6. 第一个监听器

①. 新建一个类

尽量在RunApp的同级目录或者子级目录下创建。
创建好之后,在这个类上标注一个注解:@com.forte.qqrobot.anno.depend.Beans, 即@Beans

②. 写一个监听私信的方法

我们写一个监听私信消息满足正则:hello.*的私信消息监听函数,且当我们收到消息后,复读。
完整代码如下:

@Beans
public class TestListener {

    @Listen(MsgGetTypes.privateMsg)
    @Filter("hello.*")
    public void testListen1(PrivateMsg msg, MsgSender sender) {
        System.out.println(msg);
        // 以下三种方法均可
,效果相同
        sender.SENDER.sendPrivateMsg(msg, msg.getMsg());
//        sender.SENDER.sendPrivateMsg(msg.getQQ(), msg.getMsg());
//        sender.SENDER.sendPrivateMsg(msg.getQQCode(), msg.getMsg());
    }
}

③. 在来一次

这次我们再启动一次,如果发现启动日志中成功加载了这个监听函数,那就试着给你的机器人发送一句hello world吧。
如果它也回复了你一句hello world,那么说明至此你已经成功了,探索文档所提供的众多功能并实现你的机器人吧~

7. 失败了?

如果跟着上述流程完整无误的操作却无法成功,也不要气馁,尝试根据常见问题汇总进行排查或者加入QQ群782930037进行咨询。

发布了4 篇原创文章 · 获赞 4 · 访问量 2975

猜你喜欢

转载自blog.csdn.net/u011656961/article/details/104525549