Ejemplo n.º 1
0
        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).");
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }