From aae41d5c1f0c3330eb5db9a331f444fba5851c7b Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sat, 4 Jun 2016 22:02:38 +0200 Subject: [PATCH] Add IsBotAccount + misc --- ArchiSteamFarm.sln.DotSettings | 17 +++++++++++++++ ArchiSteamFarm/ArchiWebHandler.cs | 35 +++++++++++++++++++++++++++++- ArchiSteamFarm/Bot.cs | 7 +++--- ArchiSteamFarm/BotConfig.cs | 3 +++ ArchiSteamFarm/Trading.cs | 3 +++ ArchiSteamFarm/config/example.json | 1 + ConfigGenerator/BotConfig.cs | 3 +++ 7 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 ArchiSteamFarm.sln.DotSettings diff --git a/ArchiSteamFarm.sln.DotSettings b/ArchiSteamFarm.sln.DotSettings new file mode 100644 index 000000000..f28f7b744 --- /dev/null +++ b/ArchiSteamFarm.sln.DotSettings @@ -0,0 +1,17 @@ + + API + ASF + FA + FS + ID + OK + PIN + SC + SMS + TTL + URL + WCF + WTF + XML + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="_" Suffix="" Style="AaBb" /><ExtraRule Prefix="_" Suffix="" Style="aaBb" /></Policy> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="_" Suffix="" Style="aaBb" /></Policy> \ No newline at end of file diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs index cb36cf270..1cee1eaa9 100644 --- a/ArchiSteamFarm/ArchiWebHandler.cs +++ b/ArchiSteamFarm/ArchiWebHandler.cs @@ -308,7 +308,7 @@ namespace ArchiSteamFarm { } if (response == null) { - Logging.LogGenericWTF("Request failed even after " + WebBrowser.MaxRetries + " tries"); + Logging.LogGenericWTF("Request failed even after " + WebBrowser.MaxRetries + " tries", Bot.BotName); return null; } @@ -464,6 +464,39 @@ namespace ArchiSteamFarm { return await WebBrowser.UrlPostRetry(request, data, referer).ConfigureAwait(false); } + internal bool DeclineTradeOffer(ulong tradeID) { + if ((tradeID == 0) || string.IsNullOrEmpty(Bot.BotConfig.SteamApiKey)) { + // TODO: Correct this when Mono 4.4+ will be a latest stable one | https://bugzilla.xamarin.com/show_bug.cgi?id=39455 + Logging.LogNullError("tradeID || SteamApiKey", Bot.BotName); + //Logging.LogNullError(nameof(tradeID) + " || " + nameof(Bot.BotConfig.SteamApiKey), Bot.BotName); + return false; + } + + KeyValue response = null; + using (dynamic iEconService = WebAPI.GetInterface("IEconService", Bot.BotConfig.SteamApiKey)) { + iEconService.Timeout = Timeout; + + for (byte i = 0; i < WebBrowser.MaxRetries && response == null; i++) { + try { + response = iEconService.DeclineTradeOffer( + tradeofferid: tradeID.ToString(), + method: WebRequestMethods.Http.Post, + secure: !Program.GlobalConfig.ForceHttp + ); + } catch (Exception e) { + Logging.LogGenericException(e, Bot.BotName); + } + } + } + + if (response == null) { + Logging.LogGenericWTF("Request failed even after " + WebBrowser.MaxRetries + " tries", Bot.BotName); + return false; + } + + return true; + } + internal async Task> GetMyTradableInventory() { if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) { return null; diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 15cfc4a7f..61445eb2b 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -1704,11 +1704,12 @@ namespace ArchiSteamFarm { // TODO: Accept clan invites from master? break; default: - if (!IsMaster(friend.SteamID)) { - break; + if (IsMaster(friend.SteamID)) { + SteamFriends.AddFriend(friend.SteamID); + } else if (BotConfig.IsBotAccount) { + SteamFriends.RemoveFriend(friend.SteamID); } - SteamFriends.AddFriend(friend.SteamID); break; } } diff --git a/ArchiSteamFarm/BotConfig.cs b/ArchiSteamFarm/BotConfig.cs index bc1c2a102..85e733361 100644 --- a/ArchiSteamFarm/BotConfig.cs +++ b/ArchiSteamFarm/BotConfig.cs @@ -70,6 +70,9 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal bool AcceptGifts { get; private set; } = false; + [JsonProperty(Required = Required.DisallowNull)] + internal bool IsBotAccount { get; private set; } = false; + [JsonProperty(Required = Required.DisallowNull)] internal bool SteamTradeMatcher { get; private set; } = false; diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index 1cf97d071..639659c39 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -111,6 +111,9 @@ namespace ArchiSteamFarm { if (await ShouldAcceptTrade(tradeOffer).ConfigureAwait(false)) { Logging.LogGenericInfo("Accepting trade: " + tradeOffer.TradeOfferID, Bot.BotName); await Bot.ArchiWebHandler.AcceptTradeOffer(tradeOffer.TradeOfferID).ConfigureAwait(false); + } else if (Bot.BotConfig.IsBotAccount) { + Logging.LogGenericInfo("Rejecting trade: " + tradeOffer.TradeOfferID, Bot.BotName); + Bot.ArchiWebHandler.DeclineTradeOffer(tradeOffer.TradeOfferID); } else { Logging.LogGenericInfo("Ignoring trade: " + tradeOffer.TradeOfferID, Bot.BotName); } diff --git a/ArchiSteamFarm/config/example.json b/ArchiSteamFarm/config/example.json index ecf28878c..c027773bd 100644 --- a/ArchiSteamFarm/config/example.json +++ b/ArchiSteamFarm/config/example.json @@ -12,6 +12,7 @@ "FarmOffline": false, "HandleOfflineMessages": false, "AcceptGifts": false, + "IsBotAccount": false, "SteamTradeMatcher": false, "ForwardKeysToOtherBots": false, "DistributeKeys": false, diff --git a/ConfigGenerator/BotConfig.cs b/ConfigGenerator/BotConfig.cs index 3efe4b987..e59063e39 100644 --- a/ConfigGenerator/BotConfig.cs +++ b/ConfigGenerator/BotConfig.cs @@ -71,6 +71,9 @@ namespace ConfigGenerator { [JsonProperty(Required = Required.DisallowNull)] public bool AcceptGifts { get; set; } = false; + [JsonProperty(Required = Required.DisallowNull)] + public bool IsBotAccount { get; set; } = false; + [JsonProperty(Required = Required.DisallowNull)] public bool SteamTradeMatcher { get; set; } = false;