mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-07 21:12:25 +08:00
Message receiver is working!
This commit is contained in:
parent
680de13f82
commit
f61f738daf
@ -229,6 +229,7 @@ class RobotNetworkHandler(val robot: Robot, val number: Int, private val passwor
|
||||
|
||||
|
||||
is ServerFriendMessageEventPacket -> {
|
||||
println(packet.toString())
|
||||
//friend message
|
||||
}
|
||||
|
||||
|
@ -201,9 +201,9 @@ fun Int.toLByteArray(): ByteArray = byteArrayOf(
|
||||
@ExperimentalUnsignedTypes
|
||||
fun Int.toHexString(separator: String = " "): String = this.toByteArray().toUByteArray().toUHexString(separator);
|
||||
|
||||
private fun md5(str: String): ByteArray = MessageDigest.getInstance("MD5").digest(str.toByteArray())
|
||||
internal fun md5(str: String): ByteArray = MessageDigest.getInstance("MD5").digest(str.toByteArray())
|
||||
|
||||
private fun md5(byteArray: ByteArray): ByteArray = MessageDigest.getInstance("MD5").digest(byteArray)
|
||||
internal fun md5(byteArray: ByteArray): ByteArray = MessageDigest.getInstance("MD5").digest(byteArray)
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
@Throws(IOException::class)
|
||||
|
@ -11,7 +11,7 @@ import java.io.DataInputStream
|
||||
*/
|
||||
@PacketId("")//随后写入
|
||||
@ExperimentalUnsignedTypes
|
||||
open class ClientMessageResponsePacket(
|
||||
class ClientMessageResponsePacket(
|
||||
private val qq: Int,
|
||||
private val packetIdFromServer: ByteArray,
|
||||
private val sessionKey: ByteArray,
|
||||
|
@ -1,6 +1,6 @@
|
||||
package net.mamoe.mirai.network.packet
|
||||
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.util.toUHexString
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.DataInputStream
|
||||
import java.util.zip.GZIPInputStream
|
||||
@ -136,9 +136,6 @@ class ServerGroupMessageEventPacket(input: DataInputStream, packetId: ByteArray,
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MiraiLogger info this.toString()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,54 @@
|
||||
package net.mamoe.mirai.network.packet.message
|
||||
|
||||
import net.mamoe.mirai.network.Protocol
|
||||
import net.mamoe.mirai.network.packet.*
|
||||
import net.mamoe.mirai.util.lazyEncode
|
||||
|
||||
/**
|
||||
* @author Him188moe
|
||||
*/
|
||||
@PacketId("00 CD")
|
||||
@ExperimentalUnsignedTypes
|
||||
class ClientSendFriendMessagePacket(
|
||||
val qq: Int,
|
||||
val sessionKey: ByteArray,
|
||||
val message: String
|
||||
) : ClientPacket() {
|
||||
override fun encode() {
|
||||
this.writeRandom(2)//part of packet id
|
||||
this.writeQQ(qq)
|
||||
this.writeHex(Protocol._fixVer)
|
||||
|
||||
this.encryptAndWrite(sessionKey) {
|
||||
it.writeQQ(qq)
|
||||
it.writeQQ(qq)//that's correct
|
||||
it.writeHex("00 00 00 08 00 01 00 04 00 00 00 00")
|
||||
it.writeHex("37 0F")
|
||||
it.writeQQ(qq)
|
||||
it.write(md5(lazyEncode { md5Key -> md5Key.writeQQ(qq); md5Key.write(sessionKey) }))
|
||||
it.writeHex("00 0B")
|
||||
it.writeRandom(2)
|
||||
it.writeInt(System.currentTimeMillis().toInt())
|
||||
it.writeHex("00 00 00 00 00 00 01 00 00 00 01 4D 53 47 00 00 00 00 00")
|
||||
it.writeInt(System.currentTimeMillis().toInt())
|
||||
it.writeRandom(4)
|
||||
it.writeHex("00 00 00 00 09 00 86 00 00 0C E5 BE AE E8 BD AF E9 9B 85 E9 BB 91")
|
||||
it.writeZero(2)
|
||||
|
||||
if ("[face" in message
|
||||
|| ".gif]" in message
|
||||
|| ".jpg]" in message
|
||||
|| ".png]" in message
|
||||
) {
|
||||
TODO("复合消息构建")
|
||||
} else {
|
||||
//Plain text
|
||||
this.writeByte(0x01)
|
||||
this.writeInt(message.length + 3)
|
||||
this.writeByte(0x01)
|
||||
this.writeInt(message.length)
|
||||
this.write(message.toByteArray())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,17 +1,26 @@
|
||||
package net.mamoe.mirai.network.packet.message
|
||||
|
||||
import net.mamoe.mirai.network.packet.ClientPacket
|
||||
import net.mamoe.mirai.network.packet.PacketId
|
||||
import net.mamoe.mirai.network.packet.encryptAndWrite
|
||||
|
||||
/**
|
||||
* @author Him188moe
|
||||
*/
|
||||
@PacketId("00 CD")
|
||||
@ExperimentalUnsignedTypes
|
||||
class ClientFriendMessagePacket(
|
||||
class ClientSendGroupMessagePacket(
|
||||
val group: Int,
|
||||
val qq: Int,
|
||||
val sessionKey: ByteArray,
|
||||
val message: String
|
||||
) : ClientPacket() {
|
||||
override fun encode() {
|
||||
TODO()
|
||||
|
||||
this.encryptAndWrite(sessionKey) {
|
||||
// it.write()
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user