目录

了解什么是NapCat?

使用流程

1. 开始安装

2. WebUI 配置 OneBot 服务 Shell Vesion

 

springboot实现websocket服务端

1. 新建springboot项目

2. 测试

了解什么是NapCat?

由此可以看出 NapCat 是类似于中间件的东西,也可称之为框架,这里我们就称之为qq机器人框架,本文章中介绍的都是集成版,无需手动安装QQ

使用流程

1. 开始安装

Shell | NapCatQQ

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/,然后进行以下操作:

  1. 进入 QQ 登录,点击 QRCode 进行二维码登录。

  2. 登录成功后,即可进入网络配置,点击 "新建" 创建对应的服务器或客户端。(如果是公网部署, 请务必启用 Token)

  3. 请在创建时勾选保存时启用,或者创建完成后手动启用。

  4. 访问 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

Logo

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

更多推荐