diff --git a/bot.go b/bot.go index 6642ceab..5544f9cd 100644 --- a/bot.go +++ b/bot.go @@ -304,6 +304,182 @@ func (bot *BotAPI) Send(c Chattable) (Message, error) { return message, err } +// DeleteMessage deletes a message +func (bot *BotAPI) DeleteMessage(chatID int64, messageID int) error { + req := NewDeleteMessage(chatID, messageID) + _, err := bot.Request(req) + return err +} + +func (bot *BotAPI) EditMessageText(chatID int64, messageID int, text string) (Message, error) { + req := NewEditMessageText(chatID, messageID, text) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageReplyMarkup(chatID int64, messageID int, replyMarkup InlineKeyboardMarkup) (Message, error) { + req := NewEditMessageReplyMarkup(chatID, messageID, replyMarkup) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageMedia(chatID int64, messageID int, media InputMedia) (Message, error) { + req := NewEditMessageMedia(chatID, messageID, media) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageMediaAndMarkup(chatID int64, messageID int, media InputMedia, replyMarkup InlineKeyboardMarkup) (Message, error) { + req := NewEditMessageMediaAndMarkup(chatID, messageID, media, replyMarkup) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessagePhoto(chatID int64, messageID int, media InputMediaPhoto) (Message, error) { + req := NewEditMessagePhoto(chatID, messageID, media) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageVideo(chatID int64, messageID int, media InputMediaVideo) (Message, error) { + req := NewEditMessageVideo(chatID, messageID, media) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageAnimation(chatID int64, messageID int, media InputMediaAnimation) (Message, error) { + req := NewEditMessageAnimation(chatID, messageID, media) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageAudio(chatID int64, messageID int, media InputMediaAudio) (Message, error) { + req := NewEditMessageAudio(chatID, messageID, media) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageDocument(chatID int64, messageID int, media InputMediaDocument) (Message, error) { + req := NewEditMessageDocument(chatID, messageID, media) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageCaption(chatID int64, messageID int, caption string) (Message, error) { + req := NewEditMessageCaption(chatID, messageID, caption) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageTextAndMarkup(chatID int64, messageID int, text string, replyMarkup InlineKeyboardMarkup) (Message, error) { + req := NewEditMessageTextAndMarkup(chatID, messageID, text, replyMarkup) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageCaptionAndMarkup(chatID int64, messageID int, caption string, replyMarkup InlineKeyboardMarkup) (Message, error) { + req := NewEditMessageCaptionAndMarkup(chatID, messageID, caption, replyMarkup) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + +func (bot *BotAPI) EditMessageChecklist(chatID int64, messageID int, checklist InputChecklist) (Message, error) { + req := NewEditMessageChecklist(chatID, messageID, checklist) + resp, err := bot.Request(req) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} + func (bot *BotAPI) requestBool(c Chattable) (bool, error) { resp, err := bot.Request(c) if err != nil { diff --git a/helper_methods.go b/helper_methods.go index a7db8d55..6332c2e8 100644 --- a/helper_methods.go +++ b/helper_methods.go @@ -824,6 +824,22 @@ func NewEditMessageMedia(chatID int64, messageID int, inputMedia InputMedia) Edi } } +// NewEditMessageMediaAndMarkup allows you to edit media and keyboard content of a message +func NewEditMessageMediaAndMarkup(chatID int64, messageID int, inputMedia InputMedia, replyMarkup InlineKeyboardMarkup) EditMessageMediaConfig { + return EditMessageMediaConfig{ + BaseEdit: BaseEdit{ + BaseChatMessage: BaseChatMessage{ + ChatConfig: ChatConfig{ + ChatID: chatID, + }, + MessageID: messageID, + }, + ReplyMarkup: &replyMarkup, + }, + Media: inputMedia, + } +} + // NewEditMessagePhoto allows you to edit the photo content of a message. func NewEditMessagePhoto(chatID int64, messageID int, inputPhoto InputMediaPhoto) EditMessageMediaConfig { return NewEditMessageMedia(chatID, messageID, &inputPhoto) @@ -895,6 +911,22 @@ func NewEditMessageCaption(chatID int64, messageID int, caption string) EditMess } } +// NewEditMessageCaptionAndMarkup allows you to edit the caption and reply markup of a message. +func NewEditMessageCaptionAndMarkup(chatID int64, messageID int, caption string, replyMarkup InlineKeyboardMarkup) EditMessageCaptionConfig { + return EditMessageCaptionConfig{ + BaseEdit: BaseEdit{ + BaseChatMessage: BaseChatMessage{ + ChatConfig: ChatConfig{ + ChatID: chatID, + }, + MessageID: messageID, + }, + ReplyMarkup: &replyMarkup, + }, + Caption: caption, + } +} + // NewEditMessageReplyMarkup allows you to edit the inline // keyboard markup. func NewEditMessageReplyMarkup(chatID int64, messageID int, replyMarkup InlineKeyboardMarkup) EditMessageReplyMarkupConfig { diff --git a/helper_structs.go b/helper_structs.go index 6e2128c8..91406a35 100644 --- a/helper_structs.go +++ b/helper_structs.go @@ -90,10 +90,14 @@ func (edit BaseEdit) params() (Params, error) { } params.Merge(p1) } + if edit.ReplyMarkup != nil { + err := params.AddInterface("reply_markup", edit.ReplyMarkup) + if err != nil { + return params, err + } + } - err := params.AddInterface("reply_markup", edit.ReplyMarkup) - - return params, err + return params, nil } // BaseEphemeralMessage identifies an ephemeral message received by a user.