Commit dc6ee109 authored by Him188moe's avatar Him188moe

Message receiver is working!

parent 2e20d752
...@@ -6,6 +6,7 @@ import net.mamoe.mirai.event.MiraiEventManager ...@@ -6,6 +6,7 @@ import net.mamoe.mirai.event.MiraiEventManager
import net.mamoe.mirai.event.events.robot.RobotLoginSucceedEvent import net.mamoe.mirai.event.events.robot.RobotLoginSucceedEvent
import net.mamoe.mirai.network.packet.* import net.mamoe.mirai.network.packet.*
import net.mamoe.mirai.network.packet.login.* import net.mamoe.mirai.network.packet.login.*
import net.mamoe.mirai.network.packet.message.ClientSendFriendMessagePacket
import net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacket import net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacket
import net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacketEncrypted import net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacketEncrypted
import net.mamoe.mirai.task.MiraiThreadPool import net.mamoe.mirai.task.MiraiThreadPool
...@@ -230,6 +231,10 @@ class RobotNetworkHandler(val robot: Robot, val number: Int, private val passwor ...@@ -230,6 +231,10 @@ class RobotNetworkHandler(val robot: Robot, val number: Int, private val passwor
is ServerFriendMessageEventPacket -> { is ServerFriendMessageEventPacket -> {
println(packet.toString()) println(packet.toString())
if (packet.message == "牛逼") {
sendPacket(ClientSendFriendMessagePacket(this.number, packet.qq, this.sessionKey, "牛逼!!"))
}
//friend message //friend message
} }
......
...@@ -10,22 +10,24 @@ import net.mamoe.mirai.util.lazyEncode ...@@ -10,22 +10,24 @@ import net.mamoe.mirai.util.lazyEncode
@PacketId("00 CD") @PacketId("00 CD")
@ExperimentalUnsignedTypes @ExperimentalUnsignedTypes
class ClientSendFriendMessagePacket( class ClientSendFriendMessagePacket(
val qq: Int, val robotQQ: Int,
val targetQQ: Int,
val sessionKey: ByteArray, val sessionKey: ByteArray,
val message: String val message: String
) : ClientPacket() { ) : ClientPacket() {
override fun encode() { override fun encode() {
this.writeRandom(2)//part of packet id this.writeRandom(2)//part of packet id
this.writeQQ(qq) this.writeQQ(robotQQ)
this.writeHex(Protocol._fixVer) this.writeHex(Protocol._fixVer)
this.encryptAndWrite(sessionKey) { this.encryptAndWrite(sessionKey) {
it.writeQQ(qq) it.writeQQ(robotQQ)
it.writeQQ(qq)//that's correct it.writeQQ(targetQQ)
it.writeHex("00 00 00 08 00 01 00 04 00 00 00 00") it.writeHex("00 00 00 08 00 01 00 04 00 00 00 00")
it.writeHex("37 0F") it.writeHex("37 0F")
it.writeQQ(qq) it.writeQQ(robotQQ)
it.write(md5(lazyEncode { md5Key -> md5Key.writeQQ(qq); md5Key.write(sessionKey) })) it.writeQQ(targetQQ)
it.write(md5(lazyEncode { md5Key -> md5Key.writeQQ(targetQQ); md5Key.write(sessionKey) }))
it.writeHex("00 0B") it.writeHex("00 0B")
it.writeRandom(2) it.writeRandom(2)
it.writeInt(System.currentTimeMillis().toInt()) it.writeInt(System.currentTimeMillis().toInt())
...@@ -43,12 +45,13 @@ class ClientSendFriendMessagePacket( ...@@ -43,12 +45,13 @@ class ClientSendFriendMessagePacket(
TODO("复合消息构建") TODO("复合消息构建")
} else { } else {
//Plain text //Plain text
this.writeByte(0x01) val bytes = message.toByteArray()
this.writeInt(message.length + 3) it.writeByte(0x01)
this.writeByte(0x01) it.writeShort(bytes.size)
this.writeInt(message.length) it.writeByte(0x01)
this.write(message.toByteArray()) it.writeShort(bytes.size - 1)
} it.write(bytes)
}//todo check
} }
} }
} }
\ No newline at end of file
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