From d30d90a5b0261297f42d6f72a11e1a9b9b7bfc04 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Wed, 28 Oct 2015 20:01:43 +0100 Subject: [PATCH] Slain some bugs --- .gitignore | 8 ++++++++ ArchiSteamFarm/ArchiWebHandler.cs | 15 ++++++++++++++- ArchiSteamFarm/Bot.cs | 17 +++++++++++++++-- ArchiSteamFarm/CardsFarmer.cs | 8 +++++++- ArchiSteamFarm/Logging.cs | 4 +++- ArchiSteamFarm/Program.cs | 4 +++- ArchiSteamFarm/config/example.xml | 29 ++++++++++++++++++++--------- 7 files changed, 70 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index f91ff2b91..728708567 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,11 @@ +################# +## ArchiSteamFarm +################# + +# Ignore all config files, apart from example.xml +ArchiSteamFarm/config/* +!ArchiSteamFarm/config/example.xml + ################# ## Eclipse ################# diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs index 8d58839e4..bd0772eba 100644 --- a/ArchiSteamFarm/ArchiWebHandler.cs +++ b/ArchiSteamFarm/ArchiWebHandler.cs @@ -53,7 +53,12 @@ namespace ArchiSteamFarm { internal ArchiWebHandler(Bot bot, string apiKey) { Bot = bot; - ApiKey = apiKey; + + if (!string.IsNullOrEmpty(apiKey) && !apiKey.Equals("null")) { + ApiKey = apiKey; + } else { + ApiKey = null; + } } internal void Init(SteamClient steamClient, string webAPIUserNonce, string vanityURL) { @@ -123,6 +128,10 @@ namespace ArchiSteamFarm { } internal List GetTradeOffers() { + if (ApiKey == null) { + return null; + } + KeyValue response; using (dynamic iEconService = WebAPI.GetInterface("IEconService")) { // Timeout @@ -212,6 +221,10 @@ namespace ArchiSteamFarm { } internal bool DeclineTradeOffer(ulong tradeID) { + if (ApiKey == null) { + return false; + } + if (tradeID == 0) { return false; } diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 2fb2c5057..9114e295a 100644 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -187,6 +187,9 @@ namespace ArchiSteamFarm { if (callback == null) { return; } + if (SteamClient == null) { + return; + } Logging.LogGenericWarning(BotName, "Disconnected from Steam, reconnecting..."); Thread.Sleep(TimeSpan.FromMilliseconds(CallbackSleep)); @@ -278,7 +281,12 @@ namespace ArchiSteamFarm { break; case EResult.OK: Logging.LogGenericInfo(BotName, "Successfully logged on!"); - SteamFriends.SetPersonaName(SteamNickname); + + string steamNickname = SteamNickname; + if (!string.IsNullOrEmpty(steamNickname) && !steamNickname.Equals("null")) { + SteamFriends.SetPersonaName(steamNickname); + } + ArchiWebHandler.Init(SteamClient, callback.WebAPIUserNonce, callback.VanityURL); ulong clanID = SteamMasterClanID; @@ -288,12 +296,17 @@ namespace ArchiSteamFarm { await CardsFarmer.StartFarming().ConfigureAwait(false); break; - default: + case EResult.Timeout: + case EResult.TryAnotherCM: Logging.LogGenericWarning(BotName, "Unable to login to Steam: " + callback.Result + " / " + callback.ExtendedResult + ", retrying..."); Stop(); Thread.Sleep(5000); Start(); break; + default: + Logging.LogGenericWarning(BotName, "Unable to login to Steam: " + callback.Result + " / " + callback.ExtendedResult); + Stop(); + break; } } diff --git a/ArchiSteamFarm/CardsFarmer.cs b/ArchiSteamFarm/CardsFarmer.cs index 78128cf10..971133d56 100644 --- a/ArchiSteamFarm/CardsFarmer.cs +++ b/ArchiSteamFarm/CardsFarmer.cs @@ -40,6 +40,7 @@ namespace ArchiSteamFarm { } internal async Task StartFarming() { + Logging.LogGenericInfo(Bot.BotName, "Checking badges..."); // Find the number of badge pages HtmlDocument badgesDocument = await Bot.ArchiWebHandler.GetBadgePage(1).ConfigureAwait(false); if (badgesDocument == null) { @@ -64,7 +65,7 @@ namespace ArchiSteamFarm { HtmlNodeCollection badgesPageNodes = badgesDocument.DocumentNode.SelectNodes("//a[@class='btn_green_white_innerfade btn_small_thin']"); if (badgesPageNodes == null) { - break; + continue; } foreach (HtmlNode badgesPageNode in badgesPageNodes) { @@ -86,6 +87,7 @@ namespace ArchiSteamFarm { // Start farming while (appIDs.Count > 0) { + Logging.LogGenericInfo(Bot.BotName, "Farming in progress..."); uint appID = appIDs[0]; if (await Farm(appID).ConfigureAwait(false)) { appIDs.Remove(appID); @@ -93,6 +95,8 @@ namespace ArchiSteamFarm { break; } } + + Logging.LogGenericInfo(Bot.BotName, "Farming finished!"); } private async Task ShouldFarm(ulong appID) { @@ -119,6 +123,7 @@ namespace ArchiSteamFarm { while (keepFarming == null || keepFarming.Value) { if (!NowFarming) { NowFarming = true; + Logging.LogGenericInfo(Bot.BotName, "Now farming: " + appID); Bot.PlayGame(appID); } if (AutoResetEvent.WaitOne(1000 * 60 * StatusCheckSleep)) { @@ -128,6 +133,7 @@ namespace ArchiSteamFarm { keepFarming = await ShouldFarm(appID).ConfigureAwait(false); } + Logging.LogGenericInfo(Bot.BotName, "Stopped farming: " + appID); Bot.PlayGame(0); NowFarming = false; return success; diff --git a/ArchiSteamFarm/Logging.cs b/ArchiSteamFarm/Logging.cs index 0f5c7fa60..c74101894 100644 --- a/ArchiSteamFarm/Logging.cs +++ b/ArchiSteamFarm/Logging.cs @@ -28,7 +28,9 @@ using System.Runtime.CompilerServices; namespace ArchiSteamFarm { internal static class Logging { private static void Log(string message) { - Console.WriteLine(DateTime.Now + " " + message); + lock (Program.ConsoleLock) { + Console.WriteLine(DateTime.Now + " " + message); + } } internal static void LogGenericError(string botName, string message, [CallerMemberName] string previousMethodName = "") { diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index a85a27a9d..ce8e5254d 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -39,14 +39,16 @@ namespace ArchiSteamFarm { } internal static string GetSteamGuardCode(string botLogin, bool twoFactorAuthentication) { + string result; lock (ConsoleLock) { if (twoFactorAuthentication) { Console.Write("<" + botLogin + "> Please enter your 2 factor auth code from your authenticator app: "); } else { Console.Write("<" + botLogin + "> Please enter the auth code sent to your email : "); } - return Console.ReadLine(); + result = Console.ReadLine(); } + return result; } private static void ShutdownAllBots() { diff --git a/ArchiSteamFarm/config/example.xml b/ArchiSteamFarm/config/example.xml index ffe2fe288..34aa8de54 100644 --- a/ArchiSteamFarm/config/example.xml +++ b/ArchiSteamFarm/config/example.xml @@ -3,14 +3,25 @@ - + + - - - - - - - + + - + + + + + + + + + + + + + + + + \ No newline at end of file