public static void Init() { ReloadImportant(); var thread = new Thread(Steam.Instance.Tick); thread.Name = "Steam"; thread.Start(); Threads.Add(thread); if (Settings.IsFullRun) { return; } var commandHandler = new CommandHandler(); Steam.Instance.RegisterCommandHandlers(commandHandler); if (Settings.Current.IRC.Enabled) { RssReader = new RSS(); thread = new Thread(IRC.Instance.Connect); thread.Name = "IRC"; thread.Start(); Threads.Add(thread); IRC.Instance.RegisterCommandHandlers(commandHandler); } }
public void RegisterCommandHandlers(CommandHandler handler) { if (Settings.Current.ChatRooms.Count > 0) { CallbackManager.Subscribe<SteamFriends.ChatMsgCallback>(handler.OnSteamChatMessage); } CallbackManager.Subscribe<SteamFriends.FriendMsgCallback>(handler.OnSteamFriendMessage); }
public static void Init() { var thread = new Thread(new ThreadStart(Steam.Instance.Tick)); thread.Name = "Steam"; thread.Start(); Threads.Add(thread); if (Settings.IsFullRun) { return; } ReloadImportant(); var commandHandler = new CommandHandler(); Steam.Instance.RegisterCommandHandlers(commandHandler); if (Settings.Current.IRC.Enabled) { thread = new Thread(new ThreadStart(IRC.Instance.Connect)); thread.Name = "IRC"; thread.Start(); Threads.Add(thread); IRC.Instance.RegisterCommandHandlers(commandHandler); } foreach (var appID in Settings.Current.GameCoordinatorIdlers) { var instance = new GCIdler(appID); thread = new Thread(new ThreadStart(instance.Run)); thread.IsBackground = true; thread.Name = string.Format("GC Idler {0}", appID); thread.Start(); GCIdlers.Add(instance); Threads.Add(thread); } }
public void RegisterCommandHandlers(CommandHandler handler) { Client.GotMessage += handler.OnIRCMessage; }
public void RegisterCommandHandlers(CommandHandler handler) { Client.GotMessage += handler.OnIRCMessage; }
public void OnProductInfo(IRCRequest request, SteamApps.PICSProductInfoCallback callback) { if (request.Type == SteamProxy.IRCRequestType.TYPE_SUB) { if (!callback.Packages.ContainsKey(request.Target)) { CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2}: Unknown SubID: {3}{4}", Colors.OLIVE, request.Command.Nickname, Colors.NORMAL, Colors.OLIVE, request.Target); return; } var info = callback.Packages[request.Target]; var kv = info.KeyValues.Children.FirstOrDefault(); // Blame VoiDeD string name = string.Format("SubID {0}", info.ID); if (kv["name"].Value != null) { name = kv["name"].AsString(); } try { kv.SaveToFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sub", string.Format("{0}.vdf", info.ID)), false); } catch (Exception e) { CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2}: Unable to save file for {3}: {4}", Colors.OLIVE, request.Command.Nickname, Colors.NORMAL, name, e.Message); return; } CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2}: Dump for {3}{4}{5} -{6} {7}{8}{9}", Colors.OLIVE, request.Command.Nickname, Colors.NORMAL, Colors.OLIVE, name, Colors.NORMAL, Colors.DARK_BLUE, SteamDB.GetRawPackageURL(info.ID), Colors.NORMAL, info.MissingToken ? " (missing token)" : string.Empty ); } else if (request.Type == SteamProxy.IRCRequestType.TYPE_APP) { if (!callback.Apps.ContainsKey(request.Target)) { CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2}: Unknown AppID: {3}{4}", Colors.OLIVE, request.Command.Nickname, Colors.NORMAL, Colors.OLIVE, request.Target); return; } var info = callback.Apps[request.Target]; string name = string.Format("AppID {0}", info.ID); if (info.KeyValues["common"]["name"].Value != null) { name = info.KeyValues["common"]["name"].AsString(); } try { info.KeyValues.SaveToFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", string.Format("{0}.vdf", info.ID)), false); } catch (Exception e) { CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2}: Unable to save file for {3}: {4}", Colors.OLIVE, request.Command.Nickname, Colors.NORMAL, name, e.Message); return; } CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2}: Dump for {3}{4}{5} -{6} {7}{8}{9}", Colors.OLIVE, request.Command.Nickname, Colors.NORMAL, Colors.OLIVE, name, Colors.NORMAL, Colors.DARK_BLUE, SteamDB.GetRawAppURL(info.ID), Colors.NORMAL, info.MissingToken ? " (missing token)" : string.Empty ); } else { CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2}: I have no idea what happened here!", Colors.OLIVE, request.Command.Nickname, Colors.NORMAL); } }
public static void OnServiceMethod(SteamUnifiedMessages.ServiceMethodResponse callback, JobManager.IRCRequest request) { var response = callback.GetDeserializedResponse <CPublishedFile_GetDetails_Response>(); var details = response.publishedfiledetails.FirstOrDefault(); if (request.Type == JobManager.IRCRequestType.TYPE_PUBFILE_SILENT) { if (details == null || (EResult)details.result != EResult.OK) { return; } string title; if (!string.IsNullOrWhiteSpace(details.title)) { title = details.title; } else if (!string.IsNullOrEmpty(details.file_description)) { title = details.file_description; } else { title = details.filename; } if (title.Length > 49) { title = title.Substring(0, 49) + "…"; } if (request.Command.CommandType == ECommandType.SteamChatRoom) { Steam.Instance.Friends.SendChatRoomMessage(request.Command.ChatRoomID, EChatEntryType.ChatMsg, string.Format("» {0}: {1} for {2} ({3:N0} views){4}", ((EWorkshopFileType)details.file_type), title, details.app_name, details.views, details.spoiler_tag ? " :retreat: SPOILER" : "") ); } else { IRC.Instance.SendReply(request.Command.Recipient, string.Format("{0}» {1}{2} {3}{4}{5} for {6}{7}{8} ({9} views)", Colors.OLIVE, Colors.NORMAL, ((EWorkshopFileType)details.file_type), Colors.BLUE, title, Colors.NORMAL, Colors.BLUE, details.app_name, Colors.LIGHTGRAY, details.views ), false ); } return; } if (details == null) { CommandHandler.ReplyToCommand(request.Command, "Unable to make service request for published file info: the server returned no info"); return; } var result = (EResult)details.result; if (result != EResult.OK) { CommandHandler.ReplyToCommand(request.Command, "Unable to get published file info: {0}", result); return; } try { var json = JsonConvert.SerializeObject(details, Formatting.Indented); File.WriteAllText(Path.Combine(Application.Path, "ugc", string.Format("{0}.json", details.publishedfileid)), json, Encoding.UTF8); } catch (Exception e) { CommandHandler.ReplyToCommand(request.Command, "Unable to save file: {0}", e.Message); return; } CommandHandler.ReplyToCommand(request.Command, "{0}, Title: {1}{2}{3}, Creator: {4}{5}{6}, App: {7}{8}{9}{10}, File UGC: {11}{12}{13}, Preview UGC: {14}{15}{16} -{17} {18}", (EWorkshopFileType)details.file_type, Colors.BLUE, string.IsNullOrWhiteSpace(details.title) ? "[no title]" : details.title, Colors.NORMAL, Colors.BLUE, new SteamID(details.creator).Render(true), Colors.NORMAL, Colors.BLUE, details.creator_appid, details.creator_appid == details.consumer_appid ? "" : string.Format(" (consumer {0})", details.consumer_appid), Colors.NORMAL, Colors.BLUE, details.hcontent_file, Colors.NORMAL, Colors.BLUE, details.hcontent_preview, Colors.NORMAL, Colors.DARKBLUE, SteamDB.GetUGCURL(details.publishedfileid) ); CommandHandler.ReplyToCommand(request.Command, true, "{0} - https://steamcommunity.com/sharedfiles/filedetails/?id={1}", details.file_url, details.publishedfileid); }
public void RegisterCommandHandlers(CommandHandler handler) { CallbackManager.Subscribe <SteamFriends.FriendMsgCallback>(handler.OnSteamFriendMessage); }
private static void OnPICSProductInfo(SteamApps.PICSProductInfoCallback callback) { JobAction job; if (!JobManager.TryRemoveJob(callback.JobID, out job) || !job.IsCommand) { return; } var request = job.CommandRequest; if (request.Type == JobManager.IRCRequestType.TYPE_SUB) { if (!callback.Packages.ContainsKey(request.Target)) { CommandHandler.ReplyToCommand(request.Command, "Unknown SubID: {0}{1}{2}", Colors.BLUE, request.Target, LicenseList.OwnedSubs.ContainsKey(request.Target) ? SteamDB.StringCheckmark : string.Empty); return; } var info = callback.Packages[request.Target]; var kv = info.KeyValues.Children.FirstOrDefault(); string name; if (kv["name"].Value != null) { name = Utils.RemoveControlCharacters(kv["name"].AsString()); } else { name = Steam.GetPackageName(info.ID); } try { kv.SaveToFile(Path.Combine(Application.Path, "sub", string.Format("{0}.vdf", info.ID)), false); } catch (Exception e) { CommandHandler.ReplyToCommand(request.Command, "Unable to save file for {0}: {1}", name, e.Message); return; } CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2} -{3} {4}{5} - Dump:{6} {7}{8}{9}{10}", Colors.BLUE, name, Colors.NORMAL, Colors.DARKBLUE, SteamDB.GetPackageURL(info.ID), Colors.NORMAL, Colors.DARKBLUE, SteamDB.GetRawPackageURL(info.ID), Colors.NORMAL, info.MissingToken ? SteamDB.StringNeedToken : string.Empty, LicenseList.OwnedSubs.ContainsKey(info.ID) ? SteamDB.StringCheckmark : string.Empty ); } else if (request.Type == JobManager.IRCRequestType.TYPE_APP) { if (!callback.Apps.ContainsKey(request.Target)) { CommandHandler.ReplyToCommand(request.Command, "Unknown AppID: {0}{1}{2}", Colors.BLUE, request.Target, LicenseList.OwnedApps.ContainsKey(request.Target) ? SteamDB.StringCheckmark : string.Empty); return; } var info = callback.Apps[request.Target]; string name; if (info.KeyValues["common"]["name"].Value != null) { name = Utils.RemoveControlCharacters(info.KeyValues["common"]["name"].AsString()); } else { name = Steam.GetAppName(info.ID); } try { info.KeyValues.SaveToFile(Path.Combine(Application.Path, "app", string.Format("{0}.vdf", info.ID)), false); } catch (Exception e) { CommandHandler.ReplyToCommand(request.Command, "Unable to save file for {0}: {1}", name, e.Message); return; } CommandHandler.ReplyToCommand(request.Command, "{0}{1}{2} -{3} {4}{5} - Dump:{6} {7}{8}{9}{10}", Colors.BLUE, name, Colors.NORMAL, Colors.DARKBLUE, SteamDB.GetAppURL(info.ID), Colors.NORMAL, Colors.DARKBLUE, SteamDB.GetRawAppURL(info.ID), Colors.NORMAL, info.MissingToken ? SteamDB.StringNeedToken : string.Empty, LicenseList.OwnedApps.ContainsKey(info.ID) ? SteamDB.StringCheckmark : string.Empty ); } else { CommandHandler.ReplyToCommand(request.Command, "I have no idea what happened here!"); } }