{"id":13758466,"url":"https://github.com/MinnDevelopment/strumbot","last_synced_at":"2025-05-10T08:30:29.346Z","repository":{"id":44753863,"uuid":"226680624","full_name":"MinnDevelopment/strumbot","owner":"MinnDevelopment","description":"A Twitch Stream Notification Bot","archived":false,"fork":false,"pushed_at":"2023-05-23T13:04:54.000Z","size":3016,"stargazers_count":31,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-14T13:29:11.376Z","etag":null,"topics":["discord","discord-bot","hacktoberfest","jda","jda-ktx","kotlin","twitch"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/MinnDevelopment.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":{"github":"minndevelopment"}},"created_at":"2019-12-08T14:31:41.000Z","updated_at":"2024-12-12T22:00:13.000Z","dependencies_parsed_at":"2024-01-15T03:42:52.854Z","dependency_job_id":null,"html_url":"https://github.com/MinnDevelopment/strumbot","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinnDevelopment%2Fstrumbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinnDevelopment%2Fstrumbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinnDevelopment%2Fstrumbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinnDevelopment%2Fstrumbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MinnDevelopment","download_url":"https://codeload.github.com/MinnDevelopment/strumbot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253389413,"owners_count":21900756,"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":["discord","discord-bot","hacktoberfest","jda","jda-ktx","kotlin","twitch"],"created_at":"2024-08-03T13:00:30.650Z","updated_at":"2025-05-10T08:30:28.366Z","avatar_url":"https://github.com/MinnDevelopment.png","language":"Kotlin","funding_links":["https://github.com/sponsors/minndevelopment"],"categories":["Libraries"],"sub_categories":["Kotlin"],"readme":"[live-event]: https://raw.githubusercontent.com/MinnDevelopment/strumbot/master/assets/readme/live-event.png\n[update-event]: https://raw.githubusercontent.com/MinnDevelopment/strumbot/master/assets/readme/update-event.png\n[vod-event]: https://raw.githubusercontent.com/MinnDevelopment/strumbot/master/assets/readme/vod-event.png\n[rank-joining]: https://raw.githubusercontent.com/MinnDevelopment/strumbot/master/assets/readme/rank-joining.gif\n[example-config]: https://github.com/MinnDevelopment/strumbot/blob/master/example-config.json\n\n[ ![docker-pulls](https://img.shields.io/docker/pulls/minnced/strumbot?logo=docker\u0026logoColor=white) ](https://hub.docker.com/r/minnced/strumbot)\n[ ![](https://img.shields.io/docker/image-size/minnced/strumbot/1.3.6-min?logo=docker\u0026logoColor=white) ](https://hub.docker.com/layers/minnced/strumbot/1.3.6-min/images/sha256-8ee42948585d4cf869633de6cb9a713c131e81e68cb26fe8d94f576ba7a85601)\n[ ![release](https://img.shields.io/github/v/tag/minndevelopment/strumbot) ](https://github.com/MinnDevelopment/strumbot/releases/latest)\n\n# Strumbot\n\nA Twitch Stream Notification Bot. This will send notifications to a webhook in your Discord server when the subscribed streamer goes live or changes their game.\n\n## Requirements\n\n- JDK 11 or better\n- Stable Internet\n\n## Configurations\n\nThe configuration file must be called `config.json` and has to be in the working directory. An example configuration can be found in [`example-config.json`][example-config].\nAnything marked with **(optional)** can be set to `null` to be disabled.\n\n### Logger\n\nIn this section you can configure some custom logging pattern and the minimum logging level to show in your Discord Webhook.\nBy default, this will only log for messages with level WARN or ERROR.\n\n- `level` The severity level at which to start logging (INFO \u003e WARN \u003e ERROR)\n- `pattern` The custom logback pattern to use\n\nThe webhook URL is configured in `discord.logging` below.\n\n### Discord\n\nThis section of the configuration contains settings for the discord side of the bot such as role names and webhook URLs.\nNote that the bot uses global role cache, independent of servers, and it is recommended to only have the bot account in one server.\n\nIf you don't know how to create a discord bot and get access to the token: [How to make a discord bot](https://github.com/MinnDevelopment/strumbot/blob/master/guides/HOW_TO_CREATE_A_BOT.md)\n\n- `token` The discord bot token\n- `stream_notifications` The webhook URL to send stream updates to (see [How to create a webhook](https://github.com/MinnDevelopment/strumbot/blob/master/guides/HOW_TO_CREATE_A_WEBHOOK.md))\n- `role_name` Configuration of `type`-\u003e`role` to change the default names of the update roles (empty value `\"\"` disables the role, and removes the role mention from notifications)\n- `enabled_events` Array of events to publish to the `stream_notifications` webhook\n- `logging` Optional webhook URL for errors and warnings printed at runtime (omit or null to disable)\n- `show_notify_hints` Whether to show a hint in the embed footer about the `/notify` command\n\nThe roles used for updates can be managed by the bot with the `/notify role: \u003ctype\u003e` command.\nThis command will automatically assign the role to the user.\n\nFor example, with the configuration `\"live\": \"Stream is Live\"` the bot will accept the command `/notify role: live` and assign/remove the role `Stream is Live` for the user.\nThese commands are *ephemeral*, which means they only show up to the user who invokes them. This way you can use them anywhere without having any clutter in chat!\n\n![rank-joining.gif][rank-joining]\n\n\n#### Events\n\n![vod-event.png][vod-event]\n\n- [`live`][live-event] When the streamer goes live\n- [`update`][update-event] When the streamer changes the current game\n- [`vod`][vod-event] When the streamer goes offline (includes vod timestamps for game changes)\n\n### Twitch\n\nThis configuration section contains required information to track the stream status.\n\nIf you don't know how to make a twitch application and access the client_id: [How to make a twitch app](https://github.com/MinnDevelopment/strumbot/blob/master/guides/HOW_TO_CREATE_A_TWITCH_APP.md)\n\n- `offline_grace_period` Minutes to wait before firing a VOD event after channel appears offline (Default: 2)\n- `top_clips` The maximum number of top clips to show in the vod event (0 \u003c= x \u003c= 5)\n- `client_id` The twitch application's client_id\n- `client_secret` The twitch application's client_secret\n- `user_login` The username of the tracked streamer\n\nThe `offline_grace_period` is an engineering parameter which is helpful to handle cases where streams temporarily appear offline due to outages or otherwise unwanted connection issues.\n\n### Example\n\n```json\n{\n  \"discord\": {\n    \"token\": \"NjUzMjM1MjY5MzM1NjQ2MjA4.*******.*******\",\n    \"stream_notifications\": \"https://discord.com/api/webhooks/*******/******\",\n    \"logging\": null,\n    \"show_notify_hints\": true,\n    \"role_name\": {\n      \"live\": \"live\",\n      \"vod\": \"vod\",\n      \"update\": \"update\"\n    },\n    \"enabled_events\": [\"live\", \"update\", \"vod\"]\n  },\n  \"twitch\": {\n    \"top_clips\": 5,\n    \"offline_grace_period\": 2,\n    \"client_id\": \"*******\",\n    \"client_secret\": \"*******\",\n    \"user_login\": [\"Elajjaz\", \"Distortion2\"]\n  }\n}\n```\n\n## Setup\n\nCurrently, I only provide 2 setups. Either [docker](https://hub.docker.com) or through a script.\nI'm open for pull requests that introduce more or better setups.\n\n### Docker\n\nThe image is hosted at [docker hub](https://hub.docker.com/r/minnced/strumbot).\n\n1. Open a terminal in the directory of your choice (which includes the `config.json`!)\n1. Pull the image with `docker pull minnced/strumbot:%VERSION%` (Replace `%VERSION%` with the version here: [latest release](https://github.com/MinnDevelopment/strumbot/releases/latest))\n1. Change the configuration in `config.json`\n1. Create and start a container with this command:\n    ```sh\n    docker run -d \\\n      -v ./config.json:/etc/strumbot/config.json \\\n      --name strumbot \\\n      --restart unless-stopped \\\n      minnced/strumbot:%VERSION%\n   ```\n\n### Script\n\n1. Download the zip archive from the [latest release](https://github.com/MinnDevelopment/strumbot/releases/latest)\n1. Unzip and open the resulting directory in a terminal of your choice\n1. Change the configuration in `config.json`\n1. Run the script for your current platform:\n    1. Windows: `run.bat`\n    1. Linux: `run.sh`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMinnDevelopment%2Fstrumbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMinnDevelopment%2Fstrumbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMinnDevelopment%2Fstrumbot/lists"}