VodOnDemand.TwitchEverywhere.Core 0.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package VodOnDemand.TwitchEverywhere.Core --version 0.1.2
NuGet\Install-Package VodOnDemand.TwitchEverywhere.Core -Version 0.1.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="VodOnDemand.TwitchEverywhere.Core" Version="0.1.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add VodOnDemand.TwitchEverywhere.Core --version 0.1.2
#r "nuget: VodOnDemand.TwitchEverywhere.Core, 0.1.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install VodOnDemand.TwitchEverywhere.Core as a Cake Addin
#addin nuget:?package=VodOnDemand.TwitchEverywhere.Core&version=0.1.2

// Install VodOnDemand.TwitchEverywhere.Core as a Cake Tool
#tool nuget:?package=VodOnDemand.TwitchEverywhere.Core&version=0.1.2

TwitchEverywhere

TwitchEverywhere is a .NET Core (6 and 7) library that allows connecting to a Twitch chat and subscribing to messages in that chat.

The goal of this library is to provide a lightweight, strongly typed API for clients so they can avoid parsing raw strings as much as possible. Additionally, Twitch requires an authenticated connection to the IRC server which can get a bit complicated to setup and maintain. Fortunately TwitchEverywhere can do that for you! 😀

If you are planning on using TwitchEverywhere on AWS I suggest using .NET 6 for compatibility reasons.

How To Use It

You will need to provide the following values as parameters to the TwitchConnectionOptions record:

TwitchConnectionOptions options = new(
    Channel: channel,
    AccessToken: accessToken,
    RefreshToken: refreshToken,
    ClientId: clientId,
    ClientSecret: clientSecret,
    ClientName: clientName
);

Next define a MessageCallback method that will handle any messages that TwitchEverywhere sends to your application. The input will be of type TwitchEverywhere.Types.Message and return type void.


// This example only handles MessageType.PrivMsg but you should handle other types here too
private void MessageCallback( Message message ) {
    switch( message.MessageType ) {
        case MessageType.PrivMsg: {
            PrivMsg privMsg = (PrivMsg) message;
            PrivMessageCallback( privMsg );
            break;
        }
        default:
            // This is just an example, uou can handle this case however you wish
            throw new ArgumentOutOfRangeException();
    }
}

Then initialize TwitchEverywhere and pass in the options to the constructor. Finally call the TwitchEverywhere.ConnectToChannel method and pass in your callback as a parameter.

TwitchEverywhere.TwitchEverywhere twitchEverywhere = new( options );
await twitchEverywhere.ConnectToChannel( MessageCallback );

Now whenever TwitchEverywhere receives a message it will pass it to your callback! 🎉

Sample CLI App

There is a sample CLI application that is included as an example in this repo and you can use it to connect with Twitch – give it a try!

In order to connect you need to create an appsettings.json file in the root of the TwitchEverywhereCLI project with the following parameters:

{
  "AccessToken": "your_twitch_access_token",
  "RefreshToken": "your_twitch_refresh_token",
  "ClientId": "your_client_id",
  "ClientSecret": "your_client_secret",
  "ClientName": "your_client_name_all_lowercase",
  "Channel": "channel_you_want_to_connect_to"
}

Supported Functionality

PRIVMSG

PRIVMSG Twitch API

PrivMsg Type

Field Support
Badges ✅
Bits ✅
Color ✅
DisplayName ✅
Emotes ✅
Id ✅
Mod ✅
PinnedChatPaidAmount ✅
PinnedChatPaidCurrency ✅
PinnedChatPaidExponent ✅
PinnedChatPaidLevel ✅
PinnedChatPaidIsSystemMessage ✅
ReplyParentMsgId ✅
ReplyParentUserId ✅
ReplyParentUserLogin ✅
ReplyParentDisplayName ✅
ReplyThreadParentMsg ✅
RoomId ✅
Subscriber ✅
Timestamp ✅
Turbo ✅
UserId ✅
UserType ✅
Vip ✅

CLEARCHAT

CLEARCHAT Twitch API

ClearChat Type

Field Support
BanDuration ✅
RoomId ✅
TargetUserId ✅
Timestamp ✅

CLEARMSG

CLEARMSG Twitch API

ClearMSG Type

Field Support
Login ✅
RoomId ✅
TargetMessageId ✅
Timestamp ✅

GlobalUserState

WIP

Notice

NOTICE Twitch API

NoticeMsg Type

Field Support
MsgId ✅
TargetUserId ✅

RoomState

WIP

UserNotice

WIP

UserState

WIP

Whisper

WIP

Product Compatible and additional computed target framework versions.
.NET 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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on VodOnDemand.TwitchEverywhere.Core:

Package Downloads
VodOnDemand.TwitchEverywhere.Rest

A dotnet library that allows connecting to Twitch REST APIs

VodOnDemand.TwitchEverywhere.Irc

A dotnet library that allows connecting to Twitch

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.9.0 83 5/1/2024
0.8.0 121 3/13/2024
0.7.3 95 3/10/2024
0.7.2 88 2/25/2024
0.7.1 94 2/25/2024
0.7.0 89 2/22/2024
0.6.2 86 1/28/2024
0.6.1 85 1/21/2024
0.6.0 87 1/20/2024
0.5.0 93 1/8/2024
0.4.0 100 12/10/2023
0.3.1 109 11/8/2023
0.3.0 104 10/23/2023
0.2.1 104 10/21/2023
0.2.0 104 10/16/2023
0.1.2 115 10/14/2023
0.1.1 102 10/13/2023
0.1.0 106 10/10/2023
0.0.2 129 10/8/2023
0.0.1 123 10/7/2023