From 3a466160b35e5c9354807b0c3e0dd80dcb655f8a Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 21 Nov 2024 12:38:31 +0100 Subject: [PATCH 1/2] Add support for channel.chat.message_delete --- .../Channel/ChannelChatMessageDeleteArgs.cs | 8 +++++ .../EventSubWebsocketClient.cs | 4 +++ .../Channel/Chat/ChatMessageDeleteHandler.cs | 30 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 TwitchLib.EventSub.Websockets/Core/EventArgs/Channel/ChannelChatMessageDeleteArgs.cs create mode 100644 TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs diff --git a/TwitchLib.EventSub.Websockets/Core/EventArgs/Channel/ChannelChatMessageDeleteArgs.cs b/TwitchLib.EventSub.Websockets/Core/EventArgs/Channel/ChannelChatMessageDeleteArgs.cs new file mode 100644 index 0000000..bf7c5c5 --- /dev/null +++ b/TwitchLib.EventSub.Websockets/Core/EventArgs/Channel/ChannelChatMessageDeleteArgs.cs @@ -0,0 +1,8 @@ +using TwitchLib.EventSub.Core.SubscriptionTypes.Channel; +using TwitchLib.EventSub.Websockets.Core.Models; +namespace TwitchLib.EventSub.Websockets.Core.EventArgs.Channel +{ + public class ChannelChatMessageDeleteArgs : TwitchLibEventSubEventArgs> + { + } +} diff --git a/TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs b/TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs index 40d530d..7d48a7b 100644 --- a/TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs +++ b/TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs @@ -77,6 +77,10 @@ public class EventSubWebsocketClient /// public event AsyncEventHandler ChannelChatMessage; /// + /// Event that triggers on "channel.chat.message_delete" notifications + /// + public event AsyncEventHandler ChannelChatMessageDelete; + /// /// Event that triggers on "channel.cheer" notifications /// public event AsyncEventHandler ChannelCheer; diff --git a/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs b/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs new file mode 100644 index 0000000..67a4d93 --- /dev/null +++ b/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs @@ -0,0 +1,30 @@ +using System; +using System.Text.Json; +using TwitchLib.EventSub.Core.SubscriptionTypes.Channel; +using TwitchLib.EventSub.Websockets.Core.EventArgs; +using TwitchLib.EventSub.Websockets.Core.EventArgs.Channel; +using TwitchLib.EventSub.Websockets.Core.Handler; +using TwitchLib.EventSub.Websockets.Core.Models; + +namespace TwitchLib.EventSub.Websockets.Handler.Channel.Chat +{ + public class ChatMessageDeleteHandler : INotificationHandler + { + public string SubscriptionType => "channel.chat.message_delete"; + + public void Handle ( EventSubWebsocketClient client, string jsonString, JsonSerializerOptions serializerOptions ) + { + try + { + var data = JsonSerializer.Deserialize>(jsonString.AsSpan(), serializerOptions); + if (data is null) + throw new InvalidOperationException("Parsed JSON cannot be null!"); + client.RaiseEvent("ChannelChatMessageDelete", new ChannelChatMessageDeleteArgs { Notification = data }); + } + catch (Exception ex) + { + client.RaiseEvent("ErrorOccurred", new ErrorOccuredArgs { Exception = ex, Message = $"Error encountered while trying to handle {SubscriptionType} notification! Raw Json: {jsonString}" }); + } + } + } +} From e9f84e78af0fe955370bb075ef5acfc0e9a9edd3 Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 21 Nov 2024 12:38:51 +0100 Subject: [PATCH 2/2] Add support for channel.chat.notification Add support for channel.chat.notification Also fixed format to match TwitchLib formatting --- .../Channel/ChannelChatNotificationArgs.cs | 8 +++++ .../EventSubWebsocketClient.cs | 4 +++ .../Channel/Chat/ChatMessageDeleteHandler.cs | 2 +- .../Channel/Chat/ChatNotificationHandler.cs | 30 +++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 TwitchLib.EventSub.Websockets/Core/EventArgs/Channel/ChannelChatNotificationArgs.cs create mode 100644 TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatNotificationHandler.cs diff --git a/TwitchLib.EventSub.Websockets/Core/EventArgs/Channel/ChannelChatNotificationArgs.cs b/TwitchLib.EventSub.Websockets/Core/EventArgs/Channel/ChannelChatNotificationArgs.cs new file mode 100644 index 0000000..43bb582 --- /dev/null +++ b/TwitchLib.EventSub.Websockets/Core/EventArgs/Channel/ChannelChatNotificationArgs.cs @@ -0,0 +1,8 @@ +using TwitchLib.EventSub.Core.SubscriptionTypes.Channel; +using TwitchLib.EventSub.Websockets.Core.Models; +namespace TwitchLib.EventSub.Websockets.Core.EventArgs.Channel +{ + public class ChannelChatNotificationArgs : TwitchLibEventSubEventArgs> + { + } +} diff --git a/TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs b/TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs index 7d48a7b..b979045 100644 --- a/TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs +++ b/TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs @@ -81,6 +81,10 @@ public class EventSubWebsocketClient /// public event AsyncEventHandler ChannelChatMessageDelete; /// + /// Event that triggers on "channel.chat.notification" notifications + /// + public event AsyncEventHandler ChannelChatNotification; + /// /// Event that triggers on "channel.cheer" notifications /// public event AsyncEventHandler ChannelCheer; diff --git a/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs b/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs index 67a4d93..b7e8679 100644 --- a/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs +++ b/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs @@ -12,7 +12,7 @@ public class ChatMessageDeleteHandler : INotificationHandler { public string SubscriptionType => "channel.chat.message_delete"; - public void Handle ( EventSubWebsocketClient client, string jsonString, JsonSerializerOptions serializerOptions ) + public void Handle(EventSubWebsocketClient client, string jsonString, JsonSerializerOptions serializerOptions) { try { diff --git a/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatNotificationHandler.cs b/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatNotificationHandler.cs new file mode 100644 index 0000000..95043ba --- /dev/null +++ b/TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatNotificationHandler.cs @@ -0,0 +1,30 @@ +using System; +using System.Text.Json; +using TwitchLib.EventSub.Core.SubscriptionTypes.Channel; +using TwitchLib.EventSub.Websockets.Core.EventArgs; +using TwitchLib.EventSub.Websockets.Core.EventArgs.Channel; +using TwitchLib.EventSub.Websockets.Core.Handler; +using TwitchLib.EventSub.Websockets.Core.Models; + +namespace TwitchLib.EventSub.Websockets.Handler.Channel.Chat +{ + public class ChatNotificationHandler : INotificationHandler + { + public string SubscriptionType => "channel.chat.notification"; + + public void Handle(EventSubWebsocketClient client, string jsonString, JsonSerializerOptions serializerOptions) + { + try + { + var data = JsonSerializer.Deserialize>(jsonString.AsSpan(), serializerOptions); + if (data is null) + throw new InvalidOperationException("Parsed JSON cannot be null!"); + client.RaiseEvent("ChannelChatNotification", new ChannelChatNotificationArgs { Notification = data }); + } + catch (Exception ex) + { + client.RaiseEvent("ErrorOccurred", new ErrorOccuredArgs { Exception = ex, Message = $"Error encountered while trying to handle {SubscriptionType} notification! Raw Json: {jsonString}" }); + } + } + } +}