Add search methods to InteractionService (#2041)

This commit is contained in:
Quin Lynch
2022-01-14 07:52:43 -04:00
committed by GitHub
parent 3633929e5f
commit 9a52d05637

View File

@@ -588,6 +588,60 @@ namespace Discord.Interactions
return true; return true;
} }
/// <summary>
/// Search the registered slash commands using a <see cref="ISlashCommandInteraction"/>.
/// </summary>
/// <param name="slashCommandInteraction">Interaction entity to perform the search with.</param>
/// <returns>
/// The search result. When successful, result contains the found <see cref="SlashCommandInfo"/>.
/// </returns>
public SearchResult<SlashCommandInfo> SearchSlashCommand(ISlashCommandInteraction slashCommandInteraction)
=> _slashCommandMap.GetCommand(slashCommandInteraction.Data.GetCommandKeywords());
/// <summary>
/// Search the registered slash commands using a <see cref="IComponentInteraction"/>.
/// </summary>
/// <param name="componentInteraction">Interaction entity to perform the search with.</param>
/// <returns>
/// The search result. When successful, result contains the found <see cref="ComponentCommandInfo"/>.
/// </returns>
public SearchResult<ComponentCommandInfo> SearchComponentCommand(IComponentInteraction componentInteraction)
=> _componentCommandMap.GetCommand(componentInteraction.Data.CustomId);
/// <summary>
/// Search the registered slash commands using a <see cref="IUserCommandInteraction"/>.
/// </summary>
/// <param name="userCommandInteraction">Interaction entity to perform the search with.</param>
/// <returns>
/// The search result. When successful, result contains the found <see cref="ContextCommandInfo"/>.
/// </returns>
public SearchResult<ContextCommandInfo> SearchUserCommand(IUserCommandInteraction userCommandInteraction)
=> _contextCommandMaps[ApplicationCommandType.User].GetCommand(userCommandInteraction.Data.Name);
/// <summary>
/// Search the registered slash commands using a <see cref="IMessageCommandInteraction"/>.
/// </summary>
/// <param name="messageCommandInteraction">Interaction entity to perform the search with.</param>
/// <returns>
/// The search result. When successful, result contains the found <see cref="ContextCommandInfo"/>.
/// </returns>
public SearchResult<ContextCommandInfo> SearchMessageCommand(IMessageCommandInteraction messageCommandInteraction)
=> _contextCommandMaps[ApplicationCommandType.Message].GetCommand(messageCommandInteraction.Data.Name);
/// <summary>
/// Search the registered slash commands using a <see cref="IAutocompleteInteraction"/>.
/// </summary>
/// <param name="autocompleteInteraction">Interaction entity to perform the search with.</param>
/// <returns>
/// The search result. When successful, result contains the found <see cref="AutocompleteCommandInfo"/>.
/// </returns>
public SearchResult<AutocompleteCommandInfo> SearchAutocompleteCommand(IAutocompleteInteraction autocompleteInteraction)
{
var keywords = autocompleteInteraction.Data.GetCommandKeywords();
keywords.Add(autocompleteInteraction.Data.Current.Name);
return _autocompleteCommandMap.GetCommand(keywords);
}
/// <summary> /// <summary>
/// Execute a Command from a given <see cref="IInteractionContext"/>. /// Execute a Command from a given <see cref="IInteractionContext"/>.
/// </summary> /// </summary>