Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tomaarsen/twitchdialcheck

Twitch Bot to detect and rate DIAL-in checks.
https://github.com/tomaarsen/twitchdialcheck

bot python twitch twitch-bot twitchbot

Last synced: 28 days ago
JSON representation

Twitch Bot to detect and rate DIAL-in checks.

Awesome Lists containing this project

README

        

# TwitchDialCheck
Twitch Bot to detect and rate DIAL-in checks.

---
# Note
This Bot was written for one streamer in particular, which means this script likely will not be useful to anyone else, but people interested in checking out how I use my [TwitchWebsocket](https://github.com/CubieDev/TwitchWebsocket) library.

---
# Functionality
This Bot will read Twitch chat looking for messages such as "Dial", "dangDial", "D I A L", and so forth.
Ten seconds after the most recent of these messages the bot will output a "Dial Percentage" based on this formula:

`trues = amount of DIAL messages`

`ratio = trues / total messages found in the span`

`percentage = trues / (amount of current viewers / 1.5) * 100`

`result = min(percentage * ratio * 10 * 0.9 + 10 + random.uniform(-1, 1), 100)`

In short, it's a linear formula based on the percentage of chat that was involved in the messages, and the ratio of DIAL messages relative to other messages, ranging from 10% to 100%.

---

# Settings
This bot is controlled by a settings.txt file, which looks like:
```
{
"Host": "irc.chat.twitch.tv",
"Port": 6667,
"Channel": "#",
"Nickname": "",
"Authentication": "oauth:"
}
```

| **Parameter** | **Meaning** | **Example** |
| -------------------- | ----------- | ----------- |
| Host | The URL that will be used. Do not change. | "irc.chat.twitch.tv" |
| Port | The Port that will be used. Do not change. | 6667 |
| Channel | The Channel that will be connected to. | "#CubieDev" |
| Nickname | The Username of the bot account. | "CubieB0T" |
| Authentication | The OAuth token for the bot account. | "oauth:pivogip8ybletucqdz4pkhag6itbax" |

*Note that the example OAuth token is not an actual token, but merely a generated string to give an indication what it might look like.*

I got my real OAuth token from https://twitchapps.com/tmi/.

---

# Requirements
* [Python 3.6+](https://www.python.org/downloads/)
* [Module requirements](requirements.txt)

Install these modules using `pip install -r requirements.txt`

Among these modules is my own [TwitchWebsocket](https://github.com/CubieDev/TwitchWebsocket) wrapper, which makes making a Twitch chat bot a lot easier.
This repository can be seen as an implementation using this wrapper.

---

# Other Twitch Bots

* [TwitchMarkovChain](https://github.com/CubieDev/TwitchMarkovChain)
* [TwitchAIDungeon](https://github.com/CubieDev/TwitchAIDungeon)
* [TwitchGoogleTranslate](https://github.com/CubieDev/TwitchGoogleTranslate)
* [TwitchCubieBotGUI](https://github.com/CubieDev/TwitchCubieBotGUI)
* [TwitchCubieBot](https://github.com/CubieDev/TwitchCubieBot)
* [TwitchRandomRecipe](https://github.com/CubieDev/TwitchRandomRecipe)
* [TwitchUrbanDictionary](https://github.com/CubieDev/TwitchUrbanDictionary)
* [TwitchRhymeBot](https://github.com/CubieDev/TwitchRhymeBot)
* [TwitchWeather](https://github.com/CubieDev/TwitchWeather)
* [TwitchDeathCounter](https://github.com/CubieDev/TwitchDeathCounter)
* [TwitchSuggestDinner](https://github.com/CubieDev/TwitchSuggestDinner)
* [TwitchPickUser](https://github.com/CubieDev/TwitchPickUser)
* [TwitchSaveMessages](https://github.com/CubieDev/TwitchSaveMessages)
* [TwitchMMLevelPickerGUI](https://github.com/CubieDev/TwitchMMLevelPickerGUI) (Mario Maker 2 specific bot)
* [TwitchMMLevelQueueGUI](https://github.com/CubieDev/TwitchMMLevelQueueGUI) (Mario Maker 2 specific bot)
* [TwitchPackCounter](https://github.com/CubieDev/TwitchPackCounter) (Streamer specific bot)
* [TwitchDialCheck](https://github.com/CubieDev/TwitchDialCheck) (Streamer specific bot)
* [TwitchSendMessage](https://github.com/CubieDev/TwitchSendMessage) (Meant for debugging purposes)