From 9b79f0b27be95f52a6b32a7119a868efb3bae4d9 Mon Sep 17 00:00:00 2001 From: Spider <89578654+Spider570@users.noreply.github.com> Date: Sat, 26 Apr 2025 12:40:05 -0700 Subject: [PATCH] Add handler for unknown Discord dispatch events (#3088) --- .../BaseSocketClient.Events.cs | 17 ++++++++++++++++- .../DiscordSocketClient.EventHandling.cs | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index 328f09ed..38fc5f31 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -1,5 +1,5 @@ using Discord.Rest; - +using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -1069,5 +1069,20 @@ namespace Discord.WebSocket internal readonly AsyncEvent, Task>> _subscriptionDeleted = new(); #endregion + + #region Others + + /// + /// Fired when a dispatch event is received from Discord that does not match any known event type. + /// + public event Func UnknownDispatchReceived + { + add => _unknownDispatchReceived.Add(value); + remove => _unknownDispatchReceived.Remove(value); + } + + internal readonly AsyncEvent> _unknownDispatchReceived = new(); + + #endregion } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.EventHandling.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.EventHandling.cs index 2758cb32..fdb57e7e 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.EventHandling.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.EventHandling.cs @@ -2506,6 +2506,8 @@ public partial class DiscordSocketClient default: if (!SuppressUnknownDispatchWarnings) await _gatewayLogger.WarningAsync($"Unknown Dispatch ({type})").ConfigureAwait(false); + + await TimedInvokeAsync(_unknownDispatchReceived, nameof(UnknownDispatchReceived), type, (payload as JToken)); break; #endregion }