1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-05 03:23:50 +08:00

fix private image upload error.

This commit is contained in:
Mrs4s 2020-11-11 22:05:26 +08:00
parent 1b08a69f87
commit a54d978fa9
2 changed files with 12 additions and 6 deletions

View File

@ -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) { func (c *QQClient) uploadPrivateImage(target int64, img []byte, count int) (*message.FriendImageElement, error) {
count++ count++
h := md5.Sum(img) h := md5.Sum(img)
e, err := c.QueryFriendImage(target, h[:], int32(len(img))) e, err := c.QueryFriendImage(target, h[:], img, int32(len(img)))
if err != nil { if err == ErrNotExists {
// use group highway upload and query again for image id. // use group highway upload and query again for image id.
if _, err = c.UploadGroupImage(target, img); err != nil { if _, err = c.UploadGroupImage(target, img); err != nil {
return nil, err return nil, err
} }
// safe
if count >= 5 { if count >= 5 {
return nil, errors.New("upload failed") return e, nil
} }
return c.uploadPrivateImage(target, img, count) return c.uploadPrivateImage(target, img, count)
} }
if err != nil {
return nil, err
}
return e, nil 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") 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)) i, err := c.sendAndWait(c.buildOffPicUpPacket(target, hash, size))
if err != nil { if err != nil {
return nil, err return nil, err
@ -699,7 +701,10 @@ func (c *QQClient) QueryFriendImage(target int64, hash []byte, size int32) (*mes
return nil, errors.New(rsp.Message) return nil, errors.New(rsp.Message)
} }
if !rsp.IsExists { if !rsp.IsExists {
return nil, errors.New("image not exists") return &message.FriendImageElement{
ImageId: rsp.ResourceId,
Md5: hash,
}, ErrNotExists
} }
return &message.FriendImageElement{ return &message.FriendImageElement{
ImageId: rsp.ResourceId, ImageId: rsp.ResourceId,

View File

@ -11,6 +11,7 @@ import (
var ( var (
ErrAlreadyOnline = errors.New("already online") ErrAlreadyOnline = errors.New("already online")
ErrMemberNotFound = errors.New("member not found") ErrMemberNotFound = errors.New("member not found")
ErrNotExists = errors.New("not exists")
) )
type ( type (