public async Task UpdateAsync(ServerStatusResult newStatus) { StatusResult = newStatus; var embed = StatusResult.Error ? BuildErrorEmbed() : BuildStatusEmbed(); await Message.ModifyAsync(x => { x.Content = ""; x.Embed = embed; }); }
public ServerInstance(BuildModel build, IServerUpdater updater, IByondWrapper byond, IOptions <Config> config, ILogger <ServerInstance> logger) { string serverAddress = config.Value.Hub.Address; Build = build; Status = new ServerStatusResult() { IsRunning = false, IsUpdating = false, Address = serverAddress, Id = build.Id }; State = new StoppedServerState(this); _byond = byond; _logger = logger; _playersUpdatedTimestamp = DateTime.Now; _updater = updater; }
private void OnServerCommand(BotShell bot, CommandArgs e) { bot.SendReply(e, "Server Status »» Gathering Data..."); ServerStatusResult server = XML.GetServerStatus(); if (server == null || server.Dimensions == null) { bot.SendReply(e, "Unable to gather server information " + this.TimeoutError); return; } ServerStatusResult_Dimension dimension = server.GetDimension(bot.Dimension); RichTextWindow window = new RichTextWindow(bot); window.AppendTitle("Server Information"); window.AppendHighlight("Server Manager: "); if (dimension.ServerManager.Online) { window.AppendColorString(RichTextWindow.ColorGreen, "Online"); } else { window.AppendColorString(RichTextWindow.ColorRed, "Offline"); } window.AppendLineBreak(); window.AppendHighlight("Client Manager: "); if (dimension.ClientManager.Online) { window.AppendColorString(RichTextWindow.ColorGreen, "Online"); } else { window.AppendColorString(RichTextWindow.ColorRed, "Offline"); } window.AppendLineBreak(); window.AppendHighlight("Chat Server: "); if (dimension.ChatServer.Online) { window.AppendColorString(RichTextWindow.ColorGreen, "Online"); } else { window.AppendColorString(RichTextWindow.ColorRed, "Offline"); } window.AppendLineBreak(2); window.AppendHeader("Alignment"); window.AppendHighlight("Clan: "); window.AppendNormal(dimension.Distribution.Clan.Percent + "%"); window.AppendLineBreak(); window.AppendHighlight("Neutral: "); window.AppendNormal(dimension.Distribution.Neutral.Percent + "%"); window.AppendLineBreak(); window.AppendHighlight("Omni: "); window.AppendNormal(dimension.Distribution.Omni.Percent + "%"); window.AppendLineBreak(2); foreach (ServerStatusResult_Playfield pf in dimension.Playfields) { bool skip = false; foreach (string arg in e.Args) { if (!pf.Name.ToLower().Contains(arg.ToLower())) { skip = true; } } if (skip) { continue; } switch (pf.Status) { case PlayfieldStatus.Online: window.AppendImage("GFX_GUI_FRIENDLIST_STATUS_GREEN"); break; default: window.AppendImage("GFX_GUI_FRIENDLIST_STATUS_RED"); break; } window.AppendNormalStart(); window.AppendString(" "); window.AppendColorStart(RichTextWindow.ColorGreen); double players = 0; while (players <= pf.Players && players <= 8 && pf.Players != 0) { players += 0.5; window.AppendString("l"); } window.AppendColorEnd(); while (players <= 8) { players += 0.5; window.AppendString("l"); } window.AppendString(" "); window.AppendColorEnd(); window.AppendHighlight(pf.Name); window.AppendNormal(string.Format(" (ID: {0} Players: {1}%)", pf.ID, pf.Players)); window.AppendLineBreak(); } bot.SendReply(e, "Server Status »» ", window); }