mirai QQ机器人初探
背景
vaala的机器人小vaala已经做好很久了,功能也十分丰富。当时看了vaala的仓库,了解到qq机器人是用mirai这个框架实现的。
寒假放假后,7att1ce也很快写了一个机器人,主要实现了setu模块(
以下图片节选至530开车群。
我便也着手准备起来。
成果
在昨晚搞了一会儿MCL以及今天用Ariadne写了几个小功能后,我的机器人大概是这样的。
当输入#help
时就会调用 https://api.ixiaowai.cn/api/api.php 接口随机获得一张setu。
至于#secret
实际上就是把setu以闪照的形式发出来233。
如何实现
mirai相关资料较少,建议仔细研读官方的文档和手册。以下为相关项目地址。
-
mamoe/mirai: 高效率 QQ 机器人支持库 (github.com)
这是mirai主仓库,你需要按照它的用户手册下载Mirai Console Loader(即Mirai 控制台 加载器)
它有交互式终端,提供了一些命令,但是实际上的主要功能就是自动登录qq(
登录qq是个大坑,建议看这篇 mirai官方论坛的文章 无法登录的临时处理方案 | MiraiForum (mamoe.net)
大概步骤就是先用MiraiAndroid 登录上qq,然后复制device.json到服务器。然后服务器就能够登录了。
-
登录上qq了你便完成了一大半了。接下来就是如何对bot进行控制。Mirai官方提供了project-mirai/mirai-api-http: Mirai HTTP API (console) plugin (github.com) 这款插件,它通过在机器本地开设http服务,让我们通过访问api接口的方式对机器人进行控制。这样有一个好处,无论你是什么语言,只要你可以去访问api,对api进行请求,你就实现对bot的操作。
下载插件十分简单,进入 plugins目录,然后把插件的jar包放进去,下次开启mcl的时候就会自动加载插件了。
我这里下载了v2.4.0 即最新版本。
注意 mirai主仓库提供的安装插件命令 ./mcl --update-package net.mamoe:mirai-api-http --type plugin --channel stable 下载的是插件的稳定版,实际上是v1. 的版本,不建议使用。
-
接下来我找了一个mirai python框架 GraiaProject/Ariadne: Another elegant framework for Mirai and mirai-api-http v2. Powered by GraiaProject. (github.com) 用来编写bot功能。
在仔细阅读它的文档之后,我们很快就能实现一个简单的机器人。以下是我当前项目的代码。
由于该框架封装的比较好,用起来还是比较方便的。
结尾
一个QQ机器人还是非常有趣的,虽然用的频率可能不多。
但是它可能会给使群热闹起来。