From f2986d91dbf0a9b340e77fa7c9acc2e5b0b5b8f5 Mon Sep 17 00:00:00 2001 From: Him188moe Date: Sun, 8 Sep 2019 19:29:21 +0800 Subject: [PATCH] Updated message --- .github/event hook.png | Bin 0 -> 17286 bytes README.md | 4 ++++ .../java/net/mamoe/mirai/MiraiServer.java | 21 +++++++----------- .../java/net/mamoe/mirai/message/Message.kt | 12 +++++++++- .../mirai/message/defaults/MessageChain.kt | 15 +++++++++++++ .../mirai/network/RobotNetworkHandler.kt | 18 ++++++++++----- .../mirai/network/packet/ClientPacket.kt | 2 +- .../net/mamoe/mirai/network/packet/Touch.kt | 2 +- .../mirai/network/packet/login/ClientLogin.kt | 2 +- mirai-native/pom.xml | 14 ------------ .../net/mamoe/mirai/util/TeaEncryption.java | 9 -------- pom.xml | 1 - 12 files changed, 53 insertions(+), 47 deletions(-) create mode 100644 .github/event hook.png delete mode 100644 mirai-native/pom.xml delete mode 100644 mirai-native/src/main/java/net/mamoe/mirai/util/TeaEncryption.java diff --git a/.github/event hook.png b/.github/event hook.png new file mode 100644 index 0000000000000000000000000000000000000000..a76f875d8316404a74285d3c35263e8f09d156b5 GIT binary patch literal 17286 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 11bec757f..bdfe16c1b 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,12 @@ Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持). 1. Clone 2. Import as Maven project 3. Run [MiraiMain](mirai-core/src/main/java/net/mamoe/mirai/MiraiMain.java#L7) + 简略阅读源码便可测试接收和发送消息 +Hook 一个事件(Kotlin): +![event hook.png](.github/event%20hook.png) + ### TODO - [x] 事件(Event)模块 - [ ] 插件(Plugin)模块 **(Working on)** diff --git a/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java b/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java index 59f8f01ad..d34a6359d 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java @@ -178,7 +178,13 @@ public class MiraiServer { getLogger().info("Initializing [Robot]s"); + try { + getAvailableRobot(); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + /* this.qqs.keySet().stream().map(key -> this.qqs.getSection(key)).forEach(section -> { getLogger().info("Initializing [Robot] " + section.getString("account")); try { @@ -199,7 +205,7 @@ public class MiraiServer { getLogger().error("Could not load QQ robots config!"); System.exit(1); } - }); + });*/ } @@ -209,20 +215,9 @@ public class MiraiServer { "3145561616----987654321\n" + "2374150554----12345678910\n" + "2375307394----12345678910\n" + - "1531848970----1234567890\n" + - "1947293188----a123456789\n" + - "1771231721----123456789a\n" + "2401645747----12345678910\n" + - "3338427598----987654321\n" + - "3055657369----1234567890\n" + - "3502771486----987654321\n" + "1515419818----1234567890\n" + - "2402273360----12345678910\n" + - "3107367848----987654321\n" + - "3487109947----123456789a\n" + - "3489288352----123456789a\n" + - "2385617018----12345678910\n" + - "1251003390----123456789a\n"; + "3107367848----987654321\n"; private Robot getAvailableRobot() throws ExecutionException, InterruptedException { for (String it : qqList.split("\n")) { diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/Message.kt b/mirai-core/src/main/java/net/mamoe/mirai/message/Message.kt index 65adab3dd..ddba4dec2 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/Message.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/Message.kt @@ -15,7 +15,17 @@ import java.util.* * 可发送的或从服务器接收的消息. * 采用这样的消息模式是因为 QQ 的消息多元化, 一条消息中可包含 [纯文本][PlainText], [图片][Image] 等. * - * 在 Kotlin, 使用 [Message] 与使用 [String] 几乎没有什么用法上的区别, 除了 + * #### 在 Kotlin 使用 [Message] + * 这与使用 [String] 的使用非常类似. + * + * 比较 [Message] 与 [String] (使用 infix [Message.valueEquals]): + * `if(message valueEquals "你好") qq.sendMessage(message)` + * + * 连接 [Message] 与 [Message], [String], [BufferedImage] (使用 operator [Message.plus]): + * ``` + * message = PlainText("Hello ") + * qq.sendMessage(message + "world") + * ``` * * @author Him188moe * @see Contact.sendMessage diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/MessageChain.kt b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/MessageChain.kt index 18dd74ad4..1273784a9 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/MessageChain.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/MessageChain.kt @@ -3,6 +3,7 @@ package net.mamoe.mirai.message.defaults import net.mamoe.mirai.message.Message import net.mamoe.mirai.message.MessageId import net.mamoe.mirai.utils.lazyEncode +import org.intellij.lang.annotations.MagicConstant import java.util.* import java.util.stream.Collectors import java.util.stream.Stream @@ -31,6 +32,20 @@ class MessageChain : Message { return list.toList() } + fun size(): Int { + return list.size + } + + @Synchronized + fun containsType(@MagicConstant(valuesFromClass = MessageId::class) type: Int): Boolean { + for (message in list) { + if (message.type == type) { + return true + } + } + return false + } + fun stream(): Stream { return ArrayList(list).stream() } diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt index 842c889ef..680de7dd4 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt @@ -12,6 +12,7 @@ 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 @@ -483,6 +484,16 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable { inner class MessageHandler : PacketHandler() { internal var ignoreMessage: Boolean = false + init { + FriendMessageEvent::class.hookAlways { + if (it.message() valueEquals "你好") { + it.qq.sendMessage("你好!") + } else if (it.message().toString().startsWith("复读")) { + it.qq.sendMessage(it.message()) + } + } + } + override fun onPacketReceived(packet: ServerPacket) { when (packet) { is ServerGroupUploadFileEventPacket -> { @@ -494,12 +505,7 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable { return } - val friendMessageEvent = FriendMessageEvent(robot, robot.contacts.getQQ(packet.qq), packet.message) - friendMessageEvent.broadcast() - - if (friendMessageEvent.message() valueEquals "你好") { - friendMessageEvent.qq.sendMessage("你好") - } + FriendMessageEvent(robot, robot.contacts.getQQ(packet.qq), packet.message).broadcast() } is ServerGroupMessageEventPacket -> { diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt index 3427bdc5d..d0f8547a4 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt @@ -70,7 +70,7 @@ abstract class ClientPacket : ByteArrayDataOutputStream(), Packet { override fun toString(): String { - return adjustName(this.javaClass.simpleName + "(${this.getFixedId()})") + this.getAllDeclaredFields().filterNot { it.name == "idHex" || it.name == "encoded" }.joinToString(", ", "{", "}") { + return adjustName(this.javaClass.simpleName + "(${this.getFixedId()})") + this.getAllDeclaredFields().filterNot { it.name == "idHex" || it.name == "idByteArray" || it.name == "encoded" }.joinToString(", ", "{", "}") { it.trySetAccessible(); it.name + "=" + it.get(this).let { value -> when (value) { null -> null diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt index a6a4efb65..57b0b9742 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt @@ -16,7 +16,7 @@ import java.io.IOException * * @author Him188moe */ -@PacketId("08 25 31 0?") +@PacketId("08 25 31 01") class ServerTouchResponsePacket(inputStream: DataInputStream) : ServerPacket(inputStream) { var serverIP: String? = null diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLogin.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLogin.kt index b83597ad1..ccd4edbe1 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLogin.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLogin.kt @@ -101,7 +101,7 @@ private fun DataOutputStream.writePart1(qq: Long, password: String, loginTime: I this.writeHex("00 38")//length this.write(token0825)//length this.writeHex("03 0F")//tag - this.writeDeviceName(false) + this.writeDeviceName(true) this.writeHex("00 05 00 06 00 02") this.writeQQ(qq) diff --git a/mirai-native/pom.xml b/mirai-native/pom.xml deleted file mode 100644 index d708da28a..000000000 --- a/mirai-native/pom.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - mirai - net.mamoe - 1.0 - - 4.0.0 - - mirai-native - 1.0 - diff --git a/mirai-native/src/main/java/net/mamoe/mirai/util/TeaEncryption.java b/mirai-native/src/main/java/net/mamoe/mirai/util/TeaEncryption.java deleted file mode 100644 index d09be5855..000000000 --- a/mirai-native/src/main/java/net/mamoe/mirai/util/TeaEncryption.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.mamoe.mirai.util; - -/** - * @author Him188moe - */ -public final class TeaEncryption { - - public static native int Decrypt(); -} diff --git a/pom.xml b/pom.xml index b09b4bdbf..05635a905 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,6 @@ mirai-core - mirai-native mirai-ui mirai-console mirai-api