mirai/README.md
2019-10-11 13:00:41 +08:00

3.0 KiB
Raw Blame History

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)

FriendMessageEvent::class.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
    ...