NapCatQQ+Springboot基于onebot协议实现qq机器人
目录
2. WebUI 配置 OneBot 服务 Shell Vesion
了解什么是NapCat?
由此可以看出 NapCat 是类似于中间件的东西,也可称之为框架,这里我们就称之为qq机器人框架,本文章中介绍的都是集成版,无需手动安装QQ。
使用流程
1. 开始安装
2. WebUI 配置 OneBot 服务 Shell Vesion
如果你已经启动了 NapCat,并且有多于 1 个开放端口,则可以通过 WebUI 进行配置。
默认地址为 0.0.0.0,即监听所有地址。当配置了不可用的地址时 WebUI 将被禁用。
默认端口为 6099。
当端口被设置为 0 时将禁用 WebUI。
当端口被占用时,会自动对端口 +1,直到找到可用端口(最多尝试 100 次,失败则会禁用 WebUI),端口号会在启动日志中显示。
启动后可在启动日志中看到形如 [WebUI] WebUI Local Panel Url: http://127.0.0.1:6099/webui?token=xxxx 的 token 信息。
也可打开 webui.json 文件,在其中找到token。(使用 NapCat.Installer - Linux 一键脚本安装时,该文件位于 /opt/QQ/resources/app/app_launcher/napcat/config/webui.json)
webui.json
{
"host": "0.0.0.0", // WebUI 监听地址
"port": 6099, // WebUI 端口
"token": "xxxx", // 登录密钥, 默认是自动生成的随机登录密码
"loginRate": 3, // 每分钟登录次数限制
}
访问 http://ip:port/webui/,然后进行以下操作:
-
进入 QQ 登录,点击
QRCode进行二维码登录。 -
登录成功后,即可进入网络配置,点击 "新建" 创建对应的服务器或客户端。(如果是公网部署, 请务必启用 Token)
-
请在创建时勾选保存时启用,或者创建完成后手动启用。
-
访问
http://ip:port检查端口是否正常。(此处的port指 2 中配置的端口, 请不要与 WebUI 端口混淆)
注:WebUI 自 v4.4 版本后不支持
prefix配置。

springboot实现websocket服务端
环境:
maven:最新版,作者使用3.9.9
JDK: 17+, 作者使用jdk23
1. 新建springboot项目

pom.xml
<dependency>
<groupId>com.mikuac</groupId>
<artifactId>shiro</artifactId>
<version>2.4.7</version>
</dependency>
appliction.yml
# 该配置为反向连接示例
server:
port: 8080
shiro:
ws:
server:
enable: true
plugin-list:
- com.napcatbot.demo.plugin.TestPlugin
注意这里url就是刚才NapCat WebUI里面要配置的反向websocket地址
地址:ws://ip:port/ws/shiro
TestPlugin.java
package com.napcatbot.demo.plugin;
import com.mikuac.shiro.common.utils.MsgUtils;
import com.mikuac.shiro.core.Bot;
import com.mikuac.shiro.core.BotPlugin;
import com.mikuac.shiro.dto.event.message.GroupMessageEvent;
import com.mikuac.shiro.dto.event.message.PrivateMessageEvent;
import org.springframework.stereotype.Component;
@Component
public class TestPlugin extends BotPlugin {
@Override
public int onPrivateMessage(Bot bot, PrivateMessageEvent event) {
if ("hello".equals(event.getMessage())) {
// 构建消息
String sendMsg = MsgUtils.builder()
.at(event.getUserId())
.text("hello, this is napcatdemo plugin.")
.build();
bot.sendPrivateMsg(event.getUserId(), sendMsg, false);
}
// 返回 MESSAGE_IGNORE 执行 plugin-list 下一个插件,返回 MESSAGE_BLOCK 则不执行下一个插件
return MESSAGE_IGNORE;
}
@Override
public int onGroupMessage(Bot bot, GroupMessageEvent event) {
if ("hello".equals(event.getMessage())) {
// 构建消息
String sendMsg = MsgUtils.builder()
.at(event.getUserId())
.text("hello, this is napcatdemo plugin.")
.build();
// 发送群消息
bot.sendGroupMsg(event.getGroupId(), sendMsg, false);
}
// 返回 MESSAGE_IGNORE 执行 plugin-list 下一个插件,返回 MESSAGE_BLOCK 则不执行下一个插件
return MESSAGE_IGNORE;
}
}
连接成功

2. 测试

欢迎进群讨论:727289809
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)