public void SendNotification(PokeRoutineExecutor routine, PokeTradeDetail <T> info, string message) { if (message.TryStringBetweenStrings("Trading Partner: ", ". Waiting for", out var trainerName)) { OtherTrainer = trainerName; NotifyServerOfState(WebTradeState.FoundTrainer, new KeyValuePair <string, string>("option", trainerName)); } if (message.TryStringBetweenStrings("Link Trade Code: ", "...", out var code)) { NotifyServerOfState(WebTradeState.TypingCode, new KeyValuePair <string, string>("option", code)); } if (message.Contains("Unable to calculate seeds: ")) { NotifyServerOfState(WebTradeState.Finished, new KeyValuePair <string, string>("option", OtherTrainer + ": " + message.Replace("Unable to calculate seeds: ", "Seedcheck failure! "))); } if (message.Contains("This Pokémon is already shiny!")) { NotifyServerOfState(WebTradeState.Finished, new KeyValuePair <string, string>("option", OtherTrainer + ": I can't Seedcheck a shiny Pokémon!")); } if (message.StartsWith("SSR")) { NotifyServerOfState(WebTradeState.Finished, new KeyValuePair <string, string>("option", OtherTrainer + ": " + message.Substring(3))); } }
public void TradeCanceled(PokeRoutineExecutor routine, PokeTradeDetail <T> info, PokeTradeResult msg) { if (Hub.Config.Trade.EggRaffle && info.TradeData.IsEgg) { System.IO.StreamReader reader = new System.IO.StreamReader("EggRngBlacklist.txt"); var content = reader.ReadToEnd(); reader.Close(); var id = System.Text.RegularExpressions.Regex.Match(Context.User.Mention, @"\D*(\d*)", System.Text.RegularExpressions.RegexOptions.Multiline).Groups[1].Value; var parse = System.Text.RegularExpressions.Regex.Match(content, @"(" + id + @") - (\S*\ \S*\ \w*)", System.Text.RegularExpressions.RegexOptions.Multiline); if (content.Contains(id)) { content = content.Replace(parse.Groups[0].Value, $"{id} - 1/11/2000 12:00:00 AM").TrimEnd(); System.IO.StreamWriter writer = new System.IO.StreamWriter("EggRngBlacklist.txt"); writer.WriteLine(content); writer.Close(); OnFinish?.Invoke(routine); Context.User.SendMessageAsync($"Trade canceled: {msg}. EggRaffle cooldown was reset.").ConfigureAwait(false); } } else { OnFinish?.Invoke(routine); Context.User.SendMessageAsync($"Trade canceled: {msg}").ConfigureAwait(false); } }
public void TradeSearching(PokeRoutineExecutor routine, PokeTradeDetail <T> info) { var name = Info.TrainerName; var trainer = string.IsNullOrEmpty(name) ? string.Empty : $", {name}"; Context.User.SendMessageAsync($"I'm searching for you{trainer}! Your code is {Code:0000}.").ConfigureAwait(false); }
public void TradeSearching(PokeRoutineExecutor routine, PokeTradeDetail <T> info) { var name = Info.TrainerName; var trainer = string.IsNullOrEmpty(name) ? string.Empty : $", {name}"; Client.SendWhisper(Username, $"I'm searching for you{trainer}! Use the code you whispered me to search!"); }
public void TradeFinished(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result) { var message = Data.Species != 0 ? $"Trade finished {Username}. Enjoy your {(Species)Data.Species}!" : "Trade finished. Enjoy your Pokemon!"; Client.SendMessage(Channel, message); OnFinish?.Invoke(routine); }
public void TradeSearching(PokeRoutineExecutor <T> routine, PokeTradeDetail <T> info) { var name = Info.TrainerName; var trainer = string.IsNullOrEmpty(name) ? string.Empty : $", {name}"; Trader.SendMessageAsync($"I'm waiting for you{trainer}! Your code is **{Code:0000 0000}**. My IGN is **{routine.InGameName}**.").ConfigureAwait(false); }
public void TradeFinished(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result) { OnFinish?.Invoke(routine); var tradedToUser = Data.Species; string message = tradedToUser != 0 ? $"Trade finished. Enjoy your {(Species)tradedToUser}!" : "Trade finished!"; Context.User.SendMessageAsync(message).ConfigureAwait(false); if (result.Species != 0 && Hub.Config.Discord.ReturnPK8s) { Context.User.SendPKMAsync(result, "Here's what you traded me!").ConfigureAwait(false); } if (info.Type == PokeTradeType.TradeCord) { var user = Context.User.Id.ToString(); var original = TradeExtensions.TradeCordPath.FirstOrDefault(x => x.Contains(user)); TradeExtensions.TradeCordPath.Remove(original); try { System.IO.File.Move(original, System.IO.Path.Combine($"TradeCord\\Backup\\{user}", original.Split('\\')[2])); } catch (Exception ex) { Base.LogUtil.LogText("Error occurred: " + ex.InnerException); TradeExtensions.TradeCordPath.RemoveAll(x => x.Contains(user)); } } }
public void SendNotification(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result, string message) { if (result.Species != 0 && (Hub.Config.Discord.ReturnPK8s || info.Type == PokeTradeType.Dump)) { Trader.SendPKMAsync(result, message).ConfigureAwait(false); } }
private bool AddToTradeQueue(PK8 pk8, int code, IUser user, RequestSignificance sig, PokeRoutineType type, out string msg) { // var user = e.WhisperMessage.UserId; var userID = (ulong)user.Id; var name = user.ScreenName; var trainer = new PokeTradeTrainerInfo(name); var notifier = new TwitterTradeNotifier <PK8>(pk8, trainer, code, name, client, user, Hub.Config.Twitter); var tt = type == PokeRoutineType.SeedCheck ? PokeTradeType.Seed : PokeTradeType.Specific; var detail = new PokeTradeDetail <PK8>(pk8, trainer, notifier, tt, code, sig == RequestSignificance.Favored); var trade = new TradeEntry <PK8>(detail, userID, type, name); var added = Info.AddToTradeQueue(trade, userID, sig == RequestSignificance.Sudo); if (added == QueueResultAdd.AlreadyInQueue) { msg = $"@{name}: Sorry, you are already in the queue."; return(false); } var position = Info.CheckPosition(userID, type); msg = $"@{name}: Added to the {type} queue, unique ID: {detail.ID}. Current Position: {position.Position}"; var botct = Info.Hub.Bots.Count; if (position.Position > botct) { var eta = Info.Hub.Config.Queues.EstimateDelay(position.Position, botct); msg += $". Estimated: {eta:F1} minutes."; } return(true); }
private bool AddToTradeQueue(PK8 pk8, int code, OnWhisperReceivedArgs e, bool sudo, PokeRoutineType type, out string msg) { // var user = e.WhisperMessage.UserId; var userID = ulong.Parse(e.WhisperMessage.UserId); var name = e.WhisperMessage.DisplayName; var trainer = new PokeTradeTrainerInfo(name); var notifier = new TwitchTradeNotifier <PK8>(pk8, trainer, code, e.WhisperMessage.Username, client, Channel, Hub.Config.Twitch); var tt = type == PokeRoutineType.SeedCheck ? PokeTradeType.Seed : PokeTradeType.Specific; var detail = new PokeTradeDetail <PK8>(pk8, trainer, notifier, tt, code: code); var trade = new TradeEntry <PK8>(detail, userID, type, name); var added = Info.AddToTradeQueue(trade, userID, sudo); if (added == QueueResultAdd.AlreadyInQueue) { msg = "Sorry, you are already in the queue."; return(false); } var position = Info.CheckPosition(userID, type); msg = $"@{name}: Added to the {type} queue, unique ID: {detail.ID}. Current Position: {position.Position}"; var botct = Info.Hub.Bots.Count; if (position.Position > botct) { var eta = Info.Hub.Config.Queues.EstimateDelay(position.Position, botct); msg += $". Estimated: {eta:F1} minutes."; } return(true); }
public void SendNotification(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result, string message) { if (result.Species != 0 && Hub.Config.Discord.ReturnPK8s) { Context.User.SendPKMAsync(result, message).ConfigureAwait(false); } }
public void SendNotification(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result, string message) { // Eat end detail messages var msg = $"Details for {result.FileName}: " + message; LogUtil.LogText(msg); }
public void SendNotification(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result, string message) { var msg = $"Details for {result.FileName}: " + message; LogUtil.LogText(msg); SendMessage(msg, Settings.NotifyDestination); }
public void TradeFinished(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result) { OnFinish?.Invoke(routine); var tradedToUser = Data.Species; string message; if (Data.IsEgg && info.Type == PokeTradeType.EggRoll) { message = tradedToUser != 0 ? $"Trade finished. Enjoy your Mysterious egg!" : "Trade finished!"; } else { message = tradedToUser != 0 ? $"Trade finished. Enjoy your {(Species)tradedToUser}!" : "Trade finished!"; } Context.User.SendMessageAsync(message).ConfigureAwait(false); if (result.Species != 0 && Hub.Config.Discord.ReturnPK8s) { Context.User.SendPKMAsync(result, "Here's what you traded me!").ConfigureAwait(false); } if (info.Type == PokeTradeType.EggRoll && Hub.Config.Trade.EggRollCooldown > 0) // Add cooldown if trade completed { var id = Context.User.Id.ToString(); var line = TradeExtensions.EggRollCooldown.FirstOrDefault(z => z.Contains(id)); if (line != null) { TradeExtensions.EggRollCooldown.Remove(TradeExtensions.EggRollCooldown.FirstOrDefault(z => z.Contains(id))); } TradeExtensions.EggRollCooldown.Add($"{id},{DateTime.Now}"); } }
private static TradeEntry <T> GetTestTrade <T>(int tag, bool favor) where T : PKM, new() { var d3 = new PokeTradeDetail <T>(new T { Species = tag }, new PokeTradeTrainerInfo($"{(favor ? "*" : "")}Test {tag}"), new PokeTradeLogNotifier <T>(), PokeTradeType.Specific, tag, favor); return(new TradeEntry <T>(d3, (ulong)tag, PokeRoutineType.LinkTrade, $"Test Trade {tag}")); }
public void TradeInitialize(PokeRoutineExecutor routine, PokeTradeDetail <T> info) { var receive = Data.Species == 0 ? string.Empty : $" ({Data.Nickname})"; var msg = $"@{info.Trainer.TrainerName} (ID: {info.ID}): Initializing trade{receive} with you. Your trade code is: {info.Code:0000 0000}"; LogUtil.LogText(msg); SendMessage(msg); }
public void TradeFinished(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result) { OnFinish?.Invoke(routine); var tradedToUser = Data.Species; var message = tradedToUser != 0 ? $"Trade finished. Enjoy your {(Species)tradedToUser}!" : "Trade finished!"; Client.SendMessage(Channel, message); }
private static TradeEntry <PK8> GetTestTrade(int tag, bool favor) { var d3 = new PokeTradeDetail <PK8>(new PK8 { Species = tag }, new PokeTradeTrainerInfo($"{(favor ? "*" : "")}Test {tag}"), new GiveawayPoolEntry(), new PokeTradeLogNotifier <PK8>(), PokeTradeType.Specific, tag, favor); return(new TradeEntry <PK8>(d3, (ulong)tag, PokeRoutineType.LinkTrade, $"Test Trade {tag}")); }
public void SendNotification(PokeRoutineExecutor routine, PokeTradeDetail <T> info, PokeTradeSummary message) { if (message.ExtraInfo is SeedSearchResult r) { NotifyServerOfTradeInfo(r); LogUtil.LogText($"Seed: {r.Seed:X16}"); } }
private static TradeEntry <PK8> GetTestTrade(int tag) { var d3 = new PokeTradeDetail <PK8>(new PK8 { Species = tag }, new PokeTradeTrainerInfo($"Test {tag}"), new PokeTradeLogNotifier <PK8>(), PokeTradeType.Specific, tag); return(new TradeEntry <PK8>(d3, (ulong)tag, PokeRoutineType.LinkTrade, $"Test Trade {tag}")); }
public void TradeCanceled(PokeRoutineExecutor routine, PokeTradeDetail <T> info, PokeTradeResult msg) { OnFinish?.Invoke(routine); var line = $"@{info.Trainer.TrainerName}: Trade canceled, {msg}"; LogUtil.LogText(line); SendMessage(line, Settings.TradeCanceledDestination); }
public void TradeFinished(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result) { OnFinish?.Invoke(routine); var message = Data.Species != 0 ? $"Trade finished. Enjoy your {(Species)Data.Species}!" : "Trade finished. Enjoy your Pokemon!"; Context.User.SendMessageAsync(message).ConfigureAwait(false); Context.User.SendPKMAsync(result, "Here's what you traded me!").ConfigureAwait(false); }
public void TradeFinished(PokeRoutineExecutor routine, PokeTradeDetail <T> info, T result) { OnFinish?.Invoke(routine); var tradedToUser = Data.Species; var message = $"@{info.Trainer.TrainerName}: " + (tradedToUser != 0 ? $"Trade finished. Enjoy your {(Species)tradedToUser}!" : "Trade finished!"); LogUtil.LogText(message); SendMessage(message, Settings.TradeFinishDestination); }
public void TradeCanceled(PokeRoutineExecutor routine, PokeTradeDetail <T> info, PokeTradeResult msg) { OnFinish?.Invoke(routine); Trader.SendMessageAsync($"Trade canceled: {msg}").ConfigureAwait(false); if (msg == PokeTradeResult.NoTrainerFound) { CommandSentChannel.SendMessageAsync($"{Trader.Mention} - Something happened with your trade: {msg}. This has been reported."); } }
public void TradeInitialize(PokeRoutineExecutor routine, PokeTradeDetail <T> info) { var receive = Data.Species == 0 ? string.Empty : $" ({Data.Nickname})"; var msg = $"@{info.Trainer.TrainerName} (ID: {info.ID}): Initializing trade{receive} with you. Please be ready. Use the code you whispered me to search!"; msg += $" Your trade code is: {info.Code:0000 0000}"; LogUtil.LogText(msg); Client.SendMessage(msg); }
public void TradeSearching(PokeRoutineExecutor routine, PokeTradeDetail <T> info) { var name = Info.TrainerName; var trainer = string.IsNullOrEmpty(name) ? string.Empty : $", @{name}"; var message = $"I'm waiting for you{trainer}! My IGN is {routine.InGameName}. Your trade code is: {info.Code:0000 0000}"; LogUtil.LogText(message); SendMessage($"@{info.Trainer.TrainerName} {message}"); }
public void TradeCanceled(PokeRoutineExecutor routine, PokeTradeDetail <T> info, PokeTradeResult msg) { OnFinish?.Invoke(routine); Trader.SendMessageAsync($"Trade canceled: {msg}").ConfigureAwait(false); if (info.Type == PokeTradeType.TradeCord) { TradeExtensions.TradeStatusUpdate(Trader.Id.ToString(), true); } }
public void TradeCanceled(PokeRoutineExecutor <T> routine, PokeTradeDetail <T> info, PokeTradeResult msg) { if (info.Type == PokeTradeType.TradeCord) { TradeCordHelper <T> .HandleTradedCatches(Trader.Id, false); } OnFinish?.Invoke(routine); Trader.SendMessageAsync($"Trade canceled: {msg}").ConfigureAwait(false); }
public void SendNotification(PokeRoutineExecutor routine, PokeTradeDetail <T> info, PokeTradeSummary message) { var msg = message.Summary; if (message.Details.Count > 0) { msg += ", " + string.Join(", ", message.Details.Select(z => $"{z.Heading}: {z.Detail}")); } Client.SendMessage(Channel, msg); }
public void SendNotification(PokeRoutineExecutor routine, PokeTradeDetail <T> info, PokeTradeSummary message) { var msg = message.Summary; if (message.Details.Count > 0) { msg += ", " + string.Join(", ", message.Details.Select(z => $"{z.Heading}: {z.Detail}")); } LogUtil.LogText(msg); SendMessage(msg, Settings.NotifyDestination); }