use serde::{Deserialize, Serialize}; use crate::{channels::ChannelReference, message_ast::MessageContent}; #[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] pub enum MessageReference { Discord(u64, u64), Matrix(String, String), } pub struct MessageAuthor { pub display_name: String, pub avatar_url: String, pub service_name: String, pub display_color: Option, } pub struct SentMessage { pub source: MessageReference, pub content: MessageContent, pub author: MessageAuthor, pub replies_to: Option, } pub struct EditedMessage { pub replacing: MessageReference, pub content: MessageContent, pub author: MessageAuthor, } pub struct SentImageMessage { pub source: MessageReference, pub author: MessageAuthor, pub image_url: String, } pub struct DeletedMessage { pub reference: MessageReference, } pub enum MessageEvent { AdminLinkChannels(Vec), SendText(Box), EditText(Box), SendImage(Box), Delete(Box), }