aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-02 15:23:51 +0100
committersalmonik <salmonik@tuta.io>2026-11-02 15:23:51 +0100
commitd4ab83f20956fba09133571e14a9a64244b33d64 (patch)
tree1f47dd4b1a2307ff806e3d90b63775fccb820c07
parentsay: post text as a normal message after an invisible ack (diff)
downloadsenator-sperma-d4ab83f20956fba09133571e14a9a64244b33d64.tar.gz
senator-sperma-d4ab83f20956fba09133571e14a9a64244b33d64.zip
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.
-rw-r--r--src/commands/music.rs1
-rw-r--r--src/music.rs13
-rw-r--r--src/tasks/mod.rs1
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(
206 compressed, 206 compressed,
207 reupload: file_reupload.clone(), 207 reupload: file_reupload.clone(),
208 requester: Some(ctx.author().id), 208 requester: Some(ctx.author().id),
209 silent: false,
209 }; 210 };
210 211
211 let outcome = ctx 212 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 {
47 /// re-upload the file alongside the "playing" message. 47 /// re-upload the file alongside the "playing" message.
48 pub reupload: Option<(String, String)>, 48 pub reupload: Option<(String, String)>,
49 pub requester: Option<serenity::UserId>, 49 pub requester: Option<serenity::UserId>,
50 /// Suppress the "playing" and failure announcements for this track.
51 /// Cron audio uses this so scheduled playback stays silent.
52 pub silent: bool,
50} 53}
51 54
52/// Where an enqueued track goes relative to the current playback. 55/// Where an enqueued track goes relative to the current playback.
@@ -331,8 +334,10 @@ impl MusicState {
331 Ok(input) => input, 334 Ok(input) => input,
332 Err(e) => { 335 Err(e) => {
333 warn!(track = %request.display_name, error = %e, "failed to prepare queued track"); 336 warn!(track = %request.display_name, error = %e, "failed to prepare queued track");
334 let message = lang::fmt_music_track_failed(&request.display_name, &e); 337 if !request.silent {
335 self.announce_failure(guild, message).await; 338 let message = lang::fmt_music_track_failed(&request.display_name, &e);
339 self.announce_failure(guild, message).await;
340 }
336 last_error = Some(e); 341 last_error = Some(e);
337 continue; 342 continue;
338 } 343 }
@@ -388,7 +393,9 @@ impl MusicState {
388 }, 393 },
389 ); 394 );
390 395
391 self.announce_playing(announce, &request).await; 396 if !request.silent {
397 self.announce_playing(announce, &request).await;
398 }
392 return Ok(true); 399 return Ok(true);
393 } 400 }
394 } 401 }
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) {
162 compressed: false, 162 compressed: false,
163 reupload: None, 163 reupload: None,
164 requester: None, 164 requester: None,
165 silent: true,
165 }; 166 };
166 167
167 if let Err(e) = ctx 168 if let Err(e) = ctx