diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index fa1df1477..180ad6791 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -93,6 +93,7 @@ namespace ArchiSteamFarm { internal bool HasMobileAuthenticator => BotDatabase.MobileAuthenticator != null; internal bool IsConnectedAndLoggedOn => SteamClient.IsConnected && (SteamClient.SteamID != null); internal bool IsFarmingPossible => !PlayingBlocked && (LibraryLockedBySteamID == 0); + internal ulong SteamID => SteamClient.SteamID; private bool FirstTradeSent, PlayingBlocked, SkipFirstShutdown; private string AuthCode, TwoFactorCode; diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index 1744b8cdc..ac896a8f6 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -107,7 +107,7 @@ namespace ArchiSteamFarm { } private async Task ParseActiveTrades() { - if ((Bot.BotConfig.TradingPreferences == BotConfig.ETradingPreferences.None) || string.IsNullOrEmpty(Bot.BotConfig.SteamApiKey)) { + if (string.IsNullOrEmpty(Bot.BotConfig.SteamApiKey)) { return; } @@ -186,6 +186,11 @@ namespace ArchiSteamFarm { return null; } + // Always accept trades from SteamMasterID + if ((tradeOffer.OtherSteamID64 != 0) && (tradeOffer.OtherSteamID64 == Bot.BotConfig.SteamMasterID)) { + return new ParseTradeResult(tradeOffer.TradeOfferID, tradeOffer.ItemsToGive.Count > 0 ? ParseTradeResult.EResult.AcceptedWithItemLose : ParseTradeResult.EResult.AcceptedWithoutItemLose); + } + // Check if it's donation trade if (tradeOffer.ItemsToGive.Count == 0) { ParseTradeResult.EResult donationResult; @@ -193,7 +198,7 @@ namespace ArchiSteamFarm { // If it's steam fuckup, temporarily ignore it, otherwise react accordingly, depending on our preference if (tradeOffer.ItemsToReceive.Count == 0) { donationResult = ParseTradeResult.EResult.RejectedTemporarily; - } else if (Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.AcceptDonations)) { + } else if (Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.AcceptDonations) || ((tradeOffer.OtherSteamID64 != 0) && Bot.Bots.Values.Any(bot => bot.SteamID == tradeOffer.OtherSteamID64))) { donationResult = ParseTradeResult.EResult.AcceptedWithoutItemLose; } else { donationResult = ParseTradeResult.EResult.RejectedPermanently; @@ -202,11 +207,6 @@ namespace ArchiSteamFarm { return new ParseTradeResult(tradeOffer.TradeOfferID, donationResult); } - // Always accept trades from SteamMasterID - if ((tradeOffer.OtherSteamID64 != 0) && (tradeOffer.OtherSteamID64 == Bot.BotConfig.SteamMasterID)) { - return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.AcceptedWithItemLose); - } - // If we don't have SteamTradeMatcher enabled, this is the end for us if (!Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.SteamTradeMatcher)) { return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.RejectedPermanently);