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)); } }
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}'."); }
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."); }