public static Embed GetMapInfoEmbed(DetailedMapOverviewModel map) { try { var builder = new EmbedBuilder(); builder.WithTitle(map.Name); var tierText = $"Solly : T{map.TierInfo.Soldier}"; if (!string.IsNullOrWhiteSpace(map.Videos.Soldier)) { tierText += $" [Showcase]({TempusHelper.GetYoutubeUrl(map.Videos.Soldier)})"; } tierText += $" | Demo : T{map.TierInfo.Demoman} "; if (!string.IsNullOrWhiteSpace(map.Videos.Demoman)) { tierText += $"[Showcase]({TempusHelper.GetYoutubeUrl(map.Videos.Demoman)})"; } builder.WithDescription(tierText + Environment.NewLine + DiscordHelper.FormatUrlMarkdown("Tempus.xyz", TempusHelper.GetMapUrl(map.Name))); return(builder.Build()); } catch (Exception e) { return(Logger.LogException(e)); } }
public async Task TickTimeAsync(int tick1, int tick2 = -1) { if (tick2 == -1) { await ReplyNewEmbedAsync(TempusHelper.TicksToFormattedTime(tick1)); } else { var ticks = tick1 > tick2 ? tick1 - tick2 : tick2 - tick1; await ReplyNewEmbedAsync(TempusHelper.TicksToFormattedTime(ticks)); } }
public async Task <Embed> GetRecentRecordEmbedAsync() { try { var recentRecords = await _justJumpDataAccess.GetRecentRecordsAsync(10); var recentRecordsString = recentRecords.Aggregate("", (currentString, nextHighscore) => currentString + $"{SimplyHelper.ClassToShortString(nextHighscore.Class)} | **__{TempusHelper.TimeSpanToFormattedTime(SimplyHelper.GetTimeSpan(nextHighscore.RunTime))}__** | **{nextHighscore.Map}** | **{nextHighscore.Name}**" + Environment.NewLine); var builder = new EmbedBuilder { Title = "**Recent Map Records**" }; builder.WithDescription(recentRecordsString) .WithColor(ColorConstants.InfoColor) .WithFooter("Updated " + DateTime.Now.ToShortTimeString()); return(builder.Build()); } catch (Exception e) { return(Logger.LogException(e)); } }
public override string ToString() => $"{SimplyHelper.ClassToShortString(Class)} | {Name} | {TempusHelper.TimeSpanToFormattedTime(SimplyHelper.GetTimeSpan(RunTime))}";
public static string FormatRecordSuffix(MapInfo mapInfo, RecordInfoShort recordInfo, PlayerInfo playerInfo) => $" | {DiscordHelper.FormatUrlMarkdown(mapInfo.Name.EscapeDiscordChars(), TempusHelper.GetMapUrl(mapInfo.Name))} | {DiscordHelper.FormatUrlMarkdown($"**{FormattedDuration(recordInfo.Duration).EscapeDiscordChars()}**", TempusHelper.GetRecordUrl(recordInfo.Id))} | {DiscordHelper.FormatUrlMarkdown(playerInfo.Name.EscapeDiscordChars(), TempusHelper.GetPlayerUrl(playerInfo.Id))}" + Environment.NewLine;
private static string FormatBonusRecords(IEnumerable <BonusWr> records) => records.Aggregate("", (currentString, nextItem) => currentString + $"{TempusHelper.GetClassEmote(nextItem.RecordInfo.Class)} B{nextItem.ZoneInfo.Zoneindex}" + FormatRecordSuffix(nextItem.MapInfo, nextItem.RecordInfo, nextItem.PlayerInfo));
private static string FormatTopTimes(IEnumerable <MapTop> records) => records.Aggregate("", (currentString, nextItem) => currentString + $"{TempusHelper.GetClassEmote(nextItem.RecordInfo.Class)} #{nextItem.Rank}" + FormatRecordSuffix(nextItem.MapInfo, nextItem.RecordInfo, nextItem.PlayerInfo));
public static async Task <Embed> UpdateStalkTopEmbedAsync(TempusDataAccess tempusDataAccess) { try { var servers = (await tempusDataAccess.GetServerStatusAsync()).Where(x => x != null).ToArray(); var users = servers.Where(x => x.GameInfo != null && (x.GameInfo != null || x.ServerInfo != null || x.GameInfo.Users != null) && x.GameInfo.Users.Count != 0) .SelectMany(x => x.GameInfo.Users).Where(x => x?.Id != null).ToArray(); var userIdStrings = (from user in users where user?.Id != null select user.Id.ToString()).ToList(); var rankTasks = new List <Task <Rank> >(); rankTasks.AddRange(userIdStrings.Select(tempusDataAccess.GetUserRankAsync)); var ranks = await Task.WhenAll(rankTasks); var rankedUsers = ranks.ToDictionary(rank => users.First(x => x.Id == rank.PlayerInfo.Id), rank => rank.ClassRankInfo.DemoRank.Rank <= rank.ClassRankInfo.SoldierRank.Rank ? rank.ClassRankInfo.DemoRank.Rank : rank.ClassRankInfo.SoldierRank.Rank); var output = rankedUsers.OrderBy(x => x.Value).Take(7); var rankedLines = ""; foreach (var(key, value) in output) { if (key == null || value > 100) { continue; } var server = servers .FirstOrDefault(x => x.GameInfo?.Users != null && x.GameInfo.Users.Count(z => z.Id.HasValue && z.Id == key.Id) != 0); if (server == null || key.Id == null) { continue; } rankedLines += $"Rank {value} - {DiscordHelper.FormatUrlMarkdown(key.Name.EscapeDiscordChars(), TempusHelper.GetPlayerUrl(key.Id.Value))} on {DiscordHelper.FormatUrlMarkdown(server.GameInfo.CurrentMap.EscapeDiscordChars(), TempusHelper.GetMapUrl(server.GameInfo.CurrentMap))} {DiscordHelper.FormatUrlMarkdown(server.ServerInfo.Shortname, TempusHelper.GetServerUrl(server.ServerInfo.Id))}{Environment.NewLine}"; } var builder = new EmbedBuilder { Title = "**Highest Ranked Players Online** (Top 100)", Description = rankedLines } .WithCurrentTimestamp().WithColor(ColorConstants.InfoColor); CachedStalkTopEmbed = builder.Build(); return(builder.Build()); } catch (Exception e) { return(Logger.LogException(e)); } }