基于MiraiBot的简单开发(扩展监听方式)

MiraiBot 简介

不写了

监听的方式

虽然StartBot.kt里面的main函数中可以直接使用 bot.eventChannel.subscribeGroupMessages 来监听到bot的消息事件,但是为了更好的开发或者说监听类型分类,我们可以自定义LintenerHost,通过bot.eventChannel.registerListenerHost方法来注册到Bot的监听频道中。

自定义ListenerHost

下面的例子说明了一个简单的群消息监听和文本回复,更多可以监听的事件可以查看Mirai的原文档:事件列表一览

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
object BotListenerEvents : SimpleListenerHost( /* override coroutineContext here */ ) 
{
//GroupMessageEvent 普通的群消息
//FriendMessageEvent 好友消息
//GroupRecall 群撤回
//NudgeEvent 戳一戳
//GroupNameChangeEvent 群名改变
//MemberJoinEvent 群成员加入
//MemberLeaveEvent 群成员离开
@EventHandler
suspend fun GroupMessageEvent.onMessage(): ListeningStatus {
// 可以抛出任何异常, 将在 handleException 处理
// 事件触发后 在此处编写对应的逻辑处理
// 例如监听 群消息 “狼宝菜单” 。 当有人在群里发送“狼宝菜单”时,机器人会对应回复响应的文本消息。
val msg = message.contentToString()
when{
msg == "狼宝菜单" ->{
val menuMessages = "狼宝是一个个人开发的QQ机器人,当前版本0.1.5 \n当前功能:\n \t1.自定义消息:有人发[文本]你回[文本/图片] \n \t2.chatGpt: #chat[内容] \n \t3.漂流瓶:扔漂流瓶[内容]/捡漂流瓶 \n \t4.二次元图片:来张[关键词]涩图 \n狼宝使用过程中可能会收集部分信息,包含丘丘号码,昵称等,同时请勿利用狼宝发布平台违禁内容。\n如果你同意以上规范,可以输入[你好,狼宝!]来狼宝认识你。"
this.group.sendMessage(menuMessages)
}
}
return ListeningStatus.LISTENING
}

override fun handleException(context: CoroutineContext, exception: Throwable) {
super.handleException(context, exception)
}
}

注册自定义监听类

编写好了自定义监听类之后还需要将其注册到Bot的eventChannel中。在StartBot.kt文件中添加下列代码

1
bot.eventChannel.registerListenerHost(BotGroupEvents)

StartBot.kt

结语

接下来应该就是应该就是用户信息和权限管理相关的内容了,数据的持久化选用的是sqlite数据库。