2019-08-07 18:14:29 +08:00
|
|
|
|
# Mirai
|
2019-10-16 09:02:32 +08:00
|
|
|
|
[![HitCount](http://hits.dwyl.io/him188/mamoe/mirai.svg)](http://hits.dwyl.io/him188/mamoe/mirai) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/7d0ec3ea244b424f93a6f59038a9deeb)](https://www.codacy.com/manual/Him188/mirai?utm_source=github.com&utm_medium=referral&utm_content=mamoe/mirai&utm_campaign=Badge_Grade)
|
2019-08-08 12:45:12 +08:00
|
|
|
|
|
2019-10-14 14:19:45 +08:00
|
|
|
|
一个以 **TIM PC协议(非web)** 驱动的跨平台QQ机器人服务端核心, 虽然目前仅支持 JVM
|
|
|
|
|
采用服务端-插件模式运行,同时提供独立的跨平台核心库.
|
2019-10-11 08:40:07 +08:00
|
|
|
|
Mirai 的所有模块均开源
|
2019-08-18 23:19:04 +08:00
|
|
|
|
|
2019-10-14 14:19:45 +08:00
|
|
|
|
项目处于开发阶段, 还有很多未完善的地方. 欢迎任何的代码贡献, 或是 issue.
|
2019-09-17 19:09:59 +08:00
|
|
|
|
部分协议来自网络上开源项目
|
2019-10-07 18:14:21 +08:00
|
|
|
|
**一切开发旨在学习,请勿用于非法用途**
|
2019-09-01 01:57:14 +08:00
|
|
|
|
|
2019-09-16 22:25:55 +08:00
|
|
|
|
## 抢先体验
|
|
|
|
|
核心框架结构已经开发完毕,一些核心功能也测试完成。
|
|
|
|
|
仅需几分钟就可以测试 Mirai.
|
|
|
|
|
现在你可以登录小号来测试 Mirai.
|
2019-09-18 17:31:26 +08:00
|
|
|
|
即使测试消息时未发现冻结情况,我们也无法100%保证账号冻结不会发生。
|
2019-09-16 22:25:55 +08:00
|
|
|
|
|
2019-10-09 11:10:35 +08:00
|
|
|
|
目前还没有写构建,请使用 IDE 运行单个 main 函数。
|
2019-09-08 01:24:18 +08:00
|
|
|
|
1. Clone
|
2019-10-09 11:10:35 +08:00
|
|
|
|
2. Import as Gradle project
|
2019-10-11 08:40:07 +08:00
|
|
|
|
3. Run demo main [Demo 1 Main](mirai-demos/mirai-demo-1/src/main/java/demo1/Main.kt#L22)
|
2019-09-08 19:29:21 +08:00
|
|
|
|
|
2019-10-11 08:40:07 +08:00
|
|
|
|
### 事件
|
2019-10-14 14:19:45 +08:00
|
|
|
|
|
|
|
|
|
#### 使用 Kotlin
|
2019-10-11 08:40:07 +08:00
|
|
|
|
这里只演示进行不终止地监听。
|
|
|
|
|
##### Top-level reified
|
|
|
|
|
多数情况下这是最好的方式。
|
2019-10-02 19:13:09 +08:00
|
|
|
|
```kotlin
|
2019-10-11 13:00:41 +08:00
|
|
|
|
inline fun <reified E: Event> subscribeAlways(handler: (E) -> Unit)
|
2019-10-11 08:40:07 +08:00
|
|
|
|
|
|
|
|
|
subscribeAlways<FriendMessageEvent>{
|
2019-10-14 20:40:30 +08:00
|
|
|
|
//it: FriendMessageEvent
|
2019-10-11 08:40:07 +08:00
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
##### DSL
|
2019-10-14 14:19:45 +08:00
|
|
|
|
查看更多: [ListenerBuilder](mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/Subscribers.kt#L87)
|
2019-10-11 08:40:07 +08:00
|
|
|
|
```kotlin
|
|
|
|
|
inline fun <reified E: Event> subscribeAll(builder: ListenerBuilder.() -> Unit)
|
|
|
|
|
|
|
|
|
|
subscribe<FriendMessageEvent>{
|
|
|
|
|
always{
|
2019-10-14 20:40:30 +08:00
|
|
|
|
//it: FriendMessageEvent
|
2019-10-11 08:40:07 +08:00
|
|
|
|
//coroutineContext: EventScope.coroutineContext
|
|
|
|
|
}
|
|
|
|
|
//可同时开始多个监听。
|
|
|
|
|
always{
|
2019-10-14 20:40:30 +08:00
|
|
|
|
//it: FriendMessageEvent
|
2019-10-11 08:40:07 +08:00
|
|
|
|
//coroutineContext: EventScope.coroutineContext
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2019-09-08 19:58:47 +08:00
|
|
|
|
![AYWVE86P](.github/A%7DYWVE860U%28%25YQD%24R1GB1%5BP.png)
|
|
|
|
|
|
2019-09-10 19:58:41 +08:00
|
|
|
|
### 图片测试
|
2019-10-14 14:19:45 +08:00
|
|
|
|
现在可以接收图片消息(并解析为消息链):
|
2019-09-08 19:58:47 +08:00
|
|
|
|
![JsssF](.github/J%5DCE%29IK4BU08%28EO~UVLJ%7B%5BF.png)
|
2019-09-10 21:23:39 +08:00
|
|
|
|
![](.github/68f8fec9.png)
|
2019-09-08 19:58:47 +08:00
|
|
|
|
|
2019-10-21 01:21:24 +08:00
|
|
|
|
上传发送图片已经完成, 您可以在 Demo 中找到发送方式.
|
2019-10-14 14:19:45 +08:00
|
|
|
|
机器人可以转发图片消息.详情查看 [Image.kt](mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/Message.kt#L81)
|
|
|
|
|
|
2019-10-15 21:31:57 +08:00
|
|
|
|
## 现已支持
|
2019-10-19 11:59:08 +08:00
|
|
|
|
|
|
|
|
|
- 发送好友/群消息(10/14)
|
|
|
|
|
- 接受解析好友消息(10/14)
|
|
|
|
|
- 接收解析群消息(10/14)
|
|
|
|
|
- 成员权限, 昵称(10/18)
|
|
|
|
|
- 好友在线状态改变(10/14)
|
|
|
|
|
- Android客户端上线/下线(10/18)
|
2019-10-21 01:21:24 +08:00
|
|
|
|
- 上传并发送图片(10/21)
|
2019-08-24 15:36:59 +08:00
|
|
|
|
|
2019-10-15 21:31:57 +08:00
|
|
|
|
## 使用方法
|
|
|
|
|
### 要求
|
2019-10-15 21:37:16 +08:00
|
|
|
|
- Kotlin 1.3+
|
2019-10-15 21:31:57 +08:00
|
|
|
|
#### 用于 JVM 平台
|
2019-10-15 21:37:16 +08:00
|
|
|
|
- Java 8
|
2019-09-10 19:58:41 +08:00
|
|
|
|
## 插件开发
|
2019-09-08 01:24:18 +08:00
|
|
|
|
``` text
|
2019-09-01 01:48:27 +08:00
|
|
|
|
to be continued
|
2019-08-08 12:51:21 +08:00
|
|
|
|
...
|
2019-10-16 09:02:32 +08:00
|
|
|
|
```
|