From f7dca8ff65daf54c2183e0497a09710b9ef48b35 Mon Sep 17 00:00:00 2001 From: Johannes Heuel Date: Thu, 8 Aug 2024 18:04:36 +0200 Subject: [PATCH] improve error handling on play command --- src/commands/play.rs | 45 ++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/src/commands/play.rs b/src/commands/play.rs index 0eb82c8..ce2f513 100644 --- a/src/commands/play.rs +++ b/src/commands/play.rs @@ -238,6 +238,31 @@ pub(crate) async fn play( interaction: Box, state: State, query: String, +) -> Result<(), Box> { + match play_inner(&interaction, Arc::clone(&state), query).await { + Ok(_) => Ok(()), + Err(e) => { + tracing::debug!("Search did not result in any tracks: {}", e); + let content = "Search did not result in any tracks.".to_string(); + let embeds = vec![EmbedBuilder::new() + .description(content) + .color(colors::RED) + .build()]; + state + .http + .interaction(interaction.application_id) + .update_response(&interaction.token) + .embeds(Some(&embeds))? + .await?; + Ok(()) + } + } +} + +pub(crate) async fn play_inner( + interaction: &InteractionCreate, + state: State, + query: String, ) -> Result<(), Box> { debug!( "play command in channel {:?} by {:?}", @@ -282,23 +307,7 @@ pub(crate) async fn play( debug!("query: {:?}", query); - let tracks = match get_tracks(query).await { - Err(e) => { - let content = format!("{}", e); - let embeds = vec![EmbedBuilder::new() - .description(content) - .color(colors::RED) - .build()]; - state - .http - .interaction(interaction.application_id) - .update_response(&interaction.token) - .embeds(Some(&embeds))? - .await?; - return Ok(()); - } - Ok(tracks) => tracks, - }; + let tracks = get_tracks(query).await?; if tracks.len() > 1 { let first_track = tracks.first().unwrap(); @@ -347,7 +356,7 @@ pub(crate) async fn play( if let Ok(metadata) = src.aux_metadata().await { debug!("metadata: {:?}", metadata); - persistence(&interaction, yttrack, Arc::clone(&state)) + persistence(interaction, yttrack, Arc::clone(&state)) .await .unwrap_or_else(|e| { tracing::error!("could not persist track: {:?}", e);