internal/domain/sticker_collection.go
Rama main · réplica de lectura del repositorio original.
package domain
import "errors"
// ErrStickerInvalid means the input document is not a valid sticker/GIF (faveSticker/saveGif etc.).
var ErrStickerInvalid = errors.New("sticker document invalid")
var (
ErrStickerSetTitleInvalid = errors.New("sticker set title invalid")
ErrStickerSetShortNameInvalid = errors.New("sticker set short name invalid")
ErrStickerSetShortNameOccupied = errors.New("sticker set short name occupied")
ErrStickerSetTypeInvalid = errors.New("sticker set type invalid")
ErrStickerSetEmpty = errors.New("sticker set empty")
ErrStickerSetTooMuch = errors.New("sticker set too much")
ErrStickerSetEmojiInvalid = errors.New("sticker set emoji invalid")
ErrStickerSetFileInvalid = errors.New("sticker set file invalid")
ErrStickerSetCreatorInvalid = errors.New("sticker set creator invalid")
ErrStickerSetInvalid = errors.New("sticker set invalid")
ErrStickerSetNotOwned = errors.New("sticker set not owned")
ErrStickerSetPositionInvalid = errors.New("sticker set position invalid")
)
// StickerCollectionKind distinguishes the several kinds of personal sticker collection a user has.
type StickerCollectionKind string
const (
// StickerCollectionFaved is favorited stickers (messages.faveSticker / getFavedStickers).
StickerCollectionFaved StickerCollectionKind = "faved"
// StickerCollectionRecent is recently used stickers (saveRecentSticker / getRecentStickers).
StickerCollectionRecent StickerCollectionKind = "recent"
// StickerCollectionRecentAttached is stickers recently used with media from the attach menu (attached=true).
StickerCollectionRecentAttached StickerCollectionKind = "recent_attached"
// StickerCollectionGif is saved GIFs (messages.saveGif / getSavedGifs).
StickerCollectionGif StickerCollectionKind = "gif"
)
// Capacity upper bounds for each collection (newest first; the oldest are truncated on overflow). These only limit storage growth, not strict Telegram quotas;
// faved has no Premium tiering (outside the user's decision range) and uses a single bound.
const (
MaxFavedStickers = 100
MaxRecentStickers = 30
MaxSavedGifs = 200
MaxInstalledStickerSets = 200
MaxCreatedStickerSets = 200
)
// MaxStickerCollectionItems returns the capacity upper bound for a collection kind.
func MaxStickerCollectionItems(kind StickerCollectionKind) int {
switch kind {
case StickerCollectionFaved:
return MaxFavedStickers
case StickerCollectionGif:
return MaxSavedGifs
default:
return MaxRecentStickers
}
}
// StickerCollectionItem is one item in a collection: document id + time added (recent's used_at / faved's favorite time).
type StickerCollectionItem struct {
DocumentID int64
Date int
}
// UserStickerSet is one sticker set's install/archive state for an account.
// The set metadata, documents and packs are still maintained by the media/files module; only the user's view is stored here.
type UserStickerSet struct {
OwnerUserID int64
StickerSetID int64
Kind StickerSetKind
Archived bool
InstalledDate int
OrderValue int64
}