TwitchLib.EventSub.Webhooks
1.2.0
See the version list below for details.
dotnet add package TwitchLib.EventSub.Webhooks --version 1.2.0
NuGet\Install-Package TwitchLib.EventSub.Webhooks -Version 1.2.0
<PackageReference Include="TwitchLib.EventSub.Webhooks" Version="1.2.0" />
paket add TwitchLib.EventSub.Webhooks --version 1.2.0
#r "nuget: TwitchLib.EventSub.Webhooks, 1.2.0"
// Install TwitchLib.EventSub.Webhooks as a Cake Addin #addin nuget:?package=TwitchLib.EventSub.Webhooks&version=1.2.0 // Install TwitchLib.EventSub.Webhooks as a Cake Tool #tool nuget:?package=TwitchLib.EventSub.Webhooks&version=1.2.0
TwitchLib.EventSub.Webhooks
Provides an easy way to setup a Twitch EventSub Webhooks Server
Setting up a Twitch EventSub server can be daunting and has some moving parts that you could get wrong. TwitchLib.EventSub.Webhooks was build with that in mind and makes it as easy as it can get. You only need a few lines of code to add and configure it.
Installation
Disclaimer
The usual requirements that Twitch has for EventSub webhooks do still apply!
- Your callback url needs to be publicly accessible (localhost wont work!)
- You need to have SSL on port 443 for the domain used as a callback.
Setup
Step 1: Create a new ASP.NET Core project (.NET 5.0 and up)
Step 2: Install the TwitchLib.EventSub.Webhooks nuget package. (See above on how to do that)
Step 3: Add necessary services and config to the DI Container
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddTwitchLibEventSubWebhooks(config =>
{
config.CallbackPath = "/webhooks";
config.Secret = "supersecuresecret";
config.EnableLogging = true;
});
services.AddHostedService<EventSubHostedService>();
}
Step 4: Put the TwitchLib.EventSub.Webhooks middleware in the request pipeline
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseAuthorization();
app.UseTwitchLibEventSubWebhooks();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Step 5: Create the HostedService and listen for events
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
using TwitchLib.EventSub.Webhooks.Core;
using TwitchLib.EventSub.Webhooks.Core.EventArgs;
using TwitchLib.EventSub.Webhooks.Core.EventArgs.Channel;
namespace TwitchLib.EventSub.Webhooks.Example
{
public class EventSubHostedService : IHostedService
{
private readonly ILogger<EventSubHostedService> _logger;
private readonly ITwitchEventSubWebhooks _eventSubWebhooks;
public EventSubHostedService(ILogger<EventSubHostedService> logger, ITwitchEventSubWebhooks eventSubWebhooks)
{
_logger = logger;
_eventSubWebhooks = eventSubWebhooks;
}
public Task StartAsync(CancellationToken cancellationToken)
{
_eventSubWebhooks.OnError += OnError;
_eventSubWebhooks.OnChannelFollow += OnChannelFollow;
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
_eventSubWebhooks.OnError -= OnError;
_eventSubWebhooks.OnChannelFollow -= OnChannelFollow;
return Task.CompletedTask;
}
private void OnChannelFollow(object sender, ChannelFollowArgs e)
{
_logger.LogInformation($"{e.Notification.Event.UserName} followed {e.Notification.Event.BroadcasterUserName} at {e.Notification.Event.FollowedAt.ToUniversalTime()}");
}
private void OnError(object sender, OnErrorArgs e)
{
_logger.LogError($"Reason: {e.Reason} - Message: {e.Message}");
}
}
}
That is all that you need to do to setup a Twitch EventSub Webhook Server with TwitchLib.EventSub.Webhooks. Easy isn't it?
Alternatively you can also just clone the https://github.com/TwitchLib/TwitchLib.EventSub.Webhooks/tree/master/TwitchLib.EventSub.Webhooks.Example
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net5.0
- No dependencies.
-
net6.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Now also targets .NET 6, Added missing properties that were added to models in the last months