From 039f060b5069c3ca3d9cd6d94d28183dddfb6651 Mon Sep 17 00:00:00 2001 From: user Date: Sun, 22 Feb 2026 03:07:55 +0100 Subject: [PATCH] feat: add sound listener hook to MumbleBot Allow plugins to register callbacks for incoming voice PCM via bot._sound_listeners. Empty list by default = zero overhead. --- src/derp/mumble.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/derp/mumble.py b/src/derp/mumble.py index e9be033..baff91f 100644 --- a/src/derp/mumble.py +++ b/src/derp/mumble.py @@ -158,6 +158,7 @@ class MumbleBot: self._loop: asyncio.AbstractEventLoop | None = None self._last_voice_ts: float = 0.0 self._connect_count: int = 0 + self._sound_listeners: list = [] rate_cfg = config.get("bot", {}) self._bucket = _TokenBucket( @@ -235,6 +236,11 @@ class MumbleBot: if prev == 0.0: name = user["name"] if isinstance(user, dict) else "?" log.info("mumble: first voice packet from %s", name) + for fn in self._sound_listeners: + try: + fn(user, sound_chunk) + except Exception: + log.exception("mumble: sound listener error") def _on_text_message(self, message) -> None: """Callback from pymumble thread: text message received.