1use super::{push_opt, push_opt_str, Bot, ChatId, MessageOrBool, Result};
2use crate::request::request_parameter::RequestParameter;
3use crate::types::{input_checklist, link_preview_options, message, message_entity, poll};
4
5#[allow(dead_code)]
6impl Bot {
7 pub async fn edit_message_text_raw(
15 &self,
16 text: &str,
17 chat_id: Option<ChatId>,
18 message_id: Option<i64>,
19 inline_message_id: Option<&str>,
20 parse_mode: Option<&str>,
21 entities: Option<Vec<message_entity::MessageEntity>>,
22 link_preview_options: Option<link_preview_options::LinkPreviewOptions>,
23 reply_markup: Option<serde_json::Value>,
24 business_connection_id: Option<&str>,
25 ) -> Result<MessageOrBool> {
26 let mut params = vec![RequestParameter::new(
27 "text",
28 serde_json::Value::String(text.to_owned()),
29 )];
30 push_opt(&mut params, "chat_id", &chat_id)?;
31 push_opt(&mut params, "message_id", &message_id)?;
32 push_opt_str(&mut params, "inline_message_id", inline_message_id);
33 push_opt_str(&mut params, "parse_mode", parse_mode);
34 push_opt(&mut params, "entities", &entities)?;
35 push_opt(&mut params, "link_preview_options", &link_preview_options)?;
36 push_opt(&mut params, "reply_markup", &reply_markup)?;
37 push_opt_str(
38 &mut params,
39 "business_connection_id",
40 business_connection_id,
41 );
42 self.do_post("editMessageText", params).await
43 }
44
45 pub async fn edit_message_caption_raw(
49 &self,
50 chat_id: Option<ChatId>,
51 message_id: Option<i64>,
52 inline_message_id: Option<&str>,
53 caption: Option<&str>,
54 parse_mode: Option<&str>,
55 caption_entities: Option<Vec<message_entity::MessageEntity>>,
56 reply_markup: Option<serde_json::Value>,
57 show_caption_above_media: Option<bool>,
58 business_connection_id: Option<&str>,
59 ) -> Result<MessageOrBool> {
60 let mut params = Vec::new();
61 push_opt(&mut params, "chat_id", &chat_id)?;
62 push_opt(&mut params, "message_id", &message_id)?;
63 push_opt_str(&mut params, "inline_message_id", inline_message_id);
64 push_opt_str(&mut params, "caption", caption);
65 push_opt_str(&mut params, "parse_mode", parse_mode);
66 push_opt(&mut params, "caption_entities", &caption_entities)?;
67 push_opt(&mut params, "reply_markup", &reply_markup)?;
68 push_opt(
69 &mut params,
70 "show_caption_above_media",
71 &show_caption_above_media,
72 )?;
73 push_opt_str(
74 &mut params,
75 "business_connection_id",
76 business_connection_id,
77 );
78 self.do_post("editMessageCaption", params).await
79 }
80
81 pub async fn edit_message_media_raw(
85 &self,
86 media: serde_json::Value,
87 chat_id: Option<ChatId>,
88 message_id: Option<i64>,
89 inline_message_id: Option<&str>,
90 reply_markup: Option<serde_json::Value>,
91 business_connection_id: Option<&str>,
92 ) -> Result<MessageOrBool> {
93 let mut params = vec![RequestParameter::new("media", media)];
94 push_opt(&mut params, "chat_id", &chat_id)?;
95 push_opt(&mut params, "message_id", &message_id)?;
96 push_opt_str(&mut params, "inline_message_id", inline_message_id);
97 push_opt(&mut params, "reply_markup", &reply_markup)?;
98 push_opt_str(
99 &mut params,
100 "business_connection_id",
101 business_connection_id,
102 );
103 self.do_post("editMessageMedia", params).await
104 }
105
106 pub async fn edit_message_reply_markup_raw(
110 &self,
111 chat_id: Option<ChatId>,
112 message_id: Option<i64>,
113 inline_message_id: Option<&str>,
114 reply_markup: Option<serde_json::Value>,
115 business_connection_id: Option<&str>,
116 ) -> Result<MessageOrBool> {
117 let mut params = Vec::new();
118 push_opt(&mut params, "chat_id", &chat_id)?;
119 push_opt(&mut params, "message_id", &message_id)?;
120 push_opt_str(&mut params, "inline_message_id", inline_message_id);
121 push_opt(&mut params, "reply_markup", &reply_markup)?;
122 push_opt_str(
123 &mut params,
124 "business_connection_id",
125 business_connection_id,
126 );
127 self.do_post("editMessageReplyMarkup", params).await
128 }
129
130 pub async fn edit_message_live_location_raw(
134 &self,
135 latitude: f64,
136 longitude: f64,
137 chat_id: Option<ChatId>,
138 message_id: Option<i64>,
139 inline_message_id: Option<&str>,
140 horizontal_accuracy: Option<f64>,
141 heading: Option<i64>,
142 proximity_alert_radius: Option<i64>,
143 reply_markup: Option<serde_json::Value>,
144 live_period: Option<i64>,
145 business_connection_id: Option<&str>,
146 ) -> Result<MessageOrBool> {
147 let mut params = vec![
148 RequestParameter::new("latitude", serde_json::to_value(latitude)?),
149 RequestParameter::new("longitude", serde_json::to_value(longitude)?),
150 ];
151 push_opt(&mut params, "chat_id", &chat_id)?;
152 push_opt(&mut params, "message_id", &message_id)?;
153 push_opt_str(&mut params, "inline_message_id", inline_message_id);
154 push_opt(&mut params, "horizontal_accuracy", &horizontal_accuracy)?;
155 push_opt(&mut params, "heading", &heading)?;
156 push_opt(
157 &mut params,
158 "proximity_alert_radius",
159 &proximity_alert_radius,
160 )?;
161 push_opt(&mut params, "reply_markup", &reply_markup)?;
162 push_opt(&mut params, "live_period", &live_period)?;
163 push_opt_str(
164 &mut params,
165 "business_connection_id",
166 business_connection_id,
167 );
168 self.do_post("editMessageLiveLocation", params).await
169 }
170
171 pub async fn stop_message_live_location_raw(
175 &self,
176 chat_id: Option<ChatId>,
177 message_id: Option<i64>,
178 inline_message_id: Option<&str>,
179 reply_markup: Option<serde_json::Value>,
180 business_connection_id: Option<&str>,
181 ) -> Result<MessageOrBool> {
182 let mut params = Vec::new();
183 push_opt(&mut params, "chat_id", &chat_id)?;
184 push_opt(&mut params, "message_id", &message_id)?;
185 push_opt_str(&mut params, "inline_message_id", inline_message_id);
186 push_opt(&mut params, "reply_markup", &reply_markup)?;
187 push_opt_str(
188 &mut params,
189 "business_connection_id",
190 business_connection_id,
191 );
192 self.do_post("stopMessageLiveLocation", params).await
193 }
194
195 pub async fn edit_message_checklist_raw(
199 &self,
200 business_connection_id: &str,
201 chat_id: i64,
202 message_id: i64,
203 checklist: input_checklist::InputChecklist,
204 reply_markup: Option<serde_json::Value>,
205 ) -> Result<message::Message> {
206 let mut params = vec![
207 RequestParameter::new(
208 "business_connection_id",
209 serde_json::Value::String(business_connection_id.to_owned()),
210 ),
211 RequestParameter::new("chat_id", serde_json::to_value(chat_id)?),
212 RequestParameter::new("message_id", serde_json::to_value(message_id)?),
213 RequestParameter::new("checklist", serde_json::to_value(&checklist)?),
214 ];
215 push_opt(&mut params, "reply_markup", &reply_markup)?;
216 self.do_post("editMessageChecklist", params).await
217 }
218
219 pub async fn stop_poll_raw(
223 &self,
224 chat_id: ChatId,
225 message_id: i64,
226 reply_markup: Option<serde_json::Value>,
227 business_connection_id: Option<&str>,
228 ) -> Result<poll::Poll> {
229 let mut params = vec![
230 RequestParameter::new("chat_id", serde_json::to_value(&chat_id)?),
231 RequestParameter::new("message_id", serde_json::to_value(message_id)?),
232 ];
233 push_opt(&mut params, "reply_markup", &reply_markup)?;
234 push_opt_str(
235 &mut params,
236 "business_connection_id",
237 business_connection_id,
238 );
239 self.do_post("stopPoll", params).await
240 }
241}