diff --git a/CHANGELOG.md b/CHANGELOG.md index 542d25f..eaeb011 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog], and this project adheres to [Semantic Versioning]. +## [1.3.2] - 2024-05-23 + +### Added + +- Added some rudimentary Sentry upload for command panics + +### Changed + +- Show all favourites if the search query is empty + ## [1.3.1] - 2024-05-23 ### Changed diff --git a/Cargo.lock b/Cargo.lock index e4302b3..452c697 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -713,7 +713,7 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byers" -version = "1.3.1" +version = "1.3.2" dependencies = [ "anyhow", "async-fred-session", @@ -1574,7 +1574,7 @@ dependencies = [ [[package]] name = "frohike" -version = "1.3.1" +version = "1.3.2" dependencies = [ "anyhow", "clap", @@ -2258,7 +2258,7 @@ dependencies = [ [[package]] name = "judeharley" -version = "1.3.1" +version = "1.3.2" dependencies = [ "async-trait", "audiotags", @@ -2318,7 +2318,7 @@ dependencies = [ [[package]] name = "langley" -version = "1.3.1" +version = "1.3.2" dependencies = [ "axum", "fred", diff --git a/Cargo.toml b/Cargo.toml index 105157d..6b538df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["judeharley", "byers", "langley", "frohike", "migration"] resolver = "2" [workspace.package] -version = "1.3.1" +version = "1.3.2" authors = ["cozyGalvinism "] edition = "2021" diff --git a/byers/src/commands/mod.rs b/byers/src/commands/mod.rs index f3b3572..09f0838 100644 --- a/byers/src/commands/mod.rs +++ b/byers/src/commands/mod.rs @@ -49,11 +49,20 @@ pub async fn autocomplete_songs( partial: &str, ) -> impl Iterator { let data = ctx.data(); - - let songs = Songs::search(partial, &data.db) + let user = Users::get_or_insert(ctx.author().id.get(), &data.db) .await .expect_or_log("Failed to query database"); + let songs = if partial.is_empty() { + user.list_favourites(&data.db) + .await + .expect_or_log("Failed to query database") + } else { + Songs::search(partial, &data.db) + .await + .expect_or_log("Failed to query database") + }; + songs.into_iter().take(20).map(|song| { AutocompleteChoice::new( format!("{} - {}", song.artist, song.title) @@ -73,9 +82,15 @@ pub async fn autocomplete_favourite_songs( .await .expect_or_log("Failed to query database"); - let songs = Songs::search_favourited_songs(partial, &user, &data.db) - .await - .expect_or_log("Failed to query database"); + let songs = if partial.is_empty() { + user.list_favourites(&data.db) + .await + .expect_or_log("Failed to query database") + } else { + Songs::search_favourited_songs(partial, &user, &data.db) + .await + .expect_or_log("Failed to query database") + }; songs.into_iter().take(20).map(|song| { AutocompleteChoice::new( diff --git a/byers/src/commands/youtube.rs b/byers/src/commands/youtube.rs index 2472a3e..93aba0b 100644 --- a/byers/src/commands/youtube.rs +++ b/byers/src/commands/youtube.rs @@ -89,6 +89,7 @@ If you don't remember your old YouTube name or you no longer have access to your SituwaitionOptsBuilder::default() .timeout(Duration::from_secs(120)) .check_interval(Duration::from_secs(1)) + .check_cooldown(None) .build() .unwrap(), ) diff --git a/byers/src/event_handlers/error.rs b/byers/src/event_handlers/error.rs index bb3ddf1..720ca07 100644 --- a/byers/src/event_handlers/error.rs +++ b/byers/src/event_handlers/error.rs @@ -45,6 +45,23 @@ pub async fn on_error(error: FrameworkError<'_>) -> Result<(), Error> { sentry::add_breadcrumb(BreadcrumbableContext(ctx).as_breadcrumbs().await); sentry_anyhow::capture_anyhow(&error); ctx.say(err_str).await?; + }, + FrameworkError::CommandPanic { ref payload, ref ctx, .. } => { + let payload_clone = payload.clone(); + sentry::add_breadcrumb(BreadcrumbableContext(*ctx).as_breadcrumbs().await); + if let Some(payload) = payload_clone { + sentry_anyhow::capture_anyhow(&anyhow::anyhow!(payload)); + } else { + sentry_anyhow::capture_anyhow(&anyhow::anyhow!("Panic in command")); + } + + let embed = poise::serenity_prelude::CreateEmbed::default() + .title("Internal error") + .color((255, 0, 0)) + .description("An unexpected internal error has occurred."); + + ctx.send(CreateReply::default().embed(embed).ephemeral(true)) + .await?; } _ => { poise::builtins::on_error(error).await?; diff --git a/judeharley/examples/playground.rs b/judeharley/examples/playground.rs index 6210197..8d60eb8 100644 --- a/judeharley/examples/playground.rs +++ b/judeharley/examples/playground.rs @@ -1,10 +1,4 @@ -use judeharley::Decimal; - #[tokio::main] async fn main() { - let db = judeharley::connect_database("postgres://byers:byers@localhost/byers").await.unwrap(); - - let songs = judeharley::Songs::search("zehanpuryu", &db).await.unwrap(); - - println!("{:#?}", songs); + }