QQ机器人
概述
QQ机器人组件 是一个 Kotlin 多平台 的 QQ机器人官方API SDK实现库, 也是 Simple Robot 标准API下实现的组件库,异步高效、Java友好!
现在支持的事件范围有:
频道所有公域事件
论坛相关的私域事件
QQ群聊相关 (从4.0.0-beta6开始)
C2C单聊相关 (从4.0.0-beta6开始)
私域相关的事件由于时间有限、且这方面的反馈与需求几乎没有, 因此优先级不高。 如果您有需要或希望协助, 可前往 反馈 或 协助 了解更多~
前往QQ机器人组件的 GitHub 仓库
命名说明
QQ机器人组件命名为 simbot-component-qq-guild
, 因为最早开始QQ并未开放普通个人开发者使用QQ群聊、QQ单聊的功能, 因此此组件当时仅支持QQ频道。在开放后,其两端可以合并在一起使用,因此QQ群相关的能力才被支持。
前提准备
机器人账号
你需要参考 官方QQ机器人文档 ,并注册一个 机器人账号 。审核通过, 便可登录 QQ开放平台 查看你的机器人账号信息了。
事件订阅方式
官方在文档中提供了两种接收/订阅事件的方式:webhook 和 websocket 。 根据官方文档的描述,在2024年底左右会逐步放弃 websocket 的方式,因此目前来看,官方推荐使用 webhook 的事件订阅方式。
你可以在你的机器人后台中查看、配置你自己的回调服务地址。
有关组件中 Webhook 的配置方式,前往 Webhook 了解更多。
安装
安装组件库
安装依赖
安装simbot核心库实现
implementation("love.forte.simbot:simbot-core:4.8.0")如果使用 Java 而不配合使用 Gradle 的 Kotlin 插件, 那么你需要指定依赖的后缀为
-jvm
。implementation("love.forte.simbot:simbot-core-jvm:4.8.0")implementation 'love.forte.simbot:simbot-core:4.8.0'如果使用 Java 而不配合使用 Gradle 的 Kotlin 插件, 那么你需要指定依赖的后缀为
-jvm
。implementation 'love.forte.simbot:simbot-core-jvm:4.8.0'<dependency> <groupId>love.forte.simbot</groupId> <artifactId>simbot-core-jvm</artifactId> <version>4.8.0</version> </dependency>implementation("love.forte.simbot:simbot-core-spring-boot-starter:4.8.0")implementation 'love.forte.simbot:simbot-core-spring-boot-starter:4.8.0'<dependency> <groupId>love.forte.simbot</groupId> <artifactId>simbot-core-spring-boot-starter</artifactId> <version>4.8.0</version> </dependency>安装组件库
simbot-component-qq-guild-core
即为QQ机器人组件的核心库, 也就是作为simbot组件所使用的 组件库。implementation("love.forte.simbot.component:simbot-component-qq-guild-core:4.1.2")如果使用 Java 而不配合使用 Gradle 的
kotlin
插件, 那么你需要指定依赖的后缀为-jvm
。implementation("love.forte.simbot.component:simbot-component-qq-guild-core-jvm:4.1.2")implementation 'love.forte.simbot.component:simbot-component-qq-guild-core:4.1.2'如果使用 Java 而不配合使用 Gradle 的
kotlin
插件, 那么你需要指定依赖的后缀为-jvm
。implementation 'love.forte.simbot.component:simbot-component-qq-guild-core-jvm:4.1.2'<dependency> <groupId>love.forte.simbot.component</groupId> <artifactId>simbot-component-qq-guild-core-jvm</artifactId> <version>4.1.2</version> </dependency>安装Ktor客户端引擎
QQ机器人组件使用 Ktor 作为 HTTP 客户端实现, 但是默认不会依赖任何具体的引擎。
因此,你需要选择并使用一个 Ktor Client 引擎实现。
你可以前往 Ktor文档 处选择一个对应所用平台下合适的
Client Engine
。 这里会根据不同平台提供几个示例,你可以选择其他可用目标。在 Java11+ 的环境下,可以选择 Java 引擎。
runtimeOnly("io.ktor:ktor-client-java:$ktor_version")如果不使用Kotlin的Gradle插件:
runtimeOnly("io.ktor:ktor-client-java-jvm:$ktor_version")runtimeOnly 'io.ktor:ktor-client-java:$ktor_version'如果不使用Kotlin的Gradle插件:
runtimeOnly 'io.ktor:ktor-client-java-jvm:$ktor_version'<dependency> <groupId>io.ktor</groupId> <artifactId>ktor-client-java-jvm</artifactId> <version>${ktor_version}</version> <scope>runtime</scope> </dependency>OkHttp 引擎基于 OkHttp,是一个不错的库。
runtimeOnly("io.ktor:ktor-client-okhttp:$ktor_version")如果不使用Kotlin的Gradle插件:
runtimeOnly("io.ktor:ktor-client-okhttp-jvm:$ktor_version")runtimeOnly 'io.ktor:ktor-client-okhttp:$ktor_version'如果不使用Kotlin的Gradle插件:
runtimeOnly 'io.ktor:ktor-client-okhttp-jvm:$ktor_version'<dependency> <groupId>io.ktor</groupId> <artifactId>ktor-client-okhttp-jvm</artifactId> <version>${ktor_version}</version> <scope>runtime</scope> </dependency>CIO 是一个比较通用的引擎。 在不知道选什么的情况下,可以考虑使用它。
runtimeOnly("io.ktor:ktor-client-cio:$ktor_version")如果不使用Kotlin的Gradle插件:
runtimeOnly("io.ktor:ktor-client-cio-jvm:$ktor_version")runtimeOnly 'io.ktor:ktor-client-cio:$ktor_version'如果不使用Kotlin的Gradle插件:
runtimeOnly 'io.ktor:ktor-client-cio-jvm:$ktor_version'<dependency> <groupId>io.ktor</groupId> <artifactId>ktor-client-cio-jvm</artifactId> <version>${ktor_version}</version> <scope>runtime</scope> </dependency>JavaScript 平台下可以选择 Js 引擎。
implementation("io.ktor:ktor-client-js:$ktor_version")implementation 'io.ktor:ktor-client-js:$ktor_version'native 平台目标下,可能需要根据不同的平台类型选择不同的引擎。
可以选择 WinHttp 引擎。
implementation("io.ktor:ktor-client-winhttp:$ktor_version")implementation 'io.ktor:ktor-client-winhttp:$ktor_version'Linux 下依旧可以选择 CIO 引擎。
implementation("io.ktor:ktor-client-cio:$ktor_version")implementation 'io.ktor:ktor-client-cio:$ktor_version'可以选择 Darwin 引擎。
implementation("io.ktor:ktor-client-darwin:$ktor_version")implementation 'io.ktor:ktor-client-darwin:$ktor_version'