From 319822d1a19bc86cc1345fd60dc626912ac0f99b Mon Sep 17 00:00:00 2001 From: JustArchi Date: Fri, 22 Jan 2016 10:56:06 +0100 Subject: [PATCH] Add licenses, closes #77 --- ArchiSteamFarm/Bot.cs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index cf38a3ad4..9b3f1121e 100644 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -54,6 +54,7 @@ namespace ArchiSteamFarm { internal readonly ArchiWebHandler ArchiWebHandler; internal readonly CallbackManager CallbackManager; internal readonly CardsFarmer CardsFarmer; + internal readonly SteamApps SteamApps; internal readonly SteamClient SteamClient; internal readonly SteamFriends SteamFriends; internal readonly SteamUser SteamUser; @@ -150,6 +151,9 @@ namespace ArchiSteamFarm { CallbackManager.Subscribe(OnConnected); CallbackManager.Subscribe(OnDisconnected); + SteamApps = SteamClient.GetHandler(); + CallbackManager.Subscribe(OnFreeLicense); + SteamFriends = SteamClient.GetHandler(); CallbackManager.Subscribe(OnChatInvite); CallbackManager.Subscribe(OnChatMsg); @@ -670,6 +674,25 @@ namespace ArchiSteamFarm { return await bot.ResponseRedeem(message, validate).ConfigureAwait(false); } + internal static async Task ResponseAddLicense(string botName, string game) { + if (string.IsNullOrEmpty(botName) || string.IsNullOrEmpty(game)) { + return null; + } + + Bot bot; + if (!Bots.TryGetValue(botName, out bot)) { + return "Couldn't find any bot named " + botName + "!"; + } + + uint gameID; + if (!uint.TryParse(game, out gameID)) { + return "Couldn't parse game as a number!"; + } + + var result = await bot.SteamApps.RequestFreeLicense(gameID); + return "Result: " + result.Result + " | Granted apps: " + string.Join(", ", result.GrantedApps) + " " + string.Join(", ", result.GrantedPackages); + } + internal static async Task ResponsePlay(string botName, string game) { if (string.IsNullOrEmpty(botName) || string.IsNullOrEmpty(game)) { return null; @@ -764,6 +787,12 @@ namespace ArchiSteamFarm { return Response2FA(args[1]); case "!2faoff": return Response2FAOff(args[1]); + case "!addlicense": + if (args.Length > 2) { + return await ResponseAddLicense(args[1], args[2]).ConfigureAwait(false); + } else { + return await ResponseAddLicense(BotName, args[1]).ConfigureAwait(false); + } case "!play": if (args.Length > 2) { return await ResponsePlay(args[1], args[2]).ConfigureAwait(false); @@ -888,6 +917,12 @@ namespace ArchiSteamFarm { SteamClient.Connect(); } + private void OnFreeLicense(SteamApps.FreeLicenseCallback callback) { + if (callback == null) { + return; + } + } + private void OnChatInvite(SteamFriends.ChatInviteCallback callback) { if (callback == null) { return;