admin管理员组

文章数量:1130349

Mirai qq机器人框架kotlin/java教程

  • 前言
    • 资料列表
  • 可能遇到的问题
  • 1.准备
    • i. 配置java环境
    • ii. 配置IDE
    • iii. 下载mirai-console-loader(mcl)作为启动器
      • 其他启动器
  • 2.创建mirai-console插件项目
    • i. 下载
    • ii. 个性化项目
  • 3. 文件夹结构解析
  • 4.kotlin插件代码解析
    • i.所有在以下代码中要引入的库
    • ii.构建主类
    • iii.覆盖插件启用函数
    • iv.监听事件
    • v. 全部代码
    • vi. gradle部分代码
  • 5. Java插件代码解析
    • i. 在下面代码中要引入的库
    • ii. 构建主类
    • iii. 覆盖插件启用函数
    • iv. 监听事件
    • v. 全部代码
    • vi. gradle 部分代码
  • 6. 在IDE内运行
    • i. 更改MiraiRunKt配置
    • ii.运行MiraiRunKt任务
  • 7. 生成插件并运行
    • i. 生成插件
    • ii.在mcl中运行

前言

构建mirai的mirai-console插件教程
用到的概念有
mcl - 指mirai-console-loader,mirai-console官方启动器
mirai - mirai 是一个在全平台下运行,提供 QQ Android 协议支持的高效率机器人库,根据AGPLv3开源

资料列表

以下为一些官方资料
mirai官方github库
mirai-console官方github库
mirai-console-loader(mcl)官方启动器官方github库
这三者的关系可以参考这里
官方实例
mirai官方论坛
官方demo
mirai在线api文档

另,以下是一些资源:
笔者整理的mirai-console插件实例包含kt和java)

可能遇到的问题

  • MiraiOK已经没用了,用mcl(网址在上面)
  • 最好用openjdk不过甲骨文的jdk好像也可以(建议用openjdk, 解释在下面)
  • 根据issue#959目前邀请机器人进200+人的群都不会触发事件
  • 插件id必须为类包格式(xxx.xxx.xxx)
  • 有的时候收不到机器人的信息是因为被tx风控了换号或多发几次以及多挂(可以去论坛看看)
  • 建议看一遍官方文档虽然有点乱
  • 如果遇到问题,可以去mirai论坛上问
  • 如果要在mcl内改登录协议,在login命令后加参数或在config/console/autologin.yml里面设置自动登录命令和登录的协议
  • mcl登录报错环境异常,参考论坛解决方案
  • 改了入口点包路径需要到resources\META-INF\services\net.mamoe.mirai.console.plugin.jvm.JvmPlugin改成对应的类包路径

1.准备

i. 配置java环境

下载mcl所需要的是>=11版本的openjdk,openjdk下载地址,下载教程参考搜索引擎

最好用openjdk而不是甲骨文(Oracle)的jdk,原因

ii. 配置IDE

推荐IDEA吧,其他的也可以,主要是IDEA挺好用的
可以选择安装的官方插件:
Mirai Console IntelliJ 提供错误检查等功能
Kotlin Jvm Blocking Bridge 帮助 Java 用户调用 Kotlin suspend 函数
详细参考官方文档

iii. 下载mirai-console-loader(mcl)作为启动器

官方地址
教程同见官方说明

其他启动器

目前也出了其他启动器,查看这里

2.创建mirai-console插件项目

i. 下载

  1. 从官方实例或笔者整理的mirai-console插件实例中下载最新版的框架到本地,然后用IDE打开文件夹
  2. 使用插件生成,详细查看官网

ii. 个性化项目

  • settings.gradle.kts里改生成的插件.jar名称也就是项目名称, 或者在build.gradle.kts里面获取shadowjar任务改如:
