private static async Task _PostGroupToDiscord(IEnumerable <IGrouping <string, PlayerHistory> > grouped, FleetData fleetData, string url, string header) { StringBuilder message = new StringBuilder(); message.AppendLine(header); foreach (var group in grouped) { var squad = fleetData.Squads.FirstOrDefault(s => s.Id == group.Key); var squadName = Regex.Replace(squad?.Name ?? "Ohne Squad", @"\<\#[^<>]*\>", string.Empty); message.AppendLine($"__{squadName}__ --- **{squad?.LastEventRank.Rank ?? 0}** --- (Avg {squad?.EventRanks.Select(e => e.Value.Rank).Average() ?? 0} of {squad?.EventRanks.Count ?? 0})"); foreach (var member in group) { var player = fleetData.Players.FirstOrDefault(p => p.Id == member.Id); int avg = (int)Math.Floor(player?.EventRanks.Select(e => e.Value.Rank).Average() ?? 0); message.AppendLine($"{member.Name}: **{player?.LastEventRank.Rank ?? 0}** --- (Avg {avg} of {player?.EventRanks.Count ?? 0})"); } message.AppendLine(string.Empty); } HttpClient client = new HttpClient(); var d1 = JsonConvert.SerializeObject(new { content = message.ToString() }); var result = await client.PostAsync(url, new StringContent(d1, Encoding.UTF8, "application/json")); result.EnsureSuccessStatusCode(); }
private static async Task _SendToDiscord(ILogger log, List <PlayerHistory> players, FleetData fleetData, string url) { string header = $"Events (UTC) {DateTime.UtcNow.ToString("dd.MM.yyyy HH:mm")}"; var grouped = players.GroupBy(d => d.SquadId); var g1 = grouped.Take(5); var g2 = grouped.Skip(5); await _PostGroupToDiscord(g1, fleetData, url, $"{header}"); await _PostGroupToDiscord(g2, fleetData, url, $" -"); }