Package: twitch-chat-irc
Twitch Chat IRCA simple tool used to send and receive Twitch chat messages over IRC with python web sockets. Receiving does not require authentication, while sending does.SetupRequirements:This tool was created in a Python 3 environment.Install via pip withpip install twitch-chat-ircOr install manually withpip install .AuthenticationIf you intend to send messages, you will require authentication.Go tohttps://twitchapps.com/tmi/Click "Connect".Log in with Twitch.Copy the generated oath token. Now, there are 2 ways to proceed:(Recommended) Create a file called.envand save your credentials here as:NICK=xPASS=yreplacingxandywith your username and oauth token respectively.Seeexample.envfor an example.Pass your credentials as function/command line arguments. See below for examples.Command line:Usageusage: twitch_chat_irc.py [-h] [-timeout TIMEOUT]
                          [-message_timeout MESSAGE_TIMEOUT]
                          [-buffer_size BUFFER_SIZE]
                          [-message_limit MESSAGE_LIMIT] [-username USERNAME]
                          [-oauth OAUTH] [--send] [-output OUTPUT]
                          channel_name

Send and receive Twitch chat messages over IRC with python web sockets. For
more info, go to https://dev.twitch.tv/docs/irc/guide

positional arguments:
  channel_name          Twitch channel name (username)

optional arguments:
  -h, --help            show this help message and exit
  -timeout TIMEOUT, -t TIMEOUT
                        time in seconds needed to close connection after not
                        receiving any new data (default: None = no timeout)
  -message_timeout MESSAGE_TIMEOUT, -mt MESSAGE_TIMEOUT
                        time in seconds between checks for new data (default:
                        1 second)
  -buffer_size BUFFER_SIZE, -b BUFFER_SIZE
                        buffer size (default: 4096 bytes = 4 KB)
  -message_limit MESSAGE_LIMIT, -l MESSAGE_LIMIT
                        maximum amount of messages to get (default: None =
                        unlimited)
  -username USERNAME, -u USERNAME
                        username (default: None)
  -oauth OAUTH, -password OAUTH, -p OAUTH
                        oath token (default: None). Get custom one from
                        https://twitchapps.com/tmi/
  --send                send mode (default: False)
  -output OUTPUT, -o OUTPUT
                        output file (default: None = print to standard output)ExamplesReceiving messages1. Output messages from a livestream to standard outputpython -m twitch_chat_irc <channel_name>2. Output messages from a livestream to a filepython -m twitch_chat_irc <channel_name> -output <file_name>If the file name ends in.json, the array will be written to the file in JSON format. Similarly, if the file name ends in.csv, the data will be written in CSV format.Otherwise, the chat messages will be outputted to the file in the following format:[<time>] <author>: <message>3. Set a timeout (close connection if no message has been sent in a certain time)python -m twitch_chat_irc <channel_name> -timeout <time_in_seconds> -output <file_name>There are other options, such asmessage_timeoutandbuffer_size, but these normally do not need to be changed. See above for a description of all options.4. Set a maximum number of messages to read (close connection once limit has been reached)python -m twitch_chat_irc <channel_name> -message_limit <number_of_messages> -output <file_name>Example outputsJSON Example:python -m twitch_chat_irc <channel_name> -output example.jsonCSV Example:python -m twitch_chat_irc <channel_name> -output example.csvText Example:python -m twitch_chat_irc <channel_name> -output example.txtSending messagesThis will open an interactive session which allows you to send messages to the specified channel.1. Send messages to a channel (authentication via .env)python -m twitch_chat_irc --send <channel_name>2. Send messages to a channel (authentication via arguments)python -m twitch_chat_irc --send <channel_name> -username <username> -oauth <oauth_token>Python moduleImporting the modulefromtwitch_chat_ircimporttwitch_chat_ircExamplesStarting a connectionThis allows for both receiving and sending of messages1. Start a connection with Twitch chat using credentials in.env(if any)connection=twitch_chat_irc.TwitchChatIRC()2. Start a connection with Twitch chat using credentialsconnection=twitch_chat_irc.TwitchChatIRC('username','oauth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')Receiving messagesThelistenmethod returns a list when aKeyboardInterruptis fired, or when a timeout/limit has been reached. The arguments shown below can be used together to form more complex method calls.1. Get a list of messages from a channelmessages=connection.listen('channel_name')2. Get a list of messages from a channel, stopping after not getting a message for 30 secondsmessages=connection.listen('channel_name',timeout=30)3. Get a list of messages from a channel, stopping after getting 100 messagesmessages=connection.listen('channel_name',message_limit=100)4. Write messages from a channel to a fileconnection.listen('channel_name',output='file.txt')5. Set a callback function to be fired each time a message is receiveddefdo_something(message):print(message)connection.listen('channel_name',on_message=do_something)Sending messagesThesendmethod allows for messages to be sent to different channels. This method requires valid authentication to be provided, otherwise an exception will be called.1. Send a messagemessage='Hello world!'connection.send('channel_name',message)Close connectionTheclose_connectionmethod closes the connection with Twitch chat. No futher messages can be received or sent now.1. Close a connectionconnection.close_connection()