use super::{
utils::unix_date_formatting, ForceReply, InlineKeyboardMarkup, Message, ReplyKeyboardMarkup,
ReplyKeyboardRemove, User, WebAppInfo,
};
use crate::api::types::UpdateType;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CallbackQuery {
pub id: String,
pub from: User,
pub message: Option<Message>,
pub inline_message_id: Option<Message>,
pub chat_instance: String,
pub data: Option<String>,
pub game_short_name: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum ParseMode {
MarkdownV2,
Markdown,
HTML,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum ChatAction {
#[serde(rename = "typing")]
Typing,
#[serde(rename = "upload_photo")]
UploadPhoto,
#[serde(rename = "record_video")]
RecordVideo,
#[serde(rename = "upload_video")]
UploadVideo,
#[serde(rename = "record_voice")]
RecordVoice,
#[serde(rename = "upload_voice")]
UploadVoice,
#[serde(rename = "upload_document")]
UploadDocument,
#[serde(rename = "find_location")]
FindLocation,
#[serde(rename = "record_video_note")]
RecordVideoNote,
#[serde(rename = "upload_video_note")]
UploadVideoNote,
}
#[allow(clippy::large_enum_variant)]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(untagged)]
pub enum ReplyMarkup {
InlineKeyboardMarkup(InlineKeyboardMarkup),
ReplyKeyboardMarkup(ReplyKeyboardMarkup),
ReplyKeyboardRemove(ReplyKeyboardRemove),
ForceReply(ForceReply),
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct File {
pub file_id: String,
pub file_unique_id: String,
pub file_size: Option<i64>,
pub file_path: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct WebhookInfo {
pub url: String,
pub has_custom_certificate: bool,
pub pending_update_count: i64,
#[serde(with = "unix_date_formatting::optional")]
pub last_error_date: Option<DateTime<Utc>>,
#[serde(with = "unix_date_formatting::optional")]
pub last_synchronization_error_date: Option<DateTime<Utc>>,
pub last_error_message: Option<String>,
pub max_connections: Option<i64>,
pub allowed_updates: Option<Vec<UpdateType>>,
pub ip_address: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(tag = "type")]
pub enum MenuButton {
Default,
Commands,
WebApp {
text: String,
web_app: WebAppInfo,
},
}