public async Task Stats([Remainder] string arg = "") { SocketUser target = null; var mentionUser = Context.Message.MentionedUsers.FirstOrDefault(); target = mentionUser ?? Context.User; var account = UserAccounts.GetAccount(target); var serverAccount = ServerAccounts.GetAccount(Context.Guild); if (string.IsNullOrEmpty(account.GameUsername)) { var errorEmbed = new EmbedBuilder(); errorEmbed.WithTitle("Ouch! An error occurred."); errorEmbed.WithDescription($"User not registered."); errorEmbed.WithColor(255, 0, 0); await Context.Channel.SendMessageAsync("", false, errorEmbed.Build()); return; } var jsonAsString = await ApiProcessor.GetUser($"https://api.tracker.gg/api/v2/modern-warfare/standard/profile/{account.Platform}/{account.GameUsername}"); var apiData = JsonConvert.DeserializeObject <ModerWarfareApiOutput>(jsonAsString); var name = apiData.Data.PlatformInfo.PlatformUserHandle; var pfp = apiData.Data.PlatformInfo.AvatarUrl; var playTime = apiData.Data.Segment[0].Stats.TimePlayedTotal.DisplayValue; var matches = apiData.Data.Segment[0].Stats.TotalGamesPlayed.DisplayValue; var levelImg = apiData.Data.Segment[0].Stats.Level.Metadata.IconUrl; var level = apiData.Data.Segment[0].Stats.Level.DisplayValue; var levelper = apiData.Data.Segment[0].Stats.LevelProgression.DisplayValue; var kd = apiData.Data.Segment[0].Stats.KdRatio.DisplayValue; var kills = apiData.Data.Segment[0].Stats.Kills.DisplayValue; var WinPer = apiData.Data.Segment[0].Stats.WlRatio.DisplayValue; var wins = apiData.Data.Segment[0].Stats.Wins.DisplayValue; var bestKillsreak = apiData.Data.Segment[0].Stats.LongestKillstreak.DisplayValue; var losses = apiData.Data.Segment[0].Stats.Losses.DisplayValue; var deaths = apiData.Data.Segment[0].Stats.Deaths.DisplayValue; var avgLife = apiData.Data.Segment[0].Stats.AverageLife.DisplayValue; var assists = apiData.Data.Segment[0].Stats.Assists.DisplayValue; var score = apiData.Data.Segment[0].Stats.CareerScore.DisplayValue; var accuracy = apiData.Data.Segment[0].Stats.Accuracy.DisplayValue; var headshotaccuracy = apiData.Data.Segment[0].Stats.HeadshotPercentage.DisplayValue; var converter = new HtmlConverter(); var generationStrings = new StatsGenerationFiles(); string css = generationStrings.MultiplayerCss(levelper); string html = String.Format(generationStrings.MultiplayerHtml(name, pfp, playTime, matches, levelImg.ToString(), level, levelper, kd, kills, WinPer, wins, bestKillsreak, losses, deaths, avgLife, assists, score, accuracy, headshotaccuracy)); int width = 520; var bytes = converter.FromHtmlString(css + html, width, CoreHtmlToImage.ImageFormat.Png); File.WriteAllBytes("Resources/Stats.png", bytes); await Context.Channel.SendFileAsync(new MemoryStream(bytes), "Resources/Stats.png"); }
public async Task StatsBN([Remainder] string userName) { if (userName.Contains("#")) { userName = userName.Replace("#", "%23"); } else { var errorEmbed = new EmbedBuilder(); errorEmbed.WithTitle("Ouch! An error occurred."); errorEmbed.WithDescription("Invalid BattleNet username."); errorEmbed.WithColor(255, 0, 0); await Context.Channel.SendMessageAsync("", false, errorEmbed.Build()); return; } var jsonAsString = await ApiProcessor.GetUser($"https://api.tracker.gg/api/v2/modern-warfare/standard/profile/battlenet/{userName}"); var apiData = JsonConvert.DeserializeObject <ModerWarfareApiOutput>(jsonAsString); var name = apiData.Data.PlatformInfo.PlatformUserHandle; var pfp = apiData.Data.PlatformInfo.AvatarUrl; var playTime = apiData.Data.Segment[0].Stats.TimePlayedTotal.DisplayValue; var matches = apiData.Data.Segment[0].Stats.TotalGamesPlayed.DisplayValue; var levelImg = apiData.Data.Segment[0].Stats.Level.Metadata.IconUrl; var level = apiData.Data.Segment[0].Stats.Level.DisplayValue; var levelper = apiData.Data.Segment[0].Stats.LevelProgression.DisplayValue; var kd = apiData.Data.Segment[0].Stats.KdRatio.DisplayValue; var kills = apiData.Data.Segment[0].Stats.Kills.DisplayValue; var WinPer = apiData.Data.Segment[0].Stats.WlRatio.DisplayValue; var wins = apiData.Data.Segment[0].Stats.Wins.DisplayValue; var bestKillsreak = apiData.Data.Segment[0].Stats.LongestKillstreak.DisplayValue; var losses = apiData.Data.Segment[0].Stats.Losses.DisplayValue; var deaths = apiData.Data.Segment[0].Stats.Deaths.DisplayValue; var avgLife = apiData.Data.Segment[0].Stats.AverageLife.DisplayValue; var assists = apiData.Data.Segment[0].Stats.Assists.DisplayValue; var score = apiData.Data.Segment[0].Stats.CareerScore.DisplayValue; var accuracy = apiData.Data.Segment[0].Stats.Accuracy.DisplayValue; var headshotaccuracy = apiData.Data.Segment[0].Stats.HeadshotPercentage.DisplayValue; var converter = new HtmlConverter(); var generationStrings = new StatsGenerationFiles(); string css = generationStrings.MultiplayerCss(levelper); string html = String.Format(generationStrings.MultiplayerHtml(name, pfp, playTime, matches, levelImg.ToString(), level, levelper, kd, kills, WinPer, wins, bestKillsreak, losses, deaths, avgLife, assists, score, accuracy, headshotaccuracy)); int width = 520; var bytes = converter.FromHtmlString(css + html, width, ImageFormat.Png); File.WriteAllBytes("Resources/BNStats.png", bytes); await Context.Channel.SendFileAsync(new MemoryStream(bytes), "Resources/BNStats.png"); }
public async Task StatsPSN([Remainder] string userName) { var jsonAsString = await ApiProcessor.GetUser($"https://api.tracker.gg/api/v2/modern-warfare/standard/profile/psn/{userName}"); var apiData = JsonConvert.DeserializeObject <ModerWarfareApiOutput>(jsonAsString); var name = apiData.Data.PlatformInfo.PlatformUserHandle; var pfp = apiData.Data.PlatformInfo.AvatarUrl; var playTime = apiData.Data.Segment[0].Stats.TimePlayedTotal.DisplayValue; var matches = apiData.Data.Segment[0].Stats.TotalGamesPlayed.DisplayValue; var levelImg = apiData.Data.Segment[0].Stats.Level.Metadata.IconUrl; var level = apiData.Data.Segment[0].Stats.Level.DisplayValue; var levelper = apiData.Data.Segment[0].Stats.LevelProgression.DisplayValue; var kd = apiData.Data.Segment[0].Stats.KdRatio.DisplayValue; var kills = apiData.Data.Segment[0].Stats.Kills.DisplayValue; var WinPer = apiData.Data.Segment[0].Stats.WlRatio.DisplayValue; var wins = apiData.Data.Segment[0].Stats.Wins.DisplayValue; var bestKillsreak = apiData.Data.Segment[0].Stats.LongestKillstreak.DisplayValue; var losses = apiData.Data.Segment[0].Stats.Losses.DisplayValue; var deaths = apiData.Data.Segment[0].Stats.Deaths.DisplayValue; var avgLife = apiData.Data.Segment[0].Stats.AverageLife.DisplayValue; var assists = apiData.Data.Segment[0].Stats.Assists.DisplayValue; var score = apiData.Data.Segment[0].Stats.CareerScore.DisplayValue; var accuracy = apiData.Data.Segment[0].Stats.Accuracy.DisplayValue; var headshotaccuracy = apiData.Data.Segment[0].Stats.HeadshotPercentage.DisplayValue; var converter = new HtmlConverter(); var generationStrings = new StatsGenerationFiles(); string css = generationStrings.MultiplayerCss(levelper); string html = String.Format(generationStrings.MultiplayerHtml(name, pfp, playTime, matches, levelImg.ToString(), level, levelper, kd, kills, WinPer, wins, bestKillsreak, losses, deaths, avgLife, assists, score, accuracy, headshotaccuracy)); int width = 520; var bytes = converter.FromHtmlString(css + html, width, CoreHtmlToImage.ImageFormat.Png); File.WriteAllBytes("Resources/PSNStats.png", bytes); await Context.Channel.SendFileAsync(new MemoryStream(bytes), "Resources/PSNStats.png"); }