pub type Boolean = bool;
pub type Integer = i64;
pub type Vector<T> = Vec<T>;
pub type NotImplemented = ();
use erased_serde::Serialize;
use uuid::Uuid;
#[derive(Deserialize, Debug)]
#[serde(untagged)]
pub enum EditResponse {
Message(Message),
Boolean(Boolean),
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Link(pub String);
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct User {
pub id: Integer,
pub first_name: String,
pub last_name: Option<String>,
pub username: Option<String>,
pub language_code: Option<String>,
pub is_bot: Option<bool>,
}
#[derive(Deserialize, Debug)]
pub struct Chat {
pub id: Integer,
#[serde(rename = "type")]
pub kind: String,
pub title: Option<String>,
pub username: Option<String>,
pub first_name: Option<String>,
pub last_name: Option<String>,
pub all_members_are_administrators: Option<bool>,
}
#[derive(Deserialize, Debug)]
pub struct MessageEntity {
#[serde(rename = "type")]
pub kind: String,
pub offset: Integer,
pub length: Integer,
pub url: Option<String>,
pub user: Option<User>,
}
#[derive(Deserialize, Debug)]
pub struct Message {
pub message_id: Integer,
pub from: Option<User>,
pub date: Integer,
pub chat: Chat,
pub forward_from: Option<User>,
pub forward_from_chat: Option<Chat>,
pub forward_from_message_id: Option<Integer>,
pub forward_date: Option<Integer>,
pub reply_to_message: Option<Box<Message>>,
pub edit_date: Option<Integer>,
pub text: Option<String>,
pub entities: Option<Vec<MessageEntity>>,
pub audio: Option<Audio>,
pub document: Option<Document>,
pub game: Option<Game>,
pub photo: Option<Vec<PhotoSize>>,
pub sticker: Option<Sticker>,
pub video: Option<Video>,
pub voice: Option<Voice>,
pub caption: Option<String>,
pub contact: Option<Contact>,
pub location: Option<Location>,
pub venue: Option<Venue>,
pub new_chat_member: Option<User>,
pub left_chat_member: Option<User>,
pub new_chat_title: Option<String>,
pub new_chat_photo: Option<Vec<PhotoSize>>,
pub delete_chat_photo: Option<bool>,
pub group_chat_created: Option<bool>,
pub supergroup_chat_created: Option<bool>,
pub channel_chat_created: Option<bool>,
pub migrate_to_chat_id: Option<Integer>,
pub migrate_from_chat_id: Option<Integer>,
pub pinned_message: Option<Box<Message>>,
}
#[derive(Deserialize, Debug)]
pub struct Messages(Vec<Message>);
#[derive(Deserialize, Debug)]
pub struct Updates(pub Vec<Update>);
#[derive(Deserialize, Debug)]
pub struct Update {
pub update_id: Integer,
pub message: Option<Message>,
pub edited_message: Option<Message>,
pub channel_post: Option<Message>,
pub edited_channel_post: Option<Message>,
pub inline_query: Option<InlineQuery>,
pub chosen_inline_result: Option<()>,
pub callback_query: Option<CallbackQuery>,
}
#[derive(Deserialize, Debug, Clone)]
pub struct PhotoSize {
pub file_id: String,
pub width: Integer,
pub height: Integer,
pub file_size: Option<Integer>,
}
#[derive(Deserialize, Debug)]
pub struct Audio {
pub file_id: String,
pub duration: Integer,
pub performer: Option<String>,
pub title: Option<String>,
pub mime_type: Option<String>,
pub file_size: Option<Integer>,
}
#[derive(Deserialize, Debug)]
pub struct Document {
pub file_id: String,
pub thumb: Option<PhotoSize>,
pub file_name: Option<String>,
pub mime_type: Option<String>,
pub file_size: Option<Integer>,
}
#[derive(Deserialize, Debug)]
pub struct Animation {
pub file_id: String,
pub thumb: Option<PhotoSize>,
pub file_name: Option<String>,
pub mime_type: Option<String>,
pub file_size: Option<Integer>,
}
#[derive(Deserialize, Debug)]
pub struct Game {
pub title: String,
pub description: Option<String>,
pub photo: Option<Vec<PhotoSize>>,
pub text: Option<String>,
pub text_entities: Option<Vec<MessageEntity>>,
pub animation: Option<Animation>,
}
#[derive(Deserialize, Debug)]
pub struct GameHighScore {
pub position: Integer,
pub user: User,
pub score: Integer,
}
#[derive(Deserialize, Debug)]
pub struct Sticker {
pub file_id: String,
pub width: Integer,
pub height: Integer,
pub thumb: Option<PhotoSize>,
pub emoji: Option<String>,
pub set_name: Option<String>,
pub file_size: Option<Integer>,
}
#[derive(Deserialize, Debug)]
pub struct Video {
pub file_id: String,
pub width: Integer,
pub height: Integer,
pub duration: Integer,
pub thumb: Option<PhotoSize>,
pub mime_type: Option<String>,
pub file_size: Option<Integer>,
}
#[derive(Deserialize, Debug)]
pub struct Voice {
pub file_id: String,
pub duration: Integer,
pub mime_type: Option<String>,
pub file_size: Option<Integer>,
}
#[derive(Deserialize, Debug)]
pub struct Contact {
pub phone_number: String,
pub first_name: String,
pub last_name: String,
pub user_id: Integer,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Location {
pub longitude: f32,
pub latitude: f32,
}
#[derive(Deserialize, Debug)]
pub struct Venue {
pub location: Location,
pub title: String,
pub address: String,
pub foursquare_id: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct UserProfilePhotos {
pub total_count: Integer,
pub photos: Vec<Vec<PhotoSize>>,
}
#[derive(Deserialize, Debug)]
pub struct File {
pub file_id: String,
pub file_size: Option<Integer>,
pub file_path: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReplyKeyboardMarkup {
pub keyboard: Vec<Vec<KeyboardButton>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resize_keyboard: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub one_time_keyboard: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selective: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct KeyboardButton {
pub text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub request_contact: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub request_location: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReplyKeyboardRemove {
pub remove_keyboard: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub selective: Option<bool>,
}
#[derive(setter, Serialize, Deserialize, Debug)]
pub struct InlineKeyboardMarkup {
pub inline_keyboard: Vec<Vec<InlineKeyboardButton>>,
}
#[derive(setter, Serialize, Deserialize, Debug)]
pub struct InlineKeyboardButton {
pub text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub callback_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub switch_inline_query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub switch_inline_query_current_chat: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub callback_game: Option<CallbackGame>,
}
#[derive(Deserialize, Debug)]
pub struct CallbackQuery {
pub id: String,
pub from: User,
pub message: Option<Message>,
pub inline_message_id: Option<String>,
pub chat_instance: Option<String>,
pub data: Option<String>,
pub game_short_name: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ForceReply {
pub force_reply: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub selective: Option<bool>,
}
#[derive(Deserialize, Debug)]
pub struct ChatMember {
pub user: User,
pub status: String,
}
#[derive(Deserialize, Debug)]
pub struct ResponseParameter {
pub migrate_to_chat_id: Option<Integer>,
pub retry_after: Option<Integer>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct CallbackGame;
#[derive(Deserialize, Debug)]
pub struct InlineQuery {
pub id: String,
pub from: User,
pub location: Option<Location>,
pub query: String,
pub offset: String,
}
#[derive(setter, Serialize)]
#[query = "Article"]
pub struct InlineQueryResultArticle {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub title: String,
pub input_message_content: Box<Serialize + Send>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hide_url: Option<Boolean>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_height: Option<Integer>,
}
#[derive(setter, Serialize)]
#[query = "Photo"]
pub struct InlineQueryResultPhoto {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub photo_url: String,
pub thumb_url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub photo_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub photo_height: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "Gif"]
pub struct InlineQueryResultGif {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub gif_url: String,
pub thumb_url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub gif_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gif_height: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "Mpeg4Gif"]
pub struct InlineQueryResultMpeg4Gif {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub mpeg4_url: String,
pub thumb_url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub mpeg4_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mpeg4_height: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "Video"]
pub struct InlineQueryResultVideo {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub video_url: String,
pub mime_type: String,
pub thumb_url: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub video_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub video_height: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub video_duration: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "Audio"]
pub struct InlineQueryResultAudio {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub audio_url: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub performer: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub audio_duration: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "Voice"]
pub struct InlineQueryResultVoice {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub voice_url: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub voice_duration: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "Document"]
pub struct InlineQueryResultDocument {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub title: String,
pub document_url: String,
pub mime_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_height: Option<Integer>,
}
#[derive(setter, Serialize)]
#[query = "Location"]
pub struct InlineQueryResultLocation {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub latitude: f64,
pub longitude: f64,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_height: Option<Integer>,
}
#[derive(setter, Serialize)]
#[query = "Venue"]
pub struct InlineQueryResultVenue {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub latitude: f64,
pub longitude: f64,
pub title: String,
pub address: String,
pub foursquare_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_height: Option<Integer>,
}
#[derive(setter, Serialize)]
#[query = "Contact"]
pub struct InlineQueryResultContact {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub phone_number: String,
pub first_name: String,
pub last_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_width: Option<Integer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_height: Option<Integer>,
}
#[derive(setter, Serialize)]
#[query = "Game"]
pub struct InlineQueryResultGame {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub game_short_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
}
#[derive(setter, Serialize)]
#[query = "CachedPhoto"]
pub struct InlineQueryResultCachedPhoto {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub photo_file_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "CachedGif"]
pub struct InlineQueryResultCachedGif {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub gif_file_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "CachedMpeg4Gif"]
pub struct InlineQueryResultCachedMpeg4Gif {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub mpeg4_file_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "CachedSticker"]
pub struct InlineQueryResultCachedSticker {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub sticker_file_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "CachedDocument"]
pub struct InlineQueryResultCachedDocument {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub title: String,
pub document_file_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "CachedVideo"]
pub struct InlineQueryResultCachedVideo {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub video_file_id: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "CachedVoice"]
pub struct InlineQueryResultCachedVoice {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub voice_file_id: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
#[derive(setter, Serialize)]
#[query = "CachedAudio"]
pub struct InlineQueryResultCachedAudio {
#[serde(rename = "type")]
pub kind: String,
pub id: String,
pub audio_file_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_message_content: Option<Box<Serialize + Send>>,
}
pub mod input_message_content {
use super::Boolean;
#[derive(setter, Serialize, Deserialize, Debug)]
pub struct Text {
pub message_text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub parse_mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_web_page_preview: Option<Boolean>,
}
#[derive(setter, Serialize, Deserialize, Debug)]
pub struct Location {
pub latitude: f64,
pub longitude: f64,
}
#[derive(setter, Serialize, Deserialize, Debug)]
pub struct Venue {
pub latitude: f64,
pub longitude: f64,
pub title: String,
pub address: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub foursquare_id: Option<String>,
}
#[derive(setter, Serialize, Deserialize, Debug)]
pub struct Contact {
pub phone_number: String,
pub first_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_name: Option<String>,
}
}
#[derive(setter, Serialize, Deserialize, Debug)]
pub struct ChosenInlineResult {
pub result_id: String,
pub from: User,
pub offset: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<Location>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_message_id: Option<String>,
}