diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs index 18d8733aa..ff5755c79 100644 --- a/ArchiSteamFarm/ArchiWebHandler.cs +++ b/ArchiSteamFarm/ArchiWebHandler.cs @@ -35,6 +35,7 @@ using HtmlAgilityPack; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SteamKit2; +using Formatting = Newtonsoft.Json.Formatting; namespace ArchiSteamFarm { internal sealed class ArchiWebHandler : IDisposable { @@ -847,7 +848,7 @@ namespace ArchiSteamFarm { { "partner", partnerID.ToString() }, { "tradeoffermessage", "Sent by ASF" }, { "json_tradeoffer", JsonConvert.SerializeObject(trade) }, - { "trade_offer_create_params", string.IsNullOrEmpty(token) ? "" : new JObject { { "trade_offer_access_token", token } }.ToString(Newtonsoft.Json.Formatting.None) } + { "trade_offer_create_params", string.IsNullOrEmpty(token) ? "" : new JObject { { "trade_offer_access_token", token } }.ToString(Formatting.None) } })) { if (!await WebBrowser.UrlPostRetry(request, data, referer).ConfigureAwait(false)) { return false; diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 654a395a3..7aec73ee1 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -56,12 +56,13 @@ namespace ArchiSteamFarm { internal readonly ArchiWebHandler ArchiWebHandler; internal readonly string BotName; - internal bool HasMobileAuthenticator => BotDatabase.MobileAuthenticator != null; - internal bool IsConnectedAndLoggedOn => SteamClient.IsConnected && (SteamClient.SteamID != null); + internal bool HasMobileAuthenticator => BotDatabase?.MobileAuthenticator != null; + internal bool HasValidApiKey => !string.IsNullOrEmpty(BotConfig?.SteamApiKey) && (BotConfig.SteamApiKey.Length == 32); + internal bool IsConnectedAndLoggedOn => (SteamClient?.IsConnected == true) && (SteamClient.SteamID != null); internal bool IsPlayingPossible => !PlayingBlocked && (LibraryLockedBySteamID == 0); [JsonProperty] - internal ulong SteamID => SteamClient.SteamID ?? 0; + internal ulong SteamID => SteamClient?.SteamID ?? 0; private readonly BotDatabase BotDatabase; private readonly CallbackManager CallbackManager; @@ -1713,7 +1714,7 @@ namespace ArchiSteamFarm { } Dictionary ownedGames; - if (!string.IsNullOrEmpty(BotConfig.SteamApiKey)) { + if (HasValidApiKey) { ownedGames = ArchiWebHandler.GetOwnedGames(SteamClient.SteamID); } else { ownedGames = await ArchiWebHandler.GetOwnedGames().ConfigureAwait(false); diff --git a/ArchiSteamFarm/Statistics.cs b/ArchiSteamFarm/Statistics.cs index 8627ffd67..182cd3c6f 100644 --- a/ArchiSteamFarm/Statistics.cs +++ b/ArchiSteamFarm/Statistics.cs @@ -83,7 +83,7 @@ namespace ArchiSteamFarm { const string request = SharedInfo.StatisticsServer + "/api/LoggedOn"; Dictionary data = new Dictionary(4) { { "SteamID", Bot.SteamID.ToString() }, - { "HasMobileAuthenticator", Bot.HasMobileAuthenticator ? "1" : "0" }, + { "HasAutomatedTrading", Bot.HasMobileAuthenticator && Bot.HasValidApiKey ? "1" : "0" }, { "SteamTradeMatcher", Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.SteamTradeMatcher) ? "1" : "0" }, { "MatchEverything", Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.MatchEverything) ? "1" : "0" } }; diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index b41ebafba..364461b4a 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -90,7 +90,7 @@ namespace ArchiSteamFarm { internal void OnDisconnected() => IgnoredTrades.ClearAndTrim(); private async Task ParseActiveTrades() { - if (string.IsNullOrEmpty(Bot.BotConfig.SteamApiKey)) { + if (!Bot.HasValidApiKey) { return; } diff --git a/resources/Statistics.mwb b/resources/Statistics.mwb index 1f96f222d..7fba13438 100644 Binary files a/resources/Statistics.mwb and b/resources/Statistics.mwb differ diff --git a/resources/Statistics.mwb.bak b/resources/Statistics.mwb.bak index da2cd2e7c..1f96f222d 100644 Binary files a/resources/Statistics.mwb.bak and b/resources/Statistics.mwb.bak differ