diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 8841cc008..27b97b05b 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -41,6 +41,7 @@ namespace ArchiSteamFarm { internal readonly string BotName; + private bool LoggedInElsewhere = false; private bool IsRunning = false; private string AuthCode, TwoFactorAuth; @@ -402,6 +403,8 @@ namespace ArchiSteamFarm { return; } + await CardsFarmer.StopFarming().ConfigureAwait(false); + Logging.LogGenericWarning(BotName, "Disconnected from Steam, reconnecting..."); // 2FA tokens are expiring soon, use limiter only when we don't have any pending @@ -409,6 +412,12 @@ namespace ArchiSteamFarm { await Program.LimitSteamRequestsAsync().ConfigureAwait(false); } + if (LoggedInElsewhere) { + LoggedInElsewhere = false; + Logging.LogGenericWarning(BotName, "Account is being used elsewhere, will try reconnecting in 15 minutes..."); + await Utilities.SleepAsync(15 * 60 * 1000).ConfigureAwait(false); + } + SteamClient.Connect(); } @@ -519,6 +528,14 @@ namespace ArchiSteamFarm { } Logging.LogGenericInfo(BotName, "Logged off of Steam: " + callback.Result); + + switch (callback.Result) { + case EResult.AlreadyLoggedInElsewhere: + case EResult.LoggedInElsewhere: + case EResult.LogonSessionReplaced: + LoggedInElsewhere = true; + break; + } } private async void OnLoggedOn(SteamUser.LoggedOnCallback callback) { diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index 8b469bf1b..92cb1a8a6 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -74,14 +74,15 @@ namespace ArchiSteamFarm { return; } - ulong otherSteamID = tradeOffer.OtherSteamID64; - bool success = false; - bool tradeAccepted = false; + bool success, tradeAccepted; - if (tradeOffer.items_to_give.Count == 0 || otherSteamID == Bot.SteamMasterID) { + if (tradeOffer.items_to_give.Count == 0 || tradeOffer.OtherSteamID64 == Bot.SteamMasterID) { tradeAccepted = true; + Logging.LogGenericInfo(Bot.BotName, "Accepting trade: " + tradeID); success = await Bot.ArchiWebHandler.AcceptTradeOffer(tradeID).ConfigureAwait(false); } else { + tradeAccepted = false; + Logging.LogGenericInfo(Bot.BotName, "Rejecting trade: " + tradeID); success = Bot.ArchiWebHandler.DeclineTradeOffer(tradeID); }