diff --git a/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs index 358bc44f..8d251941 100644 --- a/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs +++ b/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs @@ -413,8 +413,9 @@ namespace Discord.Interactions.Builders } catch (Exception ex) { - await commandService._cmdLogger.ErrorAsync(ex).ConfigureAwait(false); - return ExecuteResult.FromError(ex); + var interactionException = new InteractionException(commandInfo, context, ex); + await commandService._cmdLogger.ErrorAsync(interactionException).ConfigureAwait(false); + return ExecuteResult.FromError(interactionException); } finally { diff --git a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs index 06a4a712..475d140e 100644 --- a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs +++ b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs @@ -165,7 +165,8 @@ namespace Discord.Interactions while (ex is TargetInvocationException) ex = ex.InnerException; - await Module.CommandService._cmdLogger.ErrorAsync(ex).ConfigureAwait(false); + var interactionException = new InteractionException(this, context, ex); + await Module.CommandService._cmdLogger.ErrorAsync(interactionException).ConfigureAwait(false); var result = ExecuteResult.FromError(ex); await InvokeModuleEvent(context, result).ConfigureAwait(false); diff --git a/src/Discord.Net.Interactions/InteractionException.cs b/src/Discord.Net.Interactions/InteractionException.cs new file mode 100644 index 00000000..c1d4c3f4 --- /dev/null +++ b/src/Discord.Net.Interactions/InteractionException.cs @@ -0,0 +1,17 @@ +using System; + +namespace Discord.Interactions +{ + public class InteractionException : Exception + { + public ICommandInfo CommandInfo { get; } + public IInteractionContext InteractionContext { get; } + + public InteractionException(ICommandInfo commandInfo, IInteractionContext context, Exception exception) + : base($"Error occurred executing {commandInfo}.", exception) + { + CommandInfo = commandInfo; + InteractionContext = context; + } + } +}