# Spring-CQ
**Repository Path**: lliioollcn/Spring-CQ
## Basic Information
- **Project Name**: Spring-CQ
- **Description**: 酷Q机器人的javaSpring框架
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 1
- **Created**: 2019-09-22
- **Last Updated**: 2021-01-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Spring-CQ
[](https://travis-ci.org/lz1998/spring-cq)
[](https://jq.qq.com/?_wv=1027&k=5BKAROL)
基于 酷Q、cqhttp、SpringBoot、反向websocket 的 QQ 机器人框架
视频教程:https://www.bilibili.com/video/av89649630/
## 开发环境
- IntelliJ IDEA Ultimate(学生认证免费)
- IntelliJ IDEA中的lombok插件,File->Settings->Plugins->搜索Lombok->Install->重启IDEA
- JDK IDEA自动安装,不需要自己装
- MAVEN IDEA自动安装,不需要自己装
## 编写插件
1. 在xin.lz1998.bot.plugin下写XXXPlugin,继承CQPlugin
```java
/**
* 示例插件
* 插件必须继承CQPlugin
*
* 添加事件:光标移动到类中,按 Ctrl+O 添加事件(讨论组消息、加群请求、加好友请求等)
* 查看API参数类型:光标移动到方法括号中按Ctrl+P
* 查看API说明:光标移动到方法括号中按Ctrl+Q
*/
@Slf4j
public class ExamplePlugin extends CQPlugin {
/**
* 收到私聊消息时会调用这个方法
*
* @param cq 机器人对象,用于调用API,例如发送私聊消息 sendPrivateMsg
* @param event 事件对象,用于获取消息内容、群号、发送者QQ等
* @return 是否继续调用下一个插件,IGNORE表示继续,BLOCK表示不继续
*/
@Override
public int onPrivateMessage(CoolQ cq, CQPrivateMessageEvent event) {
// 获取 发送者QQ 和 消息内容
long userId = event.getUserId();
String msg = event.getMessage();
if (msg.equals("hi")) {
// 调用API发送hello
cq.sendPrivateMsg(userId, "hello", false);
// 不执行下一个插件
return MESSAGE_BLOCK;
}
// 继续执行下一个插件
return MESSAGE_IGNORE;
}
/**
* 收到群消息时会调用这个方法
*
* @param cq 机器人对象,用于调用API,例如发送群消息 sendGroupMsg
* @param event 事件对象,用于获取消息内容、群号、发送者QQ等
* @return 是否继续调用下一个插件,IGNORE表示继续,BLOCK表示不继续
*/
@Override
public int onGroupMessage(CoolQ cq, CQGroupMessageEvent event) {
// 获取 消息内容 群号 发送者QQ
String msg = event.getMessage();
long groupId = event.getGroupId();
long userId = event.getUserId();
if (msg.equals("hello")) {
// 回复内容为 at发送者 + hi
String result = CQCode.at(userId) + "hi";
// 调用API发送消息
cq.sendGroupMsg(groupId, result, false);
// 不执行下一个插件
return MESSAGE_BLOCK;
}
// 继续执行下一个插件
return MESSAGE_BLOCK;
}
}
```
截图
2. 修改PluginConfig,配置顺序
```java
/**
* 插件配置类
* 在pluginList中配置需要执行插件的顺序
* 收到消息后会按顺序调用插件
*
* 提示:
* 如果前一个插件返回MESSAGE_BLOCK,那么之后的插件不会继续处理
* 如果前一个插件返回MESSAGE_IGNORE,那么之后的插件会继续处理
*/
public class PluginConfig {
public static List