mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-12 10:40:21 +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 -> {
|
is ServerFriendMessageEventPacket -> {
|
||||||
|
println(packet.toString())
|
||||||
//friend message
|
//friend message
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,9 +201,9 @@ fun Int.toLByteArray(): ByteArray = byteArrayOf(
|
|||||||
@ExperimentalUnsignedTypes
|
@ExperimentalUnsignedTypes
|
||||||
fun Int.toHexString(separator: String = " "): String = this.toByteArray().toUByteArray().toUHexString(separator);
|
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
|
@ExperimentalUnsignedTypes
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
|
@ -11,7 +11,7 @@ import java.io.DataInputStream
|
|||||||
*/
|
*/
|
||||||
@PacketId("")//随后写入
|
@PacketId("")//随后写入
|
||||||
@ExperimentalUnsignedTypes
|
@ExperimentalUnsignedTypes
|
||||||
open class ClientMessageResponsePacket(
|
class ClientMessageResponsePacket(
|
||||||
private val qq: Int,
|
private val qq: Int,
|
||||||
private val packetIdFromServer: ByteArray,
|
private val packetIdFromServer: ByteArray,
|
||||||
private val sessionKey: ByteArray,
|
private val sessionKey: ByteArray,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.mamoe.mirai.network.packet
|
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.ByteArrayOutputStream
|
||||||
import java.io.DataInputStream
|
import java.io.DataInputStream
|
||||||
import java.util.zip.GZIPInputStream
|
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
|
package net.mamoe.mirai.network.packet.message
|
||||||
|
|
||||||
import net.mamoe.mirai.network.packet.ClientPacket
|
import net.mamoe.mirai.network.packet.ClientPacket
|
||||||
|
import net.mamoe.mirai.network.packet.PacketId
|
||||||
|
import net.mamoe.mirai.network.packet.encryptAndWrite
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Him188moe
|
* @author Him188moe
|
||||||
*/
|
*/
|
||||||
|
@PacketId("00 CD")
|
||||||
@ExperimentalUnsignedTypes
|
@ExperimentalUnsignedTypes
|
||||||
class ClientFriendMessagePacket(
|
class ClientSendGroupMessagePacket(
|
||||||
|
val group: Int,
|
||||||
val qq: Int,
|
val qq: Int,
|
||||||
val sessionKey: ByteArray,
|
val sessionKey: ByteArray,
|
||||||
val message: String
|
val message: String
|
||||||
) : ClientPacket() {
|
) : ClientPacket() {
|
||||||
override fun encode() {
|
override fun encode() {
|
||||||
|
TODO()
|
||||||
|
|
||||||
|
this.encryptAndWrite(sessionKey) {
|
||||||
|
// it.write()
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user