using System.Threading.Tasks;
namespace Discord.Interactions
{
///
/// Represents a generic interaction module base.
///
public interface IInteractionModuleBase
{
///
/// Sets the context of this module.
///
///
void SetContext (IInteractionContext context);
///
/// Method body to be executed asynchronously before executing an application command.
///
/// Command information related to the Discord Application Command.
Task BeforeExecuteAsync(ICommandInfo command);
///
/// Method body to be executed before executing an application command.
///
/// Command information related to the Discord Application Command.
void BeforeExecute(ICommandInfo command);
///
/// Method body to be executed asynchronously after an application command execution.
///
/// Command information related to the Discord Application Command.
Task AfterExecuteAsync(ICommandInfo command);
///
/// Method body to be executed after an application command execution.
///
/// Command information related to the Discord Application Command.
void AfterExecute (ICommandInfo command);
///
/// Method body to be executed when is called.
///
/// Command Service instance that built this module.
/// Info class of this module.
void OnModuleBuilding (InteractionService commandService, ModuleInfo module);
///
/// Method body to be executed after the automated module creation is completed and before is called.
///
/// Builder class of this module.
/// Command Service instance that is building this method.
void Construct(Builders.ModuleBuilder builder, InteractionService commandService);
}
}