mirai QQ机器人初探

背景

vaala的机器人小vaala已经做好很久了,功能也十分丰富。当时看了vaala的仓库,了解到qq机器人是用mirai这个框架实现的。

寒假放假后,7att1ce也很快写了一个机器人,主要实现了setu模块(

以下图片节选至530开车群。

7att1ceのBot

我便也着手准备起来。

成果

在昨晚搞了一会儿MCL以及今天用Ariadne写了几个小功能后,我的机器人大概是这样的。

help & hi

setu & dice

secret

当输入#help 时就会调用 https://api.ixiaowai.cn/api/api.php 接口随机获得一张setu。

至于#secret实际上就是把setu以闪照的形式发出来233。

如何实现

mirai相关资料较少,建议仔细研读官方的文档和手册。以下为相关项目地址。

  1. mamoe/mirai: 高效率 QQ 机器人支持库 (github.com)

    这是mirai主仓库,你需要按照它的用户手册下载Mirai Console Loader(即Mirai 控制台 加载器)

    它有交互式终端,提供了一些命令,但是实际上的主要功能就是自动登录qq(

    mcl

    登录qq是个大坑,建议看这篇 mirai官方论坛的文章 无法登录的临时处理方案 | MiraiForum (mamoe.net)

    大概步骤就是先用MiraiAndroid 登录上qq,然后复制device.json到服务器。然后服务器就能够登录了。

  2. 登录上qq了你便完成了一大半了。接下来就是如何对bot进行控制。Mirai官方提供了project-mirai/mirai-api-http: Mirai HTTP API (console) plugin (github.com) 这款插件,它通过在机器本地开设http服务,让我们通过访问api接口的方式对机器人进行控制。这样有一个好处,无论你是什么语言,只要你可以去访问api,对api进行请求,你就实现对bot的操作。

    下载插件十分简单,进入 plugins目录,然后把插件的jar包放进去,下次开启mcl的时候就会自动加载插件了。

    mirai-api-http

    我这里下载了v2.4.0 即最新版本。

    注意 mirai主仓库提供的安装插件命令 ./mcl --update-package net.mamoe:mirai-api-http --type plugin --channel stable 下载的是插件的稳定版,实际上是v1. 的版本,不建议使用。

  3. 接下来我找了一个mirai python框架 GraiaProject/Ariadne: Another elegant framework for Mirai and mirai-api-http v2. Powered by GraiaProject. (github.com) 用来编写bot功能。

    在仔细阅读它的文档之后,我们很快就能实现一个简单的机器人。以下是我当前项目的代码。

    bot

    由于该框架封装的比较好,用起来还是比较方便的。

结尾

一个QQ机器人还是非常有趣的,虽然用的频率可能不多。

但是它可能会给使群热闹起来。

注入


mirai QQ机器人初探
https://wuuconix.link/2022/01/04/mirai/
作者
wuuconix
发布于
2022年1月4日
许可协议