跳到主要内容
版本:3.3.0

此章节演示simbot以 Spring Boot Starter 的形式整合 spring 。有关相关模块的说明,可以参考 Simple Robot: Spring Boot Starter 模块概述

别忘了组件

simbot核心库本身没有任何平台功能。当你阅读完本章节后,你需要在核心库依赖之外添加一个你所需要的组件。

你可以前往《组件》章节了解各个由simbot团队提供的组件实现, 比如对接QQ机器人的mirai组件

对于组件的引用来说,不管是使用核心库还是使用SpringBoot都没有区别。

单一组件

安装

plugins {
id("org.springframework.boot") version "3.0.0" // Spring Boot
id("io.spring.dependency-management") version "1.0.11.RELEASE"
`java`
}

group = "..."
version = "..."

repositories {
mavenCentral()
}

// 使用你所需要的Spring Boot依赖。这里假设你需要使用web相关内容。
implementation("org.springframework.boot:spring-boot-starter-web")

// simbot Spring Boot Starter
implementation("love.forte.simbot.boot:simboot-core-spring-boot-starter:3.3.0")

// 给其他组件留个板凳...
// ...
引用SpringBoot

Spring Boot Starter 不会主动传递任何与 spring 相关的依赖,因此你必须主动额外的引入其他任意你所需的 spring 依赖, 例如 spring-web

使用

启动类

首先,编写一个 Spring Boot 项目的入口类。在 Spring Boot 中,我们通过标记一个注解 @EnableSimbot 来开启simbot的使用。

example/Main.kt
@EnableSimbot // 👈
@SpringBootApplication
open class Main

fun main(args: Array<String>) {
runApplication<Main>(*args)
}
要坚持

需要注意的是,如果你的项目中没有什么能够保持项目持续运行的组件的话(比如 spring-web ), 那么项目会在启动后停止。 如果想要避免这种情况,你可以从 SpringContext 中得到 Application 并执行它的 join 相关方法。

监听函数

Spring Boot Starter 模块下,所有的监听函数都需要标记 @Listener, 至于你想要监听的事件,将其作为参数即可,不再需要额外的标记。

被标记了 @Listener 的函数所处的类必须被Spring所管理,简单来说你需要在类上标记 @Component 或其衍生注解。

下面将会以 监听 FriendMessageEvent(好友消息事件) 作为示例。

MyListener.kt
@Component
class MyListener {

@Listener
suspend fun FriendMessageEvent.onEvent() {
// do..
}
}

配置

Spring Boot Starter 中实际上也存在对应的 Application 类型,只不过这次不再需要你来处理这些内容了。而对于一些可配置内容, 你可以使用spring的配置文件进行提供:

simbot:
# 是否在bot注册完成后自动启动他们。
# 默认为 true
auto-start-bots: true

# 自定义配置bot资源文件的扫描路径。
# 默认为 'classpath:simbot-bots/*.bot*'
bot-configuration-resources:
- 'classpath:simbot-bots/*.bot*'

# 如果需要,此处配置扫描顶层函数形式的 Binder Factory。
# 默认不扫描
# top-level-binder-scan-package:
# - 'example.binder.foo'
# - 'example.binder.bar'

# 如果需要,此处配置扫描顶层函数形式的监听函数。
# 默认不扫描
# top-level-listener-scan-package:
# - 'example.listener.foo'
# - 'example.listener.bar'

组件

还记的开头说的警告吗?

simbot核心库本身没有任何平台功能。当你阅读完本章节后,你需要在核心库依赖之外添加一个或多个你所需要的组件。

是的,也许跟着上面的示例结束之后你会发现,程序启动了,但是没有bot被注册,除了多了一些日志以外,似乎也没什么特殊之处。

此时,你需要根据你的需求添加额外的组件依赖,才能够拥有组件对用平台的能力。 你可以前往《组件》章节了解各个由simbot团队提供的组件实现。

比如..

不同的组件在各个方面的行为都存在差异,因此你需要去阅读并了解各组件的细节,例如BOT配置格式、额外的消息类型、事件类型、注意事项等 —— 在你了解完simbot之后。

BOT配置

不同的组件对于bot配置文件的具体属性都是不同的,但是它们都有一些共通点。

首先阅读章节 BOT配置 来了解bot配置文件的通用特性

然后前往你所需要的组件文档处,了解它的具体配置细节。

快速引导

打包

参考章节 打包