use crate::util; use grate::tracing; /// Roll some number of dice or perform a calculation. #[poise::command(prefix_command, guild_only, aliases("calc", "calculate"))] pub async fn roll( ctx: poise::Context<'_, U, anyhow::Error>, #[rest] rest: String, ) -> anyhow::Result<()> { match thulani_calc::Calc::eval(&rest) { Ok(result) => { tracing::debug!(result, expr = %rest, "got calc result"); util::reply(ctx, result.to_string()).await?; }, Err(e) => { tracing::error!(error = %e, expr = %rest, "error encountered reading calc"); util::reply(ctx, "I COULDN'T READ THAT YOU FUCK").await?; }, } Ok(()) }