From 34748c86c54f60629e8e31087e1ae4d4edb11c6f Mon Sep 17 00:00:00 2001 From: marens101 Date: Sat, 2 Oct 2021 15:53:27 +1000 Subject: [PATCH] Add event for autocomplete interaction (#214) --- src/Discord.Net.WebSocket/BaseSocketClient.Events.cs | 11 ++++++++++- src/Discord.Net.WebSocket/Discord.Net.WebSocket.xml | 5 +++++ src/Discord.Net.WebSocket/DiscordShardedClient.cs | 1 + src/Discord.Net.WebSocket/DiscordSocketClient.cs | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index 58de002a0..b7bcfdf2e 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -469,7 +469,7 @@ namespace Discord.WebSocket #region Interactions /// - /// Fired when an Interaction is created. This event covers all types of interactions including but not limited to: buttons, select menus, slash commands. + /// Fired when an Interaction is created. This event covers all types of interactions including but not limited to: buttons, select menus, slash commands, autocompletes. /// /// /// @@ -535,6 +535,15 @@ namespace Discord.WebSocket remove => _messageCommandExecuted.Remove(value); } internal readonly AsyncEvent> _messageCommandExecuted = new AsyncEvent>(); + /// + /// Fired when an autocomplete is used and its interaction is received. + /// + public event Func AutocompleteExecuted + { + add => _autocompleteExecuted.Add(value); + remove => _autocompleteExecuted.Remove(value); + } + internal readonly AsyncEvent> _autocompleteExecuted = new AsyncEvent>(); /// /// Fired when a guild application command is created. diff --git a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.xml b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.xml index a1374578a..5d2b36b91 100644 --- a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.xml +++ b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.xml @@ -746,6 +746,11 @@ Fired when a message command is used and its interaction is received. + + + Fired when an autocomplete is used and its interaction is received. + + Fired when a guild application command is created. diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index faafa918f..613864fdc 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -466,6 +466,7 @@ namespace Discord.WebSocket client.SlashCommandExecuted += (arg) => _slashCommandExecuted.InvokeAsync(arg); client.UserCommandExecuted += (arg) => _userCommandExecuted.InvokeAsync(arg); client.MessageCommandExecuted += (arg) => _messageCommandExecuted.InvokeAsync(arg); + client.AutocompleteExecuted += (arg) => _autocompleteExecuted.InvokeAsync(arg); client.ThreadUpdated += (thread1, thread2) => _threadUpdated.InvokeAsync(thread1, thread2); client.ThreadCreated += (thread) => _threadCreated.InvokeAsync(thread); diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 1cd3debf4..596611b1a 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -2125,6 +2125,9 @@ namespace Discord.WebSocket case SocketMessageCommand messageCommand: await TimedInvokeAsync(_messageCommandExecuted, nameof(MessageCommandExecuted), messageCommand).ConfigureAwait(false); break; + case SocketAutocompleteInteraction autocomplete: + await TimedInvokeAsync(_autocompleteExecuted, nameof(AutocompleteExecuted), autocomplete).ConfigureAwait(false); + break; } } else