tasks {
   
   
    afterEvaluate {
   
   
        named<net.mamoe.mirai.console.gradle.BuildMiraiPluginTask>("buildPlugin") {
   
   
            archiveBaseName.set("name")
            archiveClassifier.set("")
            archiveVersion.set(version)
        }
    }
}
  • RunMiraikt这个文件(在test文件夹下)可以在ide里运行,不用复制到mcl或其他启动器
  • buildPlugin这个gradle任务可以生成.jar插件
  • src/main/kotlin/PluginMain主类内可以修改插件信息(mcl用)
  • 最好修改PluginMain.ktJavaPluginMain.java的包名避免插件载入冲突,然后在resources\META-INF\services\net.mamoe.mirai.console.plugin.jvm.JvmPlugin中更改类包名到你改后的名,路径见下面

3. 文件夹结构解析

插件实例代码文件结构

│  build.gradle.kts gradle依赖列表
│  settings.gradle.kts gradle设置
│
├─.run
│      RunMiraiKt.run.xml IDE中运行任务配置,即RunMiraiKt源文件
│
├─run RunMiraiKt默认运行目录
│
└─src
    ├─main
    │  ├─kotlin
    │  │      PluginMain.kt  kotlin插件主类
    │  ├─Java
    │  │      JavaPluginMain.java java插件主类
	│  │ 
	│  ├─resources\META-INF\services
	│  │ 	  net.mamoe.mirai.console.plugin.jvm.JvmPlugin Mirai加载的主类
    └─test
        └─kotlin
                RunMirai.kt RunMiraiKt任务配置

4.kotlin插件代码解析

代码以github上的代码为准,可能会有更新

i.所有在以下代码中要引入的库

//插件信息
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
//主类继承
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
//机器人被拉进群的事件
import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent
//收到好友信息事件
import net.mamoe.mirai.event.events.FriendMessageEvent
//收到群消息事件
import net.mamoe.mirai.event.events.GroupMessageEvent
//新好友申请事件
import net.mamoe.mirai.event.events.NewFriendRequestEvent
//日志组件(logger)发控制台信息函数
import net.mamoe.mirai.utils.info
//消息(messageChain)中的图片类型
import net.mamoe.mirai.message.data.Image
//消息(messageChain)中的纯文本类型
import net.mamoe.mirai.message.data.PlainText
//监听器
import net.mamoe.mirai.event.Listener
//监听范围
import net.mamoe

Mirai qq机器人框架kotlin/java教程

  • 前言
    • 资料列表
  • 可能遇到的问题
  • 1.准备
    • i. 配置java环境
    • ii. 配置IDE
    • iii. 下载mirai-console-loader(mcl)作为启动器
      • 其他启动器
  • 2.创建mirai-console插件项目
    • i. 下载
    • ii. 个性化项目
  • 3. 文件夹结构解析
  • 4.kotlin插件代码解析
    • i.所有在以下代码中要引入的库
    • ii.构建主类
    • iii.覆盖插件启用函数
    • iv.监听事件
    • v. 全部代码
    • vi. gradle部分代码
  • 5. Java插件代码解析
    • i. 在下面代码中要引入的库
    • ii. 构建主类
    • iii. 覆盖插件启用函数
    • iv. 监听事件
    • v. 全部代码
    • vi. gradle 部分代码
  • 6. 在IDE内运行
    • i. 更改MiraiRunKt配置
    • ii.运行MiraiRunKt任务
  • 7. 生成插件并运行
    • i. 生成插件
    • ii.在mcl中运行

前言

构建mirai的mirai-console插件教程
用到的概念有
mcl - 指mirai-console-loader,mirai-console官方启动器
mirai - mirai 是一个在全平台下运行,提供 QQ Android 协议支持的高效率机器人库,根据AGPLv3开源

资料列表

以下为一些官方资料
mirai官方github库
mirai-console官方github库
mirai-console-loader(mcl)官方启动器官方github库
这三者的关系可以参考这里
官方实例
mirai官方论坛
官方demo
mirai在线api文档

另,以下是一些资源:
笔者整理的mirai-console插件实例包含kt和java)

