使用开源免费的miraiQQ机器人框架代替酷Q

Mirai 是一个在全平台下运行,提供 QQ Android 和 TIM PC 协议支持的高效率机器人框架

项目地址:https://github.com/mamoe/mirai

这个项目目前还在快速开发和更改的状态中,以下的API介绍在未来可能不可用,请注意本文发布时间。

Mirai底层使用安卓QQ协议,kotlin开发。最大的亮点是完全开源、免费。终于不用为了让机器人发个图片到酷Q那买会员啦,而且不像酷Q那样放在linux上跑还要套个虚拟机。

放一个修改自官方的demo感受一下:

import kotlinx.coroutines.*
import net.mamoe.mirai.Bot
import net.mamoe.mirai.alsoLogin
import net.mamoe.mirai.event.subscribeMessages

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 "你好!" //收到“你好”时回复“你好!”
        always {reply(it)}  //其余时候充当复读机
    }
    miraiBot.join() // 等待 Bot 离线, 避免主线程退出
}

配置

官方文档中给出的新手版配置文档已经足够清楚,亲测可用。
(我用的IDEA)
目前官方提供的文档有限,如果你熟悉kotlin,翻阅源码配合注释使用即可。如果你没接触过kotlin,或许下面的一些说明能帮到你。

简易使用

miraiBot.subscribeMessages方法后面的花括号里的东西初看有点奇怪,它是通过lambda表达式实现的kotlin DSL(Domain Specific Language,领域特定语言)。例如SQL、html均属于DSL。这里不讨论kotlin如何实现DSL以及为一个机器人框架制作一种DSL是否利大于弊(不过这么做确实是增加了小白使用该框架的难度,特别是文档不全的情况下),只需要如何用即可。以下为几个例子:

当收到#help开头的消息时进行回复:

startsWith("#help") reply "xx机器人使用指南:xxxx..."

当群友嫌你的机器人烦

contains("闭嘴"){/*相应代码*/}
contains("闭嘴") reply "就不闭嘴,持续扰民"

为机器人做一个指令菜单(在群里通过发送#help、#shutdown、#xxx消息让机器人执行相应代码)

startswith("#"){
    when(it)
    {
        "shutdown"->/*代码*/
        "help"->/*代码*/
        "xxx"->/*代码*/
    }
}

打印所有消息到控制台

always{ print(it) }

写这篇博客比较匆忙,难免会有错误,欢迎在评论指出。

本文链接:

http://yorkin.cool/index.php/archives/19/
1 + 9 =
2 评论
    阳光加冰QQ Browser 6Android P
    3月24日 回复

    看起来挺香 (☆ω☆)

    404Chrome 83Windows 10
    4月3日 回复

    看起来挺香 (☆ω☆)