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