# TwitchChatbot
A simple chatbot for Twitch written in Ruby. Used for handling commands and previewing chat so that you don't need to have the browser open and can avoid using a lot of RAM and CPU.
----
## Preview
![alt text](https://i.imgur.com/QOuqtfS.png "Preview of the chat bot")
----
I use this chatbot to preview chat without having a browser open so that I save CPU and RAM.
But as you can see in the preview image it's also able to handle custom commands including API commands.
----
## How To Use:
1. Clone this repo to the system which will run the bot
2. `cd` into the repo root and create the file `./credentials.txt` (i.e. `touch credentials.txt`)
2. Copy/paste into the file as such:
* OAUTH = "oauth:GENERATED_OAUTH_TOKEN"
CHANNEL = "TWITCH_CHANNEL_NAME"
BOTNAME = "TWITCH_USERNAME"
* Generate the token for the **OAUTH value** from
* The **CHANNEL value** is the path fragment of your Twitch URL:
https://twitch.tv/channel_name
* The **BOTNAME value** is your Twitch username or the bot's
username (if you created a separate one)
2. Run `ruby TwitchBot.rb`
----
## **Adding Commands:**
### **Regular Commands:**
1. Open **"CommandsHandler.rb"** and scroll down to the `commands` array and add your own.
2. Go to folder **"Responses"** and add the command as a text file in all lowercase. _Examples have been included_
### **Admin Commands:**
If you are adding admin commands add a custom response next to it. There you'll be able to add commands that gives data to the socket instead of a chat message as a response. Example:
`admin_commands = {
"disconnect" => "PART ##{CHANNEL}"
}`
When the command `"!disconnect"` has been typed in chat by the channel owner _(or anyone specified in the `admins` array)_ it will send a request to disconnect from the current Twitch channel.
![alt text](https://i.imgur.com/iYtSvaG.png "Prefix, commands and admin commands")
### **API Commands:**
If you want to add API commands you just scroll down to `# ----- API COMMANDS ----- #` _(First section after receiving messages)_ and add your commands. In the example it calls some functions which are made at the bottom of the script.
![alt text](https://i.imgur.com/CBF7vYf.png "Right after the received messages section")
Then you scroll down to the bottom under `# ----- API COMMANDS ----- #` and add a function to that command.
![alt text](https://i.imgur.com/xejccqp.png "Here you add your dedicated function for the API command")
----
## Extras:
_**The response files in the Responses folder have 3 arguments available**_ (You can add your own)
![alt text](https://i.imgur.com/Pb6JPz8.png "Preview of command arguments")
In the template the arguments USER, CHANNEL, COMMANDS are available. _(COMMANDS shows all available commands)_
![alt text](https://i.imgur.com/7oRcLvw.png "Here you can add your replacements")
## License
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FBenTearzz%2FRubyTwitchChatbot.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FBenTearzz%2FRubyTwitchChatbot?ref=badge_large)