高效率 QQ 机器人支持库
Go to file
2019-10-11 08:40:07 +08:00
.github Moved image files 2019-09-10 21:23:39 +08:00
gradle/wrapper Multiplatform with gradle building 2019-10-03 19:07:03 +08:00
mirai-api Multiplatform with gradle building 2019-10-03 19:07:03 +08:00
mirai-console Change id type to UByte 2019-10-07 13:01:55 +08:00
mirai-core Add top-level fun for subscribeAll 2019-10-11 07:48:30 +08:00
mirai-debug Sealed messages 2019-10-09 20:22:53 +08:00
mirai-demos/mirai-demo-1 Sealed messages 2019-10-09 20:22:53 +08:00
.gitignore Multiplatform with gradle building 2019-10-03 19:07:03 +08:00
build.gradle Add atomicFU and kotlinx.IO 2019-10-10 11:27:30 +08:00
dependencies.gradle Add atomicFU and kotlinx.IO 2019-10-10 11:27:30 +08:00
gradlew Multiplatform with gradle building 2019-10-03 19:07:03 +08:00
gradlew.bat Multiplatform with gradle building 2019-10-03 19:07:03 +08:00
LICENSE update 2019-08-18 01:14:09 +08:00
README.md Update README.md 2019-10-11 08:40:07 +08:00
settings.gradle Debugging updates 2019-10-07 12:44:44 +08:00

Mirai

HitCount

一个以 TIM QQ协议(非web) 驱动的QQ机器人服务端核心
采用服务端-插件模式运行,同时提供独立的核心库
Mirai 的所有模块均开源

项目处于开发阶段,学生无法每日大量更新。
项目还有很多未完善的地方, 欢迎任何的代码贡献, 或是 issue.
部分协议来自网络上开源项目
一切开发旨在学习,请勿用于非法用途

抢先体验

核心框架结构已经开发完毕,一些核心功能也测试完成。
仅需几分钟就可以测试 Mirai.
现在你可以登录小号来测试 Mirai.
即使测试消息时未发现冻结情况我们也无法100%保证账号冻结不会发生。

目前还没有写构建,请使用 IDE 运行单个 main 函数。

  1. Clone
  2. Import as Gradle project
  3. Run demo main Demo 1 Main

事件

Kotlin:

这里只演示进行不终止地监听。

Top-level reified

多数情况下这是最好的方式。

inline fun <reified E: Event> subscribeAlways(handler: E -> Unit)

subscribeAlways<FriendMessageEvent>{
  //it: MessageChain
}
DSL

查看更多: ListenerBuilder

inline fun <reified E: Event> subscribeAll(builder: ListenerBuilder.() -> Unit)

subscribe<FriendMessageEvent>{
  always{
    //it: MessageChain
    //coroutineContext: EventScope.coroutineContext
  }
  //可同时开始多个监听。
  always{
    //it: MessageChain
    //coroutineContext: EventScope.coroutineContext
  }
}
KClass extension

更推荐使用 Top-level reified

fun <E : Event> KClass<E>.subscribeAlways(listener: suspend (E) -> Unit)

FriendMessageEventclass.subscribeAlways{
  if(it.message eq "你好")
     it.reply("你好!")
}

AYWVE86P

图片测试

现在可以接收图片消息(并解析为消息链):
JsssF

发送图片已经完成,但我们还在开发上传图片至服务器。
现在你可以通过发送一张图片给机器人账号,再让机器人账号发送这张图片。你可以查看 Image.kt

TODO

  • 事件(Event)模块
  • 插件(Plugin)模块
  • Network - Touch
  • Network - Login
  • Network - Session
  • Network - Verification Code
  • Network - Message Receiving
  • Network - Message Sending
  • Network - Events
  • Bot - Friend/group list
  • Bot - Actions(joining group, adding friend, etc.)
  • Message Section
  • Image uploading
  • Contact
  • UI
  • Console

使用方法

要求

  • Kotlin 1.3+

JVM

  • Java 11

插件开发

    to be continued
    ...

Mirai


A JAVA(+Kotlin) powered open-source project under GPL license
It use protocols from TIM QQ, that is, it won't be affected by the close of Smart QQ
The project is all for learning proposes and still in developing stage

Usage

Requirements

  • Java 11 or higher
  • Kotlin 1.3 or higher

Plugin Development

    to be continued
    ...