mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-10 20:20:08 +08:00
Fix sync cookie
This commit is contained in:
parent
18cf5621d0
commit
dc0df986ba
@ -108,7 +108,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
||||
*/
|
||||
val data = FriendList.GetTroopList(
|
||||
bot.client
|
||||
).sendAndExpect<FriendList.GetFriendGroupList.Response>()
|
||||
).sendAndExpect<FriendList.GetTroopList.Response>()
|
||||
println(data.contentToString())
|
||||
}
|
||||
|
||||
|
@ -111,7 +111,7 @@ internal open class QQAndroidClient(
|
||||
val protocolVersion: Short = 8001
|
||||
|
||||
class C2cMessageSyncData {
|
||||
var syncCookie = EMPTY_BYTE_ARRAY
|
||||
var syncCookie: ByteArray? = null
|
||||
var pubAccountCookie = EMPTY_BYTE_ARRAY
|
||||
var syncFlag: Int = 0
|
||||
var msgCtrlBuf: ByteArray = EMPTY_BYTE_ARRAY
|
||||
|
@ -0,0 +1,16 @@
|
||||
package net.mamoe.mirai.qqandroid.network.protocol.data.proto
|
||||
|
||||
import kotlinx.serialization.SerialId
|
||||
import kotlinx.serialization.Serializable
|
||||
import net.mamoe.mirai.qqandroid.io.ProtoBuf
|
||||
|
||||
@Serializable
|
||||
class SyncCookie(
|
||||
@SerialId(2) val time: Long,
|
||||
@SerialId(3) val unknown1: Long = 2994099792,
|
||||
@SerialId(4) val unknown2: Long = 3497826378,
|
||||
@SerialId(5) val const1: Long = 1680172298,
|
||||
@SerialId(6) val const2: Long = 2424173273,
|
||||
@SerialId(7) val unknown3: Long = 83,
|
||||
@SerialId(8) val unknown4: Long = 0
|
||||
) : ProtoBuf
|
@ -10,6 +10,7 @@ import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||
import net.mamoe.mirai.qqandroid.event.ForceOfflineEvent
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.readRemainingAsProtoBuf
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.toByteArray
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.writeProtoBuf
|
||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushForceOffline
|
||||
@ -17,6 +18,7 @@ import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushNotify
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.SyncCookie
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
|
||||
@ -41,7 +43,7 @@ internal class MessageSvc {
|
||||
|
||||
override suspend fun QQAndroidBot.handle(packet: RequestPushNotify) {
|
||||
network.run {
|
||||
PbGetMsg(client, packet).sendAndExpect<MultiPacket<FriendMessage>>()
|
||||
PbGetMsg(client, packet.stMsgInfo?.uMsgTime ?: 0).sendAndExpect<MultiPacket<FriendMessage>>()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -56,7 +58,7 @@ internal class MessageSvc {
|
||||
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient,
|
||||
from: RequestPushNotify
|
||||
msgTime: Long //PbPushMsg.msg.msgHead.msgTime
|
||||
): OutgoingPacket = buildOutgoingUniPacket(
|
||||
client,
|
||||
extraData = EXTRA_DATA.toReadPacket()
|
||||
@ -64,14 +66,16 @@ internal class MessageSvc {
|
||||
writeProtoBuf(
|
||||
MsgSvc.PbGetMsgReq.serializer(),
|
||||
MsgSvc.PbGetMsgReq(
|
||||
msgReqType = from.ctype.toInt(),
|
||||
msgReqType = 1, // from.ctype.toInt()
|
||||
contextFlag = 1,
|
||||
rambleFlag = 0,
|
||||
latestRambleNumber = 20,
|
||||
otherRambleNumber = 3,
|
||||
onlineSyncFlag = 1,
|
||||
whisperSessionId = 0,
|
||||
// serverBuf = from.serverBuf ?: EMPTY_BYTE_ARRAY,
|
||||
syncCookie = client.c2cMessageSync.syncCookie,
|
||||
syncCookie = client.c2cMessageSync.syncCookie
|
||||
?: SyncCookie(msgTime).toByteArray(SyncCookie.serializer()).also { client.c2cMessageSync.syncCookie = it },
|
||||
syncFlag = 1
|
||||
// syncFlag = client.c2cMessageSync.syncFlag,
|
||||
//msgCtrlBuf = client.c2cMessageSync.msgCtrlBuf,
|
||||
|
@ -3,7 +3,10 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.list
|
||||
import kotlinx.io.core.ByteReadPacket
|
||||
import net.mamoe.mirai.data.Packet
|
||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.*
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.jceRequestSBuffer
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.toByteArray
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.writeJceStruct
|
||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListReq
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListResp
|
||||
@ -15,7 +18,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.utils.cryptor.contentToString
|
||||
import net.mamoe.mirai.utils.io.debugPrint
|
||||
import net.mamoe.mirai.utils.io.discardExact
|
||||
import net.mamoe.mirai.utils.io.readRemainingBytes
|
||||
import net.mamoe.mirai.utils.io.toUHexString
|
||||
@ -24,7 +26,7 @@ import net.mamoe.mirai.utils.io.toUHexString
|
||||
internal class FriendList {
|
||||
|
||||
internal object GetTroopList : PacketFactory<GetTroopList.Response>("friendlist.GetTroopListReqV2") {
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): GetTroopList.Response {
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
||||
println("获取到了GetTroopList的回信")
|
||||
println(this.readRemainingBytes().toUHexString())
|
||||
return Response()
|
||||
|
Loading…
Reference in New Issue
Block a user