Browse Source

Add before and after execute async (#1998)

tags/3.1.0
Quin Lynch GitHub 3 years ago
parent
commit
9f124b25ab
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 1 deletions
  1. +2
    -0
      src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs
  2. +15
    -1
      src/Discord.Net.Interactions/IInteractionModuleBase.cs
  3. +6
    -0
      src/Discord.Net.Interactions/InteractionModuleBase.cs

+ 2
- 0
src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs 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();
}


+ 15
- 1
src/Discord.Net.Interactions/IInteractionModuleBase.cs View File

@@ -1,3 +1,5 @@
using System.Threading.Tasks;

namespace Discord.Interactions
{
/// <summary>
@@ -11,11 +13,23 @@ 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);
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.


+ 6
- 0
src/Discord.Net.Interactions/InteractionModuleBase.cs 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) { }



Loading…
Cancel
Save