use crate::{ chat::{edit_response, process_message}, handler::get_songbird, }; use serenity::{ all::{CommandInteraction, CreateCommand}, prelude::*, }; pub async fn run(ctx: &Context, command: &CommandInteraction) { // Create the initial response process_message(&ctx, &command, false).await; // Get the songbird manager let manager = get_songbird(); // Extract the guild ID let guild_id = match command.guild_id { Some(g) => g, None => { edit_response( &ctx, &command, "Unable to find the current server ID".to_string(), ) .await; return; } }; // Stop the track and clear the queue if let Some(handler_lock) = manager.get(guild_id) { let handler = handler_lock.lock().await; handler.queue().stop(); log::debug!("<{guild_id}> Stopped the track"); edit_response(&ctx, &command, "Stopping the tracks".to_string()).await; } } pub fn register() -> CreateCommand { CreateCommand::new("stop").description("Stop the current track and clear the queue") }