由于Mirai项目在快速推进中,因此内容时有变动,本文档的最后更新日期为2020-04-01
,对应版本0.31.4
本页面采用Kotlin作为开发语言,若你希望使用 Java 开发, 请参阅: mirai-japt
本页面是Mirai Guide - Getting Started的后续Guide
首先我们来回顾上一个Guide的源码
suspend fun main() {
val qqId = 10000L//Bot的QQ号,需为Long类型,在结尾处添加大写L
val password = "your_password"//Bot的密码
val miraiBot = Bot(qqId, password).alsoLogin()//新建Bot并登录
miraiBot.subscribeMessages {
"你好" reply "你好!"
case("at me") {
reply(sender.at() + " 给爷爬 ")
}
(contains("舔") or contains("刘老板")) {
"刘老板太强了".reply()
}
}
miraiBot.join() // 等待 Bot 离线, 避免主线程退出
}
在本例中,miraiBot
是一个Bot对象,让其登录,然后对Message Event
进行了监听。
对于Message Event
,Mirai
提供了较其他Event更强大的MessageSubscribersBuilder,本例也采用了MessageSubscribersBuilder。其他具体使用方法可以参考Wiki:Message Event部分。
上一节中提到的Message Event
仅仅是众多Event
的这一种,其他Event
有:群员加入群,离开群,私聊等等...
具体事件文档暂不提供,可翻阅源码BotEvents.kt,查看注释。当前事件仍在扩充中,可能有一定不足。
下面我们开始示例对一些事件进行监听。
在代码中的miraiBot.join()
前添加
miraiBot.subscribeAlways<MemberJoinEvent> {
it.group.sendMessage(PlainText("欢迎 ${it.member.nameCardOrNick} 加入本群!"))
}
本段语句监听了加入群的事件。
在代码中添加
miraiBot.subscribeAlways<MemberMuteEvent> {
it.group.sendMessage(PlainText("恭喜老哥 ${it.member.nameCardOrNick} 喜提禁言套餐一份"))
}
在被禁言后,Bot将发送恭喜语句。
至此,当前的代码为
package net.mamoe.mirai.simpleloader
import kotlinx.coroutines.*
import net.mamoe.mirai.Bot
import net.mamoe.mirai.alsoLogin
import net.mamoe.mirai.contact.nameCardOrNick
import net.mamoe.mirai.event.events.MemberJoinEvent
import net.mamoe.mirai.event.events.MemberMuteEvent
import net.mamoe.mirai.event.subscribeAlways
import net.mamoe.mirai.event.subscribeMessages
import net.mamoe.mirai.message.data.PlainText
suspend fun main() {
val qqId = 10000L//Bot的QQ号,需为Long类型,在结尾处添加大写L
val password = "your_password"//Bot的密码
val miraiBot = Bot(qqId, password).alsoLogin()//新建Bot并登录
miraiBot.subscribeMessages {
"你好" reply "你好!"
case("at me") {
reply(sender.at() + " 给爷爬 ")
}
(contains("舔") or contains("刘老板")) {
"刘老板太强了".reply()
}
}
miraiBot.subscribeAlways<MemberJoinEvent> {
it.group.sendMessage(PlainText("欢迎 ${it.member.nameCardOrNick} 加入本群!"))
}
miraiBot.subscribeAlways<MemberMuteEvent> {
it.group.sendMessage(PlainText("恭喜老哥 ${it.member.nameCardOrNick} 喜提禁言套餐一份"))
}
miraiBot.join() // 等待 Bot 离线, 避免主线程退出
}
下面可以参阅Mirai Guide - Build For Mirai,对你的Mirai应用进行打包