/hackersBashTwitchBot

Hacker's bash Twitch chatbot script. Allow twitch bot creation entierly written in pure BASH.

Primary LanguageShellGNU Affero General Public License v3.0AGPL-3.0

hackersBashTwitchBot

Hacker's bash Twitch chatbot script. Allow twitch bot creation entierly written in pure BASH.

What is this?

This is a pure bash twitch-bot. It can connect to some twitch channel, and respond to commands. It can also be plugged over MQTT, or other protocols (SMS, Mail.... anything you want). Twitch's chat uses IRC.

cap

This bot has been created live on Twitch (see replay here: https://www.twitch.tv/videos/843197384). For more informations, checkout my blog at tixlegeek.io, or follow me on Twitter @tixlegeek

Configuration

The bot creates two named pipes, which are then bound to networking subsystem. You can tweak the name of those named pipes:

IRC_INPUT=ircinput
IRC_OUTPUT=ircoutput

IRC Configuration is quite straight-forward. Just generate an Oauth token linked to your twitch account, using https://twitchapps.com/tmi/. The oauth token must be written in "./pass", which will be red by the bot. You must use your twitch user name to be allowed on the server.

IRC_HOST="irc.chat.twitch.tv"
IRC_PORT="6667"
IRC_NICK="tixlegeek"
IRC_USER="tixlegeek"
IRC_PASS=$(cat ./pass)
IRC_CHANNEL="#tixlegeek"
IRC_NOFLOOD_MAXWAIT=5

The bot is mqtt-ready if you have installed mosquitto-client. Here is the parameters:

MQTT_ALLOW=false
MQTT_HOST="HOST"
MQTT_PORT="PORT"
MQTT_USER="USER"
MQTT_PASSWORD="PASSWORD"

The bot uses some custom log functions:

function irc_log()
function irc_in_log()
function irc_out_log()
function sys_log()
function bot_log()
function err_log()

Here are randomized response. random_wait is here to randomize response-time. The max response-time can be tweaked by IRC_NOFLOOD_MAXWAIT.

function irc_random_nope()
function irc_random_ok()
function random_wait()

The end-function is called by trap over SIGINT messages.

function IRC_QUIT ()

This function is just a helper which feeds the socket.

function irc_send()