The KISS Twitch bot
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 5.8 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. # ![Twason - The KISS Twitch bot](logo.svg)
  2. Twason is an opinionated Twitch chatbot created with the [KISS principle](https://en.wikipedia.org/wiki/KISS_principle) in mind.
  3. It is based on the [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) protocol and is configurable in just one JSON file.
  4. ## What the hell is that name!?
  5. Twason is a portmanteau based on two words: _Twitch_ (the platform the bot is designed for) and _Jason_ (as the JSON file that you use to configure it).
  6. ## What features does it provide?
  7. Currently, Twason has the following features:
  8. - **Commands:** automatically answer to messages that start with a given command
  9. - Customizable commands prefix (useful if you're using multiple bots)
  10. - Mention the user who invoked the command in the answer
  11. - Help command auto-generation
  12. - **Timer:** automatically send pre-defined messages
  13. - Only one timer to keep the bot from spamming in the chat
  14. - Configurable time and number of messages between each automatic message
  15. - Two strategies available:
  16. - _round-robin_: send the messages in the same order they have been set in the configuration file
  17. - _shuffle_: send the messages in a random order
  18. More features will be available in the future.
  19. ## How do I use it?
  20. Twason is currently in development and may contain bugs, but it is globally usable. Actually, I'm using it on [my Twitch channel](https://twitch.tv/jdeuchnord).
  21. The simplest (and safest) way to use it is to use the Docker image: [`deuchnord/twason`](https://hub.docker.com/r/deuchnord/twason).
  22. A Docker-Compose file is also available for facility.
  23. ### About the Twitch token
  24. To enable the bot to connect to Twitch chat, you will need to generate a token. Head to the [Twitch Chat OAuth Password Generator](https://twitchapps.com/tmi/) and follow the instructions to generate it.
  25. Then, you will need to give it to the bot through the `TWITCH_TOKEN` environment variable.
  26. ### The JSON configuration file
  27. To configure the bot, you will need to create a JSON file in `config/config.json` as defined in the `docker-compose.yml` file.
  28. You can find a minimal configuration in the `config.json.dist` file in this repository.
  29. Below is the complete configuration reference:
  30. ```json5
  31. {
  32. "nickname": "yourbot", // the Twitch name of your bot
  33. "channel": "yourchannel", // the channel the bot must follow
  34. "command_prefix": "!", // the prefix the commands will have (defaults to '!')
  35. "help": true, // if true, a help command will be automatically generated (defaults to true)
  36. "commands": [ // a list of commands that your bot will recognize and respond to (empty by default)
  37. {
  38. "name": "ping", // the command name - spaces are not recommended here (even though they are technically accepted)
  39. "aliases": ["pong"],
  40. "message": "Pong @{author} Kappa" // the message the bot must send when someone invokes this command ('{author}' will be replaced with the user who invoked the command)
  41. }
  42. ],
  43. "timer": { // the configuration of the automatically sent messages
  44. "between": {
  45. "time": 10, // the minimum time that must have passed between two messages (defaults to 10)
  46. "messages": 10 // the minimum number of messages that the chat members must have sent between two messages (defaults to 10)
  47. },
  48. "strategy": "round-robin", // the strategy used to send the messages: "round-robin" or "shuffle" (defaults to "round-robin")
  49. // the messages are actually commands with the same options as above
  50. "pool": [ // a list of commands to send (empty by default)
  51. {
  52. "name": "hello",
  53. "aliases": ["hi"],
  54. "message": "Hello World! HeyGuys"
  55. }
  56. ]
  57. },
  58. "moderator": {
  59. // The configuration of the moderator (see bellow for more information)
  60. }
  61. }
  62. ```
  63. ### The Moderator
  64. Twason has features to help you moderate your chat automatically against most of the nuisance that streamers may face to.
  65. Any moderation feature has to be activated in the configuration in the `moderator` section of the `config.json` file, and have the same options:
  66. ```json5
  67. {
  68. "moderation-feature": { // replace the name with the moderation feature name
  69. "activate": false, // set this to true to activate the feature
  70. "decision": "delete", // the action to take: "delete" or "timeout"
  71. "duration": 5, // if decision is timeout, the duration of the ban, in seconds
  72. "message": "Calm down, {author}" // this message will be sent in the chat when a member becomes a pain in the ass
  73. }
  74. }
  75. ```
  76. Some moderation features may include more options. In this case, they have to be included in the same way.
  77. The available moderation features are the following:
  78. - `caps-lock`: moderate the messages written in CAPS LOCK
  79. Additional options:
  80. - `min-size`: the minimum size of the message to moderate
  81. - `threshold`: the percentage of capital letters that will trigger the moderation
  82. - `flood`: prevent the members of the chat to flood in your chat
  83. Additional options:
  84. - `max-word-length`: the maximum length of a word
  85. - `ignore-hashtags`: if `true`, don't moderate the hashtags (defaults to `false`)
  86. - to moderate the unwanted repetition of messages, you will need to add these two options:
  87. - `max-msg-occurrences`: the number of times a message can be repeated before it gets moderated
  88. - `min-time-between-occurrence`: the time in which a message is counted, in seconds
  89. a member will be moderated if they send `max-msg-occurrences` in `min-time-between-occurrence` seconds
  90. - `raid-cooldown`: when a raid happens, the time in minutes of cooldown in which the flood is authorized