Пример #1
0
 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));
     }
 }
Пример #2
0
 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;
Пример #3
0
        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));
            }
        }