diff --git a/bot.go b/bot.go index c6ca084..1cef4d4 100644 --- a/bot.go +++ b/bot.go @@ -208,30 +208,33 @@ func (bot *BotAPI) UploadFile(endpoint string, params Params, fieldname string, ms.SetupRequest(req) - res, err := bot.Client.Do(req) + resp, err := bot.Client.Do(req) if err != nil { return APIResponse{}, err } - defer res.Body.Close() + defer resp.Body.Close() - bytes, err := ioutil.ReadAll(res.Body) + var apiResp APIResponse + bytes, err := bot.decodeAPIResponse(resp.Body, &apiResp) if err != nil { - return APIResponse{}, err + return apiResp, err } if bot.Debug { log.Printf("Endpoint: %s, response: %s\n", endpoint, string(bytes)) } - var apiResp APIResponse + if !apiResp.Ok { + var parameters ResponseParameters - err = json.Unmarshal(bytes, &apiResp) - if err != nil { - return APIResponse{}, err - } + if apiResp.Parameters != nil { + parameters = *apiResp.Parameters + } - if !apiResp.Ok { - return APIResponse{}, errors.New(apiResp.Description) + return apiResp, Error{ + Message: apiResp.Description, + ResponseParameters: parameters, + } } return apiResp, nil diff --git a/configs.go b/configs.go index 0258d74..6ff2867 100644 --- a/configs.go +++ b/configs.go @@ -1363,7 +1363,9 @@ func (config UploadStickerConfig) getFile() interface{} { } func (config UploadStickerConfig) useExistingFile() bool { - return false + _, ok := config.PNGSticker.(string) + + return ok } // NewStickerSetConfig allows creating a new sticker set. @@ -1453,7 +1455,9 @@ func (config AddStickerConfig) getFile() interface{} { } func (config AddStickerConfig) useExistingFile() bool { - return false + _, ok := config.PNGSticker.(string) + + return ok } // SetStickerPositionConfig allows you to change the position of a sticker in a set.