diff --git a/src/tuimble/client.py b/src/tuimble/client.py index 7da8b43..144a4ca 100644 --- a/src/tuimble/client.py +++ b/src/tuimble/client.py @@ -280,6 +280,19 @@ class MumbleClient: else: self._mumble.users.myself.undeafen() + def set_self_mute(self, mute: bool) -> None: + """Toggle self-mute on the server.""" + if self._mumble and self._connected: + if mute: + self._mumble.users.myself.mute() + else: + self._mumble.users.myself.unmute() + + def register_self(self) -> None: + """Register the current user on the server.""" + if self._mumble and self._connected: + self._mumble.users.myself.register() + # -- pymumble callbacks (run on pymumble thread) ------------------------- def _register_callbacks(self) -> None: diff --git a/tests/test_client.py b/tests/test_client.py index 6bc597c..98d1b92 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -120,3 +120,47 @@ def test_disconnect_clears_connected(): client._mumble = MagicMock() client.disconnect() assert client.connected is False + + +def test_set_self_mute_calls_pymumble(): + client = MumbleClient(host="localhost") + client._connected = True + myself = MagicMock() + users = MagicMock() + users.myself = myself + mumble = MagicMock() + mumble.users = users + client._mumble = mumble + + client.set_self_mute(True) + myself.mute.assert_called_once() + myself.unmute.assert_not_called() + + myself.reset_mock() + client.set_self_mute(False) + myself.unmute.assert_called_once() + myself.mute.assert_not_called() + + +def test_set_self_mute_noop_when_disconnected(): + client = MumbleClient(host="localhost") + client.set_self_mute(True) + + +def test_register_self_calls_pymumble(): + client = MumbleClient(host="localhost") + client._connected = True + myself = MagicMock() + users = MagicMock() + users.myself = myself + mumble = MagicMock() + mumble.users = users + client._mumble = mumble + + client.register_self() + myself.register.assert_called_once() + + +def test_register_self_noop_when_disconnected(): + client = MumbleClient(host="localhost") + client.register_self()