diff options
Diffstat (limited to 'src/commands/meme/delete.rs')
| -rw-r--r-- | src/commands/meme/delete.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/commands/meme/delete.rs b/src/commands/meme/delete.rs new file mode 100644 index 0000000..5c6eb13 --- /dev/null +++ b/src/commands/meme/delete.rs @@ -0,0 +1,37 @@ +use diesel::{ + NotFound, + result::Error as DieselError, +}; +use serenity::{ + framework::standard::Args, + model::channel::Message, + prelude::*, +}; + +use crate::{ + commands::send, + db::{ + connection, + delete_meme, + }, + Result, +}; + +pub fn delmeme(_: &mut Context, msg: &Message, mut args: Args) -> Result<()> { + let title = args.single_quoted::<String>()?; + + let conn = connection()?; + match delete_meme(&conn, &title, msg.author.id.0) { + Ok(_) => msg.react("💀"), + Err(e) => { + if let Some(NotFound) = e.downcast_ref::<DieselError>() { + msg.react("❓")?; + info!("attempted to delete nonexistent meme: '{}'", title); + send(msg.channel_id, "nice try", msg.tts)?; + return Ok(()); + } + + Err(e) + } + } +} |
