当前位置: 首页 > ai >正文

java基于go-cqhttp开发qq机器人

GO-CQHTTP已经不在更新,故本文章已经失效。
请看最新使用NapCatQQ文章
传送门:传送门

当使用 Java 搭建 QQ 机器人时,可以借助 go-cqhttp 这个开源的轻量级框架来实现。下面是一个简单的教程,帮助你搭建基于 go-cqhttp 的 QQ 机器人。(全网最流畅,全网最新) 

目录

准备工作

1. 启动qqSign签名服务

Windows标准启动

2. 创建启动JavaDemo项目

3. 启动go-cqhttp

Windows标准启动

4. 结语


准备工作

  1. 下载安装java8并且配置环境变量。
  2. 下载并安装 go-cqhttp。2023-11-16目前官方最新版本是v1.2.0
  3. 下载并安装 qqSign签名服务。目前go-cqhttp官方版本v1.2.0 对应的qSign版本是v1.1.9
  4. 以下JavaDemo及pom依赖svipbot包源码链接:源码参考
  5. 以上资源本人gitee地址:
    链接: gocqhttp-qqsign: 就是gocqhttp和qqsign这个保证能解决你的登录问题

1. 启动qqSign签名服务

Windows标准启动

  1. 进入unidbg-fetch-qsing-*/bin路径下
  2. 地址栏输入cmd回车进入命令窗口
  3. 输入启动命令启动
    # host ip
    # port 端口
    # count 对应几个gocqhttp
    # android_id 对应gocqhttp启动后生成的device.json中的android_id,可先不配置任何东西启动gocqhttp从生成的device.json文件中取出android_id
    # library 协议版本包 这里是8.9.63也是gocqhttpv1.1.0对应的版本
    unidbg-fetch-qsign.bat --host=127.0.0.1 --port=8080 --count=1 --android_id=xxxxxxxxxx --library=..\txlib\8.9.63

