phoebe/src/messages.rs

48 lines
1.1 KiB
Rust

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<String>,
}
pub struct SentMessage {
pub source: MessageReference,
pub content: MessageContent,
pub author: MessageAuthor,
pub replies_to: Option<MessageReference>,
}
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<ChannelReference>),
SendText(Box<SentMessage>),
EditText(Box<EditedMessage>),
SendImage(Box<SentImageMessage>),
Delete(Box<DeletedMessage>),
}