1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +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) {
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,

View File

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