use super::InputMedia;
use crate::model::{InlineKeyboardMarkup, Message, MessageEntity, ParseMode};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct EditMessageText {
#[serde(skip_serializing_if = "Option::is_none")]
pub chat_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_message_id: Option<String>,
pub text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub parse_mode: Option<ParseMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub entities: Option<Vec<MessageEntity>>,
pub disable_web_page_preview: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
}
impl EditMessageText {
fn new(chat_id: i64, message_id: i64, new_text: &str) -> Self {
Self {
chat_id: Some(chat_id),
message_id: Some(message_id),
text: new_text.to_owned(),
inline_message_id: None,
parse_mode: None,
entities: None,
disable_web_page_preview: false,
reply_markup: None,
}
}
fn from_message(message: &Message, new_text: &str) -> Self {
Self {
chat_id: Some(message.chat.get_id()),
message_id: Some(message.message_id),
text: new_text.to_owned(),
inline_message_id: None,
parse_mode: None,
entities: None,
disable_web_page_preview: false,
reply_markup: None,
}
}
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct EditMessageCaption {
#[serde(skip_serializing_if = "Option::is_none")]
pub chat_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_message_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parse_mode: Option<ParseMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caption_entities: Option<Vec<MessageEntity>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
}
impl EditMessageCaption {
fn new(chat_id: i64, message_id: i64, new_text: Option<&str>) -> Self {
Self {
chat_id: Some(chat_id),
message_id: Some(message_id),
caption: new_text.map(ToString::to_string),
inline_message_id: None,
parse_mode: None,
caption_entities: None,
reply_markup: None,
}
}
fn from_message(message: &Message, new_text: Option<&str>) -> Self {
Self {
chat_id: Some(message.chat.get_id()),
message_id: Some(message.message_id),
caption: new_text.map(ToString::to_string),
inline_message_id: None,
parse_mode: None,
caption_entities: None,
reply_markup: None,
}
}
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct EditMessageMedia {
#[serde(skip_serializing_if = "Option::is_none")]
pub chat_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_message_id: Option<String>,
pub media: InputMedia,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
}
impl EditMessageMedia {
fn new(chat_id: i64, message_id: i64, new_media: &InputMedia) -> Self {
Self {
chat_id: Some(chat_id),
message_id: Some(message_id),
media: new_media.to_owned(),
inline_message_id: None,
reply_markup: None,
}
}
fn from_message(message: &Message, new_media: &InputMedia) -> Self {
Self {
chat_id: Some(message.chat.get_id()),
message_id: Some(message.message_id),
media: new_media.to_owned(),
inline_message_id: None,
reply_markup: None,
}
}
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct EditMessageReplyMarkup {
#[serde(skip_serializing_if = "Option::is_none")]
pub chat_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_message_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
}
impl EditMessageReplyMarkup {
fn new(chat_id: i64, message_id: i64, new_markup: Option<&InlineKeyboardMarkup>) -> Self {
Self {
chat_id: Some(chat_id),
message_id: Some(message_id),
inline_message_id: None,
reply_markup: new_markup.cloned(),
}
}
fn from_message(message: &Message, new_markup: Option<&InlineKeyboardMarkup>) -> Self {
Self {
chat_id: Some(message.chat.get_id()),
message_id: Some(message.message_id),
inline_message_id: None,
reply_markup: new_markup.cloned(),
}
}
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct StopPoll {
pub chat_id: i64,
pub message_id: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
}
impl StopPoll {
fn new(chat_id: i64, message_id: i64) -> Self {
Self {
chat_id,
message_id,
reply_markup: None,
}
}
fn from_message(message: &Message) -> Self {
Self {
chat_id: message.chat.get_id(),
message_id: message.message_id,
reply_markup: None,
}
}
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct DeleteMessage {
pub chat_id: i64,
pub message_id: i64,
}
impl DeleteMessage {
fn new(chat_id: i64, message_id: i64) -> Self {
Self {
chat_id,
message_id,
}
}
fn from_message(message: &Message) -> Self {
Self {
chat_id: message.chat.get_id(),
message_id: message.message_id,
}
}
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct EditMessageLiveLocation {
#[serde(skip_serializing_if = "Option::is_none")]
pub chat_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_message_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
pub latitude: f64,
pub longitude: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub horizontal_accuracy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub heading: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proximity_alert_radius: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct StopMessageLiveLocation {
#[serde(skip_serializing_if = "Option::is_none")]
pub chat_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inline_message_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>,
}