diff --git a/client/builders.go b/client/builders.go index a6bf3a81..e5e1697a 100644 --- a/client/builders.go +++ b/client/builders.go @@ -173,7 +173,7 @@ func (c *QQClient) buildQRCodeLoginPacket(t106, t16a, t318 []byte) (uint16, []by w.WriteUInt16(0x106) w.WriteBytesShort(t106) })) - //w.Write(tlv.T106(uint32(c.Uin), 0, c.version.AppId, c.version.SSOVersion, c.PasswordMd5, true, SystemDeviceInfo.Guid, SystemDeviceInfo.TgtgtKey, 0)) + // w.Write(tlv.T106(uint32(c.Uin), 0, c.version.AppId, c.version.SSOVersion, c.PasswordMd5, true, SystemDeviceInfo.Guid, SystemDeviceInfo.TgtgtKey, 0)) w.Write(tlv.T116(c.version.MiscBitmap, c.version.SubSigmap)) w.Write(tlv.T100(c.version.SSOVersion, c.version.AppId, c.version.MainSigMap)) w.Write(tlv.T107(0)) @@ -218,7 +218,7 @@ func (c *QQClient) buildQRCodeLoginPacket(t106, t16a, t318 []byte) (uint16, []by w.Write(tlv.T177(c.version.BuildTime, c.version.SdkVersion)) w.Write(tlv.T516()) w.Write(tlv.T521(8)) - //w.Write(tlv.T525(tlv.T536([]byte{0x01, 0x00}))) + // w.Write(tlv.T525(tlv.T536([]byte{0x01, 0x00}))) w.Write(binary.NewWriterF(func(w *binary.Writer) { w.WriteUInt16(0x318) w.WriteBytesShort(t318) @@ -347,7 +347,6 @@ func (c *QQClient) buildRequestTgtgtNopicsigPacket() (uint16, []byte) { w.Write(tlv.T516()) w.Write(tlv.T521(0)) w.Write(tlv.T525(tlv.T536([]byte{0x01, 0x00}))) - }) packet := packets.BuildUniPacket(c.Uin, seq, "wtlogin.exchange_emp", 2, c.OutGoingPacketSessionId, []byte{}, make([]byte, 16), req) return seq, packet @@ -1016,11 +1015,11 @@ func (c *QQClient) buildWordSegmentationPacket(data []byte) (uint16, []byte) { } // OidbSvc.0xdad_1 -func (c *QQClient) sendGroupGiftPacket(groupCode, uin uint64, productId message.GroupGift) (uint16, []byte) { +func (c *QQClient) sendGroupGiftPacket(groupCode, uin uint64, productID message.GroupGift) (uint16, []byte) { seq := c.nextSeq() payload := c.packOIDBPackageProto(3501, 1, &oidb.DADReqBody{ Client: 1, - ProductId: uint64(productId), + ProductId: uint64(productID), ToUin: uin, Gc: groupCode, Version: "V 8.4.5.4745", diff --git a/client/client.go b/client/client.go index 233756e9..5e11bb14 100644 --- a/client/client.go +++ b/client/client.go @@ -82,14 +82,14 @@ type QQClient struct { pwdFlag bool lastMessageSeq int32 - //lastMessageSeqTmp sync.Map + // lastMessageSeqTmp sync.Map msgSvcCache *utils.Cache transCache *utils.Cache lastLostMsg string groupSysMsgCache *GroupSystemMessages groupMsgBuilders sync.Map onlinePushCache *utils.Cache - requestPacketRequestId int32 + requestPacketRequestID int32 groupSeq int32 friendSeq int32 heartbeatEnabled bool @@ -178,7 +178,7 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { RandomKey: make([]byte, 16), OutGoingPacketSessionId: []byte{0x02, 0xB0, 0x5B, 0x8B}, sigInfo: &loginSigInfo{}, - requestPacketRequestId: 1921334513, + requestPacketRequestID: 1921334513, groupSeq: int32(rand.Intn(20000)), friendSeq: 22911, highwayApplyUpSeq: 77918, @@ -485,8 +485,8 @@ func (c *QQClient) GetFriendList() (*FriendListResponse, error) { return r, nil } -func (c *QQClient) GetForwardMessage(resId string) *message.ForwardMessage { - m := c.DownloadForwardMessage(resId) +func (c *QQClient) GetForwardMessage(resID string) *message.ForwardMessage { + m := c.DownloadForwardMessage(resID) if m == nil { return nil } @@ -779,10 +779,7 @@ func (c *QQClient) connect() error { return errors.New("All servers are unreachable") } c.Error("connect server error: %v", err) - if err = c.connect(); err != nil { - return err - } - return nil + return err } c.retryTimes = 0 c.ConnectTime = time.Now() @@ -817,7 +814,7 @@ func (c *QQClient) nextSeq() uint16 { } func (c *QQClient) nextPacketSeq() int32 { - return atomic.AddInt32(&c.requestPacketRequestId, 2) + return atomic.AddInt32(&c.requestPacketRequestID, 2) } func (c *QQClient) nextGroupSeq() int32 { @@ -875,7 +872,7 @@ func (c *QQClient) sendAndWait(seq uint16, pkt []byte, params ...requestParams) }, params: p}) retry := 0 - for true { + for { select { case rsp := <-ch: return rsp.Response, rsp.Error @@ -886,12 +883,11 @@ func (c *QQClient) sendAndWait(seq uint16, pkt []byte, params ...requestParams) continue } c.handlers.Delete(seq) - //c.Error("packet timed out, seq: %v", seq) - //println("Packet Timed out") + // c.Error("packet timed out, seq: %v", seq) + // println("Packet Timed out") return nil, errors.New("Packet timed out") } } - return nil, nil } // 等待一个或多个数据包解析, 优先级低于 sendAndWait @@ -939,7 +935,7 @@ func (c *QQClient) netLoop() { } continue } - data, err := reader.ReadBytes(int(l) - 4) + data, _ := reader.ReadBytes(int(l) - 4) pkt, err := packets.ParseIncomingPacket(data, c.sigInfo.d2Key) if err != nil { c.Error("parse incoming packet error: %v", err) diff --git a/client/decoders.go b/client/decoders.go index 5385a22c..62154a96 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -59,7 +59,7 @@ func decodeLoginResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) (in }, nil } if t == 2 { - c.t104, _ = m[0x104] + c.t104 = m[0x104] if m.Exists(0x192) { return LoginResponse{ Success: false, @@ -136,7 +136,6 @@ func decodeLoginResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) (in ErrorMessage: "", }, nil } - } if t == 162 { @@ -444,7 +443,7 @@ func decodeFriendGroupListResponse(_ *QQClient, _ *incomingPacketInfo, payload [ totalFriendCount := r.ReadInt16(5) friends := []jce.FriendInfo{} r.ReadSlice(&friends, 7) - var l []*FriendInfo + var l = make([]*FriendInfo, 0, len(friends)) for _, f := range friends { l = append(l, &FriendInfo{ Uin: f.FriendUin, @@ -471,7 +470,7 @@ func decodeGroupListResponse(c *QQClient, _ *incomingPacketInfo, payload []byte) groups := []jce.TroopNumber{} r.ReadSlice(&vecCookie, 4) r.ReadSlice(&groups, 5) - var l []*GroupInfo + var l = make([]*GroupInfo, 0, len(groups)) for _, g := range groups { l = append(l, &GroupInfo{ Uin: g.GroupUin, @@ -504,7 +503,7 @@ func decodeGroupMemberListResponse(_ *QQClient, _ *incomingPacketInfo, payload [ members := []jce.TroopMemberInfo{} r.ReadSlice(&members, 3) next := r.ReadInt64(4) - var l []*GroupMemberInfo + var l = make([]*GroupMemberInfo, 0, len(members)) for _, m := range members { l = append(l, &GroupMemberInfo{ Uin: m.MemberUin, @@ -627,14 +626,12 @@ func decodeOnlinePushTransPacket(c *QQClient, _ *incomingPacketInfo, payload []b case 0x02: if target == c.Uin { c.dispatchLeaveGroupEvent(&GroupLeaveEvent{Group: g}) - } else { - if m := g.FindMember(target); m != nil { - g.removeMember(target) - c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{ - Group: g, - Member: m, - }) - } + } else if m := g.FindMember(target); m != nil { + g.removeMember(target) + c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{ + Group: g, + Member: m, + }) } case 0x03: if err = c.ReloadGroupList(); err != nil { @@ -645,15 +642,13 @@ func decodeOnlinePushTransPacket(c *QQClient, _ *incomingPacketInfo, payload []b Group: g, Operator: g.FindMember(operator), }) - } else { - if m := g.FindMember(target); m != nil { - g.removeMember(target) - c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{ - Group: g, - Member: m, - Operator: g.FindMember(operator), - }) - } + } else if m := g.FindMember(target); m != nil { + g.removeMember(target) + c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{ + Group: g, + Member: m, + Operator: g.FindMember(operator), + }) } case 0x82: if m := g.FindMember(target); m != nil { @@ -678,7 +673,7 @@ func decodeOnlinePushTransPacket(c *QQClient, _ *incomingPacketInfo, payload []b if info.GetMsgType() == 44 { data.ReadBytes(5) var4 := int32(data.ReadByte()) - var var5 int64 = 0 + var var5 = int64(0) target := int64(uint32(data.ReadInt32())) if var4 != 0 && var4 != 1 { var5 = int64(uint32(data.ReadInt32())) @@ -782,11 +777,11 @@ func decodeImageOcrResponse(_ *QQClient, _ *incomingPacketInfo, payload []byte) return nil, errors.New(rsp.Wording) } if rsp.RetCode != 0 { - return nil, errors.New(fmt.Sprintf("server error, code: %v msg: %v", rsp.RetCode, rsp.ErrMsg)) + return nil, errors.Errorf("server error, code: %v msg: %v", rsp.RetCode, rsp.ErrMsg) } - var texts []*TextDetection + var texts = make([]*TextDetection, 0, len(rsp.OcrRspBody.TextDetections)) for _, text := range rsp.OcrRspBody.TextDetections { - var points []*Coordinate + var points = make([]*Coordinate, 0, len(text.Polygon.Coordinates)) for _, c := range text.Polygon.Coordinates { points = append(points, &Coordinate{ X: c.X, diff --git a/client/entities.go b/client/entities.go index bffd9b64..b4b944db 100644 --- a/client/entities.go +++ b/client/entities.go @@ -59,7 +59,7 @@ type ( Nickname string Remark string FaceId int16 - //msgSeqList *utils.Cache + // msgSeqList *utils.Cache } SummaryCardInfo struct { diff --git a/client/global.go b/client/global.go index abe03a26..9b1b1bb5 100644 --- a/client/global.go +++ b/client/global.go @@ -443,7 +443,7 @@ func getSSOAddress() ([]*net.TCPAddr, error) { reader := jce.NewJceReader(data.Map["HttpServerListRes"][1:]) servers := []jce.SsoServerInfo{} reader.ReadSlice(&servers, 2) - var adds []*net.TCPAddr + var adds = make([]*net.TCPAddr, 0, len(servers)) for _, s := range servers { if strings.Contains(s.Server, "com") { continue @@ -552,9 +552,9 @@ func XmlEscape(c string) string { return buf.String() } -func genForwardTemplate(resId, preview, title, brief, source, summary string, ts int64, items []*msg.PbMultiMsgItem) *message.ForwardElement { +func genForwardTemplate(resID, preview, title, brief, source, summary string, ts int64, items []*msg.PbMultiMsgItem) *message.ForwardElement { template := fmt.Sprintf(`%s %s
%s
`, - brief, resId, ts, title, preview, summary, source, + brief, resID, ts, title, preview, summary, source, ) for _, item := range items { if item.GetFileName() == "MultiMsg" { @@ -564,12 +564,12 @@ func genForwardTemplate(resId, preview, title, brief, source, summary string, ts return &message.ForwardElement{ FileName: strconv.FormatInt(ts, 10), Content: template, - ResId: resId, + ResId: resID, Items: items, } } -func genLongTemplate(resId, brief string, ts int64) *message.ServiceElement { +func genLongTemplate(resID, brief string, ts int64) *message.ServiceElement { limited := func() string { if len(brief) > 30 { return brief[:30] + "…" @@ -577,12 +577,12 @@ func genLongTemplate(resId, brief string, ts int64) *message.ServiceElement { return brief }() template := fmt.Sprintf(` %s 点击查看完整消息 `, - XmlEscape(limited), resId, ts, XmlEscape(limited), + XmlEscape(limited), resID, ts, XmlEscape(limited), ) return &message.ServiceElement{ Id: 35, Content: template, - ResId: resId, + ResId: resID, SubType: "Long", } } diff --git a/client/group_file.go b/client/group_file.go index d0aac56e..2cab940e 100644 --- a/client/group_file.go +++ b/client/group_file.go @@ -109,12 +109,12 @@ func (fs *GroupFileSystem) Root() ([]*GroupFile, []*GroupFolder, error) { return fs.GetFilesByFolder("/") } -func (fs *GroupFileSystem) GetFilesByFolder(folderId string) ([]*GroupFile, []*GroupFolder, error) { +func (fs *GroupFileSystem) GetFilesByFolder(folderID string) ([]*GroupFile, []*GroupFolder, error) { var startIndex uint32 = 0 var files []*GroupFile var folders []*GroupFolder for { - i, err := fs.client.sendAndWait(fs.client.buildGroupFileListRequestPacket(fs.GroupCode, folderId, startIndex)) + i, err := fs.client.sendAndWait(fs.client.buildGroupFileListRequestPacket(fs.GroupCode, folderID, startIndex)) if err != nil { return nil, nil, err } @@ -191,7 +191,7 @@ func (fs *GroupFileSystem) UploadFile(p, name, folderId string) error { return fs.client.send(pkt) } if len(rsp.UploadIpLanV4) == 0 { - return errors.New("server requires unsupported ftn upload.") + return errors.New("server requires unsupported ftn upload") } ext, _ := proto.Marshal(&exciting.GroupFileUploadExt{ Unknown1: proto.Int32(100), @@ -243,22 +243,22 @@ func (fs *GroupFileSystem) GetDownloadUrl(file *GroupFile) string { // DeleteFile 删除群文件,需要管理权限. // 返回错误, 空为删除成功 -func (fs *GroupFileSystem) DeleteFile(parentFolderId, fileId string, busId int32) string { - i, err := fs.client.sendAndWait(fs.client.buildGroupFileDeleteReqPacket(fs.GroupCode, parentFolderId, fileId, busId)) +func (fs *GroupFileSystem) DeleteFile(parentFolderID, fileId string, busId int32) string { + i, err := fs.client.sendAndWait(fs.client.buildGroupFileDeleteReqPacket(fs.GroupCode, parentFolderID, fileId, busId)) if err != nil { return err.Error() } return i.(string) } -func (c *QQClient) buildGroupFileUploadReqPacket(parentFolderId, fileName string, groupCode, fileSize int64, md5, sha1 []byte) (uint16, []byte) { +func (c *QQClient) buildGroupFileUploadReqPacket(parentFolderID, fileName string, groupCode, fileSize int64, md5, sha1 []byte) (uint16, []byte) { seq := c.nextSeq() b, _ := proto.Marshal(&oidb.D6D6ReqBody{UploadFileReq: &oidb.UploadFileReqBody{ GroupCode: groupCode, AppId: 3, BusId: 102, Entrance: 5, - ParentFolderId: parentFolderId, + ParentFolderId: parentFolderID, FileName: fileName, LocalPath: "/storage/emulated/0/Pictures/files/s/" + fileName, Int64FileSize: fileSize, @@ -277,13 +277,13 @@ func (c *QQClient) buildGroupFileUploadReqPacket(parentFolderId, fileName string return seq, packet } -func (c *QQClient) buildGroupFileFeedsRequest(groupCode int64, fileId string, busId, msgRand int32) (uint16, []byte) { +func (c *QQClient) buildGroupFileFeedsRequest(groupCode int64, fileID string, busId, msgRand int32) (uint16, []byte) { seq := c.nextSeq() req := c.packOIDBPackageProto(1753, 4, &oidb.D6D9ReqBody{FeedsInfoReq: &oidb.FeedsReqBody{ GroupCode: proto.Uint64(uint64(groupCode)), AppId: proto.Uint32(3), FeedsInfoList: []*oidb.GroupFileFeedsInfo{{ - FileId: &fileId, + FileId: &fileID, FeedFlag: proto.Uint32(1), BusId: proto.Uint32(uint32(busId)), MsgRandom: proto.Uint32(uint32(msgRand)), @@ -294,12 +294,12 @@ func (c *QQClient) buildGroupFileFeedsRequest(groupCode int64, fileId string, bu } // OidbSvc.0x6d8_1 -func (c *QQClient) buildGroupFileListRequestPacket(groupCode int64, folderId string, startIndex uint32) (uint16, []byte) { +func (c *QQClient) buildGroupFileListRequestPacket(groupCode int64, folderID string, startIndex uint32) (uint16, []byte) { seq := c.nextSeq() body := &oidb.D6D8ReqBody{FileListInfoReq: &oidb.GetFileListReqBody{ GroupCode: proto.Uint64(uint64(groupCode)), AppId: proto.Uint32(3), - FolderId: &folderId, + FolderId: &folderID, FileCount: proto.Uint32(20), AllFileCount: proto.Uint32(0), ReqFrom: proto.Uint32(3), diff --git a/client/group_msg.go b/client/group_msg.go index 25a61b55..b48f9ba0 100644 --- a/client/group_msg.go +++ b/client/group_msg.go @@ -564,8 +564,8 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage { } // SetEssenceMessage 设为群精华消息 -func (c *QQClient) SetEssenceMessage(groupCode int64, msgId, msgInternalId int32) error { - r, err := c.sendAndWait(c.buildEssenceMsgOperatePacket(groupCode, uint32(msgId), uint32(msgInternalId), 1)) +func (c *QQClient) SetEssenceMessage(groupCode int64, msgID, msgInternalId int32) error { + r, err := c.sendAndWait(c.buildEssenceMsgOperatePacket(groupCode, uint32(msgID), uint32(msgInternalId), 1)) if err != nil { return errors.Wrap(err, "set essence msg network") } @@ -577,8 +577,8 @@ func (c *QQClient) SetEssenceMessage(groupCode int64, msgId, msgInternalId int32 } // DeleteEssenceMessage 移出群精华消息 -func (c *QQClient) DeleteEssenceMessage(groupCode int64, msgId, msgInternalId int32) error { - r, err := c.sendAndWait(c.buildEssenceMsgOperatePacket(groupCode, uint32(msgId), uint32(msgInternalId), 2)) +func (c *QQClient) DeleteEssenceMessage(groupCode int64, msgID, msgInternalId int32) error { + r, err := c.sendAndWait(c.buildEssenceMsgOperatePacket(groupCode, uint32(msgID), uint32(msgInternalId), 2)) if err != nil { return errors.Wrap(err, "set essence msg networ") } diff --git a/client/highway.go b/client/highway.go index f54db0bb..c073c96a 100644 --- a/client/highway.go +++ b/client/highway.go @@ -23,8 +23,8 @@ import ( "google.golang.org/protobuf/proto" ) -func (c *QQClient) highwayUpload(ip uint32, port int, updKey, data []byte, cmdId int32) error { - return c.highwayUploadStream(ip, port, updKey, bytes.NewReader(data), cmdId) +func (c *QQClient) highwayUpload(ip uint32, port int, updKey, data []byte, cmdID int32) error { + return c.highwayUploadStream(ip, port, updKey, bytes.NewReader(data), cmdID) } func (c *QQClient) highwayUploadStream(ip uint32, port int, updKey []byte, stream io.ReadSeeker, cmdId int32) error { @@ -48,10 +48,10 @@ func (c *QQClient) highwayUploadStream(ip uint32, port int, updKey []byte, strea for { chunk := make([]byte, chunkSize) rl, err := io.ReadFull(stream, chunk) - if err == io.EOF { + if errors.Is(err, io.EOF) { break } - if err == io.ErrUnexpectedEOF { + if errors.Is(err, io.ErrUnexpectedEOF) { chunk = chunk[:rl] } ch := md5.Sum(chunk) @@ -72,7 +72,7 @@ func (c *QQClient) highwayUploadStream(ip uint32, port int, updKey []byte, strea Datalength: int32(rl), Serviceticket: updKey, Md5: ch[:], - FileMd5: fh[:], + FileMd5: fh, }, ReqExtendinfo: EmptyBytes, }) @@ -131,10 +131,10 @@ func (c *QQClient) highwayUploadByBDH(stream io.ReadSeeker, cmdId int32, ticket, for { chunk := make([]byte, chunkSize) rl, err := io.ReadFull(stream, chunk) - if err == io.EOF { + if errors.Is(err, io.EOF) { break } - if err == io.ErrUnexpectedEOF { + if errors.Is(err, io.ErrUnexpectedEOF) { chunk = chunk[:rl] } ch := md5.Sum(chunk) @@ -306,7 +306,7 @@ func (c *QQClient) highwayUploadFileMultiThreadingByBDH(path string, cmdId int32 Datalength: int32(ri), Serviceticket: ticket, Md5: ch[:], - FileMd5: fh[:], + FileMd5: fh, }, ReqExtendinfo: ext, }) diff --git a/client/image.go b/client/image.go index c065357b..86a64712 100644 --- a/client/image.go +++ b/client/image.go @@ -14,8 +14,8 @@ import ( "github.com/Mrs4s/MiraiGo/message" "github.com/Mrs4s/MiraiGo/protocol/packets" "github.com/Mrs4s/MiraiGo/utils" - "github.com/golang/protobuf/proto" "github.com/pkg/errors" + "google.golang.org/protobuf/proto" ) func init() { @@ -26,7 +26,7 @@ func (c *QQClient) UploadGroupImage(groupCode int64, img io.ReadSeeker) (*messag _, _ = img.Seek(0, io.SeekStart) // safe fh, length := utils.ComputeMd5AndLength(img) _, _ = img.Seek(0, io.SeekStart) - seq, pkt := c.buildGroupImageStorePacket(groupCode, fh[:], int32(length)) + seq, pkt := c.buildGroupImageStorePacket(groupCode, fh, int32(length)) r, err := c.sendAndWait(seq, pkt) if err != nil { return nil, err @@ -57,7 +57,7 @@ ok: if bytes.Equal(tmp, []byte{0x47, 0x49, 0x46, 0x38}) { imageType = 2000 } - return message.NewGroupImage(binary.CalculateImageResourceId(fh[:]), fh[:], rsp.FileId, int32(length), int32(i.Width), int32(i.Height), imageType), nil + return message.NewGroupImage(binary.CalculateImageResourceId(fh), fh, rsp.FileId, int32(length), int32(i.Width), int32(i.Height), imageType), nil } func (c *QQClient) UploadGroupImageByFile(groupCode int64, path string) (*message.GroupImageElement, error) { @@ -110,7 +110,7 @@ func (c *QQClient) uploadPrivateImage(target int64, img io.ReadSeeker, count int count++ fh, length := utils.ComputeMd5AndLength(img) _, _ = img.Seek(0, io.SeekStart) - e, err := c.QueryFriendImage(target, fh[:], int32(length)) + e, err := c.QueryFriendImage(target, fh, int32(length)) if errors.Is(err, ErrNotExists) { // use group highway upload and query again for image id. if _, err = c.UploadGroupImage(target, img); err != nil { diff --git a/client/multimsg.go b/client/multimsg.go index 81e3434e..58483f93 100644 --- a/client/multimsg.go +++ b/client/multimsg.go @@ -62,7 +62,7 @@ func decodeMultiApplyUpResponse(_ *QQClient, _ *incomingPacketInfo, payload []by } // MultiMsg.ApplyDown -func (c *QQClient) buildMultiApplyDownPacket(resId string) (uint16, []byte) { +func (c *QQClient) buildMultiApplyDownPacket(resID string) (uint16, []byte) { seq := c.nextSeq() req := &multimsg.MultiReqBody{ Subcmd: 2, @@ -72,7 +72,7 @@ func (c *QQClient) buildMultiApplyDownPacket(resId string) (uint16, []byte) { BuildVer: "8.2.0.1296", MultimsgApplydownReq: []*multimsg.MultiMsgApplyDownReq{ { - MsgResid: []byte(resId), + MsgResid: []byte(resID), MsgType: 3, }, }, diff --git a/client/notify.go b/client/notify.go index baa8dc3c..0d010020 100644 --- a/client/notify.go +++ b/client/notify.go @@ -38,9 +38,9 @@ type ( ) // grayTipProcessor 提取出来专门用于处理群内 notify tips -func (c *QQClient) grayTipProcessor(groupId int64, tipInfo *notify.GeneralGrayTipInfo) { +func (c *QQClient) grayTipProcessor(groupID int64, tipInfo *notify.GeneralGrayTipInfo) { if tipInfo.BusiType == 12 && tipInfo.BusiId == 1061 { - var sender int64 = 0 + var sender = int64(0) receiver := c.Uin for _, templ := range tipInfo.MsgTemplParam { if templ.Name == "uin_str1" { @@ -52,7 +52,7 @@ func (c *QQClient) grayTipProcessor(groupId int64, tipInfo *notify.GeneralGrayTi } if sender != 0 { c.dispatchGroupNotifyEvent(&GroupPokeNotifyEvent{ - GroupCode: groupId, + GroupCode: groupID, Sender: sender, Receiver: receiver, }) @@ -71,7 +71,7 @@ func (c *QQClient) grayTipProcessor(groupId int64, tipInfo *notify.GeneralGrayTi } } c.dispatchGroupNotifyEvent(&MemberHonorChangedNotifyEvent{ - GroupCode: groupId, + GroupCode: groupID, Honor: func() HonorType { switch tipInfo.TemplId { case 1052: diff --git a/client/online_push.go b/client/online_push.go index 1a3dec71..965e205d 100644 --- a/client/online_push.go +++ b/client/online_push.go @@ -41,7 +41,7 @@ func decodeOnlinePushReqPacket(c *QQClient, info *incomingPacketInfo, payload [] // 0x2dc if m.MsgType == 732 { r := binary.NewReader(m.VMsg) - groupId := int64(uint32(r.ReadInt32())) + groupID := int64(uint32(r.ReadInt32())) iType := r.ReadByte() r.ReadByte() switch iType { @@ -54,7 +54,7 @@ func decodeOnlinePushReqPacket(c *QQClient, info *incomingPacketInfo, payload [] target := int64(uint32(r.ReadInt32())) t := r.ReadInt32() c.dispatchGroupMuteEvent(&GroupMuteEvent{ - GroupCode: groupId, + GroupCode: groupID, OperatorUin: operator, TargetUin: target, Time: t, @@ -69,7 +69,7 @@ func decodeOnlinePushReqPacket(c *QQClient, info *incomingPacketInfo, payload [] continue } c.dispatchGroupMessageRecalledEvent(&GroupMessageRecalledEvent{ - GroupCode: groupId, + GroupCode: groupID, OperatorUin: b.OptMsgRecall.Uin, AuthorUin: rm.AuthorUin, MessageId: rm.Seq, @@ -78,12 +78,12 @@ func decodeOnlinePushReqPacket(c *QQClient, info *incomingPacketInfo, payload [] } } if b.OptGeneralGrayTip != nil { - c.grayTipProcessor(groupId, b.OptGeneralGrayTip) + c.grayTipProcessor(groupID, b.OptGeneralGrayTip) } if b.OptMsgRedTips != nil { if b.OptMsgRedTips.LuckyFlag == 1 { // 运气王提示 c.dispatchGroupNotifyEvent(&GroupRedBagLuckyKingNotifyEvent{ - GroupCode: groupId, + GroupCode: groupID, Sender: int64(b.OptMsgRedTips.SenderUin), LuckyKing: int64(b.OptMsgRedTips.LuckyUin), }) @@ -178,8 +178,7 @@ func msgType0x210Sub27Decoder(c *QQClient, protobuf []byte) error { for _, m := range s27.ModInfos { if m.ModGroupProfile != nil { for _, info := range m.ModGroupProfile.GroupProfileInfos { - switch info.GetField() { // 1 -> group name 2 -> group head 3 -> group creditLevel - case 1: + if info.GetField() == 1 { if g := c.FindGroup(int64(m.ModGroupProfile.GetGroupCode())); g != nil { old := g.Name g.Name = string(info.GetValue()) diff --git a/client/ptt.go b/client/ptt.go index fc361c8e..6a3a3d44 100644 --- a/client/ptt.go +++ b/client/ptt.go @@ -276,7 +276,7 @@ func decodeGroupPttStoreResponse(_ *QQClient, _ *incomingPacketInfo, payload []b if rsp.BoolFileExit { return pttUploadResponse{IsExists: true}, nil } - var ip []string + var ip = make([]string, 0, len(rsp.Uint32UpIp)) for _, i := range rsp.Uint32UpIp { ip = append(ip, binary.UInt32ToIPV4Address(uint32(i))) } diff --git a/client/recall.go b/client/recall.go index 36c9fb24..a555ea83 100644 --- a/client/recall.go +++ b/client/recall.go @@ -10,24 +10,24 @@ import ( // 撤回相关处理逻辑 -func (c *QQClient) RecallGroupMessage(groupCode int64, msgId, msgInternalId int32) error { - if m, _ := c.GetGroupMessages(groupCode, int64(msgId), int64(msgId)); len(m) > 0 { +func (c *QQClient) RecallGroupMessage(groupCode int64, msgID, msgInternalId int32) error { + if m, _ := c.GetGroupMessages(groupCode, int64(msgID), int64(msgID)); len(m) > 0 { content := m[0].OriginalObject.Content if content.GetPkgNum() > 1 { - if m, err := c.GetGroupMessages(groupCode, int64(msgId-content.GetPkgIndex()-1), int64(msgId+(content.GetPkgNum()-content.GetPkgIndex()+1))); err == nil { + if m, err := c.GetGroupMessages(groupCode, int64(msgID-content.GetPkgIndex()-1), int64(msgID+(content.GetPkgNum()-content.GetPkgIndex()+1))); err == nil { if flag, _ := c.internalGroupRecall(groupCode, msgInternalId, m); flag { return nil } } } } - _, err := c.sendAndWait(c.buildGroupRecallPacket(groupCode, msgId, msgInternalId)) + _, err := c.sendAndWait(c.buildGroupRecallPacket(groupCode, msgID, msgInternalId)) return err } -func (c *QQClient) internalGroupRecall(groupCode int64, msgInternalId int32, m []*message.GroupMessage) (flag bool, err error) { +func (c *QQClient) internalGroupRecall(groupCode int64, msgInternalID int32, m []*message.GroupMessage) (flag bool, err error) { for _, item := range m { - if item.InternalId == msgInternalId { + if item.InternalId == msgInternalID { flag = true if _, err := c.sendAndWait(c.buildGroupRecallPacket(groupCode, item.Id, item.InternalId)); err != nil { return false, err @@ -37,8 +37,8 @@ func (c *QQClient) internalGroupRecall(groupCode int64, msgInternalId int32, m [ return flag, nil } -func (c *QQClient) RecallPrivateMessage(uin, ts int64, msgId, msgInternalId int32) error { - _, err := c.sendAndWait(c.buildPrivateRecallPacket(uin, ts, msgId, msgInternalId)) +func (c *QQClient) RecallPrivateMessage(uin, ts int64, msgID, msgInternalId int32) error { + _, err := c.sendAndWait(c.buildPrivateRecallPacket(uin, ts, msgID, msgInternalId)) return err } diff --git a/client/sync.go b/client/sync.go index 789d4cec..a53981b0 100644 --- a/client/sync.go +++ b/client/sync.go @@ -56,7 +56,7 @@ func (c *QQClient) GetAllowedClients() ([]*OtherClientInfo, error) { return nil, err } list := i.([]jce.SvcDevLoginInfo) - var ret []*OtherClientInfo + var ret = make([]*OtherClientInfo, 0, len(list)) for _, l := range list { ret = append(ret, &OtherClientInfo{ AppId: l.AppId, @@ -210,7 +210,7 @@ func (c *QQClient) buildSyncMsgRequestPacket() (uint16, []byte) { }, }}) regReq := &jce.SvcReqRegisterNew{ - RequestOptional: 128 | 0 | 64 | 256 | 2 | 8192 | 16384 | 65536, + RequestOptional: 128 | 64 | 256 | 2 | 8192 | 16384 | 65536, DisGroupMsgFilter: 1, C2CMsg: &jce.SvcReqGetMsgV2{ Uin: c.Uin, diff --git a/client/system_msg.go b/client/system_msg.go index 97e13bcb..a2578a83 100644 --- a/client/system_msg.go +++ b/client/system_msg.go @@ -134,11 +134,11 @@ func (c *QQClient) buildSystemMsgNewGroupPacket(suspicious bool) (uint16, []byte } // ProfileService.Pb.ReqSystemMsgAction.Group -func (c *QQClient) buildSystemMsgGroupActionPacket(reqId, requester, group int64, msgType int32, isInvite, accept, block bool, reason string) (uint16, []byte) { +func (c *QQClient) buildSystemMsgGroupActionPacket(reqID, requester, group int64, msgType int32, isInvite, accept, block bool, reason string) (uint16, []byte) { seq := c.nextSeq() req := &structmsg.ReqSystemMsgAction{ MsgType: msgType, - MsgSeq: reqId, + MsgSeq: reqID, ReqUin: requester, SubType: 1, SrcId: 3, @@ -174,11 +174,11 @@ func (c *QQClient) buildSystemMsgGroupActionPacket(reqId, requester, group int64 } // ProfileService.Pb.ReqSystemMsgAction.Friend -func (c *QQClient) buildSystemMsgFriendActionPacket(reqId, requester int64, accept bool) (uint16, []byte) { +func (c *QQClient) buildSystemMsgFriendActionPacket(reqID, requester int64, accept bool) (uint16, []byte) { seq := c.nextSeq() req := &structmsg.ReqSystemMsgAction{ MsgType: 1, - MsgSeq: reqId, + MsgSeq: reqID, ReqUin: requester, SubType: 1, SrcId: 6, diff --git a/client/tlv_decoders.go b/client/tlv_decoders.go index 88c6e0fb..f9a218d5 100644 --- a/client/tlv_decoders.go +++ b/client/tlv_decoders.go @@ -150,9 +150,9 @@ func (c *QQClient) decodeT186(data []byte) { // --- tlv readers --- -func readT125(data []byte) (openId, openKey []byte) { +func readT125(data []byte) (openID, openKey []byte) { reader := binary.NewReader(data) - openId = reader.ReadBytesShort() + openID = reader.ReadBytesShort() openKey = reader.ReadBytesShort() return } @@ -166,9 +166,9 @@ func readT11A(data []byte) (nick string, age, gender uint16) { return } -func readT199(data []byte) (openId, payToken []byte) { +func readT199(data []byte) (openID, payToken []byte) { reader := binary.NewReader(data) - openId = reader.ReadBytesShort() + openID = reader.ReadBytesShort() payToken = reader.ReadBytesShort() return } diff --git a/message/message.go b/message/message.go index 3920c4fb..fd3fc554 100644 --- a/message/message.go +++ b/message/message.go @@ -588,7 +588,7 @@ func (forMsg *ForwardMessage) CalculateValidationDataForward(seq, random int32, } func (forMsg *ForwardMessage) packForwardMsg(seq int32, random int32, groupCode int64) []*msg.Message { - var msgs []*msg.Message + var msgs = make([]*msg.Message, 0, len(forMsg.Nodes)) for _, node := range forMsg.Nodes { msgs = append(msgs, &msg.Message{ Head: &msg.MessageHead{ diff --git a/message/pack.go b/message/pack.go index f686a693..f0b86b8f 100644 --- a/message/pack.go +++ b/message/pack.go @@ -5,7 +5,7 @@ import ( "github.com/Mrs4s/MiraiGo/binary" "github.com/Mrs4s/MiraiGo/client/pb/msg" - "github.com/golang/protobuf/proto" + "google.golang.org/protobuf/proto" ) var imgOld = []byte{0x15, 0x36, 0x20, 0x39, 0x32, 0x6B, 0x41, 0x31, 0x00, 0x38, 0x37, 0x32, 0x66, 0x30, 0x36, 0x36, 0x30, 0x33, 0x61, 0x65, 0x31, 0x30, 0x33, 0x62, 0x37, 0x20, 0x20, 0x20, 0x20, 0x20, @@ -101,7 +101,7 @@ func (e *GroupImageElement) Pack() (r []*msg.Elem) { FilePath: &e.ImageId, ImageType: &e.ImageType, Size: &e.Size, - Md5: e.Md5[:], + Md5: e.Md5, Flag: make([]byte, 4), //OldData: imgOld, }, @@ -216,7 +216,7 @@ func (e *GroupFlashPicElement) Pack() (r []*msg.Elem) { FileId: proto.Int32(int32(e.FileId)), FilePath: &e.ImageId, Size: &e.Size, - Md5: e.Md5[:], + Md5: e.Md5, Flag: make([]byte, 4), }, } @@ -250,7 +250,7 @@ func (e *GroupShowPicElement) Pack() (r []*msg.Elem) { FileId: proto.Int32(int32(e.FileId)), FilePath: &e.ImageId, Size: &e.Size, - Md5: e.Md5[:], + Md5: e.Md5, Flag: []byte{0x11, 0x00, 0x00, 0x00}, //OldData: imgOld, PbReserve: reserve, diff --git a/protocol/packets/builders.go b/protocol/packets/builders.go index 20f8d2cc..84a87af1 100644 --- a/protocol/packets/builders.go +++ b/protocol/packets/builders.go @@ -25,7 +25,7 @@ func BuildLoginPacket(uin int64, bodyType byte, key, body, extraData []byte) []b return w.Bytes() } -func BuildUniPacket(uin int64, seq uint16, commandName string, encryptType byte, sessionId, extraData, key, body []byte) []byte { +func BuildUniPacket(uin int64, seq uint16, commandName string, encryptType byte, sessionID, extraData, key, body []byte) []byte { w := binary.NewWriter() w.WriteIntLvPacket(4, func(w *binary.Writer) { w.WriteUInt32(0x0B) @@ -34,7 +34,7 @@ func BuildUniPacket(uin int64, seq uint16, commandName string, encryptType byte, w.WriteByte(0) w.WriteString(strconv.FormatInt(uin, 10)) w.EncryptAndWrite(key, binary.NewWriterF(func(w *binary.Writer) { - w.WriteUniPacket(commandName, sessionId, extraData, body) + w.WriteUniPacket(commandName, sessionID, extraData, body) })) }) return w.Bytes() diff --git a/protocol/packets/global.go b/protocol/packets/global.go index 3793cc4a..e4b05f10 100644 --- a/protocol/packets/global.go +++ b/protocol/packets/global.go @@ -72,12 +72,12 @@ func BuildCode2DRequestPacket(seq uint32, j uint64, cmd uint16, bodyFunc func(wr }) } -func BuildSsoPacket(seq uint16, appId uint32, commandName, imei string, extData, outPacketSessionId, body, ksid []byte) []byte { +func BuildSsoPacket(seq uint16, appID uint32, commandName, imei string, extData, outPacketSessionId, body, ksid []byte) []byte { p := binary.NewWriter() p.WriteIntLvPacket(4, func(writer *binary.Writer) { writer.WriteUInt32(uint32(seq)) - writer.WriteUInt32(appId) - writer.WriteUInt32(appId) + writer.WriteUInt32(appID) + writer.WriteUInt32(appID) writer.Write([]byte{0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}) if len(extData) == 0 || len(extData) == 4 { writer.WriteUInt32(0x04) @@ -142,7 +142,7 @@ func parseSsoFrame(payload []byte, flag2 byte) (*IncomingPacket, error) { if reader.ReadInt32()-4 > int32(reader.Len()) { return nil, errors.WithStack(ErrPacketDropped) } - seqId := reader.ReadInt32() + seqID := reader.ReadInt32() retCode := reader.ReadInt32() if retCode != 0 { if retCode == -10008 { @@ -152,13 +152,13 @@ func parseSsoFrame(payload []byte, flag2 byte) (*IncomingPacket, error) { } reader.ReadBytes(int(reader.ReadInt32()) - 4) // extra data commandName := reader.ReadString() - sessionId := reader.ReadBytes(int(reader.ReadInt32()) - 4) + sessionID := reader.ReadBytes(int(reader.ReadInt32()) - 4) if commandName == "Heartbeat.Alive" { return &IncomingPacket{ - SequenceId: uint16(seqId), + SequenceId: uint16(seqID), Flag2: flag2, CommandName: commandName, - SessionId: sessionId, + SessionId: sessionID, Payload: []byte{}, }, nil } @@ -182,10 +182,10 @@ func parseSsoFrame(payload []byte, flag2 byte) (*IncomingPacket, error) { return nil }() return &IncomingPacket{ - SequenceId: uint16(seqId), + SequenceId: uint16(seqID), Flag2: flag2, CommandName: commandName, - SessionId: sessionId, + SessionId: sessionID, Payload: packet, }, nil } diff --git a/utils/string.go b/utils/string.go index 48703a74..bf3711d3 100644 --- a/utils/string.go +++ b/utils/string.go @@ -44,7 +44,7 @@ func ChunkString(s string, chunkSize int) []string { func ChineseLength(str string, limit int) int { sum := 0 - for _, r := range []rune(str) { + for _, r := range str { switch { case r >= '\u0000' && r <= '\u007F': sum += 1 @@ -62,9 +62,9 @@ func ChineseLength(str string, limit int) int { return sum } -// from github.com/savsgio/gotils/strconv // B2S converts byte slice to a string without memory allocation. // See https://groups.google.com/forum/#!msg/Golang-Nuts/ENgbUzYvCuU/90yGx7GUAgAJ . +// from github.com/savsgio/gotils/strconv func B2S(b []byte) string { return *(*string)(unsafe.Pointer(&b)) }