public async Task ServerCountdown(string serverName, string TimeInSeconds, string command, string friendlyMsg = "") { GameServer server = EvaluateServerByString(serverName); if (server == null) { await Context.Channel.SendMessageAsync($"{serverName} isn't a server I know. Ask me to list-servers if you need help."); return; } int countdownSeconds = 0; if (int.TryParse(TimeInSeconds, out countdownSeconds)) { try { RCONConnector.ExecuteTimedCommand(server, command, countdownSeconds, friendlyMsg); } catch (Exception ex) { _Logger.Error("RconCommand.cs error in ServerCountdown: {0}", ex); } } else { await Context.Channel.SendMessageAsync($"I didn't understand '{TimeInSeconds}'. Remember: time in seconds (whole numbers please)."); } }
public async Task ShutdownGameServers(string gameName) { if (string.IsNullOrWhiteSpace(gameName)) { await Context.Channel.SendMessageAsync("You must tell me what game servers to close."); return; } if (Settings.ServerList.Any(x => x.GameName.Equals(gameName, StringComparison.InvariantCultureIgnoreCase)) == false) { await Context.Channel.SendMessageAsync($"I don't know what game '{gameName}' is."); return; } var servers = Settings.ServerList.Where(x => x.IsReachable && x.GameName.Equals(gameName, StringComparison.InvariantCultureIgnoreCase)); if (servers.Count() == 0) { await Context.Channel.SendMessageAsync($"Found {servers.Count()} servers for '{gameName}', are you sure they're up?"); return; } else { await Context.Channel.SendMessageAsync($"Found {servers.Count()} servers for '{gameName}', beginning shutdown procedures."); } foreach (var server in servers) { try { RCONConnector.ExecuteTimedCommand(server, "saveworld", 0, ""); } catch (Exception ex) { _Logger.Error("RconCommand.cs error in ServerCountdown: {0}", ex); } } foreach (var server in servers) { try { RCONConnector.ExecuteTimedCommand(server, "doexit", 0, ""); } catch (Exception ex) { _Logger.Error("RconCommand.cs error in ServerCountdown: {0}", ex); } } }