Browse Source

feature: add enterTyping parameter to CommandService.ExecuteAsync for client to enter typing state when a command is valid

pull/1776/head
Brian Lai 4 years ago
parent
commit
6473705b5a
1 changed files with 10 additions and 4 deletions
  1. +10
    -4
      src/Discord.Net.Commands/CommandService.cs

+ 10
- 4
src/Discord.Net.Commands/CommandService.cs View File

@@ -483,25 +483,27 @@ namespace Discord.Commands
/// <param name="context">The context of the command.</param> /// <param name="context">The context of the command.</param>
/// <param name="argPos">The position of which the command starts at.</param> /// <param name="argPos">The position of which the command starts at.</param>
/// <param name="services">The service to be used in the command's dependency injection.</param> /// <param name="services">The service to be used in the command's dependency injection.</param>
/// <param name="enterTyping">Whether the client should enter typing state.</param>
/// <param name="multiMatchHandling">The handling mode when multiple command matches are found.</param> /// <param name="multiMatchHandling">The handling mode when multiple command matches are found.</param>
/// <returns> /// <returns>
/// A task that represents the asynchronous execution operation. The task result contains the result of the /// A task that represents the asynchronous execution operation. The task result contains the result of the
/// command execution. /// command execution.
/// </returns> /// </returns>
public Task<IResult> ExecuteAsync(ICommandContext context, int argPos, IServiceProvider services, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception)
=> ExecuteAsync(context, context.Message.Content.Substring(argPos), services, multiMatchHandling);
public Task<IResult> ExecuteAsync(ICommandContext context, int argPos, IServiceProvider services, bool enterTyping = false, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception)
=> ExecuteAsync(context, context.Message.Content.Substring(argPos), services, enterTyping, multiMatchHandling);
/// <summary> /// <summary>
/// Executes the command. /// Executes the command.
/// </summary> /// </summary>
/// <param name="context">The context of the command.</param> /// <param name="context">The context of the command.</param>
/// <param name="input">The command string.</param> /// <param name="input">The command string.</param>
/// <param name="services">The service to be used in the command's dependency injection.</param> /// <param name="services">The service to be used in the command's dependency injection.</param>
/// <param name="enterTyping">Whether the client should enter typing state.</param>
/// <param name="multiMatchHandling">The handling mode when multiple command matches are found.</param> /// <param name="multiMatchHandling">The handling mode when multiple command matches are found.</param>
/// <returns> /// <returns>
/// A task that represents the asynchronous execution operation. The task result contains the result of the /// A task that represents the asynchronous execution operation. The task result contains the result of the
/// command execution. /// command execution.
/// </returns> /// </returns>
public async Task<IResult> ExecuteAsync(ICommandContext context, string input, IServiceProvider services, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception)
public async Task<IResult> ExecuteAsync(ICommandContext context, string input, IServiceProvider services, bool enterTyping = false, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception)
{ {
services = services ?? EmptyServiceProvider.Instance; services = services ?? EmptyServiceProvider.Instance;


@@ -511,7 +513,11 @@ namespace Discord.Commands
await _commandExecutedEvent.InvokeAsync(Optional.Create<CommandInfo>(), context, searchResult).ConfigureAwait(false); await _commandExecutedEvent.InvokeAsync(Optional.Create<CommandInfo>(), context, searchResult).ConfigureAwait(false);
return searchResult; return searchResult;
} }

if (enterTyping)
{
using var typing = context.Channel.EnterTypingState();
}


var commands = searchResult.Commands; var commands = searchResult.Commands;
var preconditionResults = new Dictionary<CommandMatch, PreconditionResult>(); var preconditionResults = new Dictionary<CommandMatch, PreconditionResult>();


Loading…
Cancel
Save