Commit aac8b08f authored by Him188moe's avatar Him188moe

Updated message

parent 3adfed6e
...@@ -5,13 +5,7 @@ ...@@ -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 的支持). Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
...@@ -20,15 +14,21 @@ Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持). ...@@ -20,15 +14,21 @@ Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
即使你完全不了解 Kotlin, 你也可以正常开发. 即使你完全不了解 Kotlin, 你也可以正常开发.
### 抢先体验 ### 抢先体验
现在你可以使用 Mirai 内置的一些测试qq号体验 Mirai. 现在你可以使用 Mirai 内置的一些测试qq号体验 Mirai, 但我们现在还不建议你使用自己的 qq 号登录
1. Clone 1. Clone
2. Import as Maven project 2. Import as Maven project
3. Run [MiraiMain](mirai-core/src/main/java/net/mamoe/mirai/MiraiMain.java#L7) 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) ![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 ### TODO
- [x] 事件(Event)模块 - [x] 事件(Event)模块
...@@ -59,6 +59,12 @@ Hook 一个事件(Kotlin): ...@@ -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 ## Usage
### Requirements ### Requirements
- Java 11 or higher - Java 11 or higher
......
...@@ -62,6 +62,6 @@ fun <C : KClass<E>, E : MiraiEvent> C.hookWhile(hook: (E) -> Boolean) { ...@@ -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) { private class MiraiEventHookSimple<E : MiraiEvent>(clazz: Class<E>, val hook: (E) -> Boolean) : MiraiEventHook<E>(clazz) {
override fun accept(event: MiraiEvent?): Boolean { override fun accept(event: MiraiEvent?): Boolean {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
return hook.invoke(event as E) return !hook.invoke(event as E)
} }
} }
\ No newline at end of file
...@@ -12,7 +12,6 @@ import net.mamoe.mirai.event.events.network.PacketSentEvent ...@@ -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.network.ServerPacketReceivedEvent
import net.mamoe.mirai.event.events.qq.FriendMessageEvent import net.mamoe.mirai.event.events.qq.FriendMessageEvent
import net.mamoe.mirai.event.events.robot.RobotLoginSucceedEvent import net.mamoe.mirai.event.events.robot.RobotLoginSucceedEvent
import net.mamoe.mirai.event.hookAlways
import net.mamoe.mirai.event.hookWhile import net.mamoe.mirai.event.hookWhile
import net.mamoe.mirai.message.Message import net.mamoe.mirai.message.Message
import net.mamoe.mirai.message.defaults.MessageChain import net.mamoe.mirai.message.defaults.MessageChain
...@@ -261,6 +260,10 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable { ...@@ -261,6 +260,10 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable {
this.loginFuture = null this.loginFuture = null
} }
} }
fun isClosed(): Boolean {
return this.socket?.isClosed ?: true
}
} }
...@@ -485,12 +488,18 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable { ...@@ -485,12 +488,18 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable {
internal var ignoreMessage: Boolean = false internal var ignoreMessage: Boolean = false
init { init {
FriendMessageEvent::class.hookAlways { //todo for test
FriendMessageEvent::class.hookWhile {
if (socketHandler.isClosed()) {
return@hookWhile false
}
if (it.message() valueEquals "你好") { if (it.message() valueEquals "你好") {
it.qq.sendMessage("你好!") it.qq.sendMessage("你好!")
} else if (it.message().toString().startsWith("复读")) { } else if (it.message().toString().startsWith("复读")) {
it.qq.sendMessage(it.message()) it.qq.sendMessage(it.message())
} }
return@hookWhile true
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment