mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-12 14:00:12 +08:00
troop List
This commit is contained in:
parent
db7d0e8372
commit
7d1a6ef871
@ -95,12 +95,17 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
|||||||
|
|
||||||
//start updating friend/group list
|
//start updating friend/group list
|
||||||
bot.logger.info("Start updating friend/group list")
|
bot.logger.info("Start updating friend/group list")
|
||||||
|
/*
|
||||||
val data = FriendList.GetFriendGroupList(
|
val data = FriendList.GetFriendGroupList(
|
||||||
bot.client,
|
bot.client,
|
||||||
0,
|
0,
|
||||||
10,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
2
|
||||||
|
).sendAndExpect<FriendList.GetFriendGroupList.Response>()
|
||||||
|
*/
|
||||||
|
val data = FriendList.GetTroopList(
|
||||||
|
bot.client
|
||||||
).sendAndExpect<FriendList.GetFriendGroupList.Response>()
|
).sendAndExpect<FriendList.GetFriendGroupList.Response>()
|
||||||
println(data.contentToString())
|
println(data.contentToString())
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package net.mamoe.mirai.qqandroid.network.protocol.data.jce
|
||||||
|
|
||||||
|
import kotlinx.serialization.SerialId
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
import net.mamoe.mirai.qqandroid.io.JceStruct
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
internal class GetTroopListReqV2Simplify(
|
||||||
|
@SerialId(0) val uin: Long,
|
||||||
|
@SerialId(1) val getMSFMsgFlag: Byte? = null,
|
||||||
|
@SerialId(2) val vecCookies: ByteArray? = null,
|
||||||
|
@SerialId(3) val vecGroupInfo: List<stTroopNumSimplify>? = null,
|
||||||
|
@SerialId(4) val groupFlagExt: Byte? = null,
|
||||||
|
@SerialId(5) val shVersion: Int? = null,
|
||||||
|
@SerialId(6) val dwCompanyId: Long? = null,
|
||||||
|
@SerialId(7) val versionNum: Long? = null,
|
||||||
|
@SerialId(8) val getLongGroupName: Byte? = null
|
||||||
|
) : JceStruct
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
internal class stTroopNumSimplify(
|
||||||
|
@SerialId(0) val groupCode: Long,
|
||||||
|
@SerialId(1) val dwGroupInfoSeq: Long? = null,
|
||||||
|
@SerialId(2) val dwGroupFlagExt: Long? = null,
|
||||||
|
@SerialId(3) val dwGroupRankSeq: Long? = null
|
||||||
|
) : JceStruct
|
@ -66,7 +66,8 @@ internal object KnownPacketFactories : List<PacketFactory<*>> by mutableListOf(
|
|||||||
MessageSvc.PbGetMsg,
|
MessageSvc.PbGetMsg,
|
||||||
MessageSvc.PushForceOffline,
|
MessageSvc.PushForceOffline,
|
||||||
MessageSvc.PbSendMsg,
|
MessageSvc.PbSendMsg,
|
||||||
FriendList.GetFriendGroupList
|
FriendList.GetFriendGroupList,
|
||||||
|
FriendList.GetTroopList
|
||||||
) {
|
) {
|
||||||
// SvcReqMSFLoginNotify 自己的其他设备上限
|
// SvcReqMSFLoginNotify 自己的其他设备上限
|
||||||
// MessageSvc.PushReaded 电脑阅读了别人的消息, 告知手机
|
// MessageSvc.PushReaded 电脑阅读了别人的消息, 告知手机
|
||||||
|
@ -3,13 +3,11 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.list
|
|||||||
import kotlinx.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import net.mamoe.mirai.data.Packet
|
import net.mamoe.mirai.data.Packet
|
||||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||||
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
import net.mamoe.mirai.qqandroid.io.serialization.*
|
||||||
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.QQAndroidClient
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListReq
|
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListReq
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListResp
|
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetFriendListResp
|
||||||
|
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GetTroopListReqV2Simplify
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket
|
import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Vec0xd50
|
import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Vec0xd50
|
||||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
|
import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
|
||||||
@ -19,10 +17,55 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
|
|||||||
import net.mamoe.mirai.utils.cryptor.contentToString
|
import net.mamoe.mirai.utils.cryptor.contentToString
|
||||||
import net.mamoe.mirai.utils.io.debugPrint
|
import net.mamoe.mirai.utils.io.debugPrint
|
||||||
import net.mamoe.mirai.utils.io.discardExact
|
import net.mamoe.mirai.utils.io.discardExact
|
||||||
|
import net.mamoe.mirai.utils.io.readRemainingBytes
|
||||||
|
import net.mamoe.mirai.utils.io.toUHexString
|
||||||
|
|
||||||
|
|
||||||
internal class FriendList {
|
internal class FriendList {
|
||||||
|
|
||||||
|
internal object GetTroopList : PacketFactory<GetTroopList.Response>("friendlist.GetTroopListReqV2") {
|
||||||
|
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): GetTroopList.Response {
|
||||||
|
println("获取到了GetTroopList的回信")
|
||||||
|
println(this.readRemainingBytes().toUHexString())
|
||||||
|
return Response()
|
||||||
|
}
|
||||||
|
|
||||||
|
class Response : Packet {
|
||||||
|
override fun toString(): String = "FriendList.GetFriendGroupList.Response"
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun invoke(
|
||||||
|
client: QQAndroidClient
|
||||||
|
): OutgoingPacket {
|
||||||
|
return buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||||
|
writeJceStruct(
|
||||||
|
RequestPacket.serializer(),
|
||||||
|
RequestPacket(
|
||||||
|
sFuncName = "GetTroopListReqV2Simplify",
|
||||||
|
sServantName = "mqq.IMService.FriendListServiceServantObj",
|
||||||
|
iVersion = 3,
|
||||||
|
cPacketType = 0x00,
|
||||||
|
iMessageType = 0x00000,
|
||||||
|
iRequestId = 1921334513,
|
||||||
|
sBuffer = jceRequestSBuffer(
|
||||||
|
"GetTroopListReqV2Simplify",
|
||||||
|
GetTroopListReqV2Simplify.serializer(),
|
||||||
|
GetTroopListReqV2Simplify(
|
||||||
|
uin = client.uin,
|
||||||
|
getMSFMsgFlag = 0,
|
||||||
|
groupFlagExt = 1,
|
||||||
|
shVersion = 7,
|
||||||
|
dwCompanyId = 0,
|
||||||
|
versionNum = 1,
|
||||||
|
getLongGroupName = 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal object GetFriendGroupList : PacketFactory<GetFriendGroupList.Response>("friendlist.getFriendGroupList") {
|
internal object GetFriendGroupList : PacketFactory<GetFriendGroupList.Response>("friendlist.getFriendGroupList") {
|
||||||
|
|
||||||
class Response : Packet {
|
class Response : Packet {
|
||||||
@ -30,15 +73,9 @@ internal class FriendList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
||||||
|
this.discardExact(4)
|
||||||
println(this
|
val res = this.decodeUniPacket(GetFriendListResp.serializer())
|
||||||
.apply {
|
println(res.contentToString())
|
||||||
this.discardExact(4)
|
|
||||||
}
|
|
||||||
.decodeUniPacket(GetFriendListResp.serializer())
|
|
||||||
.contentToString()
|
|
||||||
)
|
|
||||||
|
|
||||||
return Response()
|
return Response()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,7 +110,7 @@ internal class FriendList {
|
|||||||
startIndex = friendListStartIndex.toShort(),
|
startIndex = friendListStartIndex.toShort(),
|
||||||
getfriendCount = friendListCount.toShort(),
|
getfriendCount = friendListCount.toShort(),
|
||||||
groupid = 0,
|
groupid = 0,
|
||||||
ifGetGroupInfo = if (friendListStartIndex <= 0) {
|
ifGetGroupInfo = if (groupListCount <= 0) {
|
||||||
0
|
0
|
||||||
} else {
|
} else {
|
||||||
1
|
1
|
||||||
|
Loading…
Reference in New Issue
Block a user