From 9eb53434a070939ac62f8699ab45ea45001dc64b Mon Sep 17 00:00:00 2001 From: Demian Date: Sun, 10 Mar 2024 12:45:51 +0100 Subject: [PATCH] react: refactor --- bot_test.go | 4 ++-- chat.go | 54 +++++++++++++++++++++++------------------------ message.go | 14 ++++++------ react.go | 36 +++++++++++++++++++++++++++++++ react/reaction.go | 37 +++----------------------------- 5 files changed, 73 insertions(+), 72 deletions(-) create mode 100644 react.go diff --git a/bot_test.go b/bot_test.go index a4f3359..26c6f9a 100644 --- a/bot_test.go +++ b/bot_test.go @@ -317,7 +317,7 @@ func TestBotProcessUpdate(t *testing.T) { b.ProcessUpdate(Update{Message: &Message{Text: "/start@other_bot"}}) b.ProcessUpdate(Update{Message: &Message{Text: "hello"}}) b.ProcessUpdate(Update{Message: &Message{Text: "text"}}) - b.ProcessUpdate(Update{Message: &Message{PinnedMessage: &InaccessibleMessage{}}}) + b.ProcessUpdate(Update{Message: &Message{PinnedMessage: &InaccessibleMessage{Message: &Message{}}}}) b.ProcessUpdate(Update{Message: &Message{Photo: &Photo{}}}) b.ProcessUpdate(Update{Message: &Message{Voice: &Voice{}}}) b.ProcessUpdate(Update{Message: &Message{Audio: &Audio{}}}) @@ -342,7 +342,7 @@ func TestBotProcessUpdate(t *testing.T) { b.ProcessUpdate(Update{Message: &Message{Chat: &Chat{ID: 1}, MigrateTo: 2}}) b.ProcessUpdate(Update{EditedMessage: &Message{Text: "edited"}}) b.ProcessUpdate(Update{ChannelPost: &Message{Text: "post"}}) - b.ProcessUpdate(Update{ChannelPost: &Message{PinnedMessage: &InaccessibleMessage{}}}) + b.ProcessUpdate(Update{ChannelPost: &Message{PinnedMessage: &InaccessibleMessage{Message: &Message{}}}}) b.ProcessUpdate(Update{EditedChannelPost: &Message{Text: "edited post"}}) b.ProcessUpdate(Update{Callback: &Callback{MessageID: "inline", Data: "callback"}}) b.ProcessUpdate(Update{Callback: &Callback{Data: "callback"}}) diff --git a/chat.go b/chat.go index 98dfd14..0426739 100644 --- a/chat.go +++ b/chat.go @@ -4,8 +4,6 @@ import ( "encoding/json" "strconv" "time" - - "gopkg.in/telebot.v3/react" ) // User object represents a Telegram user, bot. @@ -49,32 +47,32 @@ type Chat struct { Username string `json:"username"` // Returns only in getChat - Bio string `json:"bio,omitempty"` - Photo *ChatPhoto `json:"photo,omitempty"` - Description string `json:"description,omitempty"` - InviteLink string `json:"invite_link,omitempty"` - PinnedMessage *Message `json:"pinned_message,omitempty"` - Permissions *Rights `json:"permissions,omitempty"` - Reactions []react.Reaction `json:"available_reactions"` - SlowMode int `json:"slow_mode_delay,omitempty"` - StickerSet string `json:"sticker_set_name,omitempty"` - CanSetStickerSet bool `json:"can_set_sticker_set,omitempty"` - CustomEmojiSetName string `json:"custom_emoji_sticker_set_name"` - LinkedChatID int64 `json:"linked_chat_id,omitempty"` - ChatLocation *ChatLocation `json:"location,omitempty"` - Private bool `json:"has_private_forwards,omitempty"` - Protected bool `json:"has_protected_content,omitempty"` - NoVoiceAndVideo bool `json:"has_restricted_voice_and_video_messages"` - HasHiddenMembers bool `json:"has_hidden_members,omitempty"` - AggressiveAntiSpam bool `json:"has_aggressive_anti_spam_enabled,omitempty"` - CustomEmojiID string `json:"emoji_status_custom_emoji_id"` - EmojiExpirationUnixtime int64 `json:"emoji_status_expiration_date"` - BackgroundEmojiID string `json:"background_custom_emoji_id"` - AccentColorID int `json:"accent_color_id"` - ProfileAccentColorID int `json:"profile_accent_color_id"` - ProfileBackgroundEmojiID string `json:"profile_background_custom_emoji_id"` - HasVisibleHistory bool `json:"has_visible_history"` - UnrestrictBoosts int `json:"unrestrict_boost_count"` + Bio string `json:"bio,omitempty"` + Photo *ChatPhoto `json:"photo,omitempty"` + Description string `json:"description,omitempty"` + InviteLink string `json:"invite_link,omitempty"` + PinnedMessage *Message `json:"pinned_message,omitempty"` + Permissions *Rights `json:"permissions,omitempty"` + Reactions []Reaction `json:"available_reactions"` + SlowMode int `json:"slow_mode_delay,omitempty"` + StickerSet string `json:"sticker_set_name,omitempty"` + CanSetStickerSet bool `json:"can_set_sticker_set,omitempty"` + CustomEmojiSetName string `json:"custom_emoji_sticker_set_name"` + LinkedChatID int64 `json:"linked_chat_id,omitempty"` + ChatLocation *ChatLocation `json:"location,omitempty"` + Private bool `json:"has_private_forwards,omitempty"` + Protected bool `json:"has_protected_content,omitempty"` + NoVoiceAndVideo bool `json:"has_restricted_voice_and_video_messages"` + HasHiddenMembers bool `json:"has_hidden_members,omitempty"` + AggressiveAntiSpam bool `json:"has_aggressive_anti_spam_enabled,omitempty"` + CustomEmojiID string `json:"emoji_status_custom_emoji_id"` + EmojiExpirationUnixtime int64 `json:"emoji_status_expiration_date"` + BackgroundEmojiID string `json:"background_custom_emoji_id"` + AccentColorID int `json:"accent_color_id"` + ProfileAccentColorID int `json:"profile_accent_color_id"` + ProfileBackgroundEmojiID string `json:"profile_background_custom_emoji_id"` + HasVisibleHistory bool `json:"has_visible_history"` + UnrestrictBoosts int `json:"unrestrict_boost_count"` } // Recipient returns chat ID (see Recipient interface). diff --git a/message.go b/message.go index 1dd07c3..13f35a2 100644 --- a/message.go +++ b/message.go @@ -5,8 +5,6 @@ import ( "strconv" "time" "unicode/utf16" - - "gopkg.in/telebot.v3/react" ) // Message object represents a message. @@ -107,7 +105,7 @@ type Message struct { // etc. that appear in the text. Entities Entities `json:"entities,omitempty"` - // (Optional) Options used for link preview generation for the message, + // (Optional) ReactionOptions used for link preview generation for the message, // if it is a text message and link preview options were changed PreviewOptions PreviewOptions `json:"link_preview_options,omitempty"` @@ -551,10 +549,10 @@ type MessageReaction struct { DateUnixtime int64 `json:"date"` // Previous list of reaction types that were set by the user. - OldReaction []react.Reaction `json:"old_reaction"` + OldReaction []Reaction `json:"old_reaction"` // New list of reaction types that have been set by the user. - NewReaction []react.Reaction `json:"new_reaction"` + NewReaction []Reaction `json:"new_reaction"` } func (mu *MessageReaction) Time() time.Time { @@ -574,7 +572,7 @@ type MessageReactionCount struct { DateUnixtime int64 `json:"date"` // List of reactions that are present on the message. - Reactions *react.Count `json:"reactions"` + Reactions *ReactionCount `json:"reactions"` } // Time returns the moment of change in local time. @@ -649,7 +647,7 @@ type ExternalReplyInfo struct { // Available only if the original chat is a supergroup or a channel. MessageID int `json:"message_id"` - // (Optional) Options used for link preview generation for the original message, + // (Optional) ReactionOptions used for link preview generation for the original message, // if it is a text message. PreviewOptions *PreviewOptions `json:"link_preview_options"` @@ -746,7 +744,7 @@ type ReplyParams struct { // React changes the chosen reactions on a message. Service messages can't be // reacted to. Automatically forwarded messages from a channel to its discussion group have // the same available reactions as messages in the channel. -func (b *Bot) React(to Recipient, msg Editable, opts ...react.Options) error { +func (b *Bot) React(to Recipient, msg Editable, opts ...ReactionOptions) error { if to == nil { return ErrBadRecipient } diff --git a/react.go b/react.go new file mode 100644 index 0000000..86f2431 --- /dev/null +++ b/react.go @@ -0,0 +1,36 @@ +package telebot + +// EmojiType defines emoji types. +type EmojiType = string + +// Reaction describes the type of reaction. +// Describes an instance of ReactionTypeCustomEmoji and ReactionTypeEmoji. +type Reaction struct { + // Type of the reaction, always “emoji” + Type string `json:"type"` + + // Reaction emoji. + Emoji EmojiType `json:"emoji,omitempty"` + + // Custom emoji identifier. + CustomEmoji string `json:"custom_emoji_id,omitempty"` +} + +// ReactionCount represents a reaction added to a message along +// with the number of times it was added. +type ReactionCount struct { + // Type of the reaction. + Type Reaction `json:"type"` + + // Number of times the reaction was added. + Count int `json:"total_count"` +} + +// ReactionOptions represents an object of reaction options. +type ReactionOptions struct { + // List of reaction types to set on the message. + Reactions []Reaction `json:"reaction"` + + // Pass True to set the reaction with a big animation. + Big bool `json:"is_big"` +} diff --git a/react/reaction.go b/react/reaction.go index 32d1fd1..07f1034 100644 --- a/react/reaction.go +++ b/react/reaction.go @@ -1,7 +1,8 @@ package react -// EmojiType defines emoji types. -type EmojiType = string +import "gopkg.in/telebot.v3" + +type Reaction = telebot.Reaction // Currently available emojis. var ( @@ -78,35 +79,3 @@ var ( WomanShrugging = Reaction{Emoji: "🤷‍♀️"} PoutingFace = Reaction{Emoji: "😡"} ) - -// Reaction describes the type of reaction. -// Describes an instance of ReactionTypeCustomEmoji and ReactionTypeEmoji. -type Reaction struct { - // Type of the reaction, always “emoji” - Type string `json:"type"` - - // Reaction emoji. - Emoji EmojiType `json:"emoji,omitempty"` - - // Custom emoji identifier. - CustomEmoji string `json:"custom_emoji_id,omitempty"` -} - -// Count represents a reaction added to a message along -// with the number of times it was added. -type Count struct { - // Type of the reaction. - Type Reaction `json:"type"` - - // Number of times the reaction was added. - Count int `json:"total_count"` -} - -// Options represents an object of reaction options. -type Options struct { - // List of reaction types to set on the message. - Reactions []Reaction `json:"reaction"` - - // Pass True to set the reaction with a big animation. - Big bool `json:"is_big"` -}