Simple Robot v4.6.0 Help

Application

Application 是对一组注册的组件和插件们的统一运行环境。 组件和插件们总要依附在一个 Application 上。

simbot-core 模块提供了一个简单的普通实现: SimpleApplication, 下文将会以这个简单的普通实现为例进行说明。

创建与启动

在 Kotlin 中, 使用 launchApplication(Factory) { config... } 配置并启动一个 Application

其中, FactoryApplication 的工厂实例, 在 simbot-core 中它是 Simple

val app = launchApplication(Simple) { config { // 一些 Application 的配置, 例如协程上下文 coroutineContext = Dispatchers.Default } // 一些事件调度器的配置, 例如协程上下文、拦截器等 eventDispatcher { coroutineContext = Dispatchers.Default addInterceptor { `this` -> // intercept.. `this`.invoke() // invoke } addDispatchInterceptor { `this` -> // intercept.. `this`.invoke() // invoke } } // 安装组件或插件 install(...) // 安装组件或插件, 以及额外的配置 install(...) { // ... } }

Simple 实现提供一个简写扩展函数: launchSimpleApplication

val app = launchSimpleApplication { // ... }

在 Java 中, 使用 Applications.launchApplicationXxx(Factory) { config... } 配置并启动一个 Application

其中, FactoryApplication 的工厂实例, 在 simbot-core 中它是 Simple.INSTANCE

var applicationAsync = Applications.launchApplicationAsync(Simple.INSTANCE, appConfigurer -> { // Application 的配置信息 appConfigurer.config(appConfig -> { // 比如配置协程上下文 // 此处仅做示例:配置一个自定义的线程池到上下文中。 // 并不建议非常随意的使用 Executors 中的内容。再强调一遍, 此处仅作为示例。 appConfig.setCoroutineContext(ExecutorsKt.from(Executors.newCachedThreadPool())); }); // 事件调度器的配置信息 appConfigurer.eventDispatcher(dispatcherConfig -> { // 例如可以配置协程上下文、添加拦截器之类的。 // 配置协程上下文上面有示例的, 此处就不再重复了, 是类似的效果。 // 添加一个事件处理拦截器 dispatcherConfig.addInterceptor(EventInterceptors.async(context -> { // 拦截... // 假设:重新设置事件处理过程中的 `plainText`, 去除其前后空白字符 var listenerContext = context.getSource().getEventListenerContext(); var plainText = listenerContext.getPlainText(); listenerContext.setPlainText(plainText == null ? null : plainText.trim()); return context.invoke(); })); // 安装组件、插件, 以及可选的进行配置 appConfigurer.install(...); appConfigurer.install(..., config -> { // 配置... }); }); }); // 异步结果可转化为 CompletableFuture var future = applicationAsync.asFuture(); // ...
var application = Applications.launchApplicationBlocking(Simple.INSTANCE, appConfigurer -> { // Application 的配置信息 appConfigurer.config(appConfig -> { // 比如配置协程上下文 // 此处仅做示例:配置一个自定义的线程池到上下文中。 // 并不建议非常随意的使用 Executors 中的内容。再强调一遍, 此处仅作为示例。 appConfig.setCoroutineContext(ExecutorsKt.from(Executors.newCachedThreadPool())); }); // 事件调度器的配置信息 appConfigurer.eventDispatcher(dispatcherConfig -> { // 例如可以配置协程上下文、添加拦截器之类的。 // 配置协程上下文上面有示例的, 此处就不再重复了, 是类似的效果。 // 添加一个事件处理拦截器 dispatcherConfig.addInterceptor(EventInterceptors.block(context -> { // 拦截... // 假设:重新设置事件处理过程中的 `plainText`, 去除其前后空白字符 var listenerContext = context.getSource().getEventListenerContext(); var plainText = listenerContext.getPlainText(); listenerContext.setPlainText(plainText == null ? null : plainText.trim()); return context.invoke(); })); // 安装组件、插件, 以及可选的进行配置 appConfigurer.install(...); appConfigurer.install(...,config -> { // 配置... }); }); }); // ...

构建完 Application 便可以开始注册事件处理器和 Bot 了。

事件处理器的注册

有关事件处理器的相关描述可前往 事件监听与处理 章节阅读。

Bot的注册

有关Bot注册的相关描述可前往 Bot管理器 章节阅读。

Last modified: 12 September 2024