diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 22ce96e..1896702 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -4,8 +4,6 @@ on: push: branches: - '**' - pull_request: - jobs: build: name: Test diff --git a/bot.go b/bot.go index 39037b8..68277ce 100644 --- a/bot.go +++ b/bot.go @@ -746,3 +746,15 @@ func EscapeText(parseMode string, text string) string { return replacer.Replace(text) } + +func (bot *BotAPI) SendReaction(config SetMessageReactionConfig) (Message, error) { + resp, err := bot.Request(config) + if err != nil { + return Message{}, err + } + + var message Message + err = json.Unmarshal(resp.Result, &message) + + return message, err +} diff --git a/helper_methods.go b/helper_methods.go index 99079f7..e13ab88 100644 --- a/helper_methods.go +++ b/helper_methods.go @@ -1141,3 +1141,31 @@ func ValidateWebAppData(token, telegramInitData string) (bool, error) { return true, nil } + +func NewSetMessageReactionType(chatID int64, messageID int, reaction ReactionType, isBig bool) SetMessageReactionConfig { + return SetMessageReactionConfig{ + BaseChatMessage: BaseChatMessage{ + ChatConfig: ChatConfig{ + ChatID: chatID, + }, + MessageID: messageID, + }, + Reaction: []ReactionType{reaction}, + IsBig: isBig, + } +} + +func NewSetMessageReactionEmoji(chatID int64, messageID int, reaction string, isBig bool) SetMessageReactionConfig { + return SetMessageReactionConfig{ + BaseChatMessage: BaseChatMessage{ + ChatConfig: ChatConfig{ + ChatID: chatID, + }, + MessageID: messageID, + }, + Reaction: []ReactionType{ + {Type: "emoji", Emoji: reaction}, + }, + IsBig: isBig, + } +} diff --git a/tests/bot_integration_test.go b/tests/bot_integration_test.go index 629a0dd..59d26fe 100644 --- a/tests/bot_integration_test.go +++ b/tests/bot_integration_test.go @@ -845,7 +845,6 @@ func TestCommands(t *testing.T) { require.Equal(t, "a private command", commands[0].Description) } -// TODO: figure out why test is failing func TestEditMessageMedia(t *testing.T) { bot, err := getBot(t) require.NoError(t, err) @@ -872,3 +871,39 @@ func TestEditMessageMedia(t *testing.T) { require.NoError(t, err) require.NotNil(t, res) } + +func TestSetReaction(t *testing.T) { + bot, err := getBot(t) + require.NoError(t, err) + + t.Run("set reaction using reaction type", func(t *testing.T) { + msg := tgbotapi.NewMessage(ChatID, "An initial message to test reaction type") + msg.ParseMode = tgbotapi.ModeMarkdown + m, err := bot.Send(msg) + require.NoError(t, err) + require.NotNil(t, m) + + reaction := tgbotapi.NewSetMessageReactionType(ChatID, m.MessageID, tgbotapi.ReactionType{ + Type: "emoji", + Emoji: "👍", + }, true) + + res, err := bot.Request(reaction) + require.NoError(t, err) + require.NotNil(t, res) + }) + + t.Run("set reaction using reaction emoji", func(t *testing.T) { + msg := tgbotapi.NewMessage(ChatID, "An initial message to test reaction emoji") + msg.ParseMode = tgbotapi.ModeMarkdown + m, err := bot.Send(msg) + require.NoError(t, err) + require.NotNil(t, m) + + reaction := tgbotapi.NewSetMessageReactionEmoji(ChatID, m.MessageID, "👀", true) + + res, err := bot.Request(reaction) + require.NoError(t, err) + require.NotNil(t, res) + }) +}