46 lines
1.7 KiB
Go
46 lines
1.7 KiB
Go
package domain
|
||
|
||
import "errors"
|
||
|
||
// ErrStickerInvalid 表示输入文档不是合法的贴纸/GIF(faveSticker/saveGif 等)。
|
||
var ErrStickerInvalid = errors.New("sticker document invalid")
|
||
|
||
// StickerCollectionKind 区分一个用户的几类个人贴纸集合。
|
||
type StickerCollectionKind string
|
||
|
||
const (
|
||
// StickerCollectionFaved 收藏的贴纸(messages.faveSticker / getFavedStickers)。
|
||
StickerCollectionFaved StickerCollectionKind = "faved"
|
||
// StickerCollectionRecent 最近使用的贴纸(saveRecentSticker / getRecentStickers)。
|
||
StickerCollectionRecent StickerCollectionKind = "recent"
|
||
// StickerCollectionRecentAttached attach 菜单里最近用于媒体的贴纸(attached=true)。
|
||
StickerCollectionRecentAttached StickerCollectionKind = "recent_attached"
|
||
// StickerCollectionGif 保存的 GIF(messages.saveGif / getSavedGifs)。
|
||
StickerCollectionGif StickerCollectionKind = "gif"
|
||
)
|
||
|
||
// 各集合容量上界(最新在前,超出截断最旧)。仅为限制存储增长,非严格 Telegram 配额;
|
||
// faved 不做 premium 分档(用户决策范围外),统一一个上界。
|
||
const (
|
||
MaxFavedStickers = 100
|
||
MaxRecentStickers = 30
|
||
MaxSavedGifs = 200
|
||
)
|
||
|
||
// MaxStickerCollectionItems 返回某类集合的容量上界。
|
||
func MaxStickerCollectionItems(kind StickerCollectionKind) int {
|
||
switch kind {
|
||
case StickerCollectionFaved:
|
||
return MaxFavedStickers
|
||
case StickerCollectionGif:
|
||
return MaxSavedGifs
|
||
default:
|
||
return MaxRecentStickers
|
||
}
|
||
}
|
||
|
||
// StickerCollectionItem 是集合内一项:文档 id + 入列时间(recent 的 used_at / faved 的收藏时刻)。
|
||
type StickerCollectionItem struct {
|
||
DocumentID int64
|
||
Date int
|
||
}
|