Updated message

This commit is contained in:
Him188moe 2019-09-08 19:58:47 +08:00
parent 3adfed6e72
commit aac8b08f00
6 changed files with 29 additions and 14 deletions

BIN
.README_images/68f8fec9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
.github/A}YWVE860U(%YQD$R1GB1[P.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
.github/J]CE)IK4BU08(EO~UVLJ{[F.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -5,13 +5,7 @@
项目处于快速开发阶段
协议来自网络上开源项目
一切开发旨在学习, 请勿用于非法用途
<br>
A JAVA(+Kotlin) powered open-source project under GPL license<br>
It use protocols from <i>TIM QQ</i>, that is, it won't be affected by the close of <i>Smart QQ</i><br>
The project is all for <b>learning proposes</b> and still in <b>developing stage</b><br>
一切开发旨在学习, 请勿用于非法用途
### 代码结构
Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
@ -20,15 +14,21 @@ Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
即使你完全不了解 Kotlin, 你也可以正常开发.
### 抢先体验
现在你可以使用 Mirai 内置的一些测试qq号体验 Mirai.
现在你可以使用 Mirai 内置的一些测试qq号体验 Mirai, 但我们现在还不建议你使用自己的 qq 号登录
1. Clone
2. Import as Maven project
3. Run [MiraiMain](mirai-core/src/main/java/net/mamoe/mirai/MiraiMain.java#L7)
简略阅读源码便可测试接收和发送消息
Hook 一个事件(Kotlin):
#### 事件 Hook (Kotlin)
![event hook.png](.github/event%20hook.png)
![AYWVE86P](.github/A%7DYWVE860U%28%25YQD%24R1GB1%5BP.png)
#### 图片测试
**现在可以接受图片消息**(并解析为消息链):
![JsssF](.github/J%5DCE%29IK4BU08%28EO~UVLJ%7B%5BF.png)
![](.README_images/68f8fec9.png)
不过我们还正在努力做发送图片
### TODO
- [x] 事件(Event)模块
@ -59,6 +59,12 @@ Hook 一个事件(Kotlin):
```
<br>
A JAVA(+Kotlin) powered open-source project under GPL license<br>
It use protocols from <i>TIM QQ</i>, that is, it won't be affected by the close of <i>Smart QQ</i><br>
The project is all for <b>learning proposes</b> and still in <b>developing stage</b><br>
## Usage
### Requirements
- Java 11 or higher

View File

@ -62,6 +62,6 @@ fun <C : KClass<E>, E : MiraiEvent> C.hookWhile(hook: (E) -> Boolean) {
private class MiraiEventHookSimple<E : MiraiEvent>(clazz: Class<E>, val hook: (E) -> Boolean) : MiraiEventHook<E>(clazz) {
override fun accept(event: MiraiEvent?): Boolean {
@Suppress("UNCHECKED_CAST")
return hook.invoke(event as E)
return !hook.invoke(event as E)
}
}

View File

@ -12,7 +12,6 @@ import net.mamoe.mirai.event.events.network.PacketSentEvent
import net.mamoe.mirai.event.events.network.ServerPacketReceivedEvent
import net.mamoe.mirai.event.events.qq.FriendMessageEvent
import net.mamoe.mirai.event.events.robot.RobotLoginSucceedEvent
import net.mamoe.mirai.event.hookAlways
import net.mamoe.mirai.event.hookWhile
import net.mamoe.mirai.message.Message
import net.mamoe.mirai.message.defaults.MessageChain
@ -261,6 +260,10 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable {
this.loginFuture = null
}
}
fun isClosed(): Boolean {
return this.socket?.isClosed ?: true
}
}
@ -485,12 +488,18 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable {
internal var ignoreMessage: Boolean = false
init {
FriendMessageEvent::class.hookAlways {
//todo for test
FriendMessageEvent::class.hookWhile {
if (socketHandler.isClosed()) {
return@hookWhile false
}
if (it.message() valueEquals "你好") {
it.qq.sendMessage("你好!")
} else if (it.message().toString().startsWith("复读")) {
it.qq.sendMessage(it.message())
}
return@hookWhile true
}
}