mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-10 11:16:58 +08:00
Prefer generified outgoing packets in all factories
This commit is contained in:
parent
82ad953b2b
commit
0443fe4576
@ -31,7 +31,6 @@ import net.mamoe.mirai.internal.contact.info.MemberInfoImpl
|
||||
import net.mamoe.mirai.internal.message.*
|
||||
import net.mamoe.mirai.internal.message.DeepMessageRefiner.refineDeep
|
||||
import net.mamoe.mirai.internal.network.highway.*
|
||||
import net.mamoe.mirai.internal.network.protocol
|
||||
import net.mamoe.mirai.internal.network.protocol.data.jce.SvcDevLoginInfo
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.LongMsg
|
||||
@ -861,8 +860,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
||||
dstUin: Long
|
||||
): String {
|
||||
bot.asQQAndroidBot().network.run {
|
||||
val response: PttStore.GroupPttDown.Response.DownLoadInfo =
|
||||
PttStore.GroupPttDown(bot.client, groupId, dstUin, md5).sendAndExpect()
|
||||
val response = PttStore.GroupPttDown(bot.client, groupId, dstUin, md5).sendAndExpect()
|
||||
return "http://${response.strDomain}${response.downPara.encodeToString()}"
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MsgTransmit
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MultiMsg
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.internal.utils._miraiContentToString
|
||||
@ -134,7 +133,7 @@ internal class MultiMsg {
|
||||
client: QQAndroidClient,
|
||||
messageData: MessageValidationData,
|
||||
dstUin: Long // group uin
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
MultiMsg.ReqBody.serializer(),
|
||||
MultiMsg.ReqBody(
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
@ -38,42 +38,38 @@ internal object NudgePacket : OutgoingPacketFactory<NudgePacket.Response>("OidbS
|
||||
client: QQAndroidClient,
|
||||
nudgeTargetId: Long,
|
||||
messageReceiverUin: Long,
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
command = 3795,
|
||||
serviceType = 1,
|
||||
result = 0,
|
||||
bodybuffer = Cmd0xed3.ReqBody(
|
||||
toUin = nudgeTargetId,
|
||||
aioUin = messageReceiverUin
|
||||
).toByteArray(Cmd0xed3.ReqBody.serializer())
|
||||
)
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
command = 3795,
|
||||
serviceType = 1,
|
||||
result = 0,
|
||||
bodybuffer = Cmd0xed3.ReqBody(
|
||||
toUin = nudgeTargetId,
|
||||
aioUin = messageReceiverUin
|
||||
).toByteArray(Cmd0xed3.ReqBody.serializer())
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun troopInvoke(
|
||||
client: QQAndroidClient,
|
||||
messageReceiverGroupCode: Long,
|
||||
nudgeTargetId: Long,
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
command = 3795,
|
||||
serviceType = 1,
|
||||
result = 0,
|
||||
bodybuffer = Cmd0xed3.ReqBody(
|
||||
toUin = nudgeTargetId,
|
||||
groupCode = messageReceiverGroupCode
|
||||
).toByteArray(Cmd0xed3.ReqBody.serializer())
|
||||
)
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
command = 3795,
|
||||
serviceType = 1,
|
||||
result = 0,
|
||||
bodybuffer = Cmd0xed3.ReqBody(
|
||||
toUin = nudgeTargetId,
|
||||
groupCode = messageReceiverGroupCode
|
||||
).toByteArray(Cmd0xed3.ReqBody.serializer())
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
}
|
@ -17,7 +17,6 @@ import net.mamoe.mirai.internal.network.Packet
|
||||
import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MsgRevokeUserDef
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MsgSvc
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketWithRespType
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
@ -87,7 +86,7 @@ internal class PbMessageSvc {
|
||||
messageSequenceId: IntArray, // 56639
|
||||
messageRandom: IntArray, // 921878719
|
||||
time: Int
|
||||
): OutgoingPacket {
|
||||
): OutgoingPacketWithRespType<Response> {
|
||||
require(messageSequenceId.size == messageRandom.size)
|
||||
|
||||
return buildOutgoingUniPacket(client) {
|
||||
@ -126,7 +125,7 @@ internal class PbMessageSvc {
|
||||
messageSequenceId: IntArray, // 56639
|
||||
messageRandom: IntArray, // 921878719
|
||||
time: Int
|
||||
): OutgoingPacket {
|
||||
): OutgoingPacketWithRespType<Response> {
|
||||
require(messageSequenceId.size == messageRandom.size)
|
||||
|
||||
return buildOutgoingUniPacket(client) {
|
||||
|
@ -13,18 +13,14 @@ import kotlinx.io.core.ByteReadPacket
|
||||
import net.mamoe.mirai.internal.QQAndroidBot
|
||||
import net.mamoe.mirai.internal.network.Packet
|
||||
import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Oidb0x496
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Oidb0xeac
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.OidbSso
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketWithRespType
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.internal.utils._miraiContentToString
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.toByteArray
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
|
||||
/**
|
||||
* 群精华消息管理
|
||||
@ -34,30 +30,26 @@ import net.mamoe.mirai.utils.MiraiLogger
|
||||
internal class TroopEssenceMsgManager {
|
||||
internal object SetEssence : OutgoingPacketFactory<SetEssence.Response>("OidbSvc.0xeac_1") {
|
||||
|
||||
internal data class Response(val success: Boolean, val msg: String?) : Packet {
|
||||
|
||||
}
|
||||
internal data class Response(val success: Boolean, val msg: String?) : Packet
|
||||
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient,
|
||||
troopUin: Long,
|
||||
msg_random: Int,
|
||||
msg_seq: Int
|
||||
): OutgoingPacketWithRespType<Response> {
|
||||
return buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(), OidbSso.OIDBSSOPkg(
|
||||
command = 3756,
|
||||
result = 0,
|
||||
serviceType = 1,
|
||||
bodybuffer = Oidb0xeac.ReqBody(
|
||||
groupCode = troopUin,
|
||||
msgSeq = msg_seq.and(-1),
|
||||
msgRandom = msg_random
|
||||
).toByteArray(Oidb0xeac.ReqBody.serializer()),
|
||||
)
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(), OidbSso.OIDBSSOPkg(
|
||||
command = 3756,
|
||||
result = 0,
|
||||
serviceType = 1,
|
||||
bodybuffer = Oidb0xeac.ReqBody(
|
||||
groupCode = troopUin,
|
||||
msgSeq = msg_seq.and(-1),
|
||||
msgRandom = msg_random
|
||||
).toByteArray(Oidb0xeac.ReqBody.serializer()),
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
||||
|
@ -137,7 +137,7 @@ internal class TroopManagement {
|
||||
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(), OidbSso.OIDBSSOPkg(
|
||||
command = 1174,
|
||||
@ -193,7 +193,7 @@ internal class TroopManagement {
|
||||
client: QQAndroidClient,
|
||||
member: Member,
|
||||
message: String
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
@ -224,7 +224,7 @@ internal class TroopManagement {
|
||||
client: QQAndroidClient,
|
||||
groupCode: Long,
|
||||
switch: Boolean
|
||||
): OutgoingPacket = impl(client, groupCode) {
|
||||
) = impl(client, groupCode) {
|
||||
shutupTime = if (switch) 0x0FFFFFFF else 0
|
||||
}
|
||||
|
||||
@ -252,7 +252,7 @@ internal class TroopManagement {
|
||||
client: QQAndroidClient,
|
||||
groupCode: Long,
|
||||
switch: Boolean
|
||||
): OutgoingPacket = impl(client, groupCode) {
|
||||
) = impl(client, groupCode) {
|
||||
groupFlagext3 = if (switch) 0x00100000 else 0x00000000//暂时无效
|
||||
}
|
||||
|
||||
@ -260,7 +260,7 @@ internal class TroopManagement {
|
||||
client: QQAndroidClient,
|
||||
groupCode: Long,
|
||||
newName: String
|
||||
): OutgoingPacket = impl(client, groupCode) {
|
||||
) = impl(client, groupCode) {
|
||||
ingGroupName = newName.toByteArray()
|
||||
}
|
||||
|
||||
@ -268,7 +268,7 @@ internal class TroopManagement {
|
||||
client: QQAndroidClient,
|
||||
groupCode: Long,
|
||||
newMemo: String
|
||||
): OutgoingPacket = impl(client, groupCode) {
|
||||
) = impl(client, groupCode) {
|
||||
ingGroupMemo = newMemo.toByteArray()
|
||||
}
|
||||
|
||||
@ -276,7 +276,7 @@ internal class TroopManagement {
|
||||
client: QQAndroidClient,
|
||||
groupCode: Long,
|
||||
switch: Boolean
|
||||
): OutgoingPacket = impl(client, groupCode) {
|
||||
) = impl(client, groupCode) {
|
||||
allowMemberInvite = if (switch) 1 else 0
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,6 @@ import net.mamoe.mirai.internal.QQAndroidBot
|
||||
import net.mamoe.mirai.internal.network.Packet
|
||||
import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0x388
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf
|
||||
@ -49,7 +48,7 @@ internal class ImgStore {
|
||||
buType: Int = 2,
|
||||
appPicType: Int = 1006,
|
||||
originalPic: Int = 0
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
Cmd0x388.ReqBody.serializer(),
|
||||
Cmd0x388.ReqBody(
|
||||
|
@ -69,9 +69,7 @@ internal object MessageSvcPbGetMsg : OutgoingPacketFactory<MessageSvcPbGetMsg.Re
|
||||
client: QQAndroidClient,
|
||||
syncFlag: MsgSvc.SyncFlag = MsgSvc.SyncFlag.START,
|
||||
syncCookie: ByteArray?, //PbPushMsg.msg.msgHead.msgTime
|
||||
) = buildOutgoingUniPacket(
|
||||
client
|
||||
) {
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
//println("syncCookie=${client.c2cMessageSync.syncCookie?.toUHexString()}")
|
||||
writeProtoBuf(
|
||||
MsgSvc.PbGetMsgReq.serializer(),
|
||||
|
@ -301,7 +301,7 @@ internal object MessageSvcPbSendMsg : OutgoingPacketFactory<MessageSvcPbSendMsg.
|
||||
targetMember: Member,
|
||||
message: MessageChain,
|
||||
source: OnlineMessageSourceToTempImpl
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
MsgSvc.PbSendMsgReq.serializer(), MsgSvc.PbSendMsgReq(
|
||||
routingHead = MsgSvc.RoutingHead(
|
||||
|
@ -14,7 +14,6 @@ import net.mamoe.mirai.internal.QQAndroidBot
|
||||
import net.mamoe.mirai.internal.network.Packet
|
||||
import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0x388
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketWithRespType
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
@ -128,7 +127,7 @@ internal class PttStore {
|
||||
|
||||
}
|
||||
|
||||
object GroupPttDown : OutgoingPacketFactory<GroupPttDown.Response>("PttStore.GroupPttDown") {
|
||||
object GroupPttDown : OutgoingPacketFactory<GroupPttDown.Response.DownLoadInfo>("PttStore.GroupPttDown") {
|
||||
|
||||
sealed class Response : Packet {
|
||||
class DownLoadInfo(
|
||||
@ -152,7 +151,7 @@ internal class PttStore {
|
||||
dstUin: Long,
|
||||
md5: ByteArray
|
||||
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
Cmd0x388.ReqBody.serializer(), Cmd0x388.ReqBody(
|
||||
netType = 3, // wifi
|
||||
@ -174,7 +173,7 @@ internal class PttStore {
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response.DownLoadInfo {
|
||||
val resp0 = readProtoBuf(Cmd0x388.RspBody.serializer())
|
||||
val resp =
|
||||
resp0.msgGetpttUrlRsp.firstOrNull() ?: error("cannot find `msgGetpttUrlRsp` from `Cmd0x388.RspBody`")
|
||||
|
@ -18,7 +18,6 @@ import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.data.jce.*
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Vec0xd50
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Vec0xd6b
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.jceRequestSBuffer
|
||||
@ -45,30 +44,28 @@ internal class FriendList {
|
||||
targetGroupUin: Long,
|
||||
targetGroupCode: Long,
|
||||
nextUin: Long = 0
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "GetTroopMemberListReq",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
requestId = client.nextRequestPacketRequestId(),
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"GTML",
|
||||
GetTroopMemberListReq.serializer(),
|
||||
GetTroopMemberListReq(
|
||||
uin = client.uin,
|
||||
groupCode = targetGroupCode,
|
||||
groupUin = targetGroupUin,
|
||||
nextUin = nextUin,
|
||||
reqType = 0,
|
||||
version = 2
|
||||
)
|
||||
) = buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "GetTroopMemberListReq",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
requestId = client.nextRequestPacketRequestId(),
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"GTML",
|
||||
GetTroopMemberListReq.serializer(),
|
||||
GetTroopMemberListReq(
|
||||
uin = client.uin,
|
||||
groupCode = targetGroupCode,
|
||||
groupUin = targetGroupUin,
|
||||
nextUin = nextUin,
|
||||
reqType = 0,
|
||||
version = 2
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
class Response(
|
||||
@ -95,33 +92,31 @@ internal class FriendList {
|
||||
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "GetTroopListReqV2Simplify",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
cPacketType = 0x00,
|
||||
requestId = client.nextRequestPacketRequestId(),
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"GetTroopListReqV2Simplify",
|
||||
GetTroopListReqV2Simplify.serializer(),
|
||||
GetTroopListReqV2Simplify(
|
||||
uin = client.uin,
|
||||
getMSFMsgFlag = 0,
|
||||
groupFlagExt = 1,
|
||||
shVersion = 7,
|
||||
dwCompanyId = 0,
|
||||
versionNum = 1,
|
||||
vecGroupInfo = listOf(),
|
||||
getLongGroupName = 1
|
||||
)
|
||||
) = buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "GetTroopListReqV2Simplify",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
cPacketType = 0x00,
|
||||
requestId = client.nextRequestPacketRequestId(),
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"GetTroopListReqV2Simplify",
|
||||
GetTroopListReqV2Simplify.serializer(),
|
||||
GetTroopListReqV2Simplify(
|
||||
uin = client.uin,
|
||||
getMSFMsgFlag = 0,
|
||||
groupFlagExt = 1,
|
||||
shVersion = 7,
|
||||
dwCompanyId = 0,
|
||||
versionNum = 1,
|
||||
vecGroupInfo = listOf(),
|
||||
getLongGroupName = 1
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ -140,27 +135,25 @@ internal class FriendList {
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient,
|
||||
friend: Friend
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "DelFriendReq",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"DF",
|
||||
DelFriendReq.serializer(),
|
||||
DelFriendReq(
|
||||
uin = client.uin,
|
||||
delType = 2,
|
||||
delUin = friend.uin,
|
||||
version = 1
|
||||
)
|
||||
) = buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "DelFriendReq",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"DF",
|
||||
DelFriendReq.serializer(),
|
||||
DelFriendReq(
|
||||
uin = client.uin,
|
||||
delType = 2,
|
||||
delUin = friend.uin,
|
||||
version = 1
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ -191,49 +184,47 @@ internal class FriendList {
|
||||
fun forSingleFriend(
|
||||
client: QQAndroidClient,
|
||||
uin: Long
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "GetFriendListReq",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
cPacketType = 0x003,
|
||||
requestId = client.nextRequestPacketRequestId(),
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"FL",
|
||||
GetFriendListReq.serializer(),
|
||||
GetFriendListReq(
|
||||
reqtype = 3,
|
||||
ifGetGroupInfo = 0,
|
||||
ifReflush = 1,
|
||||
uin = client.uin,
|
||||
startIndex = 0,
|
||||
groupstartIndex = 0,
|
||||
getgroupCount = 0,
|
||||
ifShowTermType = 1,
|
||||
version = 27L,
|
||||
getfriendCount = 0,
|
||||
ifGetMSFGroup = 0,
|
||||
eAppType = 0,
|
||||
groupid = 0,
|
||||
ifGetBothFlag = 0,
|
||||
ifGetDOVId = 0,
|
||||
uinList = listOf(uin),
|
||||
vec0xd6bReq = Vec0xd6b.ReqBody().toByteArray(Vec0xd6b.ReqBody.serializer()),
|
||||
vec0xd50Req = Vec0xd50.ReqBody(
|
||||
appid = 10002L,
|
||||
reqKsingSwitch = 1,
|
||||
reqMusicSwitch = 1,
|
||||
reqMutualmarkLbsshare = 1,
|
||||
reqMutualmarkAlienation = 1
|
||||
).toByteArray(Vec0xd50.ReqBody.serializer())
|
||||
)
|
||||
) = buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "GetFriendListReq",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
cPacketType = 0x003,
|
||||
requestId = client.nextRequestPacketRequestId(),
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"FL",
|
||||
GetFriendListReq.serializer(),
|
||||
GetFriendListReq(
|
||||
reqtype = 3,
|
||||
ifGetGroupInfo = 0,
|
||||
ifReflush = 1,
|
||||
uin = client.uin,
|
||||
startIndex = 0,
|
||||
groupstartIndex = 0,
|
||||
getgroupCount = 0,
|
||||
ifShowTermType = 1,
|
||||
version = 27L,
|
||||
getfriendCount = 0,
|
||||
ifGetMSFGroup = 0,
|
||||
eAppType = 0,
|
||||
groupid = 0,
|
||||
ifGetBothFlag = 0,
|
||||
ifGetDOVId = 0,
|
||||
uinList = listOf(uin),
|
||||
vec0xd6bReq = Vec0xd6b.ReqBody().toByteArray(Vec0xd6b.ReqBody.serializer()),
|
||||
vec0xd50Req = Vec0xd50.ReqBody(
|
||||
appid = 10002L,
|
||||
reqKsingSwitch = 1,
|
||||
reqMusicSwitch = 1,
|
||||
reqMutualmarkLbsshare = 1,
|
||||
reqMutualmarkAlienation = 1
|
||||
).toByteArray(Vec0xd50.ReqBody.serializer())
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
operator fun invoke(
|
||||
@ -242,58 +233,56 @@ internal class FriendList {
|
||||
friendListCount: Int,
|
||||
groupListStartIndex: Int,
|
||||
groupListCount: Int
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "GetFriendListReq",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
cPacketType = 0x003,
|
||||
requestId = client.nextRequestPacketRequestId(),
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"FL",
|
||||
GetFriendListReq.serializer(),
|
||||
GetFriendListReq(
|
||||
reqtype = 3,
|
||||
ifReflush = if (friendListStartIndex <= 0) {
|
||||
0
|
||||
} else {
|
||||
1
|
||||
},
|
||||
uin = client.uin,
|
||||
startIndex = friendListStartIndex.toShort(),
|
||||
getfriendCount = friendListCount.toShort(),
|
||||
groupid = 0,
|
||||
ifGetGroupInfo = if (groupListCount <= 0) {
|
||||
0
|
||||
} else {
|
||||
1
|
||||
},
|
||||
groupstartIndex = groupListStartIndex.toByte(),
|
||||
getgroupCount = groupListCount.toByte(),
|
||||
ifGetMSFGroup = 0,
|
||||
ifShowTermType = 1,
|
||||
version = 27L,
|
||||
uinList = null,
|
||||
eAppType = 0,
|
||||
ifGetBothFlag = 0,
|
||||
ifGetDOVId = 0,
|
||||
vec0xd6bReq = EMPTY_BYTE_ARRAY,
|
||||
vec0xd50Req = Vec0xd50.ReqBody(
|
||||
appid = 10002L,
|
||||
reqKsingSwitch = 1,
|
||||
reqMusicSwitch = 1,
|
||||
reqMutualmarkLbsshare = 1,
|
||||
reqMutualmarkAlienation = 1
|
||||
).toByteArray(Vec0xd50.ReqBody.serializer()),
|
||||
vecSnsTypelist = listOf(13580L, 13581L, 13582L)
|
||||
)
|
||||
) = buildOutgoingUniPacket(client, bodyType = 1, key = client.wLoginSigInfo.d2Key) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
funcName = "GetFriendListReq",
|
||||
servantName = "mqq.IMService.FriendListServiceServantObj",
|
||||
version = 3,
|
||||
cPacketType = 0x003,
|
||||
requestId = client.nextRequestPacketRequestId(),
|
||||
sBuffer = jceRequestSBuffer(
|
||||
"FL",
|
||||
GetFriendListReq.serializer(),
|
||||
GetFriendListReq(
|
||||
reqtype = 3,
|
||||
ifReflush = if (friendListStartIndex <= 0) {
|
||||
0
|
||||
} else {
|
||||
1
|
||||
},
|
||||
uin = client.uin,
|
||||
startIndex = friendListStartIndex.toShort(),
|
||||
getfriendCount = friendListCount.toShort(),
|
||||
groupid = 0,
|
||||
ifGetGroupInfo = if (groupListCount <= 0) {
|
||||
0
|
||||
} else {
|
||||
1
|
||||
},
|
||||
groupstartIndex = groupListStartIndex.toByte(),
|
||||
getgroupCount = groupListCount.toByte(),
|
||||
ifGetMSFGroup = 0,
|
||||
ifShowTermType = 1,
|
||||
version = 27L,
|
||||
uinList = null,
|
||||
eAppType = 0,
|
||||
ifGetBothFlag = 0,
|
||||
ifGetDOVId = 0,
|
||||
vec0xd6bReq = EMPTY_BYTE_ARRAY,
|
||||
vec0xd50Req = Vec0xd50.ReqBody(
|
||||
appid = 10002L,
|
||||
reqKsingSwitch = 1,
|
||||
reqMusicSwitch = 1,
|
||||
reqMutualmarkLbsshare = 1,
|
||||
reqMutualmarkAlienation = 1
|
||||
).toByteArray(Vec0xd50.ReqBody.serializer()),
|
||||
vecSnsTypelist = listOf(13580L, 13581L, 13582L)
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
@ -16,7 +16,6 @@ import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.data.jce.GroupMngReqJce
|
||||
import net.mamoe.mirai.internal.network.protocol.data.jce.GroupMngRes
|
||||
import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.jceRequestSBuffer
|
||||
@ -36,7 +35,7 @@ internal class ProfileService {
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient,
|
||||
groupCode: Long
|
||||
): OutgoingPacket = buildOutgoingUniPacket(client) {
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeJceStruct(
|
||||
RequestPacket.serializer(),
|
||||
RequestPacket(
|
||||
|
@ -11,7 +11,6 @@ package net.mamoe.mirai.internal.network.protocol.packet.list
|
||||
|
||||
import kotlinx.io.core.ByteReadPacket
|
||||
import net.mamoe.mirai.contact.Stranger
|
||||
import net.mamoe.mirai.event.broadcast
|
||||
import net.mamoe.mirai.event.events.StrangerRelationChangeEvent
|
||||
import net.mamoe.mirai.internal.QQAndroidBot
|
||||
import net.mamoe.mirai.internal.network.Packet
|
||||
@ -19,7 +18,6 @@ import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Oidb0x5d2
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Oidb0x5d4
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.OidbSso
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.internal.utils.broadcastWithBot
|
||||
@ -39,22 +37,20 @@ internal class StrangerList {
|
||||
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient,
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
command = 1490,
|
||||
serviceType = 0,
|
||||
bodybuffer = Oidb0x5d2.ReqBody(
|
||||
subCmd = 1,
|
||||
reqGetList = Oidb0x5d2.ReqGetList(
|
||||
seq = client.strangerSeq
|
||||
)
|
||||
).toByteArray(Oidb0x5d2.ReqBody.serializer())
|
||||
)
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
command = 1490,
|
||||
serviceType = 0,
|
||||
bodybuffer = Oidb0x5d2.ReqBody(
|
||||
subCmd = 1,
|
||||
reqGetList = Oidb0x5d2.ReqGetList(
|
||||
seq = client.strangerSeq
|
||||
)
|
||||
).toByteArray(Oidb0x5d2.ReqBody.serializer())
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
||||
@ -80,20 +76,18 @@ internal class StrangerList {
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient,
|
||||
stranger: Stranger
|
||||
): OutgoingPacket {
|
||||
return buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
command = 1492,
|
||||
serviceType = 0,
|
||||
result = 0,
|
||||
bodybuffer = Oidb0x5d4.ReqBody(
|
||||
uinList = listOf(stranger.id)
|
||||
).toByteArray(Oidb0x5d4.ReqBody.serializer())
|
||||
)
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
OidbSso.OIDBSSOPkg(
|
||||
command = 1492,
|
||||
serviceType = 0,
|
||||
result = 0,
|
||||
bodybuffer = Oidb0x5d4.ReqBody(
|
||||
uinList = listOf(stranger.id)
|
||||
).toByteArray(Oidb0x5d4.ReqBody.serializer())
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
||||
|
@ -13,7 +13,10 @@ import kotlinx.io.core.ByteReadPacket
|
||||
import net.mamoe.mirai.internal.QQAndroidBot
|
||||
import net.mamoe.mirai.internal.network.Packet
|
||||
import net.mamoe.mirai.internal.network.QQAndroidClient
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.*
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.NO_ENCRYPT
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildLoginOutgoingPacket
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.writeSsoPacket
|
||||
import net.mamoe.mirai.internal.network.subAppId
|
||||
|
||||
internal class Heartbeat {
|
||||
@ -25,7 +28,7 @@ internal class Heartbeat {
|
||||
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient
|
||||
): OutgoingPacket = buildLoginOutgoingPacket(client, 0, key = NO_ENCRYPT) {
|
||||
) = buildLoginOutgoingPacket(client, 0, key = NO_ENCRYPT) {
|
||||
writeSsoPacket(client, client.subAppId, commandName, sequenceId = it) {
|
||||
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ internal class StatSvc {
|
||||
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient
|
||||
): OutgoingPacket = buildLoginOutgoingPacket(client, 1) {
|
||||
) = buildLoginOutgoingPacket(client, 1) {
|
||||
writeProtoBuf(
|
||||
StatSvcGetOnline.ReqBody.serializer(), StatSvcGetOnline.ReqBody(
|
||||
uin = client.uin,
|
||||
@ -100,7 +100,7 @@ internal class StatSvc {
|
||||
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient
|
||||
): OutgoingPacket = buildLoginOutgoingPacket(
|
||||
) = buildLoginOutgoingPacket(
|
||||
client,
|
||||
bodyType = 1,
|
||||
extraData = client.wLoginSigInfo.d2.data,
|
||||
|
@ -40,7 +40,7 @@ internal class WtLogin {
|
||||
object SubCommand7 {
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient
|
||||
): OutgoingPacket = buildLoginOutgoingPacket(client, bodyType = 2) { sequenceId ->
|
||||
) = buildLoginOutgoingPacket(client, bodyType = 2) { sequenceId ->
|
||||
writeSsoPacket(
|
||||
client,
|
||||
client.subAppId,
|
||||
@ -70,7 +70,7 @@ internal class WtLogin {
|
||||
object SubCommand17 {
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient
|
||||
): OutgoingPacket = buildLoginOutgoingPacket(client, bodyType = 2) { sequenceId ->
|
||||
) = buildLoginOutgoingPacket(client, bodyType = 2) { sequenceId ->
|
||||
writeSsoPacket(
|
||||
client,
|
||||
client.subAppId,
|
||||
|
Loading…
Reference in New Issue
Block a user