<feed xmlns='http://www.w3.org/2005/Atom'>
<title>senator-sperma/cogs/vclogs.py, 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-07-08T00:13:35Z</updated>
<entry>
<title>OPEN THE RUST GATES</title>
<updated>2026-07-08T00:13:35Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-07-08T00:13:35Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=cd8ed8bc5793985df2c1692072a932ceee517b95'/>
<id>urn:sha1:cd8ed8bc5793985df2c1692072a932ceee517b95</id>
<content type='text'>
Signed-off-by: salmonik &lt;raisersoft@proton.me&gt;
</content>
</entry>
<entry>
<title>Fix zombie voice client after gateway restart</title>
<updated>2026-05-20T15:19:11Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-20T15:19:11Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=f5af4c11645bb1ff3aa993fb9c3a29c4a01b40c3'/>
<id>urn:sha1:f5af4c11645bb1ff3aa993fb9c3a29c4a01b40c3</id>
<content type='text'>
- play_tts: run is_voice_client_alive() check regardless of is_playing()
  state. After a gateway restart, is_playing() can return True on a
  dead client, which previously bypassed the stale-detection guard
  (was: 'if is_connected and not is_playing')
</content>
</entry>
<entry>
<title>Fix stale-connection reconnect hang and TTS temp-file collision</title>
<updated>2026-05-20T15:08:40Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-20T15:08:40Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=8d35930871db37b1009275c423ce95ed72954613'/>
<id>urn:sha1:8d35930871db37b1009275c423ce95ed72954613</id>
<content type='text'>
- _ensure_voice_client: call _remove_voice_client() when cleaning up stale
  or disconnected clients so the fresh connect doesn't hang for 30s
  waiting for Discord's stale state to clear
- Reduce connect timeout from 30s to 10s for faster failure recovery
- vclogs.py: use a unique temp filename per TTS call (include timestamp)
  instead of relying on PID alone, preventing concurrent TTS calls from
  clobbering each other's files
</content>
</entry>
<entry>
<title>Clean up consumers: replace polling with VoiceManager.play_source()</title>
<updated>2026-05-20T13:40:18Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-20T13:40:18Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=4663f260b55de0975661fda1c00f60d2ca6e4506'/>
<id>urn:sha1:4663f260b55de0975661fda1c00f60d2ca6e4506</id>
<content type='text'>
- cron.py: replace while-is_playing polling with VoiceManager.play_source()
- vclogs.py: replace while-is_playing polling with VoiceManager.play_source()
- stop.py: use VoiceManager.disconnect() instead of raw voice_client
- join.py: use VoiceManager.connect() instead of raw channel.connect()
- voice.py: add back join_by_channel_id() convenience method
- Tests: update for new VoiceManager method names and signatures
</content>
</entry>
<entry>
<title>health checks for vc</title>
<updated>2026-05-20T13:21:37Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-20T13:21:37Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=1f37a67c53233dc8e814d22620e1ff8a6fdb14b6'/>
<id>urn:sha1:1f37a67c53233dc8e814d22620e1ff8a6fdb14b6</id>
<content type='text'>
Signed-off-by: salmonik &lt;raisersoft@proton.me&gt;
</content>
</entry>
<entry>
<title>Refactor database connections and add integration tests</title>
<updated>2026-04-29T12:22:03Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-04-29T12:22:03Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=dba3388567818cb5c60be9d406d3e1cccc84b3ea'/>
<id>urn:sha1:dba3388567818cb5c60be9d406d3e1cccc84b3ea</id>
<content type='text'>
- Use context managers for sqlite3 connections in cron, vclogs, and database utils
- Add URL helper utility for yt-dlp with clean_url_for_ytdlp function
- Add slow integration test markers and new integration test files
- Fix test imports to use conftest directly instead of tests.conftest
- Improve downloader error handling and use COPYPARTY_URL_UPLOAD env var
- Update pytest.ini with slow test markers and warning filters
- Document slow test usage in AGENTS.md
</content>
</entry>
<entry>
<title>multitude of changes.</title>
<updated>2026-04-28T18:05:36Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-04-28T18:05:36Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=5675dfd20b24f1e0eef06b11d9ec41a894d3a5bf'/>
<id>urn:sha1:5675dfd20b24f1e0eef06b11d9ec41a894d3a5bf</id>
<content type='text'>
but primarly, use db for all data.

Signed-off-by: salmonik &lt;raisersoft@proton.me&gt;
</content>
</entry>
<entry>
<title>uploader.py and voice fixes</title>
<updated>2026-04-20T13:05:51Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-04-20T13:05:51Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=c687d9fa1d89fef8ddc7150d1487dfef07d11abb'/>
<id>urn:sha1:c687d9fa1d89fef8ddc7150d1487dfef07d11abb</id>
<content type='text'>
Signed-off-by: salmonik &lt;raisersoft@proton.me&gt;
</content>
</entry>
<entry>
<title>feat: add external URL playback support, fix vclogs audio handling</title>
<updated>2026-04-19T15:41:05Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-04-19T15:41:05Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=920d4b18e253f5642b895a1205d9826d54570db8'/>
<id>urn:sha1:920d4b18e253f5642b895a1205d9826d54570db8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor: simplify cogs, reduce complexity</title>
<updated>2026-04-19T13:43:32Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-04-19T13:43:32Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/senator-sperma/commit/?id=1dcdbe3cf03ff16b3ff2e2e6d572e0b3c72c18c0'/>
<id>urn:sha1:1dcdbe3cf03ff16b3ff2e2e6d572e0b3c72c18c0</id>
<content type='text'>
- Remove unused imports and dead code
- Cleaner error handling
- Reduce cognitive complexity
</content>
</entry>
</feed>
