mod autoproxy; mod prefixes; use async_trait::async_trait; use twilight_model::{channel::{Channel, Message}, id::{marker::ChannelMarker, Id}}; use super::log::Logger; use crate::system::types::{System, Response}; pub use prefixes::ProxyPrefixes; pub use autoproxy::Autoproxy; #[async_trait] pub trait SeancePlugin { async fn handle_command(&self, logger: &Logger, system: &System, message: &Message) -> CommandOutcome; async fn handle_message(&self, logger: &Logger, system: &System, message: &Message, response: &mut Response); async fn post_response(&self, logger: &Logger, system: &System, message: &Message, channel: Id, response: &Response); } pub enum CommandOutcome { Skipped, Handled, Errored {message: String}, }