#![allow(dead_code)]
use crate::models::reply_markup::InlineKeyboardMarkup;
use crate::Builder;
use passport::PassportData;
use serde::{Deserialize, Serialize};
mod action;
mod chat_id;
mod chat_member;
mod command_scope;
mod inline;
mod input_media;
mod menu;
mod passport;
mod reply_markup;
mod sent_file;
mod updates;
pub use action::*;
pub use chat_id::*;
pub use chat_member::*;
pub use command_scope::*;
pub use inline::*;
pub use input_media::*;
pub use menu::*;
pub use passport::*;
pub use reply_markup::*;
pub use sent_file::*;
pub use updates::*;
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct User {
pub id: i64,
pub is_bot: bool,
pub first_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub username: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_premium: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub added_to_attachment_menu: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_join_groups: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_read_all_group_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub supports_inline_queries: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "snake_case")]
#[allow(missing_docs)]
pub enum ChatType {
Private,
Group,
SuperGroup,
Channel,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Chat {
pub id: i64,
#[serde(alias = "type")]
pub _type: ChatType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub username: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub first_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_forum: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub photo: Option<ChatPhoto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
active_usernames: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
emoji_status_custom_emoji_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bio: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_private_forwards: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_restricted_voice_and_video_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub join_to_send_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub join_by_request: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub invite_link: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pinned_message: Option<Box<Message>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub permissions: Option<ChatPermissions>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slow_mode_delay: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message_auto_delete_time: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_aggressive_anti_spam_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_hidden_members: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_protected_content: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sticker_set_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_set_sticker_set: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub linked_chat_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<ChatLocation>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Message {
pub message_id: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message_thread_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<User>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sender_chat: Option<Box<Chat>>,
pub date: i64,
pub chat: Chat,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forward_from: Option<User>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forward_from_chat: Option<Box<Chat>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forward_from_message_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forward_signature: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forward_sender_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forward_date: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_topic_message: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_automatic_forward: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reply_to_message: Option<Box<Message>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub via_bot: Option<User>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub edit_date: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_protected_content: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub media_group_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub author_signature: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub entities: Vec<MessageEntity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub animation: Option<Animation>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub audio: Option<Audio>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub document: Option<Document>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub photo: Vec<PhotoSize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sticker: Option<Sticker>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub video: Option<Video>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub video_note: Option<VideoNote>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub voice: Option<Voice>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub caption_entities: Vec<MessageEntity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_media_spoiler: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub contact: Option<Contact>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dice: Option<Dice>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub game: Option<Game>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub poll: Option<Poll>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub venue: Option<Venue>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<Location>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub new_chat_members: Vec<User>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub left_chat_member: Option<User>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub new_chat_title: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub new_chat_photo: Vec<PhotoSize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub delete_chat_photo: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group_chat_created: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub supergroup_chat_created: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub channel_chat_created: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message_auto_delete_timer_changed: Option<MessageAutoDeleteTimerChanged>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub migrate_to_chat_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub migrate_from_chat_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pinned_message: Option<Box<Message>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub invoice: Option<Invoice>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub successful_payment: Option<SuccessfulPayment>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub connected_website: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub write_access_allowed: Option<WriteAccessAllowed>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub passport_data: Option<PassportData>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub proximity_alert_triggered: Option<ProximityAlertTriggered>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forum_topic_created: Option<ForumTopicCreated>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forum_topic_edited: Option<ForumTopicEdited>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forum_topic_closed: Option<ForumTopicClosed>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub forum_topic_reopened: Option<ForumTopicReopened>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub general_forum_topic_hidden: Option<GeneralForumTopicHidden>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub general_forum_topic_unhidden: Option<GeneralForumTopicUnhidden>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub video_chat_scheduled: Option<VideoChatScheduled>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub video_chat_started: Option<VideoChatStarted>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub video_chat_ended: Option<VideoChatEnded>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub video_chat_participants_invited: Option<VideoChatParticipantsInvited>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub web_app_data: Option<WebAppData>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct MessageId {
pub message_id: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "snake_case", tag = "type")]
#[allow(missing_docs)]
pub enum MessageEntityType {
Mention,
Hashtag,
CashTag,
BotCommand,
Url,
Email,
PhoneNumber,
Bold,
Italic,
Underline,
Strikethrough,
Spoiler,
Code,
Pre,
TextLink {
url: String,
},
TextMention {
user: User,
},
CustomEmoji {
#[serde(rename = "custom_emoji_id")]
id: String,
},
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct MessageEntity {
#[serde(flatten)]
pub _type: MessageEntityType,
pub offset: i64,
pub length: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct PhotoSize {
pub file_id: String,
pub file_unique_id: String,
pub width: i64,
pub height: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Animation {
pub file_id: String,
pub file_unique_id: String,
pub width: i64,
pub height: i64,
pub duration: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumb: Option<PhotoSize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Audio {
pub file_id: String,
pub file_unique_id: String,
pub duration: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub performer: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumb: Option<PhotoSize>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Document {
pub file_id: String,
pub file_unique_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumb: Option<PhotoSize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Video {
pub file_id: String,
pub file_unique_id: String,
pub width: i64,
pub height: i64,
pub duration: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumb: Option<PhotoSize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct VideoNote {
pub file_id: String,
pub file_unique_id: String,
pub length: i64,
pub duration: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumb: Option<PhotoSize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Voice {
pub file_id: String,
pub file_unique_id: String,
pub duration: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Contact {
pub phone_number: String,
pub first_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vcard: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Dice {
pub emoji: String,
pub value: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct PollOption {
pub text: String,
pub voter_count: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct PollAnswer {
pub poll_id: String,
pub user: User,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub option_ids: Vec<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "snake_case")]
#[allow(missing_docs)]
pub enum PollType {
Regular,
Quiz,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Poll {
pub id: String,
pub question: String,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub options: Vec<PollOption>,
pub total_voter_count: i64,
pub is_closed: bool,
pub is_anonymous: bool,
#[serde(alias = "type")]
pub _type: PollType,
pub allows_multiple_answers: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub correct_option_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub explanation: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub explanation_entities: Vec<MessageEntity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub open_period: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub close_date: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Location {
pub longitude: f32,
pub latitude: f32,
pub horizontal_accuracy: f32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub live_period: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub heading: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub proximity_alert_radius: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Venue {
pub location: Location,
pub title: String,
pub address: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub foursquare_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub foursquare_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub google_place_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub google_place_type: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct WebAppData {
pub data: String,
pub button_text: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ProximityAlertTriggered {
pub traveler: User,
pub watcher: User,
pub distance: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct MessageAutoDeleteTimerChanged {
pub message_auto_delete_time: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct VideoChatScheduled {
pub start_date: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct VideoChatStarted {}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct VideoChatEnded {
pub duration: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct VideoChatParticipantsInvited {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub users: Vec<User>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct UserProfilePhotos {
pub total_count: i64,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub photos: Vec<PhotoSize>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct File {
pub file_id: String,
pub file_unique_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_path: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct WebAppInfo {
pub url: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ChatPhoto {
pub small_file_id: String,
pub small_file_unique_id: String,
pub big_file_id: String,
pub big_file_unique_id: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ChatInviteLink {
pub invite_link: String,
pub creator: User,
pub creates_join_request: bool,
pub is_primary: bool,
pub is_revoked: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expire_date: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub member_limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pending_join_request_count: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ChatAdministratorRights {
pub is_anonymous: bool,
pub can_manage_chat: bool,
pub can_delete_messages: bool,
pub can_manage_video_chats: bool,
pub can_restrict_members: bool,
pub can_promote_members: bool,
pub can_change_info: bool,
pub can_invite_users: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_post_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_edit_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_pin_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_manage_topics: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ChatJoinRequest {
pub chat: Chat,
pub from: User,
pub date: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bio: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub invite_link: Option<ChatInviteLink>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ChatPermissions {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_send_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_send_media_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_send_polls: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_send_other_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_add_web_page_previews: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_change_info: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_invite_users: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_pin_messages: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_manage_topics: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ChatLocation {
pub location: Location,
pub address: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct BotCommand {
pub command: String,
pub description: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ResponseParameters {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub migrate_to_chat_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub retry_after: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "lowercase")]
#[allow(missing_docs)]
pub enum StickerType {
Regular,
Mask,
CustomEmoji,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Sticker {
pub file_id: String,
pub file_unique_id: String,
#[serde(rename = "type")]
pub _type: StickerType,
pub width: i64,
pub height: i64,
pub is_animated: bool,
pub is_video: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumb: Option<PhotoSize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub emoji: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub set_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub premium_animation: Option<File>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mask_position: Option<MaskPosition>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub custom_emoji_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct StickerSet {
pub name: String,
pub title: String,
pub sticker_type: String,
pub is_animated: bool,
pub is_video: bool,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub stickers: Vec<Sticker>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thumb: Option<PhotoSize>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct MaskPosition {
pub point: String,
pub x_shift: f32,
pub y_shift: f32,
pub scale: f32,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct LabeledPrice {
pub label: String,
pub amount: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Invoice {
pub title: String,
pub description: String,
pub start_parameter: String,
pub currency: String,
pub total_amount: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ShippingAddress {
pub country_code: String,
pub state: String,
pub city: String,
pub street_line1: String,
pub street_line2: String,
pub post_code: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct OrderInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phone_number: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shipping_address: Option<ShippingAddress>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ShippingOption {
pub id: String,
pub title: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub prices: Vec<LabeledPrice>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct SuccessfulPayment {
pub currency: String,
pub total_amount: i64,
pub invoice_payload: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shipping_option_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order_info: Option<OrderInfo>,
pub telegram_payment_charge_id: String,
pub provider_payment_charge_id: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ShippingQuery {
pub id: String,
pub from: User,
pub invoice_payload: String,
pub shipping_address: ShippingAddress,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct PreCheckoutQuery {
pub id: String,
pub from: User,
pub currency: String,
pub total_amount: i64,
pub invoice_payload: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shipping_option_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order_info: Option<OrderInfo>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct Game {
pub title: String,
pub description: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub photo: Vec<PhotoSize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub text_entities: Vec<MessageEntity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub animation: Option<Animation>,
}
type CallbackGame = ();
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct GameHighScore {
pub position: i64,
pub user: User,
pub score: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ForumTopicCreated {
name: String,
icon_color: i64,
icon_custom_emoji_id: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ForumTopicClosed {}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ForumTopicReopened {}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct ForumTopicEdited {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icon_custom_emoji_id: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct GeneralForumTopicHidden {}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct GeneralForumTopicUnhidden {}
#[derive(Serialize, Deserialize, Clone, Debug, Builder)]
pub struct WriteAccessAllowed {}