跳到主要内容
版本:3.3.0

Application

Application 即为对一个simbot应用的描述,其包含了一个应用范围内安装的组件、事件提供者以及一些所需属性等信息。

定义

了解 Application 的第一步,先让我们来简单了解一下 Application定义

 interface Application : CoroutineScope {

/**
* 当前 [Application] 的部分属性。
*/
val environment: Environment

/**
* 在进行构建时所使用的配置信息。
* 构建完成后可以得到,但是尽可能不要进行修改操作。这可能没有意义,也可能会导致意外的错误。
*/
val configuration: ApplicationConfiguration

/**
* 得到当前 [Application] 最终的 [EventListenerManager].
*/
val eventListenerManager: EventListenerManager

/**
* 当前应用下的所有 [事件提供者][EventProvider]。
*/
val providers: List<EventProvider>

/**
* 当前应用下的所有 [bot管理器][BotManager]。
*/
val botManagers: BotManagers

/**
* 挂起此应用直至其被终止。
*/
suspend fun join()

/**
* 终止当前应用,并关闭其中所有可能的资源。
* [Application] 被终止后将不能再次启动。
*/
suspend fun shutdown(reason: Throwable? = null)
}

构建

想要构建一个 Application, 需要使用 createSimbotApplication 函数。

createSimbotApplication(FACTORY, configurator = { /* config function block */ }) {
// build function block
}

可以看出,createSimbotApplication 需要三个参数:

第一个为目标 Application 的工厂类型;

第二个为进行构建之前的属性配置;

第三个则为针对当前Application的构建内容。

构建工厂

我们上文提到了构建Application的**"工厂"**,这其实就是代表为 ApplicationFactory 类型的实例,simbot默认提供了三个实现,其中最常用的即为 Simple 工厂:

val application = createSimbotApplication(
Simple,
configurator = { /* config function block */ }
) {
// build function block
}

Simple 工厂构建而得到的 ApplicationSimpleApplication,也是simbot默认提供的最基础的 Application