{"id":18053400,"url":"https://github.com/luzifer/twitch-bot","last_synced_at":"2026-04-09T18:28:46.597Z","repository":{"id":41902181,"uuid":"323196281","full_name":"Luzifer/twitch-bot","owner":"Luzifer","description":"Self-hosted alternative to one of the big bots managed by big companies…","archived":false,"fork":false,"pushed_at":"2025-04-06T11:25:15.000Z","size":1849,"stargazers_count":26,"open_issues_count":11,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-06T11:27:47.252Z","etag":null,"topics":["bot","golang","irc","twitch","twitchdev","use-lfs"],"latest_commit_sha":null,"homepage":"https://luzifer.github.io/twitch-bot/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Luzifer.png","metadata":{"files":{"readme":"README.md","changelog":"History.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://www.paypal.me/luzifer"],"github":["Luzifer"],"ko_fi":"luziferus"}},"created_at":"2020-12-21T00:54:39.000Z","updated_at":"2025-04-06T11:25:18.000Z","dependencies_parsed_at":"2023-10-23T19:33:09.826Z","dependency_job_id":"f79f5f3e-b24f-4e28-aa9b-80d5ece43fcb","html_url":"https://github.com/Luzifer/twitch-bot","commit_stats":{"total_commits":643,"total_committers":1,"mean_commits":643.0,"dds":0.0,"last_synced_commit":"621d266391aa5869376768d887c61af08063a0e5"},"previous_names":[],"tags_count":86,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luzifer%2Ftwitch-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luzifer%2Ftwitch-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luzifer%2Ftwitch-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luzifer%2Ftwitch-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Luzifer","download_url":"https://codeload.github.com/Luzifer/twitch-bot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281420,"owners_count":21077423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","golang","irc","twitch","twitchdev","use-lfs"],"created_at":"2024-10-30T23:17:10.563Z","updated_at":"2026-02-20T22:24:38.116Z","avatar_url":"https://github.com/Luzifer.png","language":"Go","funding_links":["https://www.paypal.me/luzifer","https://github.com/sponsors/Luzifer","https://ko-fi.com/luziferus"],"categories":[],"sub_categories":[],"readme":"![](https://badges.fyi/github/license/Luzifer/twitch-bot)\n![](https://badges.fyi/github/downloads/Luzifer/twitch-bot)\n![](https://badges.fyi/github/latest-release/Luzifer/twitch-bot)\n\n# Luzifer / twitch-bot\n\nTwitch-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.\n\nAt the moment it is a work-in-progress and does not yet implment all features it shall in the future.\n\n## Configuration\n\nPlease refer to the [Documentation](https://luzifer.github.io/twitch-bot/) how to setup and configure the bot.\n\n```console\n# twitch-bot --help\nUsage of twitch-bot:\n      --base-url string                  External URL of the config-editor interface (used to generate auth-urls)\n      --command-timeout duration         Timeout for command execution (default 30s)\n  -c, --config string                    Location of configuration file (default \"./config.yaml\")\n      --log-level string                 Log level (debug, info, warn, error, fatal) (default \"info\")\n      --plugin-dir string                Where to find and load plugins (default \"/usr/lib/twitch-bot\")\n      --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)\n      --sentry-dsn string                Sentry / GlitchTip DSN for error reporting\n      --storage-conn-string string       Connection string for the database (default \"./storage.db\")\n      --storage-conn-type string         One of: mysql, postgres, sqlite (default \"sqlite\")\n      --storage-encryption-pass string   Passphrase to encrypt secrets inside storage (defaults to twitch-client:twitch-client-secret)\n      --twitch-client string             Client ID to act as\n      --twitch-client-secret string      Secret for the Client ID\n      --twitch-token string              OAuth token valid for client (fallback if no token was set in interface)\n  -v, --validate-config                  Loads the config, logs any errors and quits with status 0 on success\n      --version                          Prints current version and exits\n      --wait-for-selfcheck duration      Maximum time to wait for the self-check to respond when behind load-balancers (default 1m0s)\n\n# twitch-bot help\nSupported sub-commands are:\n  actor-docs                                        Generate markdown documentation for available actors\n  api-token \u003ctoken-name\u003e \u003cscope\u003e [...scope]         Generate an api-token to be entered into the config\n  copy-database \u003ctarget storage-type\u003e \u003ctarget DSN\u003e  Copies database contents to a new storage DSN i.e. for migrating to a new DBMS\n  reset-secrets                                     Remove encrypted data to reset encryption passphrase\n  tpl-docs                                          Generate markdown documentation for available template functions\n  validate-config                                   Try to load configuration file and report errors if any\n```\n\n### Database Connection Strings\n\nCurrently these databases are supported and need their corresponding connection strings:\n\n#### MySQL\n\n```\n[username[:password]@][protocol[(address)]]/dbname[?param1=value1\u0026...\u0026paramN=valueN]\n\nRecommended parameters:\n  ?charset=utf8mb4\u0026parseTime=True\u0026loc=Local\n```\n\n- Create your database as follows:  \n  ```sql\n  CREATE DATABASE twbot_tezrian DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;\n  ```\n- Start your bot:  \n  ```console\n  # twitch-bot \\\n      --storage-conn-type mysql \\\n      --storage-conn-string 'tezrian:mypass@tcp(mariadb:3306)/twbot_tezrian?charset=utf8mb4\u0026parseTime=True\u0026loc=Local' \\\n      ...\n  ```\n\nSee [driver documentation](https://github.com/go-sql-driver/mysql#dsn-data-source-name) for more details on parameters.\n\n#### Postgres\n\n```\nhost=localhost port=5432 dbname=mydb connect_timeout=10\n```\n\nSee [Postgres documentation](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) for more details in paramters.\n\n#### SQLite\n\n```\nstorage.db\n```\n\nJust pass the filename you want to use.\n\n- Start your bot:  \n  ```console\n  # twitch-bot \\\n      --storage-conn-type sqlite \\\n      --storage-conn-string 'storage.db' \\\n      ...\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluzifer%2Ftwitch-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluzifer%2Ftwitch-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluzifer%2Ftwitch-bot/lists"}