Add before and after execute async (#1998)

This commit is contained in:
Quin Lynch
2021-12-24 10:37:36 -04:00
committed by GitHub
parent 5446bfe343
commit 9f124b25ab
3 changed files with 23 additions and 1 deletions

View File

@@ -311,6 +311,7 @@ namespace Discord.Interactions.Builders
try
{
await instance.BeforeExecuteAsync(commandInfo).ConfigureAwait(false);
instance.BeforeExecute(commandInfo);
var task = commandInvoker(instance, args) ?? Task.Delay(0);
@@ -332,6 +333,7 @@ namespace Discord.Interactions.Builders
}
finally
{
await instance.AfterExecuteAsync(commandInfo).ConfigureAwait(false);
instance.AfterExecute(commandInfo);
( instance as IDisposable )?.Dispose();
}

View File

@@ -1,3 +1,5 @@
using System.Threading.Tasks;
namespace Discord.Interactions
{
/// <summary>
@@ -11,12 +13,24 @@ namespace Discord.Interactions
/// <param name="context"></param>
void SetContext (IInteractionContext context);
/// <summary>
/// Method body to be executed asynchronously before executing an application command.
/// </summary>
/// <param name="command">Command information related to the Discord Application Command.</param>
Task BeforeExecuteAsync(ICommandInfo command);
/// <summary>
/// Method body to be executed before executing an application command.
/// </summary>
/// <param name="command">Command information related to the Discord Application Command.</param>
void BeforeExecute(ICommandInfo command);
/// <summary>
/// Method body to be executed asynchronously after an application command execution.
/// </summary>
/// <param name="command">Command information related to the Discord Application Command.</param>
Task AfterExecuteAsync(ICommandInfo command);
/// <summary>
/// Method body to be executed after an application command execution.
/// </summary>

View File

@@ -20,6 +20,12 @@ namespace Discord.Interactions
/// <inheritdoc/>
public virtual void BeforeExecute (ICommandInfo command) { }
/// <inheritdoc/>
public virtual Task BeforeExecuteAsync(ICommandInfo command) => Task.CompletedTask;
/// <inheritdoc/>
public virtual Task AfterExecuteAsync(ICommandInfo command) => Task.CompletedTask;
/// <inheritdoc/>
public virtual void OnModuleBuilding (InteractionService commandService, ModuleInfo module) { }