//! Plugin command definitions. // Dear future me: If you forget the JSON translations in the future you'll // thank me for the comment overkill. use std::fmt::Display; use serde::{Deserialize, Serialize}; /// Message types accepted from plugins. #[derive(Debug, Deserialize, Serialize)] pub enum PluginMsg { /// Plugin message indicating the bot should send a [`message`] to [`channel`]. /// { /// "SendMessage": { /// "channel": "channel_name", /// "message": "your message here" /// } /// /// } SendMessage { /// The IRC channel to send the [`message`] to. channel: String, /// The [`message`] to send. message: String, }, } impl Display for PluginMsg { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::SendMessage { channel, message } => { write!(f, "[{channel}]: {message}") } } } }