From 96d46f63d25fb27cdcd8db52b4addb46f7d1256b Mon Sep 17 00:00:00 2001 From: wdvxdr Date: Sat, 11 Feb 2023 20:49:33 +0800 Subject: [PATCH] client: remove payload parameter in decoder function replace with (*network.Packet).Payload --- client/c2c_processor.go | 24 +++--- client/c2c_switch.go | 2 +- client/client.go | 2 +- client/decoders.go | 86 +++++++++---------- client/face.go | 4 +- client/group_file.go | 20 ++--- client/group_info.go | 8 +- client/group_msg.go | 22 ++--- client/guild.go | 4 +- client/guild_eventflow.go | 4 +- client/guild_msg.go | 4 +- client/image.go | 22 ++--- client/multimsg.go | 8 +- client/network.go | 2 +- client/offline_file.go | 4 +- client/online_push.go | 6 +- client/ptt.go | 8 +- client/qidian.go | 8 +- client/recall.go | 4 +- client/security.go | 4 +- client/sync.go | 30 +++---- client/system_msg.go | 4 +- client/translate.go | 4 +- client/upload_file.go | 4 +- .../generator/c2c_switcher/c2c_switcher.go | 2 +- 25 files changed, 145 insertions(+), 145 deletions(-) diff --git a/client/c2c_processor.go b/client/c2c_processor.go index 7fc456eb..90b66ec5 100644 --- a/client/c2c_processor.go +++ b/client/c2c_processor.go @@ -39,7 +39,7 @@ const ( AddressBookSource // 来自通讯录 ) -func (c *QQClient) c2cMessageSyncProcessor(rsp *msg.GetMessageResponse, info *network.Packet) { +func (c *QQClient) c2cMessageSyncProcessor(rsp *msg.GetMessageResponse, info network.RequestParams) { c.sig.SyncCookie = rsp.SyncCookie c.sig.PubAccountCookie = rsp.PubAccountCookie // c.msgCtrlBuf = rsp.MsgCtrlBuf @@ -73,11 +73,11 @@ func (c *QQClient) c2cMessageSyncProcessor(rsp *msg.GetMessageResponse, info *ne if rsp.SyncFlag.Unwrap() != msg.SyncFlag_STOP { c.debug("continue sync with flag: %v", rsp.SyncFlag) seq, pkt := c.buildGetMessageRequestPacket(rsp.SyncFlag.Unwrap(), time.Now().Unix()) - _, _ = c.sendAndWait(seq, pkt, info.Params) + _, _ = c.sendAndWait(seq, pkt, info) } } -func (c *QQClient) commMsgProcessor(pMsg *msg.Message, info *network.Packet) { +func (c *QQClient) commMsgProcessor(pMsg *msg.Message, info network.RequestParams) { strKey := fmt.Sprintf("%d%d%d%d", pMsg.Head.FromUin.Unwrap(), pMsg.Head.ToUin.Unwrap(), pMsg.Head.MsgSeq.Unwrap(), pMsg.Head.MsgUid.Unwrap()) if _, ok := c.msgSvcCache.GetAndUpdate(strKey, time.Hour); ok { c.debug("c2c msg %v already exists in cache. skip.", pMsg.Head.MsgUid.Unwrap()) @@ -89,7 +89,7 @@ func (c *QQClient) commMsgProcessor(pMsg *msg.Message, info *network.Packet) { return } c.lastC2CMsgTime = int64(pMsg.Head.MsgTime.Unwrap()) - if info.Params.Bool("init") { + if info.Bool("init") { return } if decoder, _ := peekC2CDecoder(pMsg.Head.MsgType.Unwrap()); decoder != nil { @@ -99,7 +99,7 @@ func (c *QQClient) commMsgProcessor(pMsg *msg.Message, info *network.Packet) { } } -func privateMessageDecoder(c *QQClient, pMsg *msg.Message, _ *network.Packet) { +func privateMessageDecoder(c *QQClient, pMsg *msg.Message, _ network.RequestParams) { switch pMsg.Head.C2CCmd.Unwrap() { case 11, 175: // friend msg if pMsg.Head.FromUin.Unwrap() == c.Uin { @@ -141,7 +141,7 @@ func privateMessageDecoder(c *QQClient, pMsg *msg.Message, _ *network.Packet) { } } -func privatePttDecoder(c *QQClient, pMsg *msg.Message, _ *network.Packet) { +func privatePttDecoder(c *QQClient, pMsg *msg.Message, _ network.RequestParams) { if pMsg.Body == nil || pMsg.Body.RichText == nil || pMsg.Body.RichText.Ptt == nil { return } @@ -152,7 +152,7 @@ func privatePttDecoder(c *QQClient, pMsg *msg.Message, _ *network.Packet) { c.PrivateMessageEvent.dispatch(c, c.parsePrivateMessage(pMsg)) } -func tempSessionDecoder(c *QQClient, pMsg *msg.Message, _ *network.Packet) { +func tempSessionDecoder(c *QQClient, pMsg *msg.Message, _ network.RequestParams) { if pMsg.Head.C2CTmpMsgHead == nil || pMsg.Body == nil { return } @@ -213,7 +213,7 @@ func tempSessionDecoder(c *QQClient, pMsg *msg.Message, _ *network.Packet) { } } -func troopAddMemberBroadcastDecoder(c *QQClient, pMsg *msg.Message, _ *network.Packet) { +func troopAddMemberBroadcastDecoder(c *QQClient, pMsg *msg.Message, _ network.RequestParams) { groupJoinLock.Lock() defer groupJoinLock.Unlock() group := c.FindGroupByUin(pMsg.Head.FromUin.Unwrap()) @@ -240,13 +240,13 @@ func troopAddMemberBroadcastDecoder(c *QQClient, pMsg *msg.Message, _ *network.P } } -func systemMessageDecoder(c *QQClient, _ *msg.Message, _ *network.Packet) { +func systemMessageDecoder(c *QQClient, _ *msg.Message, _ network.RequestParams) { _, pkt := c.buildSystemMsgNewFriendPacket() _ = c.sendPacket(pkt) } -func troopSystemMessageDecoder(c *QQClient, pMsg *msg.Message, info *network.Packet) { - if !info.Params.Bool("used_reg_proxy") && pMsg.Head.MsgType.Unwrap() != 85 && pMsg.Head.MsgType.Unwrap() != 36 { +func troopSystemMessageDecoder(c *QQClient, pMsg *msg.Message, info network.RequestParams) { + if !info.Bool("used_reg_proxy") && pMsg.Head.MsgType.Unwrap() != 85 && pMsg.Head.MsgType.Unwrap() != 36 { c.exceptAndDispatchGroupSysMsg() } if len(pMsg.Body.MsgContent) == 0 { @@ -260,7 +260,7 @@ func troopSystemMessageDecoder(c *QQClient, pMsg *msg.Message, info *network.Pac } } -func msgType0x211Decoder(c *QQClient, pMsg *msg.Message, info *network.Packet) { +func msgType0x211Decoder(c *QQClient, pMsg *msg.Message, info network.RequestParams) { if pMsg.Head.C2CCmd.Unwrap() == 6 || pMsg.Head.C2CTmpMsgHead != nil { tempSessionDecoder(c, pMsg, info) } diff --git a/client/c2c_switch.go b/client/c2c_switch.go index 70ddd8bf..9d40d502 100644 --- a/client/c2c_switch.go +++ b/client/c2c_switch.go @@ -16,7 +16,7 @@ const ( troopSystemMsgDecoders ) -func peekC2CDecoder(msgType int32) (decoder func(*QQClient, *msg.Message, *network.Packet), decoderType uint8) { +func peekC2CDecoder(msgType int32) (decoder func(*QQClient, *msg.Message, network.RequestParams), decoderType uint8) { switch msgType { case 9: return privateMessageDecoder, privateMsgDecoders diff --git a/client/client.go b/client/client.go index 4e415fc3..3e579ca0 100644 --- a/client/client.go +++ b/client/client.go @@ -147,7 +147,7 @@ func (h *handlerInfo) getParams() network.RequestParams { return h.params } -var decoders = map[string]func(*QQClient, *network.Packet, []byte) (any, error){ +var decoders = map[string]func(*QQClient, *network.Packet) (any, error){ "wtlogin.login": decodeLoginResponse, "wtlogin.exchange_emp": decodeExchangeEmpResponse, "wtlogin.trans_emp": decodeTransEmpResponse, diff --git a/client/decoders.go b/client/decoders.go index 9dc52dc6..10dd24aa 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -33,8 +33,8 @@ var ( ) // wtlogin.login -func decodeLoginResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { - reader := binary.NewReader(payload) +func decodeLoginResponse(c *QQClient, pkt *network.Packet) (any, error) { + reader := binary.NewReader(pkt.Payload) reader.ReadUInt16() // sub command t := reader.ReadByte() reader.ReadUInt16() @@ -188,9 +188,9 @@ func decodeLoginResponse(c *QQClient, _ *network.Packet, payload []byte) (any, e } // StatSvc.register -func decodeClientRegisterResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeClientRegisterResponse(c *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) svcRsp := &jce.SvcRespRegister{} @@ -205,8 +205,8 @@ func decodeClientRegisterResponse(c *QQClient, _ *network.Packet, payload []byte } // wtlogin.exchange_emp -func decodeExchangeEmpResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { - reader := binary.NewReader(payload) +func decodeExchangeEmpResponse(c *QQClient, pkt *network.Packet) (any, error) { + reader := binary.NewReader(pkt.Payload) cmd := reader.ReadUInt16() t := reader.ReadByte() reader.ReadUInt16() @@ -228,11 +228,11 @@ func decodeExchangeEmpResponse(c *QQClient, _ *network.Packet, payload []byte) ( } // wtlogin.trans_emp -func decodeTransEmpResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { - if len(payload) < 48 { +func decodeTransEmpResponse(c *QQClient, pkt *network.Packet) (any, error) { + if len(pkt.Payload) < 48 { return nil, errors.New("missing payload length") } - reader := binary.NewReader(payload) + reader := binary.NewReader(pkt.Payload) reader.ReadBytes(5) // trans req head reader.ReadByte() reader.ReadUInt16() @@ -317,9 +317,9 @@ func decodeTransEmpResponse(c *QQClient, _ *network.Packet, payload []byte) (any } // ConfigPushSvc.PushReq -func decodePushReqPacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodePushReqPacket(c *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["PushReq"]["ConfigPush.PushReq"][1:]) @@ -385,25 +385,25 @@ func decodePushReqPacket(c *QQClient, _ *network.Packet, payload []byte) (any, e } seq := r.ReadInt64(3) - _, pkt := c.buildConfPushRespPacket(t, seq, jceBuf) - return nil, c.sendPacket(pkt) + _, resp := c.buildConfPushRespPacket(t, seq, jceBuf) + return nil, c.sendPacket(resp) } // MessageSvc.PbGetMsg -func decodeMessageSvcPacket(c *QQClient, info *network.Packet, payload []byte) (any, error) { +func decodeMessageSvcPacket(c *QQClient, pkt *network.Packet) (any, error) { rsp := msg.GetMessageResponse{} - err := proto.Unmarshal(payload, &rsp) + err := proto.Unmarshal(pkt.Payload, &rsp) if err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } - c.c2cMessageSyncProcessor(&rsp, info) + c.c2cMessageSyncProcessor(&rsp, pkt.Params) return nil, nil } // MessageSvc.PushNotify -func decodeSvcNotify(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeSvcNotify(c *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload[4:])) + request.ReadFrom(jce.NewJceReader(pkt.Payload[4:])) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) if len(data.Map) == 0 { @@ -428,9 +428,9 @@ func decodeSvcNotify(c *QQClient, _ *network.Packet, payload []byte) (any, error } // SummaryCard.ReqSummaryCard -func decodeSummaryCardResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeSummaryCardResponse(_ *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) rsp := func() *jce.JceReader { @@ -494,9 +494,9 @@ func decodeSummaryCardResponse(_ *QQClient, _ *network.Packet, payload []byte) ( } // friendlist.getFriendGroupList -func decodeFriendGroupListResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeFriendGroupListResponse(_ *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion3{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["FLRESP"][1:]) @@ -519,9 +519,9 @@ func decodeFriendGroupListResponse(_ *QQClient, _ *network.Packet, payload []byt } // friendlist.delFriend -func decodeFriendDeleteResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeFriendDeleteResponse(_ *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion3{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["DFRESP"][1:]) @@ -532,9 +532,9 @@ func decodeFriendDeleteResponse(_ *QQClient, _ *network.Packet, payload []byte) } // friendlist.GetTroopListReqV2 -func decodeGroupListResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGroupListResponse(c *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion3{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["GetTroopListRespV2"][1:]) @@ -563,9 +563,9 @@ func decodeGroupListResponse(c *QQClient, _ *network.Packet, payload []byte) (an } // friendlist.GetTroopMemberListReq -func decodeGroupMemberListResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGroupMemberListResponse(_ *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion3{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["GTMLRESP"][1:]) @@ -597,9 +597,9 @@ func decodeGroupMemberListResponse(_ *QQClient, _ *network.Packet, payload []byt } // group_member_card.get_group_member_card_info -func decodeGroupMemberInfoResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGroupMemberInfoResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := pb.GroupMemberRspBody{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if rsp.MemInfo == nil || (rsp.MemInfo.Nick == nil && rsp.MemInfo.Age == 0) { @@ -628,9 +628,9 @@ func decodeGroupMemberInfoResponse(c *QQClient, _ *network.Packet, payload []byt } // LongConn.OffPicUp -func decodeOffPicUpResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeOffPicUpResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := cmd0x352.RspBody{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if rsp.FailMsg != nil { @@ -666,9 +666,9 @@ func decodeOffPicUpResponse(_ *QQClient, _ *network.Packet, payload []byte) (any } // OnlinePush.PbPushTransMsg -func decodeOnlinePushTransPacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeOnlinePushTransPacket(c *QQClient, pkt *network.Packet) (any, error) { info := msg.TransMsgInfo{} - err := proto.Unmarshal(payload, &info) + err := proto.Unmarshal(pkt.Payload, &info) if err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } @@ -767,9 +767,9 @@ func decodeOnlinePushTransPacket(c *QQClient, _ *network.Packet, payload []byte) } // ProfileService.Pb.ReqSystemMsgNew.Friend -func decodeSystemMsgFriendPacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeSystemMsgFriendPacket(c *QQClient, pkt *network.Packet) (any, error) { rsp := structmsg.RspSystemMsgNew{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if len(rsp.Friendmsgs) == 0 { @@ -789,9 +789,9 @@ func decodeSystemMsgFriendPacket(c *QQClient, _ *network.Packet, payload []byte) } // MessageSvc.PushForceOffline -func decodeForceOfflinePacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeForceOfflinePacket(c *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["req_PushForceOffline"]["PushNotifyPack.RequestPushForceOffline"][1:]) @@ -802,7 +802,7 @@ func decodeForceOfflinePacket(c *QQClient, _ *network.Packet, payload []byte) (a } // StatSvc.ReqMSFOffline -func decodeMSFOfflinePacket(c *QQClient, _ *network.Packet, _ []byte) (any, error) { +func decodeMSFOfflinePacket(c *QQClient, _ *network.Packet) (any, error) { // c.lastLostMsg = "服务器端强制下线." c.Disconnect() // 这个decoder不能消耗太多时间, event另起线程处理 @@ -811,9 +811,9 @@ func decodeMSFOfflinePacket(c *QQClient, _ *network.Packet, _ []byte) (any, erro } // OidbSvc.0xd79 -func decodeWordSegmentation(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeWordSegmentation(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.D79RspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } @@ -823,7 +823,7 @@ func decodeWordSegmentation(_ *QQClient, _ *network.Packet, payload []byte) (any return nil, errors.New("no word received") } -func decodeSidExpiredPacket(c *QQClient, i *network.Packet, _ []byte) (any, error) { +func decodeSidExpiredPacket(c *QQClient, pkt *network.Packet) (any, error) { /* _, err := c.sendAndWait(c.buildRequestChangeSigPacket(true)) if err != nil { @@ -855,6 +855,6 @@ func decodeAppInfoResponse(_ *QQClient, _ *incomingPacketInfo, payload []byte) ( } */ -func ignoreDecoder(_ *QQClient, _ *network.Packet, _ []byte) (any, error) { +func ignoreDecoder(_ *QQClient, _ *network.Packet) (any, error) { return nil, nil } diff --git a/client/face.go b/client/face.go index 0a4c2812..bf1a0cf9 100644 --- a/client/face.go +++ b/client/face.go @@ -41,9 +41,9 @@ func (c *QQClient) buildFaceroamRequestPacket() (uint16, []byte) { return c.uniPacket("Faceroam.OpReq", payload) } -func decodeFaceroamResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeFaceroamResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := faceroam.FaceroamRspBody{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if rsp.RspUserInfo == nil { diff --git a/client/group_file.go b/client/group_file.go index c0f5a999..ed811ea0 100644 --- a/client/group_file.go +++ b/client/group_file.go @@ -334,9 +334,9 @@ func (c *QQClient) buildGroupFileDeleteReqPacket(groupCode int64, parentFolderId return c.uniPacket("OidbSvc.0x6d6_3", payload) } -func decodeOIDB6d81Response(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeOIDB6d81Response(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.D6D8RspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } @@ -344,9 +344,9 @@ func decodeOIDB6d81Response(_ *QQClient, _ *network.Packet, payload []byte) (any } // OidbSvc.0x6d6_2 -func decodeOIDB6d62Response(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeOIDB6d62Response(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.D6D6RspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } @@ -358,18 +358,18 @@ func decodeOIDB6d62Response(_ *QQClient, _ *network.Packet, payload []byte) (any return fmt.Sprintf("http://%s/ftn_handler/%s/", ip, url), nil } -func decodeOIDB6d63Response(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeOIDB6d63Response(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.D6D6RspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } return rsp.DeleteFileRsp.ClientWording.Unwrap(), nil } -func decodeOIDB6d60Response(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeOIDB6d60Response(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.D6D6RspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } @@ -385,9 +385,9 @@ func decodeOIDB6d60Response(_ *QQClient, _ *network.Packet, payload []byte) (any return r, nil } -func decodeOIDB6d7Response(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeOIDB6d7Response(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.D6D7RspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } diff --git a/client/group_info.go b/client/group_info.go index af98d6dd..84541aa5 100644 --- a/client/group_info.go +++ b/client/group_info.go @@ -181,9 +181,9 @@ func (c *QQClient) buildGroupSearchPacket(keyword string) (uint16, []byte) { } // SummaryCard.ReqSearch -func decodeGroupSearchResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGroupSearchResponse(_ *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) if len(data.Map["RespHead"]["SummaryCard.RespHead"]) > 20 { @@ -219,9 +219,9 @@ func decodeGroupSearchResponse(_ *QQClient, _ *network.Packet, payload []byte) ( } // OidbSvc.0x88d_0 -func decodeGroupInfoResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGroupInfoResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.D88DRspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } diff --git a/client/group_msg.go b/client/group_msg.go index 19166586..bed82ba0 100644 --- a/client/group_msg.go +++ b/client/group_msg.go @@ -222,9 +222,9 @@ func (c *QQClient) buildAtAllRemainRequestPacket(groupCode int64) (uint16, []byt } // OnlinePush.PbPushGroupMsg -func decodeGroupMessagePacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGroupMessagePacket(c *QQClient, packet *network.Packet) (any, error) { pkt := msg.PushMessagePacket{} - err := proto.Unmarshal(payload, &pkt) + err := proto.Unmarshal(packet.Payload, &pkt) if err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } @@ -257,9 +257,9 @@ func decodeGroupMessagePacket(c *QQClient, _ *network.Packet, payload []byte) (a return nil, nil } -func decodeMsgSendResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeMsgSendResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := msg.SendMessageResponse{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } switch rsp.Result.Unwrap() { @@ -274,9 +274,9 @@ func decodeMsgSendResponse(c *QQClient, _ *network.Packet, payload []byte) (any, return nil, nil } -func decodeGetGroupMsgResponse(c *QQClient, info *network.Packet, payload []byte) (any, error) { +func decodeGetGroupMsgResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := msg.GetGroupMsgResp{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if rsp.Result.Unwrap() != 0 { @@ -288,7 +288,7 @@ func decodeGetGroupMsgResponse(c *QQClient, info *network.Packet, payload []byte if m.Head.FromUin.IsNone() { continue } - if m.Content != nil && m.Content.PkgNum.Unwrap() > 1 && !info.Params.Bool("raw") { + if m.Content != nil && m.Content.PkgNum.Unwrap() > 1 && !pkt.Params.Bool("raw") { if m.Content.PkgIndex.Unwrap() == 0 { c.debug("build fragmented message from history") i := m.Head.MsgSeq.Unwrap() - m.Content.PkgNum.Unwrap() @@ -323,9 +323,9 @@ func decodeGetGroupMsgResponse(c *QQClient, info *network.Packet, payload []byte return ret, nil } -func decodeAtAllRemainResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeAtAllRemainResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.D8A7RspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } @@ -548,9 +548,9 @@ func (c *QQClient) buildEssenceMsgOperatePacket(groupCode int64, msgSeq, msgRand } // OidbSvc.0xeac_1/2 -func decodeEssenceMsgResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeEssenceMsgResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := &oidb.EACRspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } diff --git a/client/guild.go b/client/guild.go index e2634665..9406fe7c 100644 --- a/client/guild.go +++ b/client/guild.go @@ -740,9 +740,9 @@ func (c *QQClient) buildSyncChannelFirstViewPacket() (uint16, []byte) { return c.uniPacket("trpc.group_pro.synclogic.SyncLogic.SyncFirstView", payload) } -func decodeGuildPushFirstView(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGuildPushFirstView(c *QQClient, pkt *network.Packet) (any, error) { firstViewMsg := new(channel.FirstViewMsg) - if err := proto.Unmarshal(payload, firstViewMsg); err != nil { + if err := proto.Unmarshal(pkt.Payload, firstViewMsg); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if len(firstViewMsg.GuildNodes) > 0 { diff --git a/client/guild_eventflow.go b/client/guild_eventflow.go index eb5d3c15..bed1d247 100644 --- a/client/guild_eventflow.go +++ b/client/guild_eventflow.go @@ -27,9 +27,9 @@ type tipsPushInfo struct { ChannelId uint64 } -func decodeGuildEventFlowPacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGuildEventFlowPacket(c *QQClient, pkt *network.Packet) (any, error) { push := new(channel.MsgOnlinePush) - if err := proto.Unmarshal(payload, push); err != nil { + if err := proto.Unmarshal(pkt.Payload, push); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if push.CompressFlag.Unwrap() == 1 && len(push.CompressMsg) > 0 { diff --git a/client/guild_msg.go b/client/guild_msg.go index 653caa31..dfdb1784 100644 --- a/client/guild_msg.go +++ b/client/guild_msg.go @@ -230,9 +230,9 @@ func decodeGuildMessageEmojiReactions(content *channel.ChannelMsgContent) (r []* return } -func decodeGuildImageStoreResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGuildImageStoreResponse(_ *QQClient, pkt *network.Packet) (any, error) { body := new(cmd0x388.D388RspBody) - if err := proto.Unmarshal(payload, body); err != nil { + if err := proto.Unmarshal(pkt.Payload, body); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if len(body.TryupImgRsp) == 0 { diff --git a/client/image.go b/client/image.go index 565077d8..40dd1951 100644 --- a/client/image.go +++ b/client/image.go @@ -345,9 +345,9 @@ func (c *QQClient) buildImageOcrRequestPacket(url, md5 string, size, weight, hei } // ImgStore.GroupPicUp -func decodeGroupImageStoreResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGroupImageStoreResponse(_ *QQClient, packet *network.Packet) (any, error) { pkt := cmd0x388.D388RspBody{} - err := proto.Unmarshal(payload, &pkt) + err := proto.Unmarshal(packet.Payload, &pkt) if err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } @@ -372,24 +372,24 @@ func decodeGroupImageStoreResponse(_ *QQClient, _ *network.Packet, payload []byt }, nil } -func decodeGroupImageDownloadResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { - pkt := cmd0x388.D388RspBody{} - if err := proto.Unmarshal(payload, &pkt); err != nil { +func decodeGroupImageDownloadResponse(_ *QQClient, pkt *network.Packet) (any, error) { + rsp := cmd0x388.D388RspBody{} + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "unmarshal protobuf message error") } - if len(pkt.GetimgUrlRsp) == 0 { + if len(rsp.GetimgUrlRsp) == 0 { return nil, errors.New("response not found") } - if len(pkt.GetimgUrlRsp[0].FailMsg) != 0 { - return nil, errors.New(utils.B2S(pkt.GetimgUrlRsp[0].FailMsg)) + if len(rsp.GetimgUrlRsp[0].FailMsg) != 0 { + return nil, errors.New(utils.B2S(rsp.GetimgUrlRsp[0].FailMsg)) } - return fmt.Sprintf("https://%s%s", pkt.GetimgUrlRsp[0].DownDomain, pkt.GetimgUrlRsp[0].BigDownPara), nil + return fmt.Sprintf("https://%s%s", rsp.GetimgUrlRsp[0].DownDomain, rsp.GetimgUrlRsp[0].BigDownPara), nil } // OidbSvc.0xe07_0 -func decodeImageOcrResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeImageOcrResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.DE07RspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } diff --git a/client/multimsg.go b/client/multimsg.go index 6c704f4e..c4de9233 100644 --- a/client/multimsg.go +++ b/client/multimsg.go @@ -51,9 +51,9 @@ func (c *QQClient) buildMultiApplyUpPacket(data, hash []byte, buType int32, grou } // MultiMsg.ApplyUp -func decodeMultiApplyUpResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeMultiApplyUpResponse(_ *QQClient, pkt *network.Packet) (any, error) { body := multimsg.MultiRspBody{} - if err := proto.Unmarshal(payload, &body); err != nil { + if err := proto.Unmarshal(pkt.Payload, &body); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if len(body.MultimsgApplyupRsp) == 0 { @@ -91,9 +91,9 @@ func (c *QQClient) buildMultiApplyDownPacket(resID string) (uint16, []byte) { } // MultiMsg.ApplyDown -func decodeMultiApplyDownResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeMultiApplyDownResponse(_ *QQClient, pkt *network.Packet) (any, error) { body := multimsg.MultiRspBody{} - if err := proto.Unmarshal(payload, &body); err != nil { + if err := proto.Unmarshal(pkt.Payload, &body); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if len(body.MultimsgApplydownRsp) == 0 { diff --git a/client/network.go b/client/network.go index b51d4d8b..55c74f41 100644 --- a/client/network.go +++ b/client/network.go @@ -343,7 +343,7 @@ func (c *QQClient) netLoop() { decoded = pkt.Payload if info == nil || !info.dynamic { pkt.Params = info.getParams() - decoded, err = decoder(c, pkt, pkt.Payload) + decoded, err = decoder(c, pkt) if err != nil { c.debug("decode pkt %v error: %+v", pkt.CommandName, err) } diff --git a/client/offline_file.go b/client/offline_file.go index 249fe457..3cb0053f 100644 --- a/client/offline_file.go +++ b/client/offline_file.go @@ -33,9 +33,9 @@ func (c *QQClient) buildOfflineFileDownloadRequestPacket(uuid []byte) (uint16, [ return seq, packet } -func decodeOfflineFileDownloadResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeOfflineFileDownloadResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := cmd0x346.C346RspBody{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { c.error("unmarshal cmd0x346 rsp body error: %v", err) return nil, errors.Wrap(err, "unmarshal cmd0x346 rsp body error") } diff --git a/client/online_push.go b/client/online_push.go index 84e1e221..3cc5560c 100644 --- a/client/online_push.go +++ b/client/online_push.go @@ -23,15 +23,15 @@ var msg0x210Decoders = map[int64]func(*QQClient, []byte) error{ } // OnlinePush.ReqPush -func decodeOnlinePushReqPacket(c *QQClient, info *network.Packet, payload []byte) (any, error) { +func decodeOnlinePushReqPacket(c *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) jr := jce.NewJceReader(data.Map["req"]["OnlinePushPack.SvcReqPushMsg"][1:]) uin := jr.ReadInt64(0) msgInfos := jr.ReadPushMessageInfos(2) - _ = c.sendPacket(c.buildDeleteOnlinePushPacket(uin, 0, nil, info.SequenceId, msgInfos)) + _ = c.sendPacket(c.buildDeleteOnlinePushPacket(uin, 0, nil, pkt.SequenceId, msgInfos)) for _, m := range msgInfos { k := fmt.Sprintf("%v%v%v", m.MsgSeq, m.MsgTime, m.MsgUid) if _, ok := c.onlinePushCache.Get(k); ok { diff --git a/client/ptt.go b/client/ptt.go index 29b312be..aaa2bc98 100644 --- a/client/ptt.go +++ b/client/ptt.go @@ -326,9 +326,9 @@ func (c *QQClient) buildC2CPttStoreBDHExt(target int64, md5 []byte, size, voiceL } // PttCenterSvr.ShortVideoDownReq -func decodePttShortVideoDownResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodePttShortVideoDownResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := pttcenter.ShortVideoRspBody{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if rsp.PttShortVideoDownloadRsp == nil || rsp.PttShortVideoDownloadRsp.DownloadAddr == nil { @@ -338,9 +338,9 @@ func decodePttShortVideoDownResponse(_ *QQClient, _ *network.Packet, payload []b } // PttCenterSvr.GroupShortVideoUpReq -func decodeGroupShortVideoUploadResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeGroupShortVideoUploadResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := pttcenter.ShortVideoRspBody{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if rsp.PttShortVideoUploadRsp == nil { diff --git a/client/qidian.go b/client/qidian.go index 9d7a59f1..f775d2d7 100644 --- a/client/qidian.go +++ b/client/qidian.go @@ -155,9 +155,9 @@ func (c *QQClient) bigDataRequest(subCmd uint32, req proto.Message) ([]byte, err return tea.Decrypt(payload), nil } -func decodeLoginExtraResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeLoginExtraResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := cmd0x3f6.C3F6RspBody{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if rsp.SubcmdLoginProcessCompleteRspBody == nil { @@ -171,9 +171,9 @@ func decodeLoginExtraResponse(c *QQClient, _ *network.Packet, payload []byte) (a return nil, nil } -func decodeConnKeyResponse(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeConnKeyResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := cmd0x6ff.C501RspBody{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if c.QiDian == nil { diff --git a/client/recall.go b/client/recall.go index 7068690e..29d57a88 100644 --- a/client/recall.go +++ b/client/recall.go @@ -92,9 +92,9 @@ func (c *QQClient) buildPrivateRecallPacket(uin, ts int64, msgSeq, random int32) return c.uniPacket("PbMessageSvc.PbMsgWithDraw", payload) } -func decodeMsgWithDrawResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeMsgWithDrawResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := msg.MsgWithDrawResp{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if len(rsp.C2CWithDraw) > 0 { diff --git a/client/security.go b/client/security.go index 691541c5..8c1afb2b 100644 --- a/client/security.go +++ b/client/security.go @@ -48,9 +48,9 @@ func (c *QQClient) buildUrlCheckRequest(url string) (uint16, []byte) { return c.uniPacket("OidbSvc.0xbcb_0", payload) } -func decodeUrlCheckResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeUrlCheckResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.DBCBRspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } diff --git a/client/sync.go b/client/sync.go index 412e04a1..b7d2a3ba 100644 --- a/client/sync.go +++ b/client/sync.go @@ -281,9 +281,9 @@ func (c *QQClient) buildPrivateMsgReadedPacket(uin, time int64) (uint16, []byte) } // StatSvc.GetDevLoginInfo -func decodeDevListResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeDevListResponse(_ *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) rsp := jce.NewJceReader(data.Map["SvcRspGetDevLoginInfo"]["QQService.SvcRspGetDevLoginInfo"][1:]) @@ -303,9 +303,9 @@ func decodeDevListResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, } // RegPrxySvc.PushParam -func decodePushParamPacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodePushParamPacket(c *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) reader := jce.NewJceReader(data.Map["SvcRespParam"]["RegisterProxySvcPack.SvcRespParam"][1:]) @@ -344,9 +344,9 @@ func decodePushParamPacket(c *QQClient, _ *network.Packet, payload []byte) (any, } // RegPrxySvc.PbSyncMsg -func decodeMsgSyncResponse(c *QQClient, info *network.Packet, payload []byte) (any, error) { +func decodeMsgSyncResponse(c *QQClient, pkt *network.Packet) (any, error) { rsp := &msf.SvcRegisterProxyMsgResp{} - if err := proto.Unmarshal(payload, rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, rsp); err != nil { return nil, err } ret := &sessionSyncEvent{ @@ -381,26 +381,26 @@ func decodeMsgSyncResponse(c *QQClient, info *network.Packet, payload []byte) (a if len(rsp.C2CMsg) > 4 { c2cRsp := &msg.GetMessageResponse{} if proto.Unmarshal(rsp.C2CMsg[4:], c2cRsp) == nil { - c.c2cMessageSyncProcessor(c2cRsp, info) + c.c2cMessageSyncProcessor(c2cRsp, pkt.Params) } } return ret, nil } // OnlinePush.PbC2CMsgSync -func decodeC2CSyncPacket(c *QQClient, info *network.Packet, payload []byte) (any, error) { +func decodeC2CSyncPacket(c *QQClient, pkt *network.Packet) (any, error) { m := msg.PbPushMsg{} - if err := proto.Unmarshal(payload, &m); err != nil { + if err := proto.Unmarshal(pkt.Payload, &m); err != nil { return nil, err } - _ = c.sendPacket(c.buildDeleteOnlinePushPacket(c.Uin, m.Svrip.Unwrap(), m.PushToken, info.SequenceId, nil)) - c.commMsgProcessor(m.Msg, info) + _ = c.sendPacket(c.buildDeleteOnlinePushPacket(c.Uin, m.Svrip.Unwrap(), m.PushToken, pkt.SequenceId, nil)) + c.commMsgProcessor(m.Msg, pkt.Params) return nil, nil } -func decodeMsgReadedResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeMsgReadedResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := msg.PbMsgReadedReportResp{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, errors.Wrap(err, "failed to unmarshal protobuf message") } if len(rsp.GrpReadReport) > 0 { @@ -412,9 +412,9 @@ func decodeMsgReadedResponse(_ *QQClient, _ *network.Packet, payload []byte) (an var loginNotifyLock sync.Mutex // StatSvc.SvcReqMSFLoginNotify -func decodeLoginNotifyPacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeLoginNotifyPacket(c *QQClient, pkt *network.Packet) (any, error) { request := &jce.RequestPacket{} - request.ReadFrom(jce.NewJceReader(payload)) + request.ReadFrom(jce.NewJceReader(pkt.Payload)) data := &jce.RequestDataVersion2{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) reader := jce.NewJceReader(data.Map["SvcReqMSFLoginNotify"]["QQService.SvcReqMSFLoginNotify"][1:]) diff --git a/client/system_msg.go b/client/system_msg.go index 4ee80d09..b109af0b 100644 --- a/client/system_msg.go +++ b/client/system_msg.go @@ -190,9 +190,9 @@ func (c *QQClient) buildSystemMsgFriendActionPacket(reqID, requester int64, acce } // ProfileService.Pb.ReqSystemMsgNew.Group -func decodeSystemMsgGroupPacket(c *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeSystemMsgGroupPacket(c *QQClient, pkt *network.Packet) (any, error) { rsp := structmsg.RspSystemMsgNew{} - if err := proto.Unmarshal(payload, &rsp); err != nil { + if err := proto.Unmarshal(pkt.Payload, &rsp); err != nil { return nil, err } ret := &GroupSystemMessages{} diff --git a/client/translate.go b/client/translate.go index dee74aa7..6b0a47a4 100644 --- a/client/translate.go +++ b/client/translate.go @@ -34,9 +34,9 @@ func (c *QQClient) Translate(src, dst, text string) (string, error) { } // OidbSvc.0x990 -func decodeTranslateResponse(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodeTranslateResponse(_ *QQClient, pkt *network.Packet) (any, error) { rsp := oidb.TranslateRspBody{} - err := unpackOIDBPackage(payload, &rsp) + err := unpackOIDBPackage(pkt.Payload, &rsp) if err != nil { return nil, err } diff --git a/client/upload_file.go b/client/upload_file.go index f5dd78b4..13291cac 100644 --- a/client/upload_file.go +++ b/client/upload_file.go @@ -220,9 +220,9 @@ func (c *QQClient) buildPrivateFileUploadReqPacket(target message.Source, file * } // OfflineFilleHandleSvr.pb_ftn_CMD_REQ_APPLY_UPLOAD_V3-1700 -func decodePrivateFileUploadReq(_ *QQClient, _ *network.Packet, payload []byte) (any, error) { +func decodePrivateFileUploadReq(_ *QQClient, pkt *network.Packet) (any, error) { var rsp cmd0x346.C346RspBody - err := proto.Unmarshal(payload, &rsp) + err := proto.Unmarshal(pkt.Payload, &rsp) if err != nil { return nil, err } diff --git a/internal/generator/c2c_switcher/c2c_switcher.go b/internal/generator/c2c_switcher/c2c_switcher.go index f1100127..3d6d5edd 100644 --- a/internal/generator/c2c_switcher/c2c_switcher.go +++ b/internal/generator/c2c_switcher/c2c_switcher.go @@ -27,7 +27,7 @@ const ( {{end}} ) -func peekC2CDecoder(msgType int32) (decoder func(*QQClient, *msg.Message, *network.Packet), decoderType uint8) { +func peekC2CDecoder(msgType int32) (decoder func(*QQClient, *msg.Message, network.RequestParams), decoderType uint8) { switch msgType { {{range .Decoders}} case {{.Id}}: return {{.Func}}, {{.DecoderType}}