public override async void OnTick() { try { if (TeamSpeak3Telnet.TS3_CLIENT == null || !TeamSpeak3Telnet.TS3_CLIENT.IsConnected) { TeamSpeak3Telnet.SetupTelnetClient(_settings.ApiKey); if (TeamSpeak3Telnet.TS3_CLIENT == null) { return; } } var clientId = TeamSpeak3Telnet.GetClientId(); if (clientId == -1) { TeamSpeak3Telnet.TS3_CLIENT?.Dispose(); TeamSpeak3Telnet.TS3_CLIENT = null; return; } var inputMuteStatus = TeamSpeak3Telnet.GetInputMuteStatus(clientId); if (inputMuteStatus == _savedSatus) { await SetInputStatusState(inputMuteStatus); return; } switch (inputMuteStatus) { case -1: return; case 0: await SetInputStatusState(); break; case 1: await SetInputStatusState(1); break; } _savedSatus = inputMuteStatus; } catch (Exception) { TeamSpeak3Telnet.TS3_CLIENT?.Dispose(); TeamSpeak3Telnet.TS3_CLIENT = null; await SetInputStatusState(); } }
private async Task ToggleMicMute(int desiredState = -1) { try { var clientId = TeamSpeak3Telnet.GetClientId(); if (clientId == -1) { TeamSpeak3Telnet.TS3_CLIENT?.Dispose(); TeamSpeak3Telnet.TS3_CLIENT = null; return; } int outputMuteStatus; if (desiredState == -1) { outputMuteStatus = TeamSpeak3Telnet.GetInputMuteStatus(clientId); } else { outputMuteStatus = desiredState == 1 ? 0 : 1; } var setOutputMuteStatus = false; switch (outputMuteStatus) { case -1: return; case 0: setOutputMuteStatus = TeamSpeak3Telnet.SetInputMuteStatus(1); break; case 1: setOutputMuteStatus = TeamSpeak3Telnet.SetInputMuteStatus(0); break; } if (!setOutputMuteStatus) { return; } } catch (Exception) { TeamSpeak3Telnet.TS3_CLIENT?.Dispose(); TeamSpeak3Telnet.TS3_CLIENT = null; await SetInputStatusState(); } }