telegram_bot_raw/requests/
edit_message_text.rs

1use std::borrow::Cow;
2use std::ops::Not;
3
4use crate::requests::*;
5use crate::types::*;
6
7/// Use this method to edit text messages sent by the bot.
8#[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
67/// Edit text of messages sent by the bot.
68pub 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}