1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
use crate::model::id::{StickerId, StickerPackId};
/// A sticker sent with a message.
///
/// Bots currently can only receive messages with stickers, not send.
#[derive(Clone, Debug, Deserialize, Serialize)]
#[non_exhaustive]
pub struct Sticker {
/// The unique ID given to this sticker.
pub id: StickerId,
/// The unique ID of the pack the sticker is from.
pub pack_id: Option<StickerPackId>,
/// The name of the sticker.
pub name: String,
/// Description of the sticker
pub description: String,
/// A comma-separated list of tags for the sticker.
pub tags: Option<String>,
/// The sticker asset hash.
pub asset: String,
/// The sticker preview asset hash.
pub preview_asset: Option<String>,
/// The type of sticker format.
pub format_type: StickerFormatType,
}
/// Differentiates between sticker formats.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
#[non_exhaustive]
pub enum StickerFormatType {
/// A PNG format sticker.
Png = 1,
/// An APNG format animated sticker.
Apng = 2,
/// A LOTTIE format animated sticker.
Lottie = 3,
/// Unknown sticker format type.
Unknown = !0,
}
enum_number!(StickerFormatType {
Png,
Apng,
Lottie
});