{"id":19357674,"url":"https://github.com/svglol/dinkdonkbot","last_synced_at":"2026-05-18T07:04:14.374Z","repository":{"id":232762325,"uuid":"785085621","full_name":"svglol/dinkdonkbot","owner":"svglol","description":"A Twitch \u0026 Kick notification discord bot running on CF Workers","archived":false,"fork":false,"pushed_at":"2026-05-17T17:29:24.000Z","size":9549,"stargazers_count":6,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-17T19:42:41.240Z","etag":null,"topics":["bot","cloudflare-d1","cloudflare-kv","cloudflare-workers","discord","discord-api","discord-bot","drizzle-orm","kick","notifications","twitch","twitch-api","twitch-eventsub"],"latest_commit_sha":null,"homepage":"https://svglol.github.io/dinkdonkbot/","language":"TypeScript","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/svglol.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-11T06:59:31.000Z","updated_at":"2026-05-14T22:51:22.000Z","dependencies_parsed_at":"2025-04-17T09:11:37.686Z","dependency_job_id":"dad2e768-782e-43a7-af9d-2f0dd387b2fb","html_url":"https://github.com/svglol/dinkdonkbot","commit_stats":null,"previous_names":["svglol/dinkdonkbot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/svglol/dinkdonkbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svglol%2Fdinkdonkbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svglol%2Fdinkdonkbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svglol%2Fdinkdonkbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svglol%2Fdinkdonkbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/svglol","download_url":"https://codeload.github.com/svglol/dinkdonkbot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svglol%2Fdinkdonkbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33168910,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","cloudflare-d1","cloudflare-kv","cloudflare-workers","discord","discord-api","discord-bot","drizzle-orm","kick","notifications","twitch","twitch-api","twitch-eventsub"],"created_at":"2024-11-10T07:08:48.010Z","updated_at":"2026-05-18T07:04:14.369Z","avatar_url":"https://github.com/svglol.png","language":"TypeScript","funding_links":["https://ko-fi.com/svglol","https://ko-fi.com/svglol)!"],"categories":[],"sub_categories":[],"readme":"# DinkDonk Bot\n[![License](https://img.shields.io/github/license/svglol/dinkdonkbot)](LICENSE)\n[![GitHub stars](https://img.shields.io/github/stars/svglol/dinkdonkbot?style=social)](https://github.com/svglol/dinkdonkbot/stargazers)\n[![Cloudflare Workers](https://img.shields.io/badge/Cloudflare-Workers-F68212?logo=cloudflare)](https://workers.cloudflare.com)\n[![CI](https://github.com/svglol/dinkdonkbot/actions/workflows/ci.yml/badge.svg)](https://github.com/svglol/dinkdonkbot/actions/workflows/ci.yml)\n[![Discord](https://img.shields.io/badge/Join-Discord-5865F2?style=flat\u0026logo=discord\u0026logoColor=white)](https://discord.gg/NuY7Tnrb6F)\n\nA powerful Discord bot for Twitch \u0026 Kick notifications, emote management, and interactive games, running on Cloudflare Workers.\n\n## Features\n- **Live Stream Notifications**: Get instant notifications when your favorite Twitch \u0026 Kick streamers go live\n- **Multistream Support**: Merge Twitch and Kick notifications for streamers who broadcast on both platforms\n- **Clip Highlights**: Stay updated with the best moments from your favorite streamers posted hourly\n- **Emote Management**: Easily add emotes from 7TV or other Discord servers to your own server\n- **Interactive Games**: Play hangman, rock paper scissors, and more with your community\n- **Utility Commands**: Weather, time, dice rolling, and timestamp generation\n\n## Get Started\n[![Add DinkDonk Bot](https://img.shields.io/badge/Add%20to-Discord-5865F2?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.com/application-directory/1227866873220173824)\n[![Documentation](https://img.shields.io/badge/Read-Documentation-blue?style=for-the-badge\u0026logo=gitbook\u0026logoColor=white)](https://svglol.github.io/dinkdonkbot/)\n[![Join Discord Server](https://img.shields.io/badge/Join%20Discord-Server-5865F2?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.gg/NuY7Tnrb6F)\n[![Ko-fi](https://img.shields.io/badge/Support%20us-fc4c58?style=for-the-badge\u0026logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/svglol)\n\n---\n\n## Quickstart\nGet started in **4 easy steps** with the `/quickstart` command in your Discord server:\n\n### Step 1: Install the Bot\nAdd DinkDonk Bot to your Discord server using [this link](https://discord.com/application-directory/1227866873220173824).\n\n### Step 2: Add a Streamer\nAdd a Twitch or Kick streamer and choose which channel to post notifications in.\n- Twitch: `/streams twitch add \u003cstreamer\u003e \u003cchannel\u003e`\n- Kick: `/streams kick add \u003cstreamer\u003e \u003cchannel\u003e`\n\n### Step 3: Multistream Notifications\nLink Twitch \u0026 Kick streamers together to reduce spam by merging notifications.\n*Note: You must have both Twitch and Kick notifications set up for this to work, and both need to post to the same channel.*\n- `/streams multistream link \u003ctwitch-streamer\u003e \u003ckick-streamer\u003e`\n\n### Step 4: Test Your Notification *(Optional)*\nPreview what notifications will look like before going live.\n- `/streams twitch test \u003cstreamer\u003e`\n- `/streams kick test \u003cstreamer\u003e`\n\n### Step 5: Explore More Features\n- **Clips**: Get hourly highlights with `/clips twitch add`\n- **Emotes**: Add emotes from other servers with `/emote add`\n- **Games**: Play `/hangman`, `/rps`, `/coinflip`, and more\n\n### Need Help?\nUse `/help` for detailed commands or join our [Discord server](https://discord.gg/NuY7Tnrb6F) for support!\n\n---\n\n## Commands\n\n### 🟪 Twitch Stream Notifications\n- `/streams twitch add \u003cstreamer\u003e \u003cdiscord-channel\u003e [ping-role] [live-message] [offline-message] [cleanup]` - Add a Twitch streamer to receive notifications for going online\n- `/streams twitch remove \u003cstreamer\u003e` - Remove a Twitch streamer from receiving notifications for going online or offline\n- `/streams twitch edit \u003cstreamer\u003e [discord-channel] [ping-role] [remove-ping-role] [live-message] [offline-message] [cleanup]` - Edit a Twitch streamer's settings\n- `/streams list` - List the Twitch streamers that you are subscribed to\n- `/streams twitch test \u003cstreamer\u003e [message-type] [multistream] [global]` - Test the notification for a streamer (online/offline)\n- `/streams twitch details \u003cstreamer\u003e` - Show the details for a streamer you are subscribed to\n- `/streams help` - Show help for the Twitch command and its subcommands\n\n### 🟩 Kick Stream Notifications\n- `/streams kick add \u003cstreamer\u003e \u003cdiscord-channel\u003e [ping-role] [live-message] [offline-message] [cleanup]` - Add a Kick streamer to receive notifications for going online\n- `/streams kick remove \u003cstreamer\u003e` - Remove a Kick streamer from receiving notifications for going online\n- `/streams kick edit \u003cstreamer\u003e [discord-channel] [ping-role] [remove-ping-role]  [live-message] [offline-message] [cleanup]` - Edit a Kick streamer's settings\n- `/streams list` - View your subscribed Kick streamers\n- `/streams kick test \u003cstreamer\u003e [message-type] [multistream] [global]` - Test the notification for a streamer (online/offline)\n- `/streams kick details \u003cstreamer\u003e` - Show the details for a streamer you are subscribed to\n- `/streams help` - Show help for the Kick command\n\n### 🔗 Multistream Notifications\n- `/streams multistream link \u003ctwitch-streamer\u003e \u003ckick-streamer\u003e [priority] [late-merge]` - Setup a multistream connection between a Twitch \u0026 Kick channel\n- `/streams multistream unlink [twitch-streamer] [kick-streamer]` - Remove a multistream connection between a Twitch \u0026 Kick channel\n- `/streams multistream edit [twitch-streamer] [kick-streamer] [priority] [late-merge]` - Edit a multistream setup settings\n- `/streams list` - List your currently set up multistreams\n- `/streams help` - Show help for the multistream command\n\n### 🎬 Twitch Clip Highlights\n- `/clips twitch add \u003cstreamer\u003e \u003cdiscord-channel\u003e` - Subscribe to Twitch clips from a streamer to be posted hourly\n- `/clips twitch remove \u003cstreamer\u003e` - Unsubscribe from Twitch clips from a streamer\n- `/clips twitch edit \u003cstreamer\u003e \u003cdiscord-channel\u003e` - Update the settings for a Twitch clip subscription\n- `/clips twitch list` - View your subscribed Twitch clip channels\n- `/clips twitch help` - Show help for the Twitch clips command\n\n### 🎂 Birthdays\n- `/birthdays register \u003cday\u003e \u003cmonth\u003e [year] [timezone] [user]` - Register or update a birthday\n- `/birthdays remove [user]` - Remove a birthday\n- `/birthdays upcoming [days]` - Show upcoming birthdays in the server\n- `/birthdays list [month]` - List all birthdays for a specific month\n- `/birthdays show [user]` - Show the birthday for a specific user\n- `/birthdays help` - Show help for the birthdays command\n- `/birthdays-config setup \u003cannouncement-channel\u003e \u003coverview-channel\u003e [role] [timezone]` - (Admin) Setup the birthday config for this server\n- `/birthdays-config edit [announcement-channel] [overview-channel] [role] [timezone] [enable]` - (Admin) Edit the birthday config for this server\n- `/birthdays-config details` - (Admin) Show the current birthday configuration for this server\n- `/birthdays-config test` - (Admin) Send a test birthday announcement\n\n### 🥳 Emote Management\n- `/emote add \u003curl_or_emoji\u003e` - Add an emote from another Discord server or 7TV\n- `/emote help` - Show help for the emote command\n- **Context Menu** - `Steal Emote/Sticker` - Steal an emote or sticker from a message\n\n### 🎮 Games \u0026 Fun\n- `/hangman` - Create a community game of hangman\n- `/rps \u003copponent\u003e` - Challenge someone to a game of rock paper scissors\n- `/coinflip` - Flip a coin\n- `/roll [dice] [sides]` - Roll some dice (1-10 dice, 2-1000 sides each)\n- `/randomemote` - Post a random emote from the current server\n- `/dinkdonk` - Get dinkdonked\n\n### 🔧 Utility Commands\n- `/weather \u003clocation\u003e` - Get the current weather for a location\n- `/time \u003clocation\u003e` - Get the current time for a location\n- `/timestamp \u003cdate\u003e \u003ctime\u003e \u003ctimezone\u003e` - Create a Discord timestamp for a specific date/time and UTC offset\n\n### ℹ️ Bot Information\n- `/help` - Show help for DinkDonk Bot\n- `/commands` - List all commands for DinkDonk Bot\n- `/invite` - Get an invite link to add the bot to your server\n\n## Development\nThis bot is built to run on Cloudflare Workers and was originally based on the [Discord Cloudflare Sample App](https://github.com/discord/cloudflare-sample-app).\n\nEnviroment Variables\n```\nDISCORD_APPLICATION_ID: \"your_discord_app_id\"\nDISCORD_PUBLIC_KEY: \"your_discord_app_public_key\"\nDISCORD_TOKEN: \"your_discord_bot_token\"\nTWITCH_CLIENT_ID: \"your_twitch_client_id\"\nTWITCH_CLIENT_SECRET: \"your_twitch_client_secret\"\nTWITCH_EVENT_SECRET: \"your_twitch_event_secret\"\nWEBHOOK_URL: \"https://your_ngrok_url/\nKICK_CLIENT_ID: \"your_kick_client_id\"\nKICK_CLIENT_SECRET: \"your_kick_client_secret\"\nANALYTICS_DATASET: \"dinkdonk_bot_events\" // used for analytics (not required for dev)\nACCOUNT_ID: \"your_cloudflare_account_id\" // used for analytics (not required for dev)\nAPI_TOKEN: \"your_cloudflare_api_token\" // used for analytics (not required for dev)\n```\n\n## Running Locally\n```bash\npnpm run dev\n```\n\n```bash\npnpm run ngrok\n```\n\n```bash\nEdit your Discord Application Interactions Endpoint URL to match ngrok URL\nEdit Kick.com application webhooks url to match ngrok URL + /kick-eventsub\nEdit WEBHOOK_URL environment variable to match ngrok URL\n```\n\n## Support\nNeed help or have questions? Join our [Discord server](https://discord.gg/NuY7Tnrb6F) or check out the [documentation](https://svglol.github.io/dinkdonkbot/).\n\nIf you find DinkDonk Bot useful, consider [supporting us on Ko-fi](https://ko-fi.com/svglol)!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvglol%2Fdinkdonkbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsvglol%2Fdinkdonkbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvglol%2Fdinkdonkbot/lists"}