MCPcopy Index your code
hub / github.com/Luzifer/twitch-bot

github.com/Luzifer/twitch-bot @v3.42.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.42.1 ↗ · + Follow
1,157 symbols 3,675 edges 231 files 374 documented · 32%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Luzifer / twitch-bot

Twitch-Bot is intended as an alternative to having a bot managed by Streamlabs or Streamelements and therefore having more control over it, the availability and how it works.

At the moment it is a work-in-progress and does not yet implment all features it shall in the future.

Configuration

Please refer to the Documentation how to setup and configure the bot.

# twitch-bot --help
Usage of twitch-bot:
      --base-url string                  External URL of the config-editor interface (used to generate auth-urls)
      --command-timeout duration         Timeout for command execution (default 30s)
  -c, --config string                    Location of configuration file (default "./config.yaml")
      --log-level string                 Log level (debug, info, warn, error, fatal) (default "info")
      --plugin-dir string                Where to find and load plugins (default "/usr/lib/twitch-bot")
      --rate-limit duration              How often to send a message (default: 20/30s=1500ms, if your bot is mod everywhere: 100/30s=300ms, different for known/verified bots) (default 1.5s)
      --sentry-dsn string                Sentry / GlitchTip DSN for error reporting
      --sentry-environment string        Environment to submit to Sentry to distinguish bot instances
      --storage-conn-string string       Connection string for the database (default "./storage.db")
      --storage-conn-type string         One of: mysql, postgres, sqlite (default "sqlite")
      --storage-encryption-pass string   Passphrase to encrypt secrets inside storage (defaults to twitch-client:twitch-client-secret)
      --twitch-client string             Client ID to act as
      --twitch-client-secret string      Secret for the Client ID
  -v, --validate-config                  Loads the config, logs any errors and quits with status 0 on success
      --version                          Prints current version and exits
      --wait-for-selfcheck duration      Maximum time to wait for the self-check to respond when behind load-balancers (default 1m0s)

# twitch-bot help
Supported sub-commands are:
  actor-docs                                        Generate markdown documentation for available actors
  api-token <token-name> <scope> [...scope]         Generate an api-token to be entered into the config
  copy-database <target storage-type> <target DSN>  Copies database contents to a new storage DSN i.e. for migrating to a new DBMS
  reset-secrets                                     Remove encrypted data to reset encryption passphrase
  tpl-docs                                          Generate markdown documentation for available template functions
  validate-config                                   Try to load configuration file and report errors if any

Database Connection Strings

Currently these databases are supported and need their corresponding connection strings:

MySQL

[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]

Recommended parameters:
  ?charset=utf8mb4&parseTime=True&loc=Local
  • Create your database as follows:
    sql CREATE DATABASE twbot_tezrian DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
  • Start your bot:
    console # twitch-bot \ --storage-conn-type mysql \ --storage-conn-string 'tezrian:mypass@tcp(mariadb:3306)/twbot_tezrian?charset=utf8mb4&parseTime=True&loc=Local' \ ...

See driver documentation for more details on parameters.

Postgres

host=localhost port=5432 dbname=mydb connect_timeout=10

See Postgres documentation for more details in paramters.

SQLite

storage.db

Just pass the filename you want to use.

  • Start your bot:
    console # twitch-bot \ --storage-conn-type sqlite \ --storage-conn-string 'storage.db' \ ...

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 470
Function 462
Struct 154
FuncType 27
Interface 20
TypeAlias 18
Class 6

Languages

Go89%
TypeScript11%

Modules by API surface

internal/apimodules/overlays/default/eventfeed.js37 symbols
plugins/interface.go29 symbols
internal/apimodules/raffle/database.go29 symbols
twitchWatcher.go26 symbols
plugins/rule.go26 symbols
pkg/twitch/eventsubWebsocketClient.go23 symbols
irc.go22 symbols
config.go21 symbols
pkg/twitch/eventsub.go20 symbols
pkg/twitch/twitch.go18 symbols
internal/service/access/access.go17 symbols
src/types.ts15 symbols

For agents

$ claude mcp add twitch-bot \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page