Skip to content

SimpleSandman/TwitchBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

Simple Bot Build status

Custom chat bot for Twitch TV

This is an open-source console application with a .NET Core Web API that will benefit anyone who wants to have a foundation of making their own Twitch bot. This is primarly written in C#/SQL Server using an Azure SQL database from Microsoft. Currently, this bot is not end-user friendly because I'm concentrating on the logic of the bot first.

For developers, please read further down for details on manually setting a dev configuration so the information is always saved.

Check out the wiki for the full list of commands by clicking here!

The bot itself is an account on Twitch that I have made in order to have a custom bot name.

For a development environment (testing), create an AppConfigSecrets.config in the same folder as App.config. If you have any issues setting up this bot, please look further below for possible solutions.

Twitch Chat OAuth Password Generator

The chat bot needs access to the IRC chat in order to communicate with the broadcaster and their viewers.

While you're signed into the chat bot account on Twitch, connect to the Twitch Chat OAuth Password Generator site and grab the oauth:XXXXXXXXXXXXXX string for the twitchOAuth config variable.

Twitch OAuth Implicit Access Token

In order for the chat bot to run correctly, we need a few permissions:

  • channel:manage:broadcast
  • channel:read:subscriptions
  • moderation:read
  • user:read:email

For more information on the permissions above, please refer to the scope documentation here.

NOTE: You'll need to add your own Client-ID since this will be based on a proxy/alternate Twitch account for the chat bot. Also, we will be utilizing http://localhost for development purposes.

This is the "complete" request URL you'll paste into your browser and allow the chat bot access to your channel.

https://id.twitch.tv/oauth2/authorize?client_id=<client id goes here>&redirect_uri=http://localhost&response_type=token&scope=user:read:email+channel:read:subscriptions+channel:manage:broadcast+moderation:read

This is the "complete" response URL you'll see in your browser once you authenticate implicitly. Copy the access token from the response URL and paste it into the twitchAccessToken config variable.

http://localhost/#access_token=<copy access token from here>&scope=<scopes assigned from above>&token_type=bearer

For further documentation on "OAuth Implicit Code Flow", please refer to this link here.

AppConfigSecrets.config

<TwitchBotConfiguration 
    botName="" 
    broadcaster="" 
    currencyType=""
    discordServerName=""
    discordToken=""
    enableDisplaySong="false"
    enableTweets="false" 
    libVLCAudioOutputDevice=""
    regularFollowerHours="30"
    showUserConsoleLog="false"
    spotifyClientId=""
    spotifyRedirectUri=""
    streamLatency="10" 
    twitchBotApiLink=""
    twitchOAuth="" 
    twitchClientId=""
    twitchAccessToken="" 
    twitterConsumerKey="" 
    twitterConsumerSecret=""
    twitterAccessToken="" 
    twitterAccessSecret="" 
    youTubeClientId="" 
    youTubeClientSecret=""
    youTubeBroadcasterPlaylistId=""
    youTubeBroadcasterPlaylistName="" />

Set file to copy-if-newer so it's included in the compilation. For production, this file is not needed and the bot will ask for configuration on first run

Spotify Example Setup

Go to the Spotify Developer Dashboard and create a new app with these settings below:

  • Website:
    • http://localhost:5000
  • Redirect URL:
    • http://localhost:5000/callback

Of course if you're using your own web server, replace localhost with your domain. Here we're using HTTP for local reasons. Always use HTTPS outside of a local environment.

Possible Setup Issues:

  • IIS HTTP Error 404.11 - Not Found The request filtering module is configured to deny a request that contains a double escape sequence

Host Self-Contained ASP.NET Core Web API on Windows with IIS

Scaffold Commands

In case if you need to scaffold anything, here are some commands that may be useful

Models and DbContext

This is a single-line command using the "Package Manager Console" in Visual Studio that allows you to generate ALL of the models and the DbContext class.

Scaffold-DbContext 'Data Source=;Initial Catalog=;User ID=;Password=;' Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Context

If you only need the model and context of a SINGLE table, here's the single-line command for that.

Scaffold-DbContext 'Data Source=;Initial Catalog=;User ID=;Password=;' Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Context -T <TABLE_NAME_HERE>