summaryrefslogtreecommitdiff
path: root/src/handlers/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/handlers/error.rs')
-rw-r--r--src/handlers/error.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/handlers/error.rs b/src/handlers/error.rs
new file mode 100644
index 0000000..b4e1361
--- /dev/null
+++ b/src/handlers/error.rs
@@ -0,0 +1,42 @@
+use crate::colors::Colors;
+use crate::Data;
+
+use color_eyre::eyre::Report;
+use log::*;
+use poise::serenity_prelude::Timestamp;
+use poise::FrameworkError;
+
+pub async fn handle(error: poise::FrameworkError<'_, Data, Report>) {
+ match error {
+ FrameworkError::Setup { error, .. } => error!("error setting up client! {error:#?}"),
+
+ FrameworkError::Command { error, ctx } => {
+ error!("error in command {}:\n{error:?}", ctx.command().name);
+ ctx.send(|c| {
+ c.embed(|e| {
+ e.title("Something went wrong!")
+ .description("oopsie")
+ .timestamp(Timestamp::now())
+ .color(Colors::Orange)
+ })
+ })
+ .await
+ .ok();
+ }
+
+ FrameworkError::EventHandler {
+ error,
+ ctx: _,
+ event: _,
+ framework: _,
+ } => {
+ error!("error while handling event:\n{error:#?}");
+ }
+
+ error => {
+ if let Err(e) = poise::builtins::on_error(error).await {
+ error!("error while handling an error: {}", e);
+ }
+ }
+ }
+}