use super::InputFile;
use crate::model::{
utils::IntegerOrString,
InputSticker,
MaskPosition,
ReplyMarkup,
StickerFormat,
StickerType,
};
use serde::{Deserialize, Serialize};
use telexide_proc_macros::build_struct;
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SendSticker {
pub chat_id: IntegerOrString,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_thread_id: Option<i64>,
pub sticker: InputFile,
#[serde(skip_serializing_if = "Option::is_none")]
pub emoji: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_notification: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub protect_content: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_to_message_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allow_sending_without_reply: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<ReplyMarkup>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetStickerSet {
pub name: String,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct UploadStickerFile {
pub user_id: i64,
pub sticker: InputFile,
pub sticker_format: StickerFormat,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CreateNewStickerSet {
pub user_id: i64,
pub name: String,
pub title: String,
pub stickers: Vec<InputSticker>,
pub sticker_format: StickerFormat,
#[serde(skip_serializing_if = "Option::is_none")]
pub sticker_type: Option<StickerType>,
pub needs_repainting: Option<bool>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct AddStickerToSet {
pub user_id: i64,
pub name: String,
pub sticker: InputSticker,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetStickerPositionInSet {
pub sticker: String,
pub position: i64,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct DeleteStickerFromSet {
pub sticker: String,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetStickerEmojiList {
pub sticker: String,
pub keywords: Vec<String>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetStickerKeywords {
pub sticker: String,
pub keywords: Option<Vec<String>>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct SetStickerMaskPosition {
pub sticker: String,
pub mask_position: Option<MaskPosition>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetStickerSetTitle {
pub name: String,
pub title: String,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetStickerSetThumbnail {
pub name: String,
pub user_id: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumbnail: Option<InputFile>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SetCustomEmojiStickerSetThumbnail {
pub name: String,
pub custom_emoji_id: Option<String>,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct DeleteStickerSet {
pub name: String,
}
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetCustomEmojiStickers {
pub custom_emoji_ids: Vec<String>,
}