public async Task <DiscordEmbed> GetEmbeddedInfoAsync(ulong id) { if (this.IsDisabled()) { return(null); } SteamCommunityProfileModel profile = null; ISteamWebResponse <PlayerSummaryModel> summary = null; try { profile = await this.user.GetCommunityProfileAsync(id); summary = await this.user.GetPlayerSummaryAsync(id); } catch { } if (profile is null || summary is null || summary.Data is null) { return(null); } return(this.EmbedSteamResult(profile, summary.Data)); }
public DiscordEmbed EmbedSteamResult(SteamCommunityProfileModel model, PlayerSummaryModel summary) { if (this.IsDisabled()) { return(null); } var em = new DiscordEmbedBuilder() { Title = summary.Nickname, Description = Regex.Replace(model.Summary, "<[^>]*>", ""), ThumbnailUrl = model.AvatarFull.ToString(), Color = DiscordColor.Black, Url = GetProfileUrlForId(model.SteamID) }; if (summary.ProfileVisibility != ProfileVisibility.Public) { em.Description = "This profile is private."; return(em); } em.AddField("Member since", summary.AccountCreatedDate.ToUniversalTime().ToString(), inline: true); if (summary.UserStatus != Steam.Models.SteamCommunity.UserStatus.Offline) { em.AddField("Status:", summary.UserStatus.ToString(), inline: true); } else { em.AddField("Last seen:", summary.LastLoggedOffDate.ToUniversalTime().ToString(), inline: true); } if (!string.IsNullOrWhiteSpace(summary.PlayingGameName)) { em.AddField("Playing: ", summary.PlayingGameName); } if (!string.IsNullOrWhiteSpace(model.Location)) { em.AddField("Location: ", model.Location); } // em.AddField("Game activity", $"{model.HoursPlayedLastTwoWeeks} hours past 2 weeks.", inline: true); if (model.IsVacBanned) { var bans = this.user.GetPlayerBansAsync(model.SteamID).Result.Data; uint bancount = 0; foreach (var b in bans) { bancount += b.NumberOfVACBans; } em.AddField("VAC Status:", $"{Formatter.Bold(bancount.ToString())} ban(s) on record.", inline: true); } else { em.AddField("VAC Status:", "No bans registered"); } return(em.Build()); }
public async Task SteamUser(CommandContext ctx, string query) { if (string.IsNullOrWhiteSpace(query)) { await BotServices.SendErrorEmbedAsync(ctx, ":warning: SteamID or Community URL are required! Try **.su criticalflaw**"); } else { var service = new BotServices(); var steam = new SteamUser(service.GetAPIToken("steam")); SteamCommunityProfileModel profile = null; ISteamWebResponse <PlayerSummaryModel> summary = null; try { var decode = await steam.ResolveVanityUrlAsync(query); profile = await steam.GetCommunityProfileAsync(decode.Data).ConfigureAwait(false); summary = await steam.GetPlayerSummaryAsync(decode.Data).ConfigureAwait(false); } catch { profile = await steam.GetCommunityProfileAsync(ulong.Parse(query)).ConfigureAwait(false); summary = await steam.GetPlayerSummaryAsync(ulong.Parse(query)).ConfigureAwait(false); } finally { if (profile != null && summary != null) { await ctx.TriggerTypingAsync(); var output = new DiscordEmbedBuilder() .WithTitle(summary.Data.Nickname); if (summary.Data.ProfileVisibility == ProfileVisibility.Public) { output.WithThumbnailUrl(profile.AvatarFull.ToString()); output.WithColor(DiscordColor.MidnightBlue); output.WithUrl($"http://steamcommunity.com/id/{profile.SteamID}/"); output.WithFooter($"Steam ID: {profile.SteamID}"); output.AddField("Member since", summary.Data.AccountCreatedDate.ToUniversalTime().ToString(CultureInfo.CurrentCulture), true); if (!string.IsNullOrWhiteSpace(profile.Summary)) { output.WithDescription(Regex.Replace(profile.Summary, "<[^>]*>", "")); } if (summary.Data.UserStatus != UserStatus.Offline) { output.AddField("Status:", summary.Data.UserStatus.ToString(), true); } else { output.AddField("Last seen:", summary.Data.LastLoggedOffDate.ToUniversalTime().ToString(CultureInfo.CurrentCulture), true); } output.AddField("VAC Banned?:", profile.IsVacBanned ? "YES" : "NO", true); output.AddField("Trade Banned?:", profile.TradeBanState, true); if (profile.InGameInfo != null) { output.AddField("In-Game:", $"[{profile.InGameInfo.GameName}]({profile.InGameInfo.GameLink})", true); output.AddField("Game Server IP:", profile.InGameServerIP, true); output.WithImageUrl(profile.InGameInfo.GameLogoSmall); } } else { output.Description = "This profile is private..."; } await ctx.RespondAsync(embed : output.Build()); } else { await BotServices.SendErrorEmbedAsync(ctx, ":mag: No results found!"); } } } }