Exemple #1
0
        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());
        }
Exemple #2
0
        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);
        }