From 828332b7d9ad4ebfb0855cd40caf139b23d9b0e7 Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Thu, 20 Feb 2020 21:31:09 +0800
Subject: [PATCH] Fix `At`, close #73

---
 .../mamoe/mirai/qqandroid/message/MessageQQA.kt | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/MessageQQA.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/MessageQQA.kt
index ef297c3b4..5d0068691 100644
--- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/MessageQQA.kt
+++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/MessageQQA.kt
@@ -9,6 +9,8 @@
 
 package net.mamoe.mirai.qqandroid.message
 
+import kotlinx.io.core.buildPacket
+import kotlinx.io.core.readBytes
 import kotlinx.io.core.readUInt
 import net.mamoe.mirai.message.data.*
 import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody
@@ -20,13 +22,18 @@ import net.mamoe.mirai.utils.io.hexToBytes
 import net.mamoe.mirai.utils.io.read
 import net.mamoe.mirai.utils.io.toByteArray
 
-private val AT_BUF_1 = byteArrayOf(0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00) // groupCard = 0x07; nick = 0x0A
-private val AT_BUF_2 = ByteArray(2)
-
 internal fun At.toJceData(): ImMsgBody.Text {
+    val text = this.toString()
     return ImMsgBody.Text(
-        str = this.toString(),
-        attr6Buf = AT_BUF_1 + this.target.toInt().toByteArray() + AT_BUF_2
+        str = text,
+        attr6Buf = buildPacket {
+            writeShort(1)
+            writeShort(0)
+            writeShort(text.length.toShort())
+            writeByte(1)
+            writeInt(target.toInt())
+            writeShort(0)
+        }.readBytes()
     )
 }