diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 1869efefd..ae6bcbe62 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -1885,18 +1885,24 @@ namespace ArchiSteamFarm { } foreach (SteamFriends.FriendsListCallback.Friend friend in callback.FriendList.Where(friend => friend.Relationship == EFriendRelationship.RequestRecipient)) { - if (friend.SteamID.AccountType == EAccountType.Clan) { - if (IsMasterClanID(friend.SteamID)) { + switch (friend.SteamID.AccountType) { + case EAccountType.Clan when IsMasterClanID(friend.SteamID): ArchiHandler.AcceptClanInvite(friend.SteamID, true); - } else if (BotConfig.IsBotAccount) { - ArchiHandler.AcceptClanInvite(friend.SteamID, false); - } - } else { - if (IsFamilySharing(friend.SteamID)) { - SteamFriends.AddFriend(friend.SteamID); - } else if (BotConfig.IsBotAccount) { - SteamFriends.RemoveFriend(friend.SteamID); - } + break; + case EAccountType.Clan: + if (BotConfig.IsBotAccount) { + ArchiHandler.AcceptClanInvite(friend.SteamID, false); + } + + break; + default: + if (IsFamilySharing(friend.SteamID)) { + SteamFriends.AddFriend(friend.SteamID); + } else if (BotConfig.IsBotAccount) { + SteamFriends.RemoveFriend(friend.SteamID); + } + + break; } } } diff --git a/ArchiSteamFarm/GlobalDatabase.cs b/ArchiSteamFarm/GlobalDatabase.cs index 4bed70d53..92b2a7cab 100644 --- a/ArchiSteamFarm/GlobalDatabase.cs +++ b/ArchiSteamFarm/GlobalDatabase.cs @@ -74,7 +74,7 @@ namespace ArchiSteamFarm { return null; } - return new HashSet(PackagesData.Where(package => (package.Value.AppIDs != null) && package.Value.AppIDs.Contains(appID)).Select(package => package.Key)); + return new HashSet(PackagesData.Where(package => package.Value.AppIDs?.Contains(appID) == true).Select(package => package.Key)); } internal static GlobalDatabase Load(string filePath) { diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index 56ebf786a..b17c15b86 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -239,28 +239,28 @@ namespace ArchiSteamFarm { } // Check if it's donation trade - if (tradeOffer.ItemsToGive.Count == 0) { - // If it's steam fuckup, temporarily ignore it, otherwise react accordingly, depending on our preference - if (tradeOffer.ItemsToReceive.Count == 0) { + switch (tradeOffer.ItemsToGive.Count) { + case 0 when tradeOffer.ItemsToReceive.Count == 0: + // If it's steam fuckup, temporarily ignore it return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.RejectedTemporarily); - } + case 0: + // Otherwise react accordingly, depending on our preference + bool acceptDonations = Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.AcceptDonations); + bool acceptBotTrades = !Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.DontAcceptBotTrades); - bool acceptDonations = Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.AcceptDonations); - bool acceptBotTrades = !Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.DontAcceptBotTrades); + // If we accept donations and bot trades, accept it right away + if (acceptDonations && acceptBotTrades) { + return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.AcceptedWithoutItemLose); + } - // If we accept donations and bot trades, accept it right away - if (acceptDonations && acceptBotTrades) { - return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.AcceptedWithoutItemLose); - } + // If we don't accept donations, neither bot trades, deny it right away + if (!acceptDonations && !acceptBotTrades) { + return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.RejectedPermanently); + } - // If we don't accept donations, neither bot trades, deny it right away - if (!acceptDonations && !acceptBotTrades) { - return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.RejectedPermanently); - } - - // Otherwise we either accept donations but not bot trades, or we accept bot trades but not donations - bool isBotTrade = (tradeOffer.OtherSteamID64 != 0) && Bot.Bots.Values.Any(bot => bot.CachedSteamID == tradeOffer.OtherSteamID64); - return new ParseTradeResult(tradeOffer.TradeOfferID, (acceptDonations && !isBotTrade) || (acceptBotTrades && isBotTrade) ? ParseTradeResult.EResult.AcceptedWithoutItemLose : ParseTradeResult.EResult.RejectedPermanently); + // Otherwise we either accept donations but not bot trades, or we accept bot trades but not donations + bool isBotTrade = (tradeOffer.OtherSteamID64 != 0) && Bot.Bots.Values.Any(bot => bot.CachedSteamID == tradeOffer.OtherSteamID64); + return new ParseTradeResult(tradeOffer.TradeOfferID, (acceptDonations && !isBotTrade) || (acceptBotTrades && isBotTrade) ? ParseTradeResult.EResult.AcceptedWithoutItemLose : ParseTradeResult.EResult.RejectedPermanently); } // If we don't have SteamTradeMatcher enabled, this is the end for us