diff --git a/src/Boyfriend.cs b/src/Boyfriend.cs index 0731ccd..d1c4f7a 100644 --- a/src/Boyfriend.cs +++ b/src/Boyfriend.cs @@ -1,4 +1,5 @@ using Boyfriend.Commands; +using Boyfriend.Commands.Events; using Boyfriend.Services; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -71,7 +72,7 @@ public class Boyfriend { .AddInteractivity() .AddInteractionGroup<InteractionResponders>() // Slash command event handlers - .AddPreparationErrorEvent<ErrorLoggingPreparationErrorEvent>() + .AddPreparationErrorEvent<LoggingPreparationErrorEvent>() .AddPostExecutionEvent<ErrorLoggingPostExecutionEvent>() // Services .AddSingleton<GuildDataService>() diff --git a/src/Commands/ErrorLoggingEvents.cs b/src/Commands/Events/ErrorLoggingPostExecutionEvent.cs similarity index 51% rename from src/Commands/ErrorLoggingEvents.cs rename to src/Commands/Events/ErrorLoggingPostExecutionEvent.cs index c5eba21..51c2a8d 100644 --- a/src/Commands/ErrorLoggingEvents.cs +++ b/src/Commands/Events/ErrorLoggingPostExecutionEvent.cs @@ -5,38 +5,7 @@ using Remora.Discord.Commands.Extensions; using Remora.Discord.Commands.Services; using Remora.Results; -namespace Boyfriend.Commands; - -/// <summary> -/// Handles error logging for slash commands that couldn't be successfully prepared. -/// </summary> -[UsedImplicitly] -public class ErrorLoggingPreparationErrorEvent : IPreparationErrorEvent { - private readonly ILogger<ErrorLoggingPreparationErrorEvent> _logger; - - public ErrorLoggingPreparationErrorEvent(ILogger<ErrorLoggingPreparationErrorEvent> logger) { - _logger = logger; - } - - /// <summary> - /// Logs a warning using the injected <see cref="ILogger" /> if the <paramref name="preparationResult" /> has not - /// succeeded. - /// </summary> - /// <param name="context">The context of the slash command. Unused.</param> - /// <param name="preparationResult">The result whose success is checked.</param> - /// <param name="ct">The cancellation token for this operation. Unused.</param> - /// <returns>A result which has succeeded.</returns> - public Task<Result> PreparationFailed( - IOperationContext context, IResult preparationResult, CancellationToken ct = default) { - if (!preparationResult.IsSuccess && !preparationResult.Error.IsUserOrEnvironmentError()) { - _logger.LogWarning("Error in slash command preparation.\n{ErrorMessage}", preparationResult.Error.Message); - if (preparationResult.Error is ExceptionError exerr) - _logger.LogError(exerr.Exception, "An exception has been thrown"); - } - - return Task.FromResult(Result.FromSuccess()); - } -} +namespace Boyfriend.Commands.Events; /// <summary> /// Handles error logging for slash command groups. diff --git a/src/Commands/Events/LoggingPreparationErrorEvent.cs b/src/Commands/Events/LoggingPreparationErrorEvent.cs new file mode 100644 index 0000000..7e8b2bb --- /dev/null +++ b/src/Commands/Events/LoggingPreparationErrorEvent.cs @@ -0,0 +1,39 @@ +using JetBrains.Annotations; +using Microsoft.Extensions.Logging; +using Remora.Discord.Commands.Contexts; +using Remora.Discord.Commands.Extensions; +using Remora.Discord.Commands.Services; +using Remora.Results; + +namespace Boyfriend.Commands.Events; + +/// <summary> +/// Handles error logging for slash commands that couldn't be successfully prepared. +/// </summary> +[UsedImplicitly] +public class LoggingPreparationErrorEvent : IPreparationErrorEvent { + private readonly ILogger<LoggingPreparationErrorEvent> _logger; + + public LoggingPreparationErrorEvent(ILogger<LoggingPreparationErrorEvent> logger) { + _logger = logger; + } + + /// <summary> + /// Logs a warning using the injected <see cref="ILogger" /> if the <paramref name="preparationResult" /> has not + /// succeeded. + /// </summary> + /// <param name="context">The context of the slash command. Unused.</param> + /// <param name="preparationResult">The result whose success is checked.</param> + /// <param name="ct">The cancellation token for this operation. Unused.</param> + /// <returns>A result which has succeeded.</returns> + public Task<Result> PreparationFailed( + IOperationContext context, IResult preparationResult, CancellationToken ct = default) { + if (!preparationResult.IsSuccess && !preparationResult.Error.IsUserOrEnvironmentError()) { + _logger.LogWarning("Error in slash command preparation.\n{ErrorMessage}", preparationResult.Error.Message); + if (preparationResult.Error is ExceptionError exerr) + _logger.LogError(exerr.Exception, "An exception has been thrown"); + } + + return Task.FromResult(Result.FromSuccess()); + } +}