use serenity::{async_trait, model::prelude::*, prelude::*}; use tracing::info; use crate::{ast, MessageReference}; impl From<&Message> for MessageReference { fn from(message: &Message) -> Self { Self::Discord(message.channel_id.0, message.id.0) } } // TODO: Some way to emit messages for matrix, // and some way to receive messages from matrix. struct DiscordSide {} #[async_trait] impl EventHandler for DiscordSide { async fn ready(&self, _ctx: Context, _ready: Ready) { info!("Discord side: Ready"); // TODO } async fn message(&self, ctx: Context, message: Message) { let _message_ref = MessageReference::from(&message); // TODO: Store this message ref & associations in the DB let content = discord_message_format::parse(&message.content); let content = ast::convert_discord(&content); // TODO: Broadcast the message to other platforms } }