telegram_bot_async_raw/requests/
get_updates.rs

1use crate::{requests::*, types::*};
2
3/// Use this method to receive incoming updates using long polling.
4#[derive(Debug, Clone, PartialEq, PartialOrd, Serialize, Default)]
5#[must_use = "requests do nothing unless sent"]
6pub struct GetUpdates {
7    #[serde(skip_serializing_if = "Option::is_none")]
8    offset: Option<Integer>,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    limit: Option<Integer>, // TODO(knsd): Values between 1—100 are accepted
11    #[serde(skip_serializing_if = "Option::is_none")]
12    timeout: Option<Integer>, // TODO(knsd): Should be positive
13    allowed_updates: Vec<AllowedUpdate>, // TODO(knsd) BitSet? HashSet? BTreeSet?
14}
15
16impl Request for GetUpdates {
17    type Type = JsonRequestType<Self>;
18    type Response = JsonIdResponse<Vec<Update>>;
19
20    fn serialize(&self) -> Result<HttpRequest, Error> {
21        Self::Type::serialize(RequestUrl::method("getUpdates"), self)
22    }
23}
24
25impl GetUpdates {
26    pub fn new() -> Self {
27        Default::default()
28    }
29
30    pub fn offset(mut self, offset: Integer) -> Self {
31        self.offset = Some(offset);
32        self
33    }
34
35    pub fn limit(mut self, limit: Integer) -> Self {
36        self.limit = Some(limit);
37        self
38    }
39
40    pub fn timeout(mut self, timeout: Integer) -> Self {
41        self.timeout = Some(timeout);
42        self
43    }
44
45    pub fn allowed_updates(mut self, updates: &[AllowedUpdate]) -> Self {
46        self.allowed_updates = updates.to_vec();
47        self
48    }
49}
50
51#[derive(Debug, Clone, PartialEq, PartialOrd, Deserialize, Serialize)]
52pub enum AllowedUpdate {
53    #[serde(rename = "message")]
54    Message,
55    #[serde(rename = "edited_message")]
56    EditedMessage,
57    #[serde(rename = "channel_post")]
58    ChannelPost,
59    #[serde(rename = "edited_channel_post")]
60    EditedChannelPost,
61    #[serde(rename = "inline_query")]
62    InlineQuery,
63    #[serde(rename = "chosen_inline_query")]
64    ChosenInlineResult,
65    #[serde(rename = "callback_query")]
66    CallbackQuery,
67    #[serde(rename = "shipping_query")]
68    ShippingQuery,
69    #[serde(rename = "pre_checkout_query")]
70    PreCheckoutQuery,
71}