rust_tdlib/types/
get_inline_query_results.rs

1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5/// Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires
6#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct GetInlineQueryResults {
8    #[doc(hidden)]
9    #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
10    extra: Option<String>,
11    #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
12    client_id: Option<i32>,
13    /// The identifier of the target bot
14
15    #[serde(default)]
16    bot_user_id: i64,
17    /// Identifier of the chat where the query was sent
18
19    #[serde(default)]
20    chat_id: i64,
21    /// Location of the user; pass null if unknown or the bot doesn't need user's location
22    user_location: Location,
23    /// Text of the query
24
25    #[serde(default)]
26    query: String,
27    /// Offset of the first entry to return
28
29    #[serde(default)]
30    offset: String,
31
32    #[serde(rename(serialize = "@type"))]
33    td_type: String,
34}
35
36impl RObject for GetInlineQueryResults {
37    #[doc(hidden)]
38    fn extra(&self) -> Option<&str> {
39        self.extra.as_deref()
40    }
41    #[doc(hidden)]
42    fn client_id(&self) -> Option<i32> {
43        self.client_id
44    }
45}
46
47impl RFunction for GetInlineQueryResults {}
48
49impl GetInlineQueryResults {
50    pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
51        Ok(serde_json::from_str(json.as_ref())?)
52    }
53    pub fn builder() -> GetInlineQueryResultsBuilder {
54        let mut inner = GetInlineQueryResults::default();
55        inner.extra = Some(Uuid::new_v4().to_string());
56
57        inner.td_type = "getInlineQueryResults".to_string();
58
59        GetInlineQueryResultsBuilder { inner }
60    }
61
62    pub fn bot_user_id(&self) -> i64 {
63        self.bot_user_id
64    }
65
66    pub fn chat_id(&self) -> i64 {
67        self.chat_id
68    }
69
70    pub fn user_location(&self) -> &Location {
71        &self.user_location
72    }
73
74    pub fn query(&self) -> &String {
75        &self.query
76    }
77
78    pub fn offset(&self) -> &String {
79        &self.offset
80    }
81}
82
83#[doc(hidden)]
84pub struct GetInlineQueryResultsBuilder {
85    inner: GetInlineQueryResults,
86}
87
88#[deprecated]
89pub type RTDGetInlineQueryResultsBuilder = GetInlineQueryResultsBuilder;
90
91impl GetInlineQueryResultsBuilder {
92    pub fn build(&self) -> GetInlineQueryResults {
93        self.inner.clone()
94    }
95
96    pub fn bot_user_id(&mut self, bot_user_id: i64) -> &mut Self {
97        self.inner.bot_user_id = bot_user_id;
98        self
99    }
100
101    pub fn chat_id(&mut self, chat_id: i64) -> &mut Self {
102        self.inner.chat_id = chat_id;
103        self
104    }
105
106    pub fn user_location<T: AsRef<Location>>(&mut self, user_location: T) -> &mut Self {
107        self.inner.user_location = user_location.as_ref().clone();
108        self
109    }
110
111    pub fn query<T: AsRef<str>>(&mut self, query: T) -> &mut Self {
112        self.inner.query = query.as_ref().to_string();
113        self
114    }
115
116    pub fn offset<T: AsRef<str>>(&mut self, offset: T) -> &mut Self {
117        self.inner.offset = offset.as_ref().to_string();
118        self
119    }
120}
121
122impl AsRef<GetInlineQueryResults> for GetInlineQueryResults {
123    fn as_ref(&self) -> &GetInlineQueryResults {
124        self
125    }
126}
127
128impl AsRef<GetInlineQueryResults> for GetInlineQueryResultsBuilder {
129    fn as_ref(&self) -> &GetInlineQueryResults {
130        &self.inner
131    }
132}