コード例 #1
0
ファイル: SteamService.cs プロジェクト: happyfeetx/kiosk
        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));
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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!");
                    }
                }
            }
        }