Skip to content

metal-messiah/JopeBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

What JopeBot Is, and How It Works

JopeBot is a desktop (Windows, Linux, Mac) twitch chat manager that aims to organize requests based on viewer interaction levels. It is designed to integrate with Twitch channels, and use commands from the channel chat room to function.

It uses the information you must provide in the ./config.json file to connect to your twitch and streamlabs accounts to provide a seamless, self-administering request manager.

Configuring the Application (config.json)

Configuration will occur the first time you open the application.

Steamlabs API

  • Providing your Streamlabs "socket API code" will allow the application to utilize your donations in real time to manage the setlist
  • API SETTINGS / API TOKENS / Your API Access Token

Twitch Username

  • Tells the bot where to connect
  • Tells the bot who to give admin privileges to

Debug Mode

  • Must be true or false
  • If True, will only show bot messages on your desktop
  • If False, will output messages to twitch channel chat room

Priority Amount

  • The value of Donations/Subs/Cheers used to auto-prioritize requests

Mega Priority Amount

  • The value of Donations/Subs/Cheers used to move requests to the very front

Bot Username

  • The Twitch username for the bot to use (Create a new twitch account, do not use your primary channel)

Bot Oauth

  • The oauth token generated for the bot twitch username, which can be generated HERE

Mods Use Admin Commands

  • Whether mods can use admin commands. If false, only the streamer will have the ability to run admin commands.

Now Playing Voice

  • If set to true, when a request is activated a voice will announce the song

Tenacious D Now Playing Intros

  • If set to true, and "Now Playing Voice" is enabled, will introduce requests with quotes from Tenacious D episodes (vulgar)

Skip Null Requests

  • Will skip null requests, playing the next request with a valid message

Days Between Priority Requests

  • Allows you to set a grace period between priority requests.
  • Example --> Setting to 0 days allows users unlimited priority requests.
  • Example --> Setting to 7 days makes users wait 1 week between priority requests.

Priority Request Tokens

  • Number of tokens a priority request costs

VIP Request Tokens

  • Number of tokens a VIP request costs

Currency Alias

  • What your tokens will be called
  • Example --> "Farts" --> You need 3 Farts to obtain a VIP request

Running the Application

run JopeBot.exe to activate the application. You can change settings without restarting the application.

Using With OBS

The application will automatically generate .txt files in the ./obs directory

  • current.txt will show the latest song activated by !playnext or !playrandom
  • played.txt will show the list of songs activated by !playnext or !playrandom
  • poll.txt will only show after the command !poll is activated in chat. It will outline the choices and will guide the chat.
  • priority.txt will show the list of active priority users, assigned through donations, cheers, subs, or otherwise
  • setlist.txt will show the number of songs in the setlist, show the currently active request, and preview the next 5 requests.

Automatic Backups

The application will automatically create "saved states" every time a ! command is issued in chat. These states are stored on the local machine, under ./backup. They are in JSON format, and can be viewed with any text editor. They can be used to set JopeBot to that state, using !restoresetlist

The application will automatically update a record of the played songs for the session every time a ! command is issued in chat. This file is located under ./history

Chat Commands

General Chat Commands

Request a Song -- !request MESSAGE

  • Adds a request for the user to the setlist
  • Only 1 active request allowed per user
  • Subsequent requests will overwrite the previous request without losing queue position
  • Requests will go into the setlist in the order in which they are received
  • Example --> !request Cirice by Ghost

Use Token(s) to Elevate Request -- Ask streamer/mods (default !priority)

  • Bumps the user's request up to the end of the existing priority users' requests
  • Tokens are auto-assigned by the bot for subs, re-subs, and 500 bit cheers
  • Requests will get bumped up through the setlist in the order in which they are received
  • Is subject to time buffers
  • Example --> !priority

Use Token(s) to Assign VIP -- !vip

  • Bumps the user's request up to the end of the existing VIP users' requests
  • Tokens are auto-assigned by the bot for subs, re-subs, and 500 bit cheers
  • Requests will get bumped up through the setlist in the order in which they are received
  • Example --> !vip

All JopeBot Data... live via Web Server! -- !info

  • Generates a URL to a web server that returns everything you'd want to know

Give tokens to a fellow twitch user -- !give USERNAME AMOUNT

  • Takes tokens from your stash, and places them into another's
  • Is subject to time buffers
  • Example --> !give @jopethemetalmessiah 5

Remove your elevated request, and get your spent tokens refunded -- !refund

  • Refunds the amount of tokens you spent and removes your elevated request

Vote for one of the active poll choices -- !vote 1 or !vote 2

  • Vote for the active poll choices
  • Only 1 vote per chat user
  • see !poll for more information

Admin Commands

Assign Priority -- !priority @username

  • Bumps the user's request up to the end of the existing priority users' requests
  • Tokens are auto-assigned by the bot for subs, re-subs, and 500 bit cheers
  • Requests will get bumped up through the setlist in the order in which they are received
  • Example --> !priority

Move user's request -- !move USERNAME

  • Move user's request to the very front of the setlist
  • Example --> !move @jopethemetalmessiah

Play first song in setlist (removes request) -- !playnext

  • Activates the first song request in the queue, and removes it from the setlist.
  • Assigns the request to current request, and adds the request to the Played list for tracking
  • If "skip null requests" is true, will skip empty requests and instead play the next valid request

Play random song in setlist (removes request) -- !playrandom

  • Activates a RANDOM request in the setlist, and removes it from the setlist.
  • Ignores the priority list
  • Assigns the request to current request, and adds the request to the Played list for tracking

Remove the next request in the setlist (does not play) -- !removenext

  • Removes the next unplayed request in the queue
  • Mainly for use on long standing null requests

Refund all elevated requests (must be sent from bot GUI) -- !refund

  • Removes elevated requests, and refunds appropriate token amounts

Add tokens to a user account -- !addtokens USERNAME AMOUNT

  • Example --> !addtokens @jopethemetalmessiah 5

Reset priority request cooldown time -- !resetcooldown USERNAME

  • Example --> !resetcooldown @jopethemetalmessiah

Undo the last played song -- !undo

  • Places the last played song back into the setlist

Start a chat poll between 2 random requests -- !poll

  • Grabs 2 random requests for chat users to vote on
  • Ignores priority list
  • The request which receives the most votes will be pushed to the very front of the
  • Poll is active for 30 seconds after the command is written
  • see !vote for more information

Stop the bot from accepting new requests -- !pause

  • Stops new requests from being added to the setlist
  • Does not alter existing requests
  • Can be undone with !unpause

Allow the bot to accept new requests -- !unpause

  • Allows new requests to be added to the setlist

Restore JopeBot from an auto-generated backup file -- !restoresetlist (optional file name)

  • Restores the last saved state generated, which is stored on the host machine under ./backup
  • Saved states are generated every time a ! command is issued in chat, keeping the saved state very close to real time
  • If a file name is not specified, it will automatically restore TODAY's saved session
  • Example 1 - Restore Today's Session -- !restoresetlist
  • Example 2 - Restore A Specific Session -- !restoresetlist backup_10_17_2017

Setlist Bot Help -- !help

  • returns the list of setlist commands