diff --git a/bot.go b/bot.go index a996790..30b5fe7 100644 --- a/bot.go +++ b/bot.go @@ -202,7 +202,6 @@ func (bot *BotAPI) UploadFile(endpoint string, params map[string]string, fieldna } ms.SetupRequest(req) - res, err := bot.Client.Do(req) if err != nil { return APIResponse{}, err @@ -317,7 +316,6 @@ func (bot *BotAPI) uploadAndSend(method string, config Fileable) (Message, error } file := config.getFile() - resp, err := bot.UploadFile(method, params, config.name(), file) if err != nil { return Message{}, err diff --git a/configs.go b/configs.go index 181d4e4..a83e70b 100644 --- a/configs.go +++ b/configs.go @@ -934,6 +934,59 @@ func (config EditMessageReplyMarkupConfig) method() string { return "editMessageReplyMarkup" } +// EditMessageMediaConfig allows you to modify the media +// of a message. +type EditMessageMediaConfig struct { + BaseFile + BaseEdit + Media interface{} `json:"media"` + ParseMode string + DisableWebPagePreview bool +} + +func (config EditMessageMediaConfig) values() (url.Values, error) { + v, err := config.BaseChat.values() + if err != nil { + return v, err + } + v, err = config.BaseEdit.values() + if err != nil { + return v, err + } + if !config.UseExisting { + fileName := "" + switch mType := config.Media.(type) { + case InputMediaPhoto: + fileName = mType.Media + mType.Media = "attach://" + config.name() + config.Media = mType + case InputMediaVideo: + fileName = mType.Media + mType.Media = "attach://" + config.name() + config.Media = mType + } + config.File = fileName + } + + bytes, err := json.Marshal(config.Media) + if err != nil { + return v, err + } + v.Add("media", string(bytes)) + v.Add("parse_mode", config.ParseMode) + v.Add("disable_web_page_preview", strconv.FormatBool(config.DisableWebPagePreview)) + + return v, nil +} + +func (config EditMessageMediaConfig) name() string { + return "fileName" +} + +func (config EditMessageMediaConfig) method() string { + return "editMessageMedia" +} + // UserProfilePhotosConfig contains information about a // GetUserProfilePhotos request. type UserProfilePhotosConfig struct { diff --git a/helpers.go b/helpers.go index 3dabe11..38ee7a4 100644 --- a/helpers.go +++ b/helpers.go @@ -638,6 +638,48 @@ func NewEditMessageReplyMarkup(chatID int64, messageID int, replyMarkup InlineKe } } +// NewEditMessageReplyMedia allows you to edit audio, document, photo, or video messages +// keyboard markup. +func NewEditMessageMedia(chatID int64, messageID int, media interface{}) EditMessageMediaConfig { + fileName := "" + switch media.(type) { + case InputMediaPhoto: + photo := media.(InputMediaPhoto) + fileName = photo.Media + case InputMediaVideo: + video := media.(InputMediaVideo) + fileName = video.Media + } + return EditMessageMediaConfig{ + BaseEdit: BaseEdit{ + ChatID: chatID, + MessageID: messageID, + }, + Media: media, + BaseFile: BaseFile{ + FileID: fileName, + UseExisting: true, + }, + } +} + +// NewEditMessageReplyMedia allows you to edit audio, document, photo, or video messages +// keyboard markup. +func NewEditMessageMediaUpload(chatID int64, messageID int, media interface{}) EditMessageMediaConfig { + return EditMessageMediaConfig{ + BaseEdit: BaseEdit{ + ChatID: chatID, + MessageID: messageID, + }, + Media: media, + BaseFile: BaseFile{ + BaseChat: BaseChat{ChatID: chatID}, + File: media, + UseExisting: false, + }, + } +} + // NewHideKeyboard hides the keyboard, with the option for being selective // or hiding for everyone. func NewHideKeyboard(selective bool) ReplyKeyboardHide {