use async_trait::async_trait; #[cfg(feature = "clap")] use clap::Parser; use euphoxide::api::Message; #[cfg(feature = "clap")] use crate::command::clap::ClapCommand; use crate::{ bot::Bot, command::{Command, Context, Propagate}, }; pub struct ShortHelp(pub String); impl ShortHelp { pub fn new(text: S) -> Self { Self(text.to_string()) } } #[async_trait] impl Command for ShortHelp where E: From, { async fn execute( &self, arg: &str, msg: &Message, ctx: &Context, _bot: &Bot, ) -> Result { if arg.trim().is_empty() { ctx.reply_only(msg.id, &self.0).await?; Ok(Propagate::No) } else { Ok(Propagate::Yes) } } } /// Show short bot help. #[cfg(feature = "clap")] #[derive(Parser)] pub struct ShortHelpArgs {} #[cfg(feature = "clap")] #[async_trait] impl ClapCommand for ShortHelp where E: From, { type Args = ShortHelpArgs; async fn execute( &self, _args: Self::Args, msg: &Message, ctx: &Context, _bot: &Bot, ) -> Result { ctx.reply_only(msg.id, &self.0).await?; Ok(Propagate::No) } }