use phoebe::{ mid_chat::{ChatMessage, ChatMessageReference, ChatReference}, prelude::Result, }; use serenity::{model::prelude::*, prelude::*}; use crate::{chat_conv, discord_reference}; pub async fn send_discord_message( context: &mut Context, source: &ChatMessage, destination_channel: ChatReference, ) -> Result { // TODO: If we have a webhook we should use the webhook let channel_id = destination_channel.id.parse::()?; let formatted_message = chat_conv::format(&source.content); let content = format!( "{} ({}): {}", source.author.display_name, source.author.reference.service, formatted_message ); let sent_message = channel_id .send_message(&context, move |m| { let m = m.content(content); if let Some(reply) = &source.replying { let channel_id: ChannelId = reply.channel.id.parse().unwrap(); let message_id: MessageId = reply.message_id.parse::().unwrap().into(); m.reference_message((channel_id, message_id)) } else { m } }) .await?; Ok(ChatMessageReference::new( discord_reference(sent_message.channel_id), sent_message.id, )) }