From d68bb01174f3f666e7c63215f0f81d9de588f6a6 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Mon, 27 Jun 2016 01:45:41 +0200 Subject: [PATCH] Add MaxTradeHoldDuration --- ArchiSteamFarm/GlobalConfig.cs | 3 +++ ArchiSteamFarm/Trading.cs | 17 ++++++++++------- ArchiSteamFarm/config/ASF.json | 1 + ConfigGenerator/GlobalConfig.cs | 3 +++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ArchiSteamFarm/GlobalConfig.cs b/ArchiSteamFarm/GlobalConfig.cs index 9d9790f2e..55ba9ec40 100644 --- a/ArchiSteamFarm/GlobalConfig.cs +++ b/ArchiSteamFarm/GlobalConfig.cs @@ -89,6 +89,9 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal byte GiftsLimiterDelay { get; private set; } = 1; + [JsonProperty(Required = Required.DisallowNull)] + internal byte MaxTradeHoldDuration { get; private set; } = 15; + [JsonProperty(Required = Required.DisallowNull)] internal bool ForceHttp { get; private set; } = false; diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index 729a299a2..6b02427a3 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -185,14 +185,17 @@ namespace ArchiSteamFarm { // At this point we're sure that STM trade is valid - // If we're dealing with special cards with short lifespan, accept the trade only if user doesn't have trade holds - if (tradeOffer.ItemsToGive.Any(item => GlobalConfig.GlobalBlacklist.Contains(item.RealAppID))) { - byte? holdDuration = await Bot.ArchiWebHandler.GetTradeHoldDuration(tradeOffer.TradeOfferID).ConfigureAwait(false); - if (!holdDuration.HasValue) { - return ParseTradeResult.RejectedTemporarily; - } + // Fetch trade hold duration + byte? holdDuration = await Bot.ArchiWebHandler.GetTradeHoldDuration(tradeOffer.TradeOfferID).ConfigureAwait(false); + if (!holdDuration.HasValue) { + // If we can't get trade hold duration, reject trade temporarily + return ParseTradeResult.RejectedTemporarily; + } - if (holdDuration.Value > 0) { + // If user has a trade hold, we add extra logic + if (holdDuration.Value > 0) { + // If trade hold duration exceeds our max, or user asks for cards with short lifespan, reject the trade + if ((holdDuration.Value > Program.GlobalConfig.MaxTradeHoldDuration) || tradeOffer.ItemsToGive.Any(item => GlobalConfig.GlobalBlacklist.Contains(item.RealAppID))) { return ParseTradeResult.RejectedPermanently; } } diff --git a/ArchiSteamFarm/config/ASF.json b/ArchiSteamFarm/config/ASF.json index 9ca70f6b6..4e5481029 100644 --- a/ArchiSteamFarm/config/ASF.json +++ b/ArchiSteamFarm/config/ASF.json @@ -12,6 +12,7 @@ "LoginLimiterDelay": 10, "InventoryLimiterDelay": 3, "GiftsLimiterDelay": 1, + "MaxTradeHoldDuration": 15, "ForceHttp": false, "HttpTimeout": 60, "WCFHostname": "localhost", diff --git a/ConfigGenerator/GlobalConfig.cs b/ConfigGenerator/GlobalConfig.cs index 3796dd0c4..dc4cf58c4 100644 --- a/ConfigGenerator/GlobalConfig.cs +++ b/ConfigGenerator/GlobalConfig.cs @@ -89,6 +89,9 @@ namespace ConfigGenerator { [JsonProperty(Required = Required.DisallowNull)] public byte GiftsLimiterDelay { get; set; } = 1; + [JsonProperty(Required = Required.DisallowNull)] + public byte MaxTradeHoldDuration { get; set; } = 15; + [JsonProperty(Required = Required.DisallowNull)] public bool ForceHttp { get; set; } = false;