From 7ac293dd3889f375791fb2ba1497542766bf11ec Mon Sep 17 00:00:00 2001 From: ScuroNeko Date: Tue, 10 Feb 2026 17:06:15 +0300 Subject: [PATCH] stickers --- stickers.go | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 stickers.go diff --git a/stickers.go b/stickers.go new file mode 100644 index 0000000..a7f33fe --- /dev/null +++ b/stickers.go @@ -0,0 +1,93 @@ +package laniakea + +type MaskPositionPoint string + +const ( + MaskPositionForehead MaskPositionPoint = "forehead" + MaskPositionEyes MaskPositionPoint = "eyes" + MaskPositionMouth MaskPositionPoint = "mouth" + MaskPositionChin MaskPositionPoint = "chin" +) + +type MaskPosition struct { + Point MaskPositionPoint `json:"point"` + XShift float32 `json:"x_shift"` + YShift float32 `json:"y_shift"` + Scale float32 `json:"scale"` +} + +type StickerType string + +const ( + StickerTypeRegular StickerType = "regular" + StickerTypeMask StickerType = "mask" + StickerTypeCustomEmoji StickerType = "custom_emoji" +) + +type Sticker struct { + FileId string `json:"file_id"` + FileUniqueId string `json:"file_unique_id"` + Type StickerType `json:"type"` + Width int `json:"width"` + Height int `json:"height"` + IsAnimated bool `json:"is_animated"` + IsVideo bool `json:"is_video"` + + Thumbnail *PhotoSize `json:"thumbnail,omitempty"` + Emoji string `json:"emoji,omitempty"` + SetName string `json:"set_name,omitempty"` + MaskPosition *MaskPosition `json:"mask_position,omitempty"` + CustomEmojiID string `json:"custom_emoji_id,omitempty"` + NeedRepainting bool `json:"need_repainting,omitempty"` + FileSize int `json:"file_size,omitempty"` +} +type StickerSet struct { + Name string `json:"name"` + Title string `json:"title"` + StickerType StickerType `json:"sticker_type"` + Stickers []Sticker `json:"stickers"` + Thumbnail *PhotoSize `json:"thumbnail,omitempty"` +} +type InputStickerFormat string + +const ( + InputStickerFormatStatic InputStickerFormat = "static" + InputStickerFormatAnimated InputStickerFormat = "animated" + InputStickerFormatVideo InputStickerFormat = "video" +) + +type InputSticker struct { + Sticker string `json:"sticker"` + Format InputStickerFormat `json:"format"` + EmojiList []string `json:"emoji_list"` + MaskPosition *MaskPosition `json:"mask_position,omitempty"` + Keywords []string `json:"keywords,omitempty"` +} + +type SendStickerP struct { + BusinessConnectionID string `json:"business_connection_id,omitempty"` + ChatID int `json:"chat_id"` + MessageThreadID int `json:"message_thread_id,omitempty"` + DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"` + + Sticker string `json:"sticker"` + Emoji string `json:"emoji,omitempty"` + DisableNotification bool `json:"disable_notification,omitempty"` + ProtectContent bool `json:"protect_content,omitempty"` + AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"` + MessageEffectID string `json:"message_effect_id,omitempty"` +} + +func (api *Api) SendSticker(p SendStickerP) (*Message, error) { + req := NewRequest[Message]("sendSticker", p) + return req.Do(api) +} + +type GetStickerSetP struct { + Name string `json:"name"` +} + +func (api *Api) GetStickerSet(p GetStickerSetP) (*StickerSet, error) { + req := NewRequest[StickerSet]("getStickerSet", p) + return req.Do(api) +}