pilot 0.0.7

the pilot manipulating telegram bot
Documentation
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use crate::typing::{InlineKeyboardMarkup, ParseMode};

#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, Clone)]
struct AnswerInlineQuery {
    inline_query_id: String,
    results: Vec<InlineQueryResult>,
}

#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(tag="type", rename_all = "snake_case")]
enum InlineQueryResult {
    Article(InlineQueryResultArticle),
}

#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "snake_case")]
struct InlineQueryResultArticle {
    id: String,
    title: String,
    input_message_content: InputMessageContent,
    reply_markup: Option<InlineKeyboardMarkup>,
    url: Option<String>,
    hide_url: Option<bool>,
    description: Option<String>,
    thumb_url: Option<String>,
    thumb_width: Option<i32>,
    thumb_height: Option<i32>,
}

#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(untagged)]
enum InputMessageContent {
    InputTextMessageContent(InputTextMessageContent),
}

#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, Clone)]
struct InputTextMessageContent {
    message_text: String,
    parse_mode: Option<ParseMode>,
    disable_web_page_preview: Option<bool>,
}