<feed xmlns='http://www.w3.org/2005/Atom'>
<title>senator-sperma/src/music.rs, branch main</title>
<subtitle>Very big discord bot.
</subtitle>
<id>https://git.2137697.xyz/senator-sperma/atom?h=main</id>
<link rel='self' href='https://git.2137697.xyz/senator-sperma/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/'/>
<updated>2026-11-04T00:34:42Z</updated>
<entry>
<title>music: keep preparation out of the guild lock and requeue failed connects</title>
<updated>2026-11-04T00:34:42Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:34:42Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=0d2f471e9a868518899be4d51cb3029f01079f2e'/>
<id>urn:sha1:0d2f471e9a868518899be4d51cb3029f01079f2e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>music: reject live streams on the yt-dlp path</title>
<updated>2026-11-04T00:31:21Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:31:21Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=f811fed0d65bed62bb1c5a986f6f355d3b68612d'/>
<id>urn:sha1:f811fed0d65bed62bb1c5a986f6f355d3b68612d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>music: decode compressed playback without a temp file</title>
<updated>2026-11-04T00:31:11Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:31:11Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=b9eaa579dac2ae912e3be9a3aa3e73ddcb3416e1'/>
<id>urn:sha1:b9eaa579dac2ae912e3be9a3aa3e73ddcb3416e1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>music: announce a directly started track once</title>
<updated>2026-11-04T00:16:42Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-04T00:16:42Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=3e1dd940594e72b76de52eb2f5ba7264a49b92b1'/>
<id>urn:sha1:3e1dd940594e72b76de52eb2f5ba7264a49b92b1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cron: keep scheduled audio silent</title>
<updated>2026-11-02T14:23:51Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-02T14:23:51Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=d4ab83f20956fba09133571e14a9a64244b33d64'/>
<id>urn:sha1:d4ab83f20956fba09133571e14a9a64244b33d64</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>music: add per-guild queue with now/next/last, skip and queue</title>
<updated>2026-10-27T17:14:07Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-27T17:14:07Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=fc5e0f48477366641b97efb0541053cc1e061be5'/>
<id>urn:sha1:fc5e0f48477366641b97efb0541053cc1e061be5</id>
<content type='text'>
Tracks are queued in memory per guild, defaulting to append (last).
Playback auto-advances on TrackEvent::End/Error with a per-track token
so manual stops and skips cannot double-advance. /music queue shows the
current track followed by pending items. /stop clears the queue.

Cron audio now goes through the same MusicState instead of poking the
track-handle map directly.
</content>
</entry>
</feed>
