{"id":16473359,"url":"https://github.com/vikpe/qw-demobot","last_synced_at":"2025-04-04T17:15:41.130Z","repository":{"id":195872663,"uuid":"693727535","full_name":"vikpe/qw-demobot","owner":"vikpe","description":"WORK IN PROGRESS - Setup for automated QuakeWorld client streaming demos, accepting commands via Twitch chat.","archived":false,"fork":false,"pushed_at":"2023-09-24T22:06:49.000Z","size":560,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-10T02:35:36.986Z","etag":null,"topics":["demos","quake","quakeworld","twitch"],"latest_commit_sha":null,"homepage":"https://www.twitch.tv/QuakeWorldDemos","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vikpe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"open_collective":"quakeworld"}},"created_at":"2023-09-19T15:36:11.000Z","updated_at":"2023-09-19T21:29:09.000Z","dependencies_parsed_at":"2024-06-21T18:22:52.430Z","dependency_job_id":"d4ce0b96-b0ed-47c6-b7e6-261412325021","html_url":"https://github.com/vikpe/qw-demobot","commit_stats":null,"previous_names":["vikpe/qw-demobot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vikpe%2Fqw-demobot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vikpe%2Fqw-demobot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vikpe%2Fqw-demobot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vikpe%2Fqw-demobot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vikpe","download_url":"https://codeload.github.com/vikpe/qw-demobot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247217220,"owners_count":20903009,"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":["demos","quake","quakeworld","twitch"],"created_at":"2024-10-11T12:26:34.227Z","updated_at":"2025-04-04T17:15:41.107Z","avatar_url":"https://github.com/vikpe.png","language":"Go","funding_links":["https://opencollective.com/quakeworld"],"categories":[],"sub_categories":[],"readme":"# QuakeWorld demobot\n\n\u003e Setup for automated QuakeWorld client streaming demos, accepting commands via Twitch chat.\n\n* **Visit [twitch.tv/QuakeWorldDemos](https://www.twitch.tv/QuakeWorldDemos)** to see it in action.\n\n## How does it work? (TLDR version)\n\nezQuake reads from a pipe located at `/tmp/ezquake_[username]` on posix systems, where `username` is the username of the\nuser who started the ezQuake process.\n\nSo basically all you have to do is to write commands to `/tmp/ezquake_[username]`.\n\n## Stack\n\n* Written in [Go (Golang)](https://github.com/golang/go)\n* [ZeroMQ](https://zeromq.org/) - Communication/messages (single proxy and multiple subscribers/publishers)\n\n## Overview\n\n![image](https://github.com/vikpe/qw-demobot/assets/1616817/5010507a-c773-4d26-a57b-92a015613fba)\n\n* **Message Proxy**: Central point for communication.\n* **Quake Manager**: Interaction with ezQuake\n    * Log monitor (thread): Read in-game events (demo started, demo stopped, etc)\n    * Process monitor (thread): ezQuake events (started, stopped)\n* **Twitch Manager**: Interaction with Twitch channel (e.g. set title).\n* **Twitch Bot**: Interaction with Twitch chat.\n\n## Development\n\n### Directory structure\n\nUses the [Standard Go Project Layout](https://github.com/golang-standards/project-layout).\n\n```bash\ncmd/       # Main applications\ninternal/  # Private application and library code\nscripts/   # Various build, install operations\n```\n\n### Build\n\n**Build specific app**\n\nExample: build proxy\n\n```shell\ncd cmd/proxy\ngo build\n```\n\n**Build all apps**\n\n```shell\n./scripts/build.sh\n```\n\n### Run\n\n**Single app**\n\nExample: start the proxy.\n\n```shell\n./cmd/proxy/proxy \n```\n\n**App controller scripts**\n\nRuns app forever (restarts on error/sigint with short timeout in between).\n\n```shell\nbash scripts/controllers/proxy.sh\nbash scripts/controllers/quake_manager.sh\nbash scripts/controllers/twitch_manager.sh\nbash scripts/controllers/twitch_chatbot.sh\nbash scripts/controllers/ezquake.sh\n```\n\n### Test\n\n```shell\ngo test ./... --cover\n```\n\n## Production\n\nBuild all apps and run all app controller scripts.\n\n```shell\n./scripts/build.sh \u0026\u0026 ./scripts/start.sh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvikpe%2Fqw-demobot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvikpe%2Fqw-demobot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvikpe%2Fqw-demobot/lists"}