跳到主要内容
版本:3.2.0.0

使用simbot核心库

mirai组件中的 Component 实现类型为 MiraiComponent

BotManager 的实现类型为 MiraiBotManager

安装

// 必须显式的引用具体的simbot-core
implementation("love.forte.simbot:simbot-core:$SIMBOT_VERSION") // 版本参考下文所述的参考连接
implementation("love.forte.simbot.component:simbot-component-mirai-core:3.2.0.0")
核心库版本?

simbot核心库的版本 (simbot-core) 可前往 Releases 查阅。

使用

在 simbot application 中安装mirai的相关组件与 BotManager。此处以 Simple Application 为例:

直接安装

val app = createSimpleApplication {
install(MiraiComponent)
install(MiraiBotManager)
}

使用扩展

val app = createSimpleApplication {
useMiraiComponent()
useMiraiBotManager()
}

 val app = createSimpleApplication {
useMirai()
}

事件监听

val app = createSimpleApplication {
useMirai()
}

// 使用 eventListenerManager 并注解监听函数
app.eventListenerManager.listeners {
// 例1:监听一个通用的群消息事件
GroupMessageEvent { event ->
// 如果匹配成功,回复 "你也好"
event.reply("你也好")
} onMatch { event ->
// 事件匹配要求: 消息的文本为 "你好"
event.messageContent.plainText.trim() == "你好"
}

// 例2:监听一个mirai组件具体的群消息事件
// MiraiGroupMessageEvent 类型本质上就是实现 GroupMessageEvent
// 例2使用另一种监听函数注册方式
listen(MiraiGroupMessageEvent) {
// 事件匹配要求: 消息的文本为 "你好"
match { event -> event.messageContent.plainText.trim() == "你好" }
// 如果匹配成功,引用回复 "你也好"
process { event -> event.reply("你也好") }
}
}

bot注册

安装完组件与 MiraiBotManager 之后,即可注册bot并启用它们。

先后

比较建议在监听函数注册结束后再注册 bot,这样当监听函数中存在例如 BotRegisteredEvent 等与 bot 相关的事件时就可以正常生效。

val app = createSimpleApplication {
useMirai()
}

// 注册监听函数,省略...

// 注册mirai的bot
// 直接使用mirai所提供的扩展函数 miraiBots
app.miraiBots { // this: MiraiBotManager
// 通过账号密码注册
val bot = register(123L, "PASS") { // this: MiraiBotConfiguration
// mirai组件提供的配置

// 可以通过 botConfiguration 来直接配置 mirai bot 的原生配置
botConfiguration { // this: BotConfiguration
// ...
}
}
// 启用bot
bot.start()
}

信息获取

很多信息的获取也都是从bot开始的(除事件以外),比如获取群列表、获取频道列表等等。

val bot: MiraiBot = ... // 注册并启动后的bot

// 获取所有的群列表
bot.groups.collect { ... }
// 尝试获取指定群号的群
val group: MiraiGroup? = bot.group(123.ID)

// 获取群中所有的成员列表
group?.members?.collect { ... }
// 尝试获取群中成员
val member: MiraiMember? = group?.member(666.ID)