From 660bb1ae17d7fae07b1831b91e72e1b37b54f353 Mon Sep 17 00:00:00 2001 From: Gabriel Fontes Date: Fri, 28 Jan 2022 13:55:52 -0300 Subject: [PATCH] better error display --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/client.rs | 5 +++-- src/discord/mod.rs | 11 ++++++++++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b2db3bd..0aebdf9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -486,7 +486,7 @@ dependencies = [ [[package]] name = "disconic" -version = "0.1.0" +version = "0.1.1" dependencies = [ "anyhow", "dotenv", diff --git a/Cargo.toml b/Cargo.toml index 16ef691..dfb39da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "disconic" description = "Discord bot for interacting with subsonic music libraries" -version = "0.1.0" +version = "0.1.1" authors = [ "Gabriel Fontes " ] edition = "2018" homepage = "https://misterio.me" diff --git a/src/client.rs b/src/client.rs index 65dce86..60558f3 100644 --- a/src/client.rs +++ b/src/client.rs @@ -7,7 +7,7 @@ use sunk::Client as SubsonicClient; use std::{env, fs, io}; -use crate::discord::{Handler, GENERAL_GROUP}; +use crate::discord::{Handler, GENERAL_GROUP, after_hook}; pub struct Client { ss_url: String, @@ -50,7 +50,8 @@ impl Client { .framework( StandardFramework::new() .configure(|c| c.prefix("~")) - .group(&GENERAL_GROUP), + .group(&GENERAL_GROUP) + .after(after_hook) ) .type_map_insert::(ss) .register_songbird() diff --git a/src/discord/mod.rs b/src/discord/mod.rs index 5fe54cb..2af3e83 100644 --- a/src/discord/mod.rs +++ b/src/discord/mod.rs @@ -3,7 +3,7 @@ use serenity::{ async_trait, client::{Context, EventHandler}, framework::standard::{ - macros::{command, group}, + macros::{command, group, hook}, Args, CommandResult, }, model::channel::Message, @@ -28,6 +28,15 @@ pub struct Handler; #[async_trait] impl EventHandler for Handler {} +#[hook] +pub async fn after_hook(ctx: &Context, msg: &Message, cmd_name: &str, error: CommandResult) { + if let Err(why) = error { + let text = format!("Error running {}: {:?}", cmd_name, why); + msg.reply(&ctx.http, &text).await.ok(); + eprintln!("{}", &text); + } +} + #[command] #[aliases(s, p, play)] /// Play a named song