public static Configuration Load() { if (!File.Exists(GamesFile)) { SaveDefaultGameData(); } var gameData = LoadGameData(); var settingsData = LoadSettingsData(); var library = SteamLibrary.Locate(); var games = SteamGameInfo.LocateGames(gameData, library); if (games.Count == 0) { throw new SteamException("No supported steam games found on this system."); } var users = SteamUserInfo.LocateUsers(library); if (users.Count == 0) { throw new SteamException("No steam users found on this system."); } var settings = ApplicationSettings.FromKeyValue(settingsData, games, users); return(new Configuration(games, users, settings)); }
public async Task SteamUserAsync(EventContext context) { DateTime requestStart = DateTime.Now; string[] args = context.arguments.Split(' '); IDiscordEmbed embed = Utils.Embed; embed.SetAuthor("Steam Profile", steamAuthorIcon, ""); SteamUserInfo user = await steam.GetSteamUser(args[0]); if (user == null) { embed = Utils.ErrorEmbed(context, "No user was found!"); embed.QueueToChannel(context.Channel); return; } string userLevel = await steam.GetSteamLevel(user.SteamID); embed.SetThumbnailUrl(user.GetAvatarURL()); /* Current Game & Embed Colour */ if (user.IsPlayingGame()) { if (user.CurrentGameName != "???") { embed.SetDescription("Currently playing " + user.CurrentGameName); } else { embed.SetDescription("Currently in-game"); } embed.Color = new Color(0.5f, 1, 0.5f); } else if (user.PersonaState != 0) { embed.Color = new Color(0.5f, 0.5f, 1); } /* Name & ID */ embed.AddInlineField("Name", user.GetUsername()); embed.AddInlineField("ID", user.SteamID); /* Real Name & Country */ embed.AddInlineField("Real Name", user.RealName); embed.AddInlineField("Country", (user.CountryCode != "???" ? ":flag_" + user.CountryCode.ToLower() + ": " : "") + user.CountryCode); /* Profile Link */ embed.AddField("Link", user.ProfileURL); /* Created & Status */ embed.AddInlineField("Created", String.Format("{0:MMMM d, yyyy}", user.TimeCreated)); if (user.GetStatus() == "Offline") { embed.AddInlineField("Offline Since", ToTimeString(user.OfflineSince())); } else { embed.AddInlineField("Status", user.GetStatus()); } /* Level */ embed.AddInlineField("Level", userLevel); embed.SetFooter("Request took in " + Math.Round((DateTime.Now - requestStart).TotalMilliseconds) + "ms", ""); embed.QueueToChannel(context.Channel); }
public void GroupRun(SteamFriends.ChatMsgCallback callback, Bot bot, object[] args = null) { List<string> strings = new List<string>(callback.Message.Split(' ')); strings.RemoveAt(0); string user = (String.Join(" ", strings.ToArray())); bool found = false; SteamUserInfo userInfo = new SteamUserInfo(); List<SteamUserInfo> chattingUsers = args[0] as List<SteamUserInfo>; foreach (SteamUserInfo sui in chattingUsers) { if (sui.username.Equals(user)) { found = true; userInfo = sui; break; } } if (found) { string accId = userInfo.id.ConvertToUInt64().ToString(); //Begin building a message StringBuilder sb = new StringBuilder(); sb.Append(String.Format("{0}'s stats:\n", user)); using (dynamic steamPlayerService = WebAPI.GetInterface("IPlayerService")) { Dictionary<string, string> funArgs = new Dictionary<string, string>(); funArgs["steamid"] = accId; funArgs["key"] = bot.apikey; //Get total number of games KeyValue results = steamPlayerService.Call("GetOwnedGames", 1, funArgs); string total = results["game_count"].Value.ToString(); sb.Append(String.Format("Games owned: " + total + "\n")); funArgs.Clear(); funArgs["steamid"] = accId; funArgs["key"] = bot.apikey; //Get info about recently played games results = steamPlayerService.Call("GetRecentlyPlayedGames", 1, funArgs); string totalPlayed = results["total_count"].Value.ToString(); var games = results["games"]; sb.Append(String.Format("Games played: " + totalPlayed + "\n\n")); try { foreach (var child in games.Children) { Dictionary<string, string> gameInfo = new Dictionary<string, string>(); foreach (var elem in child.Children) { gameInfo[elem.Name] = elem.Value; } int playtimeForever = int.Parse(gameInfo["playtime_forever"]); int playtime2weeks = int.Parse(gameInfo["playtime_2weeks"]); sb.Append(gameInfo["name"]); sb.Append(", total time played: "); sb.Append(String.Format("{0} hours {1} minutes", playtimeForever / 60, playtimeForever % 60)); sb.Append(", last two weeks: "); sb.Append(String.Format("{0} hours {1} minutes", playtime2weeks / 60, playtime2weeks % 60)); sb.Append("\n"); } } catch(Exception e) { mLog.Error(String.Format("Exception encountered in Game.GroupRun: {0}", e.ToString())); bot.ChatroomMessage(bot.chatRoomID, String.Format("Could not retrieve info about {0}, profile might be private.", user)); return; } bot.ChatroomMessage(bot.chatRoomID, sb.ToString()); } } }