private static Reaction FindSingleReaction(ReactionsSettings settings, string idOrTrigger) { var reactions = FindReactions(settings, idOrTrigger); if (reactions.Count > 1) { throw new AbortException(BuildReactionList(reactions, "Multiple matches", footer: "Please pick one and run the command again with its ID number")); } return(reactions.Single()); }
private static IReadOnlyCollection <Reaction> FindReactions(ReactionsSettings settings, string idOrTrigger) { if (idOrTrigger.All(x => char.IsDigit(x)) && int.TryParse(idOrTrigger, out var id)) { var reaction = settings.Reactions.FirstOrDefault(x => x.Id == id); if (reaction != null) { return new[] { reaction } } ; } var reactions = settings.Reactions.Where(x => string.Compare(x.Trigger, idOrTrigger, true) == 0).ToList(); if (!reactions.Any()) { throw new IncorrectParametersCommandException($"Can't find a reaction with ID or trigger `{idOrTrigger}`"); } return(reactions); }