use serde::{Deserialize, Serialize};
use telexide_proc_macros::build_struct;
#[build_struct]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct GetUpdates {
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_updates: Option<Vec<UpdateType>>,
}
impl GetUpdates {
#[must_use]
pub fn add_allowed_updates(mut self, allowed_update: UpdateType) -> Self {
if let Some(ref mut a) = self.allowed_updates {
a.push(allowed_update);
} else {
self.allowed_updates = Some(vec![allowed_update]);
}
self
}
}
impl std::default::Default for GetUpdates {
fn default() -> Self {
Self::new()
}
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum UpdateType {
#[serde(rename = "message")]
Message,
#[serde(rename = "edited_message")]
EditedMessage,
#[serde(rename = "channel_post")]
ChannelPost,
#[serde(rename = "edited_channel_post")]
EditedChannelPost,
#[serde(rename = "inline_query")]
InlineQuery,
#[serde(rename = "chosen_inline_result")]
ChosenInlineResult,
#[serde(rename = "callback_query")]
CallbackQuery,
#[serde(rename = "shipping_query")]
ShippingQuery,
#[serde(rename = "pre_checkout_query")]
PreCheckoutQuery,
#[serde(rename = "poll")]
Poll,
#[serde(rename = "poll_answer")]
PollAnswer,
#[serde(rename = "my_chat_member")]
MyChatMember,
#[serde(rename = "chat_member")]
ChatMember,
#[serde(rename = "chat_join_request")]
ChatJoinRequest,
}