Pass interaction data into all InteractionBase hooks

This commit is contained in:
Daan Boerlage 2021-11-02 21:57:01 +01:00
parent 01df35b12b
commit 5a520ff567
Signed by: daan
GPG key ID: FCE070E1E4956606
3 changed files with 21 additions and 16 deletions

View file

@ -1,13 +1,14 @@
using System;
using Geekbot.Core.Interactions.Request;
using Geekbot.Core.Interactions.Response;
namespace Geekbot.Core.Interactions
{
public interface IInteractionBase
{
void BeforeExecute();
void AfterExecute();
void OnException(Exception e);
InteractionResponse GetExceptionResponse();
void BeforeExecute(Interaction interaction);
void AfterExecute(Interaction interaction);
void OnException(Interaction interaction, Exception e);
InteractionResponse GetExceptionResponse(Interaction interaction);
}
}

View file

@ -9,23 +9,23 @@ namespace Geekbot.Core.Interactions
{
public abstract class InteractionBase : IInteractionBase
{
public virtual void BeforeExecute()
public virtual void BeforeExecute(Interaction interaction)
{
}
public virtual void AfterExecute()
public virtual void AfterExecute(Interaction interaction)
{
}
public virtual void OnException(Exception exception)
public virtual void OnException(Interaction interaction, Exception exception)
{
if (!SentrySdk.IsEnabled) return;
SentrySdk.CaptureException(exception);
}
public virtual InteractionResponse GetExceptionResponse()
public virtual InteractionResponse GetExceptionResponse(Interaction interaction)
{
return new InteractionResponse()
{
@ -40,9 +40,13 @@ namespace Geekbot.Core.Interactions
public abstract Command GetCommandInfo();
public abstract Task<InteractionResponse> Exec(Interaction interaction);
void IInteractionBase.BeforeExecute() => this.BeforeExecute();
void IInteractionBase.AfterExecute() => this.AfterExecute();
void IInteractionBase.OnException(Exception e) => this.OnException(e);
InteractionResponse IInteractionBase.GetExceptionResponse() => this.GetExceptionResponse();
void IInteractionBase.BeforeExecute(Interaction interaction)
=> this.BeforeExecute(interaction);
void IInteractionBase.AfterExecute(Interaction interaction)
=> this.AfterExecute(interaction);
void IInteractionBase.OnException(Interaction interaction, Exception e)
=> this.OnException(interaction, e);
InteractionResponse IInteractionBase.GetExceptionResponse(Interaction interaction)
=> this.GetExceptionResponse(interaction);
}
}

View file

@ -67,17 +67,17 @@ namespace Geekbot.Core.Interactions
InteractionResponse response;
try
{
command.BeforeExecute();
command.BeforeExecute(interaction);
response = await command.Exec(interaction);
}
catch (Exception e)
{
command.OnException(e);
response = command.GetExceptionResponse();
command.OnException(interaction, e);
response = command.GetExceptionResponse(interaction);
}
finally
{
command.AfterExecute();
command.AfterExecute(interaction);
}
return response;