Skip to content

Commit 3c5fac1

Browse files
authored
Merge pull request #51 from MrLawbreaker/dev
Add support for ChannelChatMessageDelete and ChannelChatNotification
2 parents 6f4cd77 + e9f84e7 commit 3c5fac1

File tree

5 files changed

+84
-0
lines changed

5 files changed

+84
-0
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 ChannelChatMessageDeleteArgs : TwitchLibEventSubEventArgs<EventSubNotification<ChannelChatMessageDelete>>
6+
{
7+
}
8+
}
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

+8
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,14 @@ public class EventSubWebsocketClient
7777
/// </summary>
7878
public event AsyncEventHandler<ChannelChatMessageArgs> ChannelChatMessage;
7979
/// <summary>
80+
/// Event that triggers on "channel.chat.message_delete" notifications
81+
/// </summary>
82+
public event AsyncEventHandler<ChannelChatMessageDeleteArgs> ChannelChatMessageDelete;
83+
/// <summary>
84+
/// Event that triggers on "channel.chat.notification" notifications
85+
/// </summary>
86+
public event AsyncEventHandler<ChannelChatNotificationArgs> ChannelChatNotification;
87+
/// <summary>
8088
/// Event that triggers on "channel.cheer" notifications
8189
/// </summary>
8290
public event AsyncEventHandler<ChannelCheerArgs> ChannelCheer;
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 ChatMessageDeleteHandler : INotificationHandler
12+
{
13+
public string SubscriptionType => "channel.chat.message_delete";
14+
15+
public void Handle(EventSubWebsocketClient client, string jsonString, JsonSerializerOptions serializerOptions)
16+
{
17+
try
18+
{
19+
var data = JsonSerializer.Deserialize<EventSubNotification<ChannelChatMessageDelete>>(jsonString.AsSpan(), serializerOptions);
20+
if (data is null)
21+
throw new InvalidOperationException("Parsed JSON cannot be null!");
22+
client.RaiseEvent("ChannelChatMessageDelete", new ChannelChatMessageDeleteArgs { 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+
}
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)