Skip to content

Commit e9f84e7

Browse files
committed
Add support for channel.chat.notification
Add support for channel.chat.notification Also fixed format to match TwitchLib formatting
1 parent 3a46616 commit e9f84e7

File tree

4 files changed

+43
-1
lines changed

4 files changed

+43
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using TwitchLib.EventSub.Core.SubscriptionTypes.Channel;
2+
using TwitchLib.EventSub.Websockets.Core.Models;
3+
namespace TwitchLib.EventSub.Websockets.Core.EventArgs.Channel
4+
{
5+
public class ChannelChatNotificationArgs : TwitchLibEventSubEventArgs<EventSubNotification<ChannelChatNotification>>
6+
{
7+
}
8+
}

TwitchLib.EventSub.Websockets/EventSubWebsocketClient.cs

+4
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public class EventSubWebsocketClient
8181
/// </summary>
8282
public event AsyncEventHandler<ChannelChatMessageDeleteArgs> ChannelChatMessageDelete;
8383
/// <summary>
84+
/// Event that triggers on "channel.chat.notification" notifications
85+
/// </summary>
86+
public event AsyncEventHandler<ChannelChatNotificationArgs> ChannelChatNotification;
87+
/// <summary>
8488
/// Event that triggers on "channel.cheer" notifications
8589
/// </summary>
8690
public event AsyncEventHandler<ChannelCheerArgs> ChannelCheer;

TwitchLib.EventSub.Websockets/Handler/Channel/Chat/ChatMessageDeleteHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class ChatMessageDeleteHandler : INotificationHandler
1212
{
1313
public string SubscriptionType => "channel.chat.message_delete";
1414

15-
public void Handle ( EventSubWebsocketClient client, string jsonString, JsonSerializerOptions serializerOptions )
15+
public void Handle(EventSubWebsocketClient client, string jsonString, JsonSerializerOptions serializerOptions)
1616
{
1717
try
1818
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System;
2+
using System.Text.Json;
3+
using TwitchLib.EventSub.Core.SubscriptionTypes.Channel;
4+
using TwitchLib.EventSub.Websockets.Core.EventArgs;
5+
using TwitchLib.EventSub.Websockets.Core.EventArgs.Channel;
6+
using TwitchLib.EventSub.Websockets.Core.Handler;
7+
using TwitchLib.EventSub.Websockets.Core.Models;
8+
9+
namespace TwitchLib.EventSub.Websockets.Handler.Channel.Chat
10+
{
11+
public class ChatNotificationHandler : INotificationHandler
12+
{
13+
public string SubscriptionType => "channel.chat.notification";
14+
15+
public void Handle(EventSubWebsocketClient client, string jsonString, JsonSerializerOptions serializerOptions)
16+
{
17+
try
18+
{
19+
var data = JsonSerializer.Deserialize<EventSubNotification<ChannelChatNotification>>(jsonString.AsSpan(), serializerOptions);
20+
if (data is null)
21+
throw new InvalidOperationException("Parsed JSON cannot be null!");
22+
client.RaiseEvent("ChannelChatNotification", new ChannelChatNotificationArgs { Notification = data });
23+
}
24+
catch (Exception ex)
25+
{
26+
client.RaiseEvent("ErrorOccurred", new ErrorOccuredArgs { Exception = ex, Message = $"Error encountered while trying to handle {SubscriptionType} notification! Raw Json: {jsonString}" });
27+
}
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)