使用核心库
公告
站点迁移啦~!
为什么迁移?
作为由我们官方维护的组件库,分散在各自的文档站点中的确有好处:它们可以各自维护自己所需的东西、互不干扰。
但是缺点也很明显: 太过分散。
组件库与核心库之间的关系是比较紧密的, 我们希望你能够在一个站点内就可以查阅或搜索到所有你想要得知的信息。
安装
首先,要配合使用 simbot4,就必须添加 simbot-core
的依赖。组件对于 simbot 的库依赖一般都是仅编译器的。
// simbot4核心库
implementation("love.forte.simbot:simbot-core:4.0.0")
// KOOK组件库
implementation("love.forte.simbot.component:simbot-component-kook-core:4.0.0-beta4")
// simbot4核心库
implementation 'love.forte.simbot:simbot-core:4.0.0'
// KOOK组件库
implementation 'love.forte.simbot.component:simbot-component-kook-core:4.0.0-beta4'
<!-- simbot4核心库 -->
<dependency>
<groupId>love.forte.simbot</groupId>
<artifactId>simbot-core-jvm</artifactId>
<version>4.0.0</version>
</dependency>
<!-- KOOK组件库 -->
<dependency>
<groupId>love.forte.simbot.component</groupId>
<artifactId>simbot-component-kook-core-jvm</artifactId>
<version>4.0.0-beta4</version>
</dependency>
引擎选择
- Ktor引擎
你可以前往 Ktor文档 处选择一个对应所用平台下合适的
Client Engine
。 这里会根据不同平台提供几个示例,你可以选择其他可用目标。CIO 是一个比较通用的引擎。 在不知道选什么的情况下,可以考虑使用它。
runtimeOnly("io.ktor:ktor-client-cio-jvm:$ktor_version")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>如果你打算使用 Java11+,也可以选择 Java 引擎。
runtimeOnly("io.ktor:ktor-client-java:$ktor_version")runtimeOnly 'io.ktor:ktor-client-java:$ktor_version'<dependency> <groupId>io.ktor</groupId> <artifactId>ktor-client-java-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'
使用
安装到 Application
向 Application 中安装 KookComponent
和 KookBotManager
。
val app = launchSimpleApplication {
// 使用 useKook 简写,
// 代表同时安装 `KookComponent` 和 `KookBotManager`
useKook()
// 其他配置..
}
var appFuture = Applications.launchApplicationAsync(Simple.INSTANCE, appConfigurer -> {
// 安装 `KookComponent` 和 `KookBotManager`
appConfigurer.install(KookComponent.Factory);
appConfigurer.install(KookBotManager.Factory);
}).asFuture();
var app = Applications.launchApplicationBlocking(Simple.INSTANCE, appConfigurer -> {
// 安装 `KookComponent` 和 `KookBotManager`
appConfigurer.install(KookComponent.Factory);
appConfigurer.install(KookBotManager.Factory);
});
注册事件处理器
val app = ...
// 注册各种事件处理器
app.listeners {
// 注册一个事件处理器
// 所有子频道消息事件
// 其中就包括 KOOK 的消息事件,例如 KookChannelMessageEvent
listen<ChatChannelMessageEvent> {
println("context: $this")
println("context.event: $event")
// 返回事件处理结果
EventResult.empty()
}
// 再注册一个事件处理器
// 明确监听 KOOK 的消息事件
// 使用 process 不需要返回值
process<KookChannelMessageEvent> {
println("context: $this")
println("context.event: $event")
}
}
// 假设通过 future 的 thenAccept 或其他什么地方得到了 Application
var app = ...;
// 注册一个事件处理器
// 所有子频道消息事件
// 其中就包括 KOOK 的消息事件,例如 KookChannelMessageEvent
eventDispatcher.register(EventListeners.async(ChatChannelMessageEvent.class, (context, event) -> {
System.out.println("context: " + context);
System.out.println("context.event: " + event);
// 返回异步的事件处理结果
return CompletableFuture.completedFuture(EventResult.empty());
}));
// 再注册一个事件处理器
// 明确监听 KOOK 的消息事件
eventDispatcher.register(EventListeners.async(QGAtMessageCreateEvent.class, (context, event) -> {
System.out.println("context: " + context);
System.out.println("context.event: " + event);
// 返回异步的事件处理结果
return CompletableFuture.completedFuture(EventResult.empty());
}));
var app = ...;
// 注册一个事件处理器
// 所有子频道消息事件
// 其中就包括 KOOK 的消息事件,例如 KookChannelMessageEvent
eventDispatcher.register(EventListeners.block(ChatChannelMessageEvent.class, (context, event) -> {
System.out.println("context: " + context);
System.out.println("context.event: " + event);
// 返回事件处理结果
return EventResult.empty();
}));
// 再注册一个事件处理器
// 明确监听 KOOK 的消息事件
eventDispatcher.register(EventListeners.block(QGAtMessageCreateEvent.class, (context, event) -> {
System.out.println("context: " + context);
System.out.println("context.event: " + event);
// 返回异步的事件处理结果
return EventResult.empty();
}));
注册、启动Bot
更多有关 simbot API
前往 simbot官方手册 阅读有关 simbot API 的各种介绍与示例吧!
Last modified: 07 August 2024