NapCatQQ+Springboot基于onebot协议实现qq机器人

目录

了解什么是NapCat?

使用流程

1. 开始安装

windows:?

Linux:

其他:

2. 启动QQ和NapCat

windows:

Linux:

3. 通过 WebUI 配置OneBot服务

1. 获取Token

2. 配置WebUI(可省略)

springboot实现websocket服务端

1. 新建springboot项目

2. 测试


了解什么是NapCat?

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

使用流程

1. 开始安装
windows:?

NapCat.Win.绿色版本?

  1. 特殊说明: 绿色版仅适用Windows.AMD64无需安装QQ 已内置
  2. 前往Release 下载无头绿色版本 然后启动Bat 即可
  3. 如果需要快速启动 编辑batNapCatWinBootMain.exe 10001

---------------------------------------------------------------------------------------------------------------------------------

NapCat.Shell - Win手动启动教程?

  1. 前往NapCatQQ 的 release 页面
  2. 下载NapCat.Shell.zip解压
  3. 安装完成 双击目录下launcher.bat即可启动 如果是win10 则使用launcher-win10.bat

注意 如果需要快速登录 将QQ号传入第二个参数即可

Win11:launcher.bat 123456Win10:launcher-win10.bat 123456

Linux:

这里推荐使用NapCat.Installer安装,直接运行命令即可,省事。

Linux一键使用脚本**(支持Ubuntu 20+/Debian 10+/Centos9)**

国内:使用tui可视化交互安装?

curl -o napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh && sudo bash napcat.sh --tui

---------------------------------------------------------------------------------------------------------------------------------

国外:使用tui可视化交互安装

curl -o napcat.sh https://raw.githubusercontent.com/NapNeko/NapCat-Installer/refs/heads/main/script/install.sh && sudo bash napcat.sh --tui
其他:

MacOs,Docker,安卓,详见:shell部署方式Framework部署方式

2. 启动QQ和NapCat
windows:

这里讲使用绿色版启动,Shell版本请前往napcat官方文档查看

1.解压下载的压缩包

2.直接运行

Linux:

1.扫码登录QQ

# 扫码登录qq,只要登录成功,后续不需要再次登录除非掉线
xvfb-run -a qq --no-sandbox

2.查看帮助:

# 查看帮助
napcat help

3.运行对应的启动命令

napcat start 123456
3. 通过 WebUI 配置OneBot服务
1. 获取Token

如果你已经启动了 NapCat,并且有多于 1 个开放端口,则可以通过 WebUI 进行配置

默认端口:6099

默认访问地址:http://ip:6099/webui/ (请不要忘记配置防火墙,否则你可能访问不到)

特殊情况,当端口被占用时,会自动对端口 +1,直到找到可用端口(最多尝试100次,失败则会禁用 WebUI),端口号Token会在启动日志中显示

linux可以使用查看日志命令获取token

# 查看运行日志
napcat log 123456

查询WebUI的访问地址以及登录token信息。

日志中看到形如[WebUi] WebUi Local Panel Url: http://127.0.0.1:6099/webui?token=xxxx的token信息。

通过配置也可找到Token信息,详见下面的:配置WebUI部分

2. 配置WebUI(可省略)

如果你想调整WebUI配置,请直接调整配置文件,调整后重启napcat即可

# 配置文件位置
opt/QQ/resources/app/app_launcher/napcat/config

默认配置为:

{
    "host": "0.0.0.0", // WebUI 监听地址
    "port": 6099, // WebUI 端口
    "prefix": "", // WebUI 工作前缀,此项功能将在进阶配置中解释
    "token": "xxxx", //登录密钥,默认是自动生成的随机登录密码
    "loginRate": 3, //每分钟登录次数限制
}

3. 配置onebot服务

登录成功后配置onebot服务,这里使用反向websocket,反向websocket地址在springboot项目中获取。

HTTP服务端      --->> NapCat作为Http请求接受方 接收对应接口调用并回应 的单工模型
HTTP客户端      --->> NapCat作为Http请求发起方 将事件推送至插件/应用框架 的单工模型
WebSocket服务端 --->> 通常指正向WS 既能主动推送事件也能接收请求 的双工模型
WebSocket客户端 --->> 通常指反向WS 既能主动推送事件也能接收请求 的双工模型

springboot实现websocket服务端

环境:

maven:最新版,作者使用3.9.9

JDK: 17+, 作者使用jdk23

1. 新建springboot项目

pom.xml

<dependency>
  <groupId>com.mikuac</groupId>
  <artifactId>shiro</artifactId>
  <version>2.3.5</version>
</dependency>

appliction.yml

# 该配置为反向连接示例
server:
  port: 8080

shiro:
  ws:
    server:
      enable: true
      url: "/ws/demo"
      
  plugin-list: 
    - com.napcatbot.demo.plugin.TestPlugin

注意这里url就是刚才NapCat WebUI里面要配置的反向websocket地址

地址:ws://ip:port/ws/demo

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值