telegram_bot_types/
request.rs1use 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 }
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 },
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}