From 38841369fcd68c16e9764112335192087811d916 Mon Sep 17 00:00:00 2001 From: Benjamin Sherriff Date: Fri, 11 Oct 2024 11:22:05 -0400 Subject: [PATCH] trying to get handler to pause/play --- Dockerfile | 25 +++++++++---------------- Makefile | 4 ++++ src/bot/commands/audio/mod.rs | 1 + src/bot/commands/audio/pause.rs | 21 ++++++++++++++------- src/bot/commands/audio/resume.rs | 20 ++++++++++++++------ src/bot/commands/chat.rs | 6 +++--- src/bot/handler.rs | 2 ++ src/main.rs | 1 - 8 files changed, 47 insertions(+), 33 deletions(-) diff --git a/Dockerfile b/Dockerfile index c5077fe..f35033b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,26 +19,19 @@ WORKDIR /packages ARG TARGETPLATFORM -RUN apt-get update && apt-get install -y curl tar xz-utils && \ - if [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \ - curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_armv7l > yt-dlp && \ - chmod +x yt-dlp; \ - elif [ "$TARGETPLATFORM" = "linux/aarch64" ]; then \ - curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_aarch64 > yt-dlp && \ - chmod +x yt-dlp; \ - elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ - curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_aarch64 > yt-dlp && \ - chmod +x yt-dlp && \ +RUN apt-get update && apt-get install -y python3 curl tar xz-utils && \ + # Download the platform-independent yt-dlp binary + curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp > yt-dlp && \ + # Make yt-dlp executable + chmod +x yt-dlp && \ + # Install ffmpeg for media conversions + if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ curl -L https://github.com/yt-dlp/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-linuxarm64-gpl.tar.xz > ffmpeg.tar.xz && \ tar -xJf ffmpeg.tar.xz --wildcards */bin/ffmpeg --transform='s/^.*\///' && rm ffmpeg.tar.xz; \ - elif [ "$TARGETPLATFORM" = "linux/x86_64" ] | [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ - curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux > yt-dlp && \ - chmod +x yt-dlp && \ + elif [ "$TARGETPLATFORM" = "linux/x86_64" ] || [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ curl -L https://github.com/yt-dlp/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-linux64-gpl.tar.xz > ffmpeg.tar.xz && \ tar -xJf ffmpeg.tar.xz --wildcards */bin/ffmpeg --transform='s/^.*\///' && rm ffmpeg.tar.xz; \ - else \ - echo "Unsupported platform: $TARGETPLATFORM" && false; \ -fi + fi # ========= # Runtime diff --git a/Makefile b/Makefile index 38530ed..bdc9244 100644 --- a/Makefile +++ b/Makefile @@ -15,9 +15,13 @@ help: ## Help command backend-up: ## Start the backend containers @docker compose --profile backend up -d +up-backend: backend-up + backend-down: ## Stop the backend containers @docker compose --profile backend down +down-backend: backend-down + run: ## Run the project @echo "Running project..." @cargo run diff --git a/src/bot/commands/audio/mod.rs b/src/bot/commands/audio/mod.rs index f4ea6d0..09343b8 100644 --- a/src/bot/commands/audio/mod.rs +++ b/src/bot/commands/audio/mod.rs @@ -13,6 +13,7 @@ use songbird::Songbird; use crate::error::{SirenResult, Error as SirenError}; +pub mod mute; pub mod pause; pub mod play; pub mod resume; diff --git a/src/bot/commands/audio/pause.rs b/src/bot/commands/audio/pause.rs index 17b64ab..09d71b6 100644 --- a/src/bot/commands/audio/pause.rs +++ b/src/bot/commands/audio/pause.rs @@ -29,13 +29,20 @@ pub async fn run(ctx: &Context, command: &CommandInteraction) { // Pause the track if let Some(handler_lock) = manager.get(guild_id.to_owned()) { let handler = handler_lock.lock().await; - match handler.queue().pause() { - Ok(_) => { - log::debug!("<{guild_id}> Paused the track"); - edit_response(&ctx, &command, format!("Pausing the track")).await; - } - Err(err) => { - edit_response(&ctx, &command, format!("Failed to pause: {}", err)).await; + match handler.queue().current() { + Some(track) => { + match track.pause() { + Ok(_) => { + log::debug!("<{guild_id}> Paused the track"); + edit_response(&ctx, &command, format!("Pausing the track")).await; + } + Err(err) => { + edit_response(&ctx, &command, format!("Failed to pause: {}", err)).await; + } + } + }, + None => { + edit_response(ctx, command, format!("No track currently being played")).await; } } } diff --git a/src/bot/commands/audio/resume.rs b/src/bot/commands/audio/resume.rs index de9982a..55aa757 100644 --- a/src/bot/commands/audio/resume.rs +++ b/src/bot/commands/audio/resume.rs @@ -29,13 +29,21 @@ pub async fn run(ctx: &Context, command: &CommandInteraction) { // Resume the track if let Some(handler_lock) = manager.get(guild_id.to_owned()) { let handler = handler_lock.lock().await; - match handler.queue().resume() { - Ok(_) => { - log::debug!("<{guild_id}> Resumed the track"); - edit_response(&ctx, &command, format!("Resuming the track")).await; + match handler.queue().current() { + Some(track) => { + match track.play() { + Ok(_) => { + log::debug!("<{guild_id}> Resumed the track"); + edit_response(&ctx, &command, format!("Resuming the track")).await; + } + Err(err) => { + edit_response(&ctx, &command, format!("Failed to resume: {}", err)).await; + } + } } - Err(err) => { - edit_response(&ctx, &command, format!("Failed to resume: {}", err)).await; + None => { + edit_response(&ctx, &command, format!("No track is currently playing")).await; + return; } } } diff --git a/src/bot/commands/chat.rs b/src/bot/commands/chat.rs index 3a3a3d7..a72fb34 100644 --- a/src/bot/commands/chat.rs +++ b/src/bot/commands/chat.rs @@ -165,12 +165,12 @@ async fn generate_thread_name(oai: &OAI, s: &str, max_chars: usize) -> String { let message = ChatCompletionMessage { role: GPTRole::User, content: format!( - "---\n{}\n---\nSummarize the message above into a concise Discord thread title", - s + "---\n{}\n---\nSummarize the message above into a concise Discord thread title with {} max characters", + s, max_chars ), }; let request = ChatCompletionRequest { - model: oai.default_model.clone(), + model: "gpt-4o-mini".to_string(), messages: vec![message], temperature: Some(0.5), top_p: None, diff --git a/src/bot/handler.rs b/src/bot/handler.rs index c93abc6..dd9a293 100644 --- a/src/bot/handler.rs +++ b/src/bot/handler.rs @@ -52,6 +52,7 @@ impl EventHandler for Handler { "stop" => commands::audio::stop::run(&ctx, &command).await, "pause" => commands::audio::pause::run(&ctx, &command).await, "resume" => commands::audio::resume::run(&ctx, &command).await, + "mute" => commands::audio::mute::run(&ctx, &command).await, "skip" => commands::audio::skip::run(&ctx, &command).await, "volume" => commands::audio::volume::run(&ctx, &command).await, "schedule" => commands::event::schedule::run(&ctx, &command).await, @@ -92,6 +93,7 @@ impl EventHandler for Handler { commands::audio::stop::register(), commands::audio::pause::register(), commands::audio::resume::register(), + commands::audio::mute::register(), commands::audio::skip::register(), commands::audio::volume::register(), commands::event::schedule::register(), diff --git a/src/main.rs b/src/main.rs index 673892b..b61b039 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,7 +10,6 @@ use crate::bot::handler::Handler; mod bot; mod data; -mod dnd; mod error; pub struct HttpKey;