From 82d017b00f16adb37ee7cf912f3a1c1612eaf41c Mon Sep 17 00:00:00 2001 From: videogame hacker Date: Thu, 8 Jul 2021 00:18:53 +0100 Subject: [PATCH] Clean up define command --- src/commands/define.rs | 56 ++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/src/commands/define.rs b/src/commands/define.rs index 52db49a..ebe70cd 100644 --- a/src/commands/define.rs +++ b/src/commands/define.rs @@ -1,5 +1,5 @@ use serenity::{ - framework::standard::{macros::command, Args, CommandResult}, + framework::standard::{macros::command, Args, CommandError, CommandResult}, model::channel::Message, prelude::*, }; @@ -8,36 +8,32 @@ use serenity::{ #[command] #[aliases("what's this")] async fn define(ctx: &Context, message: &Message, args: Args) -> CommandResult { - let text: String = args.rest().trim().to_string(); - let defs = &urbandict::get_definitions(&text); - if !args.is_empty() { - match defs { - Err(_e) => { - return Err("Invalid query >w<".into()); - } - Ok(v) => { - if !v.is_empty() { - let def = &v[0]; - let _ = message - .channel_id - .send_message(&ctx.http, |m| { - m.embed(|e| { - e.title(format!("Query: {}, Author: {}", text, def.author)) - .field( - "Definition: ", - def.definition.replace(|c| c == '[' || c == ']', ""), - false, - ) - .color(0xffd1dc) - }) - }) - .await; - } else { - return Err("No results!".into()); - } - } - } + if args.is_empty() { + return Err("No arguments!".into()); } + let text: String = args.rest().trim().to_string(); + let defs = + urbandict::get_definitions(&text).map_err(|_| CommandError::from("Invalid query >w<"))?; + + let def = defs + .first() + .ok_or_else(|| CommandError::from("No results!"))?; + + let _ = message + .channel_id + .send_message(&ctx.http, |m| { + m.embed(|e| { + e.title(format!("Query: {}, Author: {}", text, def.author)) + .field( + "Definition: ", + def.definition.replace(|c| c == '[' || c == ']', ""), + false, + ) + .color(0xffd1dc) + }) + }) + .await; + Ok(()) }