赞
踩
当使用 Java 搭建 QQ 机器人时,可以借助 go-cqhttp 这个开源的轻量级框架来实现。下面是一个简单的教程,帮助你搭建基于 go-cqhttp 的 QQ 机器人。(全网最流畅,全网最新)
目录
- # 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
- <?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>
- 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` 表示继续
- */
- @Override
- public 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` 表示继续
- */
- @Override
- public 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();
- }
- }
- server:
- port: 8081
-
- svipbot:
- # 请将编写的插件全类名添加在这里
- # 在收到消息时会按顺序依次调用以下插件
- # 如果前面的插件返回 MatchedAndBlock 则不会继续调用后续插件
- # 如果前面的插件返回 NotMatch 则会继续调用后续插件
- plugin-list:
- - com.example.demo.plugins.TestPlugin
go-cqhttp_*.exe
,根据提示生成运行脚本- # 账号相关
- account:
- # QQ账号
- uin: 1233456
- # 密码不要为空
- password: ''
- # qqSign签名服务配置启动的ip+端口
- sign-server: 'http://127.0.0.1:8080'
-
- # 消息相关
- message:
- # 上报数据类型(就是gocqhttp将消息通知给第三方程序的消息类型)
- # 可选: string,array 这里配置array
- post-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: 3000
- middlewares:
- # 引用默认中间件
- <<: *default
启动go-cqhttp
go-cqhttp启动成功后返回JavaDemo查看控制台已接收到go-cqhttp通知消息
这篇文章介绍了当下(2023-11-16)的go-cqhttp使用,及基于java实现qq机器人的简单接受私聊消息和群聊消息。
如果需要继续开发更多功能的机器人,详细需要查看本文JavaDemo的pom依赖中svipbot的源码实现,源码地址已经放到文章开头。
有任何问题可随时联系作者:201088830,亦可加入群聊学习交流:727289809
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。