From d4ab83f20956fba09133571e14a9a64244b33d64 Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 2 Nov 2026 15:23:51 +0100 Subject: cron: keep scheduled audio silent Add a per-track silent flag. Cron already uses play_now (interrupt the current track), but play_next_locked still announced the track to the last known text channel; suppress playing and failure announcements for silent tracks, including when a cron track fails to prepare. --- src/commands/music.rs | 1 + src/music.rs | 13 ++++++++++--- src/tasks/mod.rs | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/commands/music.rs b/src/commands/music.rs index ecc75c8..245eb88 100644 --- a/src/commands/music.rs +++ b/src/commands/music.rs @@ -206,6 +206,7 @@ async fn play_impl( compressed, reupload: file_reupload.clone(), requester: Some(ctx.author().id), + silent: false, }; let outcome = ctx diff --git a/src/music.rs b/src/music.rs index 8dfc4f8..1461f6a 100644 --- a/src/music.rs +++ b/src/music.rs @@ -47,6 +47,9 @@ pub struct TrackRequest { /// re-upload the file alongside the "playing" message. pub reupload: Option<(String, String)>, pub requester: Option, + /// Suppress the "playing" and failure announcements for this track. + /// Cron audio uses this so scheduled playback stays silent. + pub silent: bool, } /// Where an enqueued track goes relative to the current playback. @@ -331,8 +334,10 @@ impl MusicState { Ok(input) => input, Err(e) => { warn!(track = %request.display_name, error = %e, "failed to prepare queued track"); - let message = lang::fmt_music_track_failed(&request.display_name, &e); - self.announce_failure(guild, message).await; + if !request.silent { + let message = lang::fmt_music_track_failed(&request.display_name, &e); + self.announce_failure(guild, message).await; + } last_error = Some(e); continue; } @@ -388,7 +393,9 @@ impl MusicState { }, ); - self.announce_playing(announce, &request).await; + if !request.silent { + self.announce_playing(announce, &request).await; + } return Ok(true); } } diff --git a/src/tasks/mod.rs b/src/tasks/mod.rs index ab0d062..f0585ef 100644 --- a/src/tasks/mod.rs +++ b/src/tasks/mod.rs @@ -162,6 +162,7 @@ async fn execute_audio_job(ctx: &CronContext, job: &crate::database::CronJob) { compressed: false, reupload: None, requester: None, + silent: true, }; if let Err(e) = ctx -- cgit v1.2.3