From 3a0afba85837caf24fc8ffe7d9ffd501885a56b4 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Thu, 5 Jan 2017 01:49:58 +0100 Subject: [PATCH] Add unused keys response --- ArchiSteamFarm/Bot.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 9584e9f01..7e4461dfd 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -2083,7 +2083,9 @@ namespace ArchiSteamFarm { bool distribute = !redeemFlags.HasFlag(ERedeemFlags.SkipDistribution) && (redeemFlags.HasFlag(ERedeemFlags.ForceDistribution) || BotConfig.RedeemingPreferences.HasFlag(BotConfig.ERedeemingPreferences.Distributing)); message = message.Replace(",", Environment.NewLine); + HashSet unusedKeys = new HashSet(); StringBuilder response = new StringBuilder(); + using (StringReader reader = new StringReader(message)) { using (IEnumerator enumerator = Bots.OrderBy(bot => bot.Key).Select(bot => bot.Value).GetEnumerator()) { string key = reader.ReadLine(); @@ -2094,6 +2096,8 @@ namespace ArchiSteamFarm { continue; // Keep current bot } + unusedKeys.Add(key); + if ((redeemFlags.HasFlag(ERedeemFlags.SkipInitial) && (currentBot == this)) || !currentBot.IsConnectedAndLoggedOn) { currentBot = null; // Either bot will be changed, or loop aborted } else { @@ -2117,6 +2121,10 @@ namespace ArchiSteamFarm { response.Append(Environment.NewLine + "<" + currentBot.BotName + "> Key: " + key + " | Status: " + result.PurchaseResult + ((result.Items != null) && (result.Items.Count > 0) ? " | Items: " + string.Join("", result.Items) : "")); + if (result.PurchaseResult == ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK) { + unusedKeys.Remove(key); + } + key = reader.ReadLine(); // Next key if (result.PurchaseResult == ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK) { @@ -2155,6 +2163,11 @@ namespace ArchiSteamFarm { case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.InvalidKey: case ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK: alreadyHandled = true; // This key is already handled, as we either redeemed it or we're sure it's dupe/invalid + + if (otherResult.PurchaseResult == ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK) { + unusedKeys.Remove(key); + } + break; } @@ -2190,7 +2203,11 @@ namespace ArchiSteamFarm { } } - return response.Length == 0 ? null : response.ToString(); + if (unusedKeys.Count > 0) { + response.Append(Environment.NewLine + "Unused keys: " + string.Join(", ", unusedKeys)); + } + + return response.Length > 0 ? response.ToString() : null; } private static async Task ResponseRedeem(ulong steamID, string botName, string message, ERedeemFlags redeemFlags = ERedeemFlags.None) {