telegram_bot_raw/requests/
edit_message_text.rs1use std::borrow::Cow;
2use std::ops::Not;
3
4use crate::requests::*;
5use crate::types::*;
6
7#[derive(Debug, Clone, PartialEq, PartialOrd, Serialize)]
9#[must_use = "requests do nothing unless sent"]
10pub struct EditMessageText<'s> {
11 chat_id: ChatRef,
12 message_id: MessageId,
13 text: Cow<'s, str>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 parse_mode: Option<ParseMode>,
16 #[serde(skip_serializing_if = "Not::not")]
17 disable_web_page_preview: bool,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 reply_markup: Option<ReplyMarkup>,
20}
21
22impl<'s> Request for EditMessageText<'s> {
23 type Type = JsonRequestType<Self>;
24 type Response = JsonIdResponse<Message>;
25
26 fn serialize(&self) -> Result<HttpRequest, Error> {
27 Self::Type::serialize(RequestUrl::method("editMessageText"), self)
28 }
29}
30
31impl<'s> EditMessageText<'s> {
32 pub fn new<C, M, T>(chat: C, message_id: M, text: T) -> Self
33 where
34 C: ToChatRef,
35 M: ToMessageId,
36 T: Into<Cow<'s, str>>,
37 {
38 EditMessageText {
39 chat_id: chat.to_chat_ref(),
40 message_id: message_id.to_message_id(),
41 text: text.into(),
42 parse_mode: None,
43 disable_web_page_preview: false,
44 reply_markup: None,
45 }
46 }
47
48 pub fn parse_mode(&mut self, parse_mode: ParseMode) -> &mut Self {
49 self.parse_mode = Some(parse_mode);
50 self
51 }
52
53 pub fn disable_preview(&mut self) -> &mut Self {
54 self.disable_web_page_preview = true;
55 self
56 }
57
58 pub fn reply_markup<R>(&mut self, reply_markup: R) -> &mut Self
59 where
60 R: Into<ReplyMarkup>,
61 {
62 self.reply_markup = Some(reply_markup.into());
63 self
64 }
65}
66
67pub trait CanEditMessageText {
69 fn edit_text<'s, T>(&self, text: T) -> EditMessageText<'s>
70 where
71 T: Into<Cow<'s, str>>;
72}
73
74impl<M> CanEditMessageText for M
75where
76 M: ToMessageId + ToSourceChat,
77{
78 fn edit_text<'s, T>(&self, text: T) -> EditMessageText<'s>
79 where
80 T: Into<Cow<'s, str>>,
81 {
82 EditMessageText::new(self.to_source_chat(), self.to_message_id(), text)
83 }
84}