public (string, EmbedBuilder) GetGameMessage(GameResult game, string title = null, params GameFlag[] flags) { bool usermentions = flags.Contains(GameFlag.usermentions); bool gamestate = flags.Contains(GameFlag.gamestate); bool map = flags.Contains(GameFlag.map); bool time = flags.Contains(GameFlag.time); bool lobby = flags.Contains(GameFlag.lobby); bool pickmode = flags.Contains(GameFlag.pickmode); bool submitter = flags.Contains(GameFlag.submitter); bool remainingPlayers = false; bool winningteam = false; bool team1 = false; bool team2 = false; var message = usermentions ? string.Join(" ", game.Queue.Select(x => MentionUtils.MentionUser(x))) : ""; var embed = new EmbedBuilder { Color = Color.Blue }; embed.Title = title ?? $"Game #{game.GameId}"; var desc = ""; if (time) { desc += $"**Creation Time:** {game.CreationTime.ToString("dd MMM yyyy")} {game.CreationTime.ToShortTimeString()}\n"; } if (pickmode) { desc += $"**Pick Mode:** {game.GamePickMode}\n"; } if (lobby) { desc += $"**Lobby:** {MentionUtils.MentionChannel(game.LobbyId)}\n"; } if (map && game.MapName != null) { desc += $"**Map:** {game.MapName}\n"; } if (gamestate) { team1 = true; team2 = true; switch (game.GameState) { case GameResult.State.Canceled: desc += "**State:** Cancelled\n"; embed.Color = Color.DarkOrange; break; case GameResult.State.Draw: desc += "**State:** Draw\n"; embed.Color = Color.Gold; break; case GameResult.State.Picking: remainingPlayers = true; embed.Color = Color.Magenta; break; case GameResult.State.Decided: winningteam = true; embed.Color = Color.Green; break; case GameResult.State.Undecided: break; } } if (winningteam) { var teamInfo = game.GetWinningTeam(); embed.AddField($"Winning Team, Team #{teamInfo.Item1}", teamInfo.Item2.GetTeamInfo()); if (teamInfo.Item1 == 1) { team1 = false; } else if (teamInfo.Item1 == 2) { team2 = false; } } if (team1) { embed.AddField("Team 1", game.Team1.GetTeamInfo()); } if (team2) { embed.AddField("Team 2", game.Team2.GetTeamInfo()); } if (remainingPlayers) { var remaining = game.GetQueueRemainingPlayers(); if (remaining.Any()) { embed.AddField("Remaining Players", string.Join(" ", game.GetQueueRemainingPlayers().Select(MentionUtils.MentionUser))); } } embed.Description = desc; return(message, embed); }