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.