public RolesInlineCommand(InlineQuery q) { User u = q.From; Command = "roles"; try { using (var db = new WWContext()) { Content = ""; //find the player Player p; if (String.IsNullOrWhiteSpace(q.Query)) { p = db.Players.FirstOrDefault(x => x.TelegramId == u.Id); if (p == null) { //remove the command Command = ""; return; } } else { p = db.Players.FirstOrDefault(x => x.UserName.Equals(q.Query.Substring(1).Trim(), StringComparison.CurrentCultureIgnoreCase)); if (p == null) { Description = $"Erro encontrando jogador com username {q.Query} para mostrar seus {Command}"; Content = $"Erro encontrando jogador com username {q.Query} para mostrar seus {Command}"; return; } Command += $" ({p.Name})"; } Description = $"Obtem os papéis que {p.Name} mais jogou"; var totalRoles = db.PlayerRoles(p.TelegramId).Sum(x => x.times); var roleInfo = db.PlayerRoles(p.TelegramId).ToList().OrderByDescending(x => x.times).Take(5); Content += $"\nPapéis que <a href=\"https://telegram.me/{p.UserName}\">{p.Name.FormatHTML()}</a> mais jogou:\n"; foreach (var a in roleInfo) { var role = Commands.GetLocaleString(a.role, p.Language); Content += $"<code>{a.times.ToString().PadLeft(3)} ({(((double)a.times/(double)totalRoles)*100.0).ToString("#0.0").PadLeft(4)}%)</code> {role.ToBold()}\n"; } } } catch (Exception e) { Content = "Unable to load roles: " + e.Message; } }
public JsonResult PlayerStats(int pid) { using (var DB = new WWContext()) { var p = DB.Players.FirstOrDefault(x => x.TelegramId == pid); if (p == null) { return(Json("", JsonRequestBehavior.AllowGet)); } var gamesPlayed = p.GamePlayers.Count(); var won = p.GamePlayers.Count(x => x.Won); var lost = gamesPlayed - won; var survived = p.GamePlayers.Count(x => x.Survived); var roleInfo = DB.PlayerRoles(pid).ToList(); var killed = DB.PlayerMostKilled(pid).FirstOrDefault(); var killedby = DB.PlayerMostKilledBy(pid).FirstOrDefault(); var killedlink = killed != null ? $"<a href='../Player/{killed.TelegramId}'>{killed.Name}</a>" : "No kills?"; var killedbylink = killedby != null ? $"<a href='../Player/{killedby.TelegramId}'>{killedby.Name}</a>" : "Not killed?"; var reply = "<table class=\"table table-hover\"><tbody>" + $"<tr><td>Games played total</td><td><b>{gamesPlayed}</b></td></tr>" + $"<tr><td>Games won</td><td><b>{won}</td><td>{(won * 100 / gamesPlayed)}%</b></td></tr>" + $"<tr><td>Games lost</td><td><b>{lost}</td><td>{(lost * 100 / gamesPlayed)}%</b></td></tr>" + $"<tr><td>Games survived</td><td><b>{survived}</td><td>{(survived * 100 / gamesPlayed)}%</b></td></tr>" + $"<tr><td>Most common role</td><td><b>{roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "WHAT? YOU HAVEN'T PLAYED?"}</td><td>{roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.times ?? 0} times</b></td></tr>" + $"<tr><td>Most killed</td><td><b>{killedlink}</td><td>{killed.times} times</b></td></tr>" + $"<tr><td>Most killed by</td><td><b>{killedbylink}</td><td>{killedby.times} times</b></td></tr>" + "</tbody></table>"; return(Json(reply, JsonRequestBehavior.AllowGet)); } }
public JsonResult PlayerStats(int pid, bool json = false) { using (var DB = new WWContext()) { var p = DB.Players.FirstOrDefault(x => x.TelegramId == pid); if (p == null || p.GamePlayers.Count == 0) { return(Json("", JsonRequestBehavior.AllowGet)); } var gamesPlayed = p.GamePlayers.Count(); var won = p.GamePlayers.Count(x => x.Won); var lost = gamesPlayed - won; var survived = p.GamePlayers.Count(x => x.Survived); var roleInfo = DB.PlayerRoles(pid).ToList(); var killed = DB.PlayerMostKilled(pid).FirstOrDefault(); var killedby = DB.PlayerMostKilledBy(pid).FirstOrDefault(); var killedlink = killed != null ? $"<a href='../Player/{killed.TelegramId}'>{killed.Name}</a>" : "No kills?"; var killedbylink = killedby != null ? $"<a href='../Player/{killedby.TelegramId}'>{killedby.Name}</a>" : "Not killed?"; if (!json) { var reply = "<table class=\"table table-hover\"><tbody>" + $"<tr><td>Games played total</td><td><b>{gamesPlayed}</b></td></tr>" + $"<tr><td>Games won</td><td><b>{won}</td><td>{(won * 100 / gamesPlayed)}%</b></td></tr>" + $"<tr><td>Games lost</td><td><b>{lost}</td><td>{(lost * 100 / gamesPlayed)}%</b></td></tr>" + $"<tr><td>Games survived</td><td><b>{survived}</td><td>{(survived * 100 / gamesPlayed)}%</b></td></tr>" + $"<tr><td>Most common role</td><td><b>{roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "WHAT? YOU HAVEN'T PLAYED?"}</td><td>{roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.times ?? 0} times</b></td></tr>" + $"<tr><td>Most killed</td><td><b>{killedlink}</td><td>{killed.times} times</b></td></tr>" + $"<tr><td>Most killed by</td><td><b>{killedbylink}</td><td>{killedby.times} times</b></td></tr>" + "</tbody></table>"; return(Json(reply, JsonRequestBehavior.AllowGet)); } else { var reply = new { gamesPlayed = gamesPlayed, won = new { total = won, percent = won * 100 / gamesPlayed }, lost = new { total = lost, percent = lost * 100 / gamesPlayed }, survived = new { total = survived, percent = survived * 100 / gamesPlayed }, mostCommonRole = roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "WHAT? YOU HAVEN'T PLAYED?", mostKilled = killed != null ? new { name = killed.Name, id = killed.TelegramId, link = killedlink, times = killed.times } : null, mostKilledBy = killedby != null ? new { name = killedby.Name, id = killedby.TelegramId, link = killedbylink, times = killedby.times } : null, //achievements = p.Achievements // achievements aren't stored this way anymore anyway }; return(Json(reply, JsonRequestBehavior.AllowGet)); } } }
public StatsInlineCommand(User u) { Description = "Get personal stats"; Command = "stats"; try { using (var db = new WWContext()) { Content = ""; //find the player var p = db.Players.FirstOrDefault(x => x.TelegramId == u.Id); if (p == null) { //remove the command Command = ""; return; } var gamesPlayed = p.GamePlayers.Count(); var won = p.GamePlayers.Count(x => x.Won); var lost = gamesPlayed - won; var survived = p.GamePlayers.Count(x => x.Survived); var roleInfo = db.PlayerRoles(u.Id).ToList(); var killed = db.PlayerMostKilled(u.Id).FirstOrDefault(); var killedby = db.PlayerMostKilledBy(u.Id).FirstOrDefault(); var ach = (Achievements)(p.Achievements ?? 0); var count = ach.GetUniqueFlags().Count(); Content = String.IsNullOrWhiteSpace(u.Username) ? $"{u.FirstName.FormatHTML()} the {roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "Noob"}" : $"<a href=\"https://telegram.me/{u.Username}\">{u.FirstName.FormatHTML()} the {roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "Noob"}</a>"; Content += $"\n{count.Pad()}Achievements Unlocked!\n" + $"{won.Pad()}Games won ({won*100/gamesPlayed}%)\n" + $"{lost.Pad()}Games lost ({lost*100/gamesPlayed}%)\n" + $"{survived.Pad()}Games survived ({survived*100/gamesPlayed}%)\n" + $"{gamesPlayed.Pad()}Total Games\n" + $"<code>{killed?.times}</code>\ttimes I've gleefully killed {killed?.Name.FormatHTML()}\n" + $"<code>{killedby?.times}</code>\ttimes I've been slaughted by {killedby?.Name.FormatHTML()}"; } } catch (Exception e) { Content = "Unable to load stats: " + e.Message; } }
public StatsInlineCommand(InlineQuery q) { User u = q.From; Description = "Obtem estatísticas pessoais\n(Dica: Experimente digitar um @username para consultar seus stats!)"; Command = "stats"; try { using (var db = new WWContext()) { Content = ""; //find the player Player p; if (String.IsNullOrWhiteSpace(q.Query)) { p = db.Players.FirstOrDefault(x => x.TelegramId == u.Id); if (p == null) { //remove the command Command = ""; return; } } else { p = db.Players.FirstOrDefault(x => x.UserName.Equals(q.Query.Substring(1).Trim(), StringComparison.CurrentCultureIgnoreCase)); if (p == null) { Description = $"Erro encontrando jogador com username {q.Query} para mostrar seus {Command}"; Content = $"Erro encontrando jogador com username {q.Query} para mostrar seus {Command}"; return; } Description = $"Obtem estatísticas do jogador {p.Name}"; Command += $" ({p.Name})"; } var gamesPlayed = p.GamePlayers.Count(); var won = p.GamePlayers.Count(x => x.Won); var lost = gamesPlayed - won; var survived = p.GamePlayers.Count(x => x.Survived); var roleInfo = db.PlayerRoles(p.TelegramId).ToList(); var killed = db.PlayerMostKilled(p.TelegramId).FirstOrDefault(); var killedby = db.PlayerMostKilledBy(p.TelegramId).FirstOrDefault(); var ach = (Achievements)(p.Achievements ?? 0); var count = ach.GetUniqueFlags().Count(); var totalAch = Enum.GetValues(typeof(Achievements)).Length; Content = String.IsNullOrWhiteSpace(p.UserName) ? $"{p.Name.FormatHTML()}, {Commands.GetLocaleString(roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role, p.Language) ?? "Noob"}" : $"<a href=\"https://telegram.me/{p.UserName}\">{p.Name.FormatHTML()}, {Commands.GetLocaleString(roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role, p.Language) ?? "Noob"}</a>"; Content += $"\n<code>{(count+"/"+ totalAch).PadRight(5)}</code> {Commands.GetLocaleString("AchievementsUnlocked", p.Language)}\n" + $"{won.Pad()} {Commands.GetLocaleString("GamesWon", p.Language)} ({won * 100 / gamesPlayed}%)\n" + $"{lost.Pad()} {Commands.GetLocaleString("GamesLost", p.Language)} ({lost * 100 / gamesPlayed}%)\n" + $"{survived.Pad()} {Commands.GetLocaleString("GamesSurvived", p.Language)} ({survived * 100 / gamesPlayed}%)\n" + $"{gamesPlayed.Pad()} {Commands.GetLocaleString("TotalGames", p.Language)} \n" + $"<code>{killed?.times}</code>\t{Commands.GetLocaleString("TimesKilled", p.Language)} {killed?.Name.FormatHTML()}\n" + $"<code>{killedby?.times}</code>\t{Commands.GetLocaleString("TimesKilledBy", p.Language)} {killedby?.Name.FormatHTML()}"; var json = p.CustomGifSet; if (!String.IsNullOrEmpty(json)) { var data = JsonConvert.DeserializeObject <CustomGifData>(json); if (data.ShowBadge) { if ((p.DonationLevel ?? 0) >= 100) { Content += "Donation Level: 🥇"; } else if ((p.DonationLevel ?? 0) >= 50) { Content += "Donation Level: 🥈"; } else if ((p.DonationLevel ?? 0) >= 10) { Content += "Donation Level: 🥉"; } if (p.Founder ?? false) { Content += "\n💎 FOUNDER STATUS! 💎\n<i>(This player donated at least $10USD before there was any reward for donating</i>"; } } } else { if ((p.DonationLevel ?? 0) >= 100) { Content += "Donation Level: 🥇"; } else if ((p.DonationLevel ?? 0) >= 50) { Content += "Donation Level: 🥈"; } else if ((p.DonationLevel ?? 0) >= 10) { Content += "Donation Level: 🥉"; } if (p.Founder ?? false) { Content += "\n💎 FOUNDER STATUS! 💎\n<i>(This player donated at least $10USD before there was any reward for donating</i>"; } } } } catch (Exception e) { Content = "Unable to load stats: " + e.Message; } }
public StatsInlineCommand(User u) { Description = "Get personal stats"; Command = "stats"; try { using (var db = new WWContext()) { Content = ""; //find the player var p = db.Players.FirstOrDefault(x => x.TelegramId == u.Id); if (p == null) { //remove the command Command = ""; return; } var gamesPlayed = p.GamePlayers.Count(); var won = p.GamePlayers.Count(x => x.Won); var lost = gamesPlayed - won; var survived = p.GamePlayers.Count(x => x.Survived); var roleInfo = db.PlayerRoles(u.Id).ToList(); var killed = db.PlayerMostKilled(u.Id).FirstOrDefault(); var killedby = db.PlayerMostKilledBy(u.Id).FirstOrDefault(); var ach = (Achievements)(p.Achievements ?? 0); var count = ach.GetUniqueFlags().Count(); Content = String.IsNullOrWhiteSpace(u.Username) ? $"{u.FirstName.FormatHTML()} the {roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "Noob"}" : $"<a href=\"https://telegram.me/{u.Username}\">{u.FirstName.FormatHTML()} the {roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "Noob"}</a>"; Content += $"\n{count.Pad()}Achievements Unlocked!\n" + $"{won.Pad()}Games won ({won*100/gamesPlayed}%)\n" + $"{lost.Pad()}Games lost ({lost*100/gamesPlayed}%)\n" + $"{survived.Pad()}Games survived ({survived*100/gamesPlayed}%)\n" + $"{gamesPlayed.Pad()}Total Games\n" + $"<code>{killed?.times}</code>\ttimes I've gleefully killed {killed?.Name.FormatHTML()}\n" + $"<code>{killedby?.times}</code>\ttimes I've been slaughted by {killedby?.Name.FormatHTML()}\n"; var json = p.CustomGifSet; if (!String.IsNullOrEmpty(json)) { var data = JsonConvert.DeserializeObject <CustomGifData>(json); if (data.ShowBadge) { if ((p.DonationLevel ?? 0) >= 100) { Content += "Donation Level: 🥇"; } else if ((p.DonationLevel ?? 0) >= 50) { Content += "Donation Level: 🥈"; } else if ((p.DonationLevel ?? 0) >= 10) { Content += "Donation Level: 🥉"; } if (p.Founder ?? false) { Content += "\n💎 FOUNDER STATUS! 💎\n<i>(This player donated at least $10USD before there was any reward for donating)</i>"; } } } else { if ((p.DonationLevel ?? 0) >= 100) { Content += "Donation Level: 🥇"; } else if ((p.DonationLevel ?? 0) >= 50) { Content += "Donation Level: 🥈"; } else if ((p.DonationLevel ?? 0) >= 10) { Content += "Donation Level: 🥉"; } if (p.Founder ?? false) { Content += "\n💎 FOUNDER STATUS! 💎\n<i>(This player donated at least $10USD before there was any reward for donating</i>"; } } } } catch (Exception e) { Content = "Unable to load stats: " + e.Message; } }
public StatsInlineCommand(User u) { Description = "Get personal stats"; Command = "stats"; try { using (var db = new WWContext()) { Content = ""; //find the player var p = db.Players.FirstOrDefault(x => x.TelegramId == u.Id); if (p == null) { //remove the command Command = ""; return; } var gamesPlayed = p.GamePlayers.Count(); var won = p.GamePlayers.Count(x => x.Won); var lost = gamesPlayed - won; var survived = p.GamePlayers.Count(x => x.Survived); var roleInfo = db.PlayerRoles(u.Id).ToList(); var killed = db.PlayerMostKilled(u.Id).FirstOrDefault(); var killedby = db.PlayerMostKilledBy(u.Id).FirstOrDefault(); var ach = p.NewAchievements == null ? new System.Collections.BitArray(200) : new System.Collections.BitArray(p.NewAchievements); // copy existing achievements to new achievements field var oldAchList = ((Achievements)(p.Achievements ?? 0)).GetUniqueFlags(); foreach (var achv in oldAchList) { var newAchv = (AchievementsReworked)Enum.Parse(typeof(AchievementsReworked), achv.ToString()); ach.Set(newAchv); } p.NewAchievements = ach.ToByteArray(); db.SaveChanges(); var count = ach.GetUniqueFlags().Count(); Content = $"<a href='tg://user?id={p.TelegramId}'>{p.Name.FormatHTML()} the {roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "Noob"}</a>"; Content += $"\n{count.Pad()}Achievements Unlocked!\n" + $"{won.Pad()}Games won ({won*100/gamesPlayed}%)\n" + $"{lost.Pad()}Games lost ({lost*100/gamesPlayed}%)\n" + $"{survived.Pad()}Games survived ({survived*100/gamesPlayed}%)\n" + $"{gamesPlayed.Pad()}Total Games\n" + $"<code>{killed?.times}</code>\ttimes I've gleefully killed {killed?.Name.FormatHTML()}\n" + $"<code>{killedby?.times}</code>\ttimes I've been slaughted by {killedby?.Name.FormatHTML()}\n"; var json = p.CustomGifSet; if (!String.IsNullOrEmpty(json)) { var data = JsonConvert.DeserializeObject <CustomGifData>(json); if (data.ShowBadge) { if ((p.DonationLevel ?? 0) >= 100) { Content += "Donation Level: 🥇"; } else if ((p.DonationLevel ?? 0) >= 50) { Content += "Donation Level: 🥈"; } else if ((p.DonationLevel ?? 0) >= 10) { Content += "Donation Level: 🥉"; } if (p.Founder ?? false) { Content += "\n💎 FOUNDER STATUS! 💎\n<i>(This player donated at least $10USD before there was any reward for donating)</i>"; } } } else { if ((p.DonationLevel ?? 0) >= 100) { Content += "Donation Level: 🥇"; } else if ((p.DonationLevel ?? 0) >= 50) { Content += "Donation Level: 🥈"; } else if ((p.DonationLevel ?? 0) >= 10) { Content += "Donation Level: 🥉"; } if (p.Founder ?? false) { Content += "\n💎 FOUNDER STATUS! 💎\n<i>(This player donated at least $10USD before there was any reward for donating</i>"; } } } } catch (Exception e) { Content = "Unable to load stats: " + e.Message; } }
public static void GetStats(Update u, string[] args) { //var reply = $"[Global Stats](www.tgwerewolf.com/Stats)\n"; //if (update.Message.Chat.Type != ChatType.Private) // reply += $"[Group Stats](www.tgwerewolf.com/Stats/Group/{update.Message.Chat.Id}) ({update.Message.Chat.Title})\n"; //reply += $"[Player Stats](www.tgwerewolf.com/Stats/Player/{update.Message.From.Id}) ({update.Message.From.FirstName})"; var name = u.Message.From.FirstName; var id = u.Message.From.Id; var username = u.Message.From.Username; if (u.Message.ReplyToMessage != null) { var m = u.Message.ReplyToMessage; while (m.ReplyToMessage != null) { m = m.ReplyToMessage; } //check for forwarded message name = m.From.FirstName; id = m.From.Id; username = m.From.Username; if (m.ForwardFrom != null) { id = m.ForwardFrom.Id; name = m.ForwardFrom.FirstName; username = m.ForwardFrom.Username; } /* * var buttons = new List<InlineKeyboardButton[]> * { * new[] * { * new InlineKeyboardButton * { * Text = $"{name} Stats", * Url = "http://www.tgwerewolf.com/Stats/Player/" + id + "?referrer=stats" * } * } * * }; * var menu = new InlineKeyboardMarkup(buttons.ToArray()); */ } string Content; try { using (var db = new WWContext()) { Content = ""; //find the player var p = db.Players.FirstOrDefault(x => x.TelegramId == id); if (p == null) { //remove the command throw new Exception("Player has never played a game."); } var gamesPlayed = p.GamePlayers.Count(); var won = p.GamePlayers.Count(x => x.Won); var lost = gamesPlayed - won; var survived = p.GamePlayers.Count(x => x.Survived); var roleInfo = db.PlayerRoles(id).ToList(); var killed = db.PlayerMostKilled(id).FirstOrDefault(); var killedby = db.PlayerMostKilledBy(id).FirstOrDefault(); var ach = (Achievements)(p.Achievements ?? 0); var count = ach.GetUniqueFlags().Count(); Content = String.IsNullOrWhiteSpace(username) ? $"{name.FormatHTML()} the {roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "Noob"}" : $"<a href=\"https://telegram.me/{username}\">{name.FormatHTML()} the {roleInfo.OrderByDescending(x => x.times).FirstOrDefault()?.role ?? "Noob"}</a>"; Content += $"\n{count.Pad()}Achievements Unlocked!\n" + $"{won.Pad()}Games won ({won * 100 / gamesPlayed}%)\n" + $"{lost.Pad()}Games lost ({lost * 100 / gamesPlayed}%)\n" + $"{survived.Pad()}Games survived ({survived * 100 / gamesPlayed}%)\n" + $"{gamesPlayed.Pad()}Total Games\n" + $"<code>{killed?.times}</code>\ttimes I've gleefully killed {killed?.Name.FormatHTML()}\n" + $"<code>{killedby?.times}</code>\ttimes I've been slaughted by {killedby?.Name.FormatHTML()}"; } } catch (Exception e) { Content = "Unable to load stats: " + e.Message; } Bot.Api.SendTextMessage(u.Message.Chat.Id, Content, parseMode: ParseMode.Html, disableWebPagePreview: true); }
public StatsInlineCommand(User u) { Description = "Get personal stats"; Command = "stats"; try { using (var db = new WWContext()) { Content = ""; //find the player var p = db.Players.FirstOrDefault(x => x.TelegramId == u.Id); if (p == null) { //remove the command Command = ""; return; } // var topPlayers = db.Players.OrderByDescending(x => x.Score); var gamesPlayed = p.GamePlayers.Count(); var won = p.GamePlayers.Count(x => x.Won); var lost = gamesPlayed - won; var survived = p.GamePlayers.Count(x => x.Survived); var roleInfo = db.PlayerRoles(u.Id).ToList(); var killed = db.PlayerMostKilled(u.Id).FirstOrDefault(); var killedby = db.PlayerMostKilledBy(u.Id).FirstOrDefault(); var ach = p.Achievements == null ? new System.Collections.BitArray(200) : new System.Collections.BitArray(p.Achievements); var score = p.Score; var rankEmoji = ""; if (score > 2200) { rankEmoji = " 🏆"; } else if (score > 2000) { rankEmoji = " 💎"; } else if (score > 1800) { rankEmoji = " 🥇"; } else if (score > 1600) { rankEmoji = " 🥈"; } else if (score > 1400) { rankEmoji = " 🥉"; } else if (score > 1200) { rankEmoji = " 🔆"; } else if (score > 1000) { rankEmoji = " 🔅"; } var count = ach.GetUniqueFlags().Count(); Content = $"<a href='tg://user?id={p.TelegramId}'>{p.Name.FormatHTML()}, {GetLocaleString(roleInfo.OrderByDescending(x => x.times).FirstOrDefault(x => x.role != "Villager" && x.role != "Mason" && x.role != "Police")?.role, "Spanish.xml") ?? "Noob"}</a>"; Content += $"\n{count.Pad()}Logros desbloqueados\n" + $"{score.Pad()}Puntos{rankEmoji}\n" + $"{won.Pad()}Partidas ganadas ({won*100/gamesPlayed}%)\n" + $"{lost.Pad()}Partidas perdidas ({lost*100/gamesPlayed}%)\n" + $"{survived.Pad()}Partidas sobrevividas ({survived*100/gamesPlayed}%)\n" + $"{gamesPlayed.Pad()}Partidas totales\n" + $"<code>{killed?.times}</code>\tveces he matado a {killed?.Name.FormatHTML()}\n" + $"<code>{killedby?.times}</code>\tveces me ha matado {killedby?.Name.FormatHTML()}\n"; var json = p.CustomGifSet; if (!String.IsNullOrEmpty(json)) { var data = JsonConvert.DeserializeObject <CustomGifData>(json); if (data.ShowBadge) { if ((p.DonationLevel ?? 0) >= 100) { Content += "Donation Level: 🥇"; } else if ((p.DonationLevel ?? 0) >= 50) { Content += "Donation Level: 🥈"; } else if ((p.DonationLevel ?? 0) >= 10) { Content += "Donation Level: 🥉"; } if (p.Founder ?? false) { Content += "\n💎 FOUNDER STATUS! 💎\n<i>(This player donated at least $10USD before there was any reward for donating)</i>"; } } } else { if ((p.DonationLevel ?? 0) >= 100) { Content += "Donation Level: 🥇"; } else if ((p.DonationLevel ?? 0) >= 50) { Content += "Donation Level: 🥈"; } else if ((p.DonationLevel ?? 0) >= 10) { Content += "Donation Level: 🥉"; } if (p.Founder ?? false) { Content += "\n💎 FOUNDER STATUS! 💎\n<i>(This player donated at least $10USD before there was any reward for donating</i>"; } } } } catch (Exception e) { Content = "Unable to load stats: " + e.Message; } }