From a54d978fa9bea80c673945d86599ed4e9f29e86e Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Wed, 11 Nov 2020 22:05:26 +0800 Subject: [PATCH] fix private image upload error. --- client/client.go | 17 +++++++++++------ client/entities.go | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/client/client.go b/client/client.go index bb2603a5..689c4425 100644 --- a/client/client.go +++ b/client/client.go @@ -641,18 +641,20 @@ func (c *QQClient) UploadPrivateImage(target int64, img []byte) (*message.Friend func (c *QQClient) uploadPrivateImage(target int64, img []byte, count int) (*message.FriendImageElement, error) { count++ h := md5.Sum(img) - e, err := c.QueryFriendImage(target, h[:], int32(len(img))) - if err != nil { + e, err := c.QueryFriendImage(target, h[:], img, int32(len(img))) + if err == ErrNotExists { // use group highway upload and query again for image id. if _, err = c.UploadGroupImage(target, img); err != nil { return nil, err } - // safe if count >= 5 { - return nil, errors.New("upload failed") + return e, nil } return c.uploadPrivateImage(target, img, count) } + if err != nil { + return nil, err + } return e, nil } @@ -689,7 +691,7 @@ func (c *QQClient) QueryGroupImage(groupCode int64, hash []byte, size int32) (*m return nil, errors.New("image not exists") } -func (c *QQClient) QueryFriendImage(target int64, hash []byte, size int32) (*message.FriendImageElement, error) { +func (c *QQClient) QueryFriendImage(target int64, hash, img []byte, size int32) (*message.FriendImageElement, error) { i, err := c.sendAndWait(c.buildOffPicUpPacket(target, hash, size)) if err != nil { return nil, err @@ -699,7 +701,10 @@ func (c *QQClient) QueryFriendImage(target int64, hash []byte, size int32) (*mes return nil, errors.New(rsp.Message) } if !rsp.IsExists { - return nil, errors.New("image not exists") + return &message.FriendImageElement{ + ImageId: rsp.ResourceId, + Md5: hash, + }, ErrNotExists } return &message.FriendImageElement{ ImageId: rsp.ResourceId, diff --git a/client/entities.go b/client/entities.go index 172c6e83..d46743e1 100644 --- a/client/entities.go +++ b/client/entities.go @@ -11,6 +11,7 @@ import ( var ( ErrAlreadyOnline = errors.New("already online") ErrMemberNotFound = errors.New("member not found") + ErrNotExists = errors.New("not exists") ) type (