using JetBrains.Annotations;
using Microsoft.Extensions.Logging;
using Remora.Discord.Commands.Contexts;
using Remora.Discord.Commands.Services;
using Remora.Results;
namespace Octobot.Commands.Events;
///
/// Handles error logging for slash command groups.
///
[UsedImplicitly]
public class ErrorLoggingPostExecutionEvent : IPostExecutionEvent
{
private readonly ILogger _logger;
public ErrorLoggingPostExecutionEvent(ILogger logger)
{
_logger = logger;
}
///
/// Logs a warning using the injected if the has not
/// succeeded.
///
/// The context of the slash command.
/// The result whose success is checked.
/// The cancellation token for this operation. Unused.
/// A result which has succeeded.
public Task AfterExecutionAsync(
ICommandContext context, IResult commandResult, CancellationToken ct = default)
{
_logger.LogResult(commandResult, $"Error in slash command execution for /{context.Command.Command.Node.Key}.");
return Task.FromResult(Result.FromSuccess());
}
}