use serde::Deserialize;
use crate::{
models::{Channel, Embed, Id, Message, MessageEdited},
Context, Result,
};
#[derive(Debug, Clone, PartialEq, Deserialize)]
pub struct MessageUpdateEvent {
#[serde(rename = "id")]
pub message_id: Id,
#[serde(rename = "channel")]
pub channel_id: Id,
pub data: PartialMessage,
}
impl MessageUpdateEvent {
pub async fn message(&self, cx: &Context) -> Result<Message> {
Message::fetch(cx, &self.channel_id, &self.message_id).await
}
pub async fn channel(&self, cx: &Context) -> Result<Channel> {
Channel::fetch(cx, &self.channel_id).await
}
}
#[derive(Debug, Clone, PartialEq, Deserialize)]
pub struct PartialMessage {
pub content: Option<String>,
#[serde(default)]
pub embeds: Vec<Embed>,
pub edited: MessageEdited,
}