可能遇到的问题

  • MiraiOK已经没用了,用mcl(网址在上面)
  • 最好用openjdk不过甲骨文的jdk好像也可以(建议用openjdk, 解释在下面)
  • 根据issue#959目前邀请机器人进200+人的群都不会触发事件
  • 插件id必须为类包格式(xxx.xxx.xxx)
  • 有的时候收不到机器人的信息是因为被tx风控了换号或多发几次以及多挂(可以去论坛看看)
  • 建议看一遍官方文档虽然有点乱
  • 如果遇到问题,可以去mirai论坛上问
  • 如果要在mcl内改登录协议,在login命令后加参数或在config/console/autologin.yml里面设置自动登录命令和登录的协议
  • mcl登录报错环境异常,参考论坛解决方案
  • 改了入口点包路径需要到resources\META-INF\services\net.mamoe.mirai.console.plugin.jvm.JvmPlugin改成对应的类包路径

1.准备

i. 配置java环境

下载mcl所需要的是>=11版本的openjdk,openjdk下载地址,下载教程参考搜索引擎

最好用openjdk而不是甲骨文(Oracle)的jdk,原因

ii. 配置IDE

推荐IDEA吧,其他的也可以,主要是IDEA挺好用的
可以选择安装的官方插件:
Mirai Console IntelliJ 提供错误检查等功能
Kotlin Jvm Blocking Bridge 帮助 Java 用户调用 Kotlin suspend 函数
详细参考官方文档

iii. 下载mirai-console-loader(mcl)作为启动器

官方地址
教程同见官方说明

其他启动器

目前也出了其他启动器,查看这里

2.创建mirai-console插件项目

i. 下载

  1. 从官方实例或笔者整理的mirai-console插件实例中下载最新版的框架到本地,然后用IDE打开文件夹
  2. 使用插件生成,详细查看官网

ii. 个性化项目

  • settings.gradle.kts里改生成的插件.jar名称也就是项目名称, 或者在build.gradle.kts里面获取shadowjar任务改如:
tasks {
   
   
    afterEvaluate {
   
   
        named<net.mamoe.mirai.console.gradle.BuildMiraiPluginTask>("buildPlugin") {
   
   
            archiveBaseName.set("name")
            archiveClassifier.set("")
            archiveVersion.set(version)
        }
    }
}
  • RunMiraikt这个文件(在test文件夹下)可以在ide里运行,不用复制到mcl或其他启动器
  • buildPlugin这个gradle任务可以生成.jar插件
  • src/main/kotlin/PluginMain主类内可以修改插件信息(mcl用)
  • 最好修改PluginMain.ktJavaPluginMain.java的包名避免插件载入冲突,然后在resources\META-INF\services\net.mamoe.mirai.console.plugin.jvm.JvmPlugin中更改类包名到你改后的名,路径见下面

3. 文件夹结构解析

插件实例代码文件结构

│  build.gradle.kts gradle依赖列表
│  settings.gradle.kts gradle设置
│
├─.run
│      RunMiraiKt.run.xml IDE中运行任务配置,即RunMiraiKt源文件
│
├─run RunMiraiKt默认运行目录
│
└─src
    ├─main
    │  ├─kotlin
    │  │      PluginMain.kt  kotlin插件主类
    │  ├─Java
    │  │      JavaPluginMain.java java插件主类
	│  │ 
	│  ├─resources\META-INF\services
	│  │ 	  net.mamoe.mirai.console.plugin.jvm.JvmPlugin Mirai加载的主类
    └─test
        └─kotlin
                RunMirai.kt RunMiraiKt任务配置

4.kotlin插件代码解析

代码以github上的代码为准,可能会有更新

i.所有在以下代码中要引入的库

//插件信息
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
//主类继承
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
//机器人被拉进群的事件
import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent
//收到好友信息事件
import net.mamoe.mirai.event.events.FriendMessageEvent
//收到群消息事件
import net.mamoe.mirai.event.events.GroupMessageEvent
//新好友申请事件
import net.mamoe.mirai.event.events.NewFriendRequestEvent
//日志组件(logger)发控制台信息函数
import net.mamoe.mirai.utils.info
//消息(messageChain)中的图片类型
import net.mamoe.mirai.message.data.Image
//消息(messageChain)中的纯文本类型
import net.mamoe.mirai.message.data.PlainText
//监听器
import net.mamoe.mirai.event.Listener
//监听范围
import net.mamoe

本文标签: 机器人框架教程QQMirai