telegram_bot_types/
request.rs

1use std::default::Default;
2use super::serde::ser::Serialize;
3
4#[derive(Clone, Debug, PartialEq, Eq, Serialize)]
5pub enum ParseMode {
6    Text,
7    Markdown,
8    Html,
9}
10impl ParseMode {
11    fn is_text(&self) -> bool {
12        *self == ParseMode::Text
13    }
14}
15impl Default for ParseMode {
16    fn default() -> ParseMode {
17        ParseMode::Text
18    }
19}
20#[derive(Clone, Debug, Serialize, Default)]
21pub struct Message {
22    pub chat_id: i64,
23    pub text: String,
24    #[serde(skip_serializing_if = "ParseMode::is_text")]
25    pub parse_mode: ParseMode,
26    //TODO
27}
28impl Message {
29    pub fn new(chat_id: i64, text: String) -> Message {
30        Message {
31            chat_id,
32            text,
33            ..Default::default()
34        }
35    }
36    pub fn parse_mode(mut self, mode: ParseMode) -> Message {
37        self.parse_mode = mode;
38        self
39    }
40}
41
42#[derive(Clone, Debug, Serialize, Default)]
43pub struct AnswerInlineQuery<InlineQueryResultType: Serialize + Default> {
44    pub inline_query_id: String,
45    pub results: Vec<InlineQueryResultType>,
46    pub cache_time: Option<i64>,
47    pub is_personal: Option<bool>,
48    pub next_offset: String,
49    pub switch_pm_text: Option<String>,
50    pub switch_pm_parameter: Option<String>,
51}
52impl<InlineQueryResultType: Serialize + Default> AnswerInlineQuery<InlineQueryResultType> {
53    pub fn new(
54        inline_query_id: String,
55        results: Vec<InlineQueryResultType>,
56        next_offset: String,
57    ) -> AnswerInlineQuery<InlineQueryResultType> {
58        AnswerInlineQuery {
59            inline_query_id,
60            results,
61            next_offset,
62            ..Default::default()
63        }
64    }
65}
66
67#[derive(Clone, Debug, Serialize)]
68#[serde(tag = "type")]
69#[serde(rename_all = "lowercase")]
70pub enum InlineQueryResult {
71    Article {
72        id: String,
73        title: String,
74        message_text: String,
75        //TODO
76    },
77}
78impl InlineQueryResult {
79    pub fn article(id: String, title: String, message_text: String) -> InlineQueryResult {
80        InlineQueryResult::Article {
81            id,
82            title,
83            message_text,
84        }
85    }
86}