Пример #1
0
        public async Task ResolveVanityUrlAsync_Should_Succeed()
        {
            var response = await steamInterface.ResolveVanityUrlAsync("aro");

            Assert.NotNull(response);
            Assert.True(response.Data > 0);
        }
Пример #2
0
        /// <summary>
        /// Queries the Steam Web API for a 64-bit Steam ID based on a provided string value.
        /// </summary>
        /// <param name="steamUser"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        private static async Task <ulong> ResolveSteamIdFromValueAsync(SteamUser steamUser, string value)
        {
            ulong steamId64 = 0;

            var steamId = await steamUser.ResolveVanityUrlAsync(value);

            steamId64 = steamId;

            return(steamId64);
        }
Пример #3
0
 /// <summary>
 /// Gets a Steam ID from a custom vanity URL, CANNOT include the https://steamcommunity.com part
 /// </summary>
 /// <param name="user"></param>
 /// <returns>Returns the user ID, if found</returns>
 public static ulong GetSteamIdFromCustomUrl(string user)
 {
     try
     {
         ulong id = steamUserInterface.ResolveVanityUrlAsync(user).GetAwaiter().GetResult().Data;
         return(id);
     }
     catch (VanityUrlNotResolvedException)
     {
         return(0);
     }
 }
Пример #4
0
        /// <summary>
        /// Asynchronously gets the steam ID from a vanity URL.
        /// </summary>
        /// <param name="url">The users Steam URL.</param>
        /// <returns>The users Steam ID</returns>
        private async Task <ulong> getSteamIdVanityAsync(string url)
        {
            while (true)
            {
                try
                {
                    var steamId = await steamInterface.ResolveVanityUrlAsync(url).ConfigureAwait(false);

                    return(steamId.Data);
                }
                catch { }
            }
        }
Пример #5
0
        /// <summary>
        /// Queries the Steam Web API for a 64-bit Steam ID based on a provided string value.
        /// </summary>
        /// <param name="steamUser"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        private static async Task <ulong> ResolveSteamIdFromValueAsync(SteamUser steamUser, string value)
        {
            ulong steamId64 = 0;

            var result = await steamUser.ResolveVanityUrlAsync(value);

            // the value didn't resolve to a 64-bit Steam ID
            if (result.Success == 42) // returns 42 on "no match"
            {
                throw new VanityUrlNotResolvedException(ErrorMessages.VanityUrlNotResolved);
            }
            else
            {
                steamId64 = result.SteamId;
            }

            return(steamId64);
        }
Пример #6
0
        /// <summary>
        /// Polls the Steam api to see if the player exists
        /// </summary>
        /// <param name="username"></param>
        /// <returns>Bool: true if successful</returns>
        public static async Task <bool> CheckUsername(string username)
        {
            Debug.Print("Searching for steam user ...");
            var steamInterface = new SteamUser(APIKey);

            SteamWebAPI2.Utilities.ISteamWebResponse <ulong> userKeyResponse;
            try
            {
                userKeyResponse = await steamInterface.ResolveVanityUrlAsync(username);

                userKey = userKeyResponse.Data;
            }
            catch (Exception e)
            {
                Debug.Print(e.Message);
                MessageBoxResult error = MessageBox.Show("No player found");
                return(false);
            }
            Debug.Print(userKey.ToString());
            return(true);
        }
Пример #7
0
        public async Task <bool> UpdateProfile(string username)
        {
            if (!IsApiKeySet())
            {
                ApplicationConstants.MessageApiNotSet();
                return(false);
            }

            try
            {
                var vanityResolveResponse = await _steamUser.ResolveVanityUrlAsync(username);

                PlayerDetails = new ApplicationPlayerDetails();
                await GetUserByIdAsync(vanityResolveResponse.Data, PlayerDetails);

                return(true);
            }
            catch (VanityUrlNotResolvedException)
            {
                return(false);
            }
        }
Пример #8
0
 public async Task <ulong> GetIdFromVanityAsync(string vanityUrl)
 => (await _steam.ResolveVanityUrlAsync(vanityUrl).ConfigureAwait(false)).Data;
Пример #9
0
        public async Task <ulong> SteamVanityUrl(string url)
        {
            var response = await _steamUser.ResolveVanityUrlAsync(url);

            return(response.Data);
        }
Пример #10
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!");
                    }
                }
            }
        }