2. 创建启动JavaDemo项目

  1. 新建SpringBoot项目。SpringBoot版本使用2.7.7
  2. pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- springboot版本 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</version><relativePath/></parent><!-- 本项目版本信息 --><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><!-- 依赖jar版本号 --><properties><java.version>1.8</java.version><svipbot.version>0.0.13</svipbot.version></properties><dependencies><!-- springboot svipbot --><dependency><groupId>cn.svipbot</groupId><artifactId>spring-boot-starter-svipbot</artifactId><version>${svipbot.version}</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies><!-- 构建 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.7</version></plugin></plugins></build>
    </project>
  3. TestPlugin.java
    package com.example.demo.plugins;import cn.svipbot.gocq.bot.Bot;
    import cn.svipbot.gocq.bot.BotPlugin;
    import cn.svipbot.gocq.event.message.GroupMessageEvent;
    import cn.svipbot.gocq.event.message.PrivateMessageEvent;
    import cn.svipbot.gocq.utils.CqMsg;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Component;/*** 示例插件* 1. 插件继承自 BotPlugin* 2. 添加 @Component 注解* 3. 添加lombok的@Slf4j打印日志*/
    @Slf4j
    @Component
    public class TestPlugin extends BotPlugin {/*** 收到私聊消息时会调用这个方法** @param bot   机器人对象,用于调用API,例如发送私聊消息 sendPrivateMsg* @param event 事件对象,用于获取消息内容、群号、发送者QQ等* @return 是否继续调用下一个插件, `MatchedAndBlock` 表示不继续, `NotMatch` 表示继续*/@Overridepublic int onPrivateMessage(Bot bot, PrivateMessageEvent event) {// 获取 发送者QQ 和 消息内容long userId = event.getUserId();// 控制台打印log.info("私聊消息{}", event.getMessage());// 发送消息CqMsg cqMsg = new CqMsg();cqMsg.text("测试私聊");bot.sendPrivateMsg(userId, cqMsg.toString(), false);// 继续执行下一个插件return NotMatch;}/*** 收到群消息时调用此方法** @param bot   机器人对象* @param event 事件内容* @return 是否继续调用下一个插件, `MatchedAndBlock` 表示不继续, `NotMatch` 表示继续*/@Overridepublic int onGroupMessage(Bot bot, GroupMessageEvent event) {// 获取 发送者QQ 和 消息内容long userId = event.getUserId();// 获取 发送消息的群号long groupId = event.getGroupId();// 控制台打印log.info("群消息{}", event.getMessage());// 发送消息CqMsg cqMsg = new CqMsg();cqMsg.at(userId).text("测试群聊");bot.sendGroupMsg(groupId, cqMsg.toString());// 继续执行下一个插件return NotMatch;}public static void main(String[] args) {System.out.println();}
    }
  4. application.yml
    server:port: 8081svipbot:# 请将编写的插件全类名添加在这里# 在收到消息时会按顺序依次调用以下插件# 如果前面的插件返回 MatchedAndBlock 则不会继续调用后续插件# 如果前面的插件返回 NotMatch 则会继续调用后续插件plugin-list:- com.example.demo.plugins.TestPlugin
    
  5. 启动

3. 启动go-cqhttp

Windows标准启动

  1. 双击go-cqhttp_*.exe,根据提示生成运行脚本
  2. 双击运行脚本
  3. config.yml只需关注以下属性配置,其他属性不必关注保持原有配置即可
    # 账号相关
    account:# QQ账号uin: 1233456# 密码不要为空password: ''# qqSign签名服务配置启动的ip+端口sign-server: 'http://127.0.0.1:8080'# 消息相关
    message:# 上报数据类型(就是gocqhttp将消息通知给第三方程序的消息类型)# 可选: string,array 这里配置arraypost-format: array# http超时时间http-timeout: 25000# 连接服务列表
    servers:# 反向WS设置- ws-reverse:# 反向WS Universal 地址 demo项目启动的ip+端口+以下固定路径,支持在demo中yml配置universal: ws://127.0.0.1:8888/svipbot/bot/# 重连间隔 单位毫秒reconnect-interval: 3000middlewares:# 引用默认中间件<<: *default
  4. 启动go-cqhttp

  5. go-cqhttp启动成功后返回JavaDemo查看控制台已接收到go-cqhttp通知消息

4. 结语

        这篇文章介绍了当下(2023-11-16)的go-cqhttp使用,及基于java实现qq机器人的简单接受私聊消息和群聊消息。

        如果需要继续开发更多功能的机器人,详细需要查看本文JavaDemo的pom依赖中svipbot的源码实现,源码地址已经放到文章开头。

        有任何问题可随时联系作者:201088830,亦可加入群聊学习交流:727289809

http://www.xdnf.cn/news/11500.html

相关文章:

  • java简易制作-王者荣耀游戏
  • vim中翻页的命令 vim使用技巧之翻页 vim学习资料vi快捷键必知必会Vim的小技巧vim的查找与替换
  • 使用神卓互联配置内网访问(内网穿透)教程(超详细,简单)
  • 【雕爷学编程】Arduino动手做(78)---槽型光耦红外对射计数传感器模块2
  • 凯立德地图版本号/特征码/激活码信息查询方法
  • 电子白板是什么?
  • Blend4精选案例图解教程(一):丰富的形状(Shape)资源
  • 剑灵系统推荐加点_剑灵力士攻略:简单粗暴新版本加点推荐
  • 达梦の外部链接(dblink)
  • 4500m a8 amd_AMD A8--4500M处理器有哪些特点?
  • 《战地1942》全攻略
  • headerTemplate里面说有一些内置的属性,比如title, date,这些内置的属性应该怎么使用,可以给一个例子吗...
  • 10岁男童高考获566分或被大学破格录取(图)
  • openwrt下部署adbyby去广告大师 免luci 带自启动,自动开启透明代理
  • 详解Modbus通信协议---清晰易懂
  • 【SVN】windows SVN安装使用教程(服务器4.3.4版本/客户端1.11.0版本)
  • MyEclipse7.0 M1下载+汉化+注册码
  • d3dx9_42.dll丢失怎么解决?这三个方法亲测可修复
  • 骁龙芯片支持鸿蒙系统,华为6.2日发布新品搭载骁龙芯片安装鸿蒙系统,完全第三方开源...
  • linux驱动面试题
  • Linux下mplayer加载中文字幕乱码解决方案
  • 软件测试之【单元测试、系统测试、集成测试】
  • Java WebService
  • TypeScript 条件语句
  • 互联网 Java 工程师面试题1
  • HTML5表单美化
  • r星离线模式无法建立连接怎么解决 最新解决方法来了
  • 免费网站源码 织梦模板下载
  • 10个在线Logo设计工具,轻松搞定Logo设计
  • 雨云服务器快速搭建Cloudreve私有网盘并挂载雨云对象存储的教程