Marius Mutu
a3eefbc799
feat(voice): Pas 4 — _discord_voice_adapter.py thin layer + contract test
Adapter layer peste vendored discord-ext-voice-recv. Re-exports:
VoiceReceiveClient, AudioSink, VoiceData, plus async helper
connect_voice(channel). Discord voice protocol e fragil, upstream e
hobby fork — dacă pică, swap la py-cord = doar acest fișier rescris.
Contract test (22 assertions) prinde drift la upgrade vendor:
- VoiceReceiveClient methods: connect/disconnect/listen/stop_listening/
is_listening/stop/cleanup
- listen(sink, *, after=None) signature
- sink property (read/write)
- AudioSink methods: write/cleanup/wants_opus + write(self, user, data) arity
- VoiceData slots (packet/source/pcm) + .opus property
Critical pentru Lane PIPE downstream: write() e called from audio thread
(NOT asyncio loop) — threading primitives mandatory pentru EchoVoiceSink.
22/22 tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 14:42:50 +00:00
..
2026-02-13 10:20:55 +00:00
2026-04-21 07:05:46 +00:00
2026-02-14 21:44:13 +00:00
2026-02-14 21:44:13 +00:00
2026-02-13 10:20:55 +00:00
2026-04-21 07:15:00 +00:00
2026-04-26 18:36:35 +00:00
2026-04-21 07:22:48 +00:00
2026-04-21 07:22:48 +00:00
2026-04-21 07:22:48 +00:00
2026-04-21 07:22:48 +00:00
2026-04-28 07:26:19 +00:00
2026-04-28 07:26:19 +00:00
2026-04-28 07:26:19 +00:00
2026-04-21 13:56:53 +00:00
2026-02-13 16:12:56 +00:00
2026-04-26 19:11:35 +00:00
2026-05-27 05:40:22 +00:00
2026-02-15 11:09:59 +00:00
2026-04-21 07:14:51 +00:00
2026-04-28 07:26:19 +00:00
2026-02-13 16:49:57 +00:00
2026-04-26 18:38:51 +00:00
2026-04-26 18:38:51 +00:00
2026-04-26 18:14:24 +00:00
2026-04-26 19:05:50 +00:00
2026-04-26 18:38:51 +00:00
2026-04-26 18:14:24 +00:00
2026-04-21 07:05:29 +00:00
2026-02-13 17:54:59 +00:00
2026-04-26 18:36:35 +00:00
2026-02-13 20:55:04 +00:00
2026-05-27 14:42:50 +00:00
2026-05-27 14:42:41 +00:00
2026-04-26 19:05:50 +00:00
2026-02-14 21:44:13 +00:00