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