public override string TryToExecute(CommandReceivedEventArgs eventArgs)
        {
            var word = eventArgs?.Arguments?
                       .ElementAtOrDefault(1)?.ToLowerInvariant();

            try
            {
                var commandEntity = _repository.Single(CommandPolicy.ByWord(word));

                if (commandEntity == null)
                {
                    return($"The alias '!{word}' doesn't exist.");
                }

                int numberRemoved = commandEntity.Aliases
                                    .RemoveAll(a => a.Word == word);
                if (numberRemoved != 1)
                {
                    return(GetErrorMessage(word));
                }
                _repository.Update(commandEntity);

                return($"The alias '!{word}' has been deleted.");
            }
            catch (Exception e)
            {
                _logger.LogError(e, GetErrorMessage(word));
                return(GetErrorMessage(word));
            }
        }
Example #2
0
        protected override void HandleCommand(IChatClient chatClient, CommandReceivedEventArgs eventArgs)
        {
            var oper = eventArgs?.Arguments?.ElementAtOrDefault(0)?.ToLowerInvariant();
            var word = eventArgs?.Arguments?.ElementAtOrDefault(1)?.ToLowerInvariant();

            if (string.IsNullOrEmpty(oper) || string.IsNullOrEmpty(word))
            {
                chatClient.SendMessage(HelpText);
                return;
            }

            var typeName = Repository.Single(CommandPolicy.ByWord(word))?.FullTypeName;

            if (typeName == null)
            {
                chatClient.SendMessage($"The command '!{word}' doesn't exist.");
                return;
            }

            var operationToUse = _operations.SingleOrDefault(x => x.ShouldExecute(oper));

            if (operationToUse != null)
            {
                string resultMessage = operationToUse.TryToExecute(eventArgs);
                chatClient.SendMessage(resultMessage);
                CommandAliasModified?.Invoke(this,
                                             new CommandAliasModifiedEventArgs(typeName));
            }
            else
            {
                chatClient.SendMessage(HelpText);
            }
        }
        public override string TryToExecute(CommandReceivedEventArgs eventArgs)
        {
            if (eventArgs?.Arguments == null ||
                eventArgs.Arguments.Count < 3)
            {
                return(HelpText);
            }

            var word      = eventArgs.Arguments[1].ToLowerInvariant();
            var newAlias  = eventArgs.Arguments[2].ToLowerInvariant();
            var arguments = eventArgs.Arguments.Skip(3).ToList();

            var commandEntity = _repository.Single(CommandPolicy.ByWord(word));
            var existingWord  = _repository.Single(CommandPolicy.ByWord(newAlias));

            if (string.IsNullOrEmpty(newAlias))
            {
                return("You seem to be missing the new alias you want to set.");
            }

            if (existingWord != null)
            {
                return($"The command word '!{existingWord.CommandWord}' already exists.");
            }

            var alias = new AliasEntity
            {
                Word    = newAlias,
                Command = commandEntity,
            };

            for (int i = 0; i < arguments.Count; i++)
            {
                alias.Arguments.Add(new AliasArgumentEntity
                {
                    Argument = arguments[i],
                    Alias    = alias,
                    Index    = i
                });
            }

            commandEntity.Aliases.Add(alias);

            _repository.Update(commandEntity);

            return($"Created new command alias '!{newAlias}' for '!{word}'.");
        }
Example #4
0
        public override string TryToExecute(CommandReceivedEventArgs eventArgs)
        {
            var word = eventArgs?.Arguments?.ElementAtOrDefault(1)?.ToLowerInvariant();

            var commandEntity = _repository.Single(CommandPolicy.ByWord(word));

            if (commandEntity == null)
            {
                return($"The command word '!{word}' doesn't exist.");
            }

            int numberRemoved = commandEntity.Aliases.RemoveAll(a => a.Word == word);

            if (numberRemoved != 1)
            {
                return($"Something went wrong when trying to delete {word}.");
            }
            _repository.Update(commandEntity);

            return($"The command '!{commandEntity.CommandWord}' has been deleted.");
        }