private async Task ToggleAwayStatus(int desiredState = -1) { try { var clientId = TeamSpeak3Telnet.GetClientId(); if (clientId == -1) { TeamSpeak3Telnet.TS3_CLIENT?.Dispose(); TeamSpeak3Telnet.TS3_CLIENT = null; return; } int awayStatus; if (desiredState == -1) { awayStatus = TeamSpeak3Telnet.GetAwayStatus(clientId); } else { awayStatus = desiredState == 1 ? 0 : 1; } var setAwayStatus = false; switch (awayStatus) { case -1: return; case 0: TeamSpeak3Telnet.SetInputMuteStatus(1); TeamSpeak3Telnet.SetOutputMuteStatus(1); setAwayStatus = TeamSpeak3Telnet.SetAwayStatus(1); if (_settings.AwayStatusMessage.Length > 0) { TeamSpeak3Telnet.SetAwayMessage(_settings.AwayStatusMessage); } break; case 1: TeamSpeak3Telnet.SetInputMuteStatus(0); TeamSpeak3Telnet.SetOutputMuteStatus(0); setAwayStatus = TeamSpeak3Telnet.SetAwayStatus(0); break; } if (!setAwayStatus) { return; } } catch (Exception) { TeamSpeak3Telnet.TS3_CLIENT?.Dispose(); TeamSpeak3Telnet.TS3_CLIENT = null; await SetAwayStatusState(); } }
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 awayStatus = TeamSpeak3Telnet.GetAwayStatus(clientId); if (awayStatus == _savedSatus) { await SetAwayStatusState(awayStatus); return; } switch (awayStatus) { case -1: return; case 0: await SetAwayStatusState(); break; case 1: await SetAwayStatusState(1); break; } _savedSatus = awayStatus; } catch (Exception) { TeamSpeak3Telnet.TS3_CLIENT?.Dispose(); TeamSpeak3Telnet.TS3_CLIENT = null; await SetAwayStatusState(); } }