MiraiBot简介

logo
title

GitterMiraiForum

mirai 是一个在全平台下运行,提供 QQ Android 协议支持的高效率机器人库

这个项目的名字来源于

京都动画作品《境界的彼方》栗山未来(Kuriyama mirai)


CRYPTON初音未来为代表的创作与活动(Magical mirai)


图标以及形象由画师DazeCake绘制

Mairi项目

项目创建

使用IEDA创建一个新的gradl项目

gralde

请修改红色标签处的信息

项目目录如下图

gradleTree

build.gradle.kts配置

主要引进mirai-core-jvm库和增加仓库地址https://jitpack.io

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm") version "1.8.21"
application
}

group = "top.kagerou"
version = "1.0-dev"

repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}

dependencies {
testImplementation(kotlin("test"))
// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
implementation("com.squareup.okhttp3:okhttp:4.11.0")
// https://mvnrepository.com/artifact/net.mamoe/mirai-core-jvm
implementation("net.mamoe:mirai-core-jvm:2.15.0-M1")
// https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2
implementation("com.alibaba.fastjson2:fastjson2:2.0.31")

}

tasks.test {
useJUnitPlatform()
}

tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "19"
}

application {
mainClass.set("MainKt")
}

StratBot文件代码

在main文件夹下创建一个启动文件StratBot.kt 代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package top.kagerou
//省略import 信息
suspend fun main() {
//设置qq号码
val qqNumber: Long = 9548751264L
//创建Bot登录实例 使用的是2.15.0-M1的扫码登录,密码登录的滑动验证总是有点问题。
val bot = BotFactory.newBot(qqNumber, BotAuthorization.byQRCode()){
fileBasedDeviceInfo("device.json")
loginSolver = LoginSolver.Default
protocol = BotConfiguration.MiraiProtocol.ANDROID_WATCH
}
bot.login()

//基础监听消息示例 subscribeGroupMessages 监听群消息
bot.eventChannel.subscribeGroupMessages {
"-test1" {
subject.sendMessage("这是一个示例的文本消息")
}
}
bot.join()
}

启动main函数,bot登录时会在控制台请求扫描二维码,用手机QQ在同一网络下扫描二维码即可登录成功。

使用示例

在任意bot所在的群里发送 “-test1” 指令,bot即回复 “这是一个示例的文本消息” 信息。

test1

注意事项

由于使用的时OpenJDK19在于IDEA默认的Gradle版本可能会发生冲突,最好的方案是使用较低的OpenJDK版本,比如15。

或者自定义Gradle版本为gradle-8.1.1。

首先删除项目文件夹下 .gradle/里面的所有内容。

然后修改项目文件夹下 gradle/wrapper/gradle-wrapper.properties 文件中 distributionUrl=https://services.gradle.org/distributions/gradle-8.1.1-bin.zip

1
2
3
4
5
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

最后重新构建项目。