From 88e66860a6c3131f0a012e5f3a9fa80ca3c55ff1 Mon Sep 17 00:00:00 2001 From: Christopher F Date: Fri, 19 Oct 2018 17:29:45 -0400 Subject: [PATCH] docs: update command sample to use CommandExecuted, Log --- .../Services/CommandHandlingService.cs | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/samples/02_commands_framework/Services/CommandHandlingService.cs b/samples/02_commands_framework/Services/CommandHandlingService.cs index fc253eed3..ca7af2774 100644 --- a/samples/02_commands_framework/Services/CommandHandlingService.cs +++ b/samples/02_commands_framework/Services/CommandHandlingService.cs @@ -20,6 +20,8 @@ namespace _02_commands_framework.Services _discord = services.GetRequiredService(); _services = services; + _commands.CommandExecuted += CommandExecutedAsync; + _commands.Log += LogAsync; _discord.MessageReceived += MessageReceivedAsync; } @@ -39,11 +41,28 @@ namespace _02_commands_framework.Services if (!message.HasMentionPrefix(_discord.CurrentUser, ref argPos)) return; var context = new SocketCommandContext(_discord, message); - var result = await _commands.ExecuteAsync(context, argPos, _services); + await _commands.ExecuteAsync(context, argPos, _services); // we will handle the result in CommandExecutedAsync + } + + public async Task CommandExecutedAsync(Optional command, ICommandContext context, IResult result) + { + // command is unspecified when there was a search failure (command not found); we don't care about these errors + if (!command.IsSpecified) + return; + + // the command was succesful, we don't care about this result, unless we want to log that a command succeeded. + if (result.IsSuccess) + return; + + // the command failed, let's notify the user that something happened. + await context.Channel.SendMessageAsync($"error: {result.ToString()}"); + } + + private Task LogAsync(LogMessage log) + { + Console.WriteLine(log.ToString()); - if (result.Error.HasValue && - result.Error.Value != CommandError.UnknownCommand) // it's bad practice to send 'unknown command' errors - await context.Channel.SendMessageAsync(result.ToString()); + return Task.CompletedTask; } } }