{"id":18666824,"url":"https://github.com/luke-zhang-04/debate-timer","last_synced_at":"2025-07-03T03:04:06.885Z","repository":{"id":51308615,"uuid":"306922433","full_name":"Luke-zhang-04/debate-timer","owner":"Luke-zhang-04","description":"A flexible, powerful, and user-friendly general-purpose debate Discord Bot","archived":false,"fork":false,"pushed_at":"2022-01-19T02:22:15.000Z","size":1472,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-03T03:03:21.388Z","etag":null,"topics":["debate","discord-bot"],"latest_commit_sha":null,"homepage":"https://luke-zhang-04.github.io/debate-timer/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Luke-zhang-04.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-24T16:16:10.000Z","updated_at":"2023-03-07T22:49:17.000Z","dependencies_parsed_at":"2022-09-24T18:06:46.255Z","dependency_job_id":null,"html_url":"https://github.com/Luke-zhang-04/debate-timer","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/Luke-zhang-04/debate-timer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luke-zhang-04%2Fdebate-timer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luke-zhang-04%2Fdebate-timer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luke-zhang-04%2Fdebate-timer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luke-zhang-04%2Fdebate-timer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Luke-zhang-04","download_url":"https://codeload.github.com/Luke-zhang-04/debate-timer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luke-zhang-04%2Fdebate-timer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263250595,"owners_count":23437288,"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":["debate","discord-bot"],"created_at":"2024-11-07T08:34:15.752Z","updated_at":"2025-07-03T03:04:06.830Z","avatar_url":"https://github.com/Luke-zhang-04.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eDebate Timer Bot\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eA flexible, powerful, and user-friendly general-purpose debate Discord Bot\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://luke-zhang-04.github.io/debate-timer/\"\u003eWeb Timer\u003c/a\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://aws.amazon.com/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Runs%20on-AWS%20EC2-orange?style=for-the-badge\u0026logo=amazon-aws\u0026logoColor=orange\" alt=\"AWS EC2\"/\u003e\u003c/a\u003e\n    \u003cbr/\u003e\n    \u003ca href=\"https://github.com/Luke-zhang-04/debate-timer/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/workflow/status/luke-zhang-04/debate-timer/Node.js%20CI?label=Build%20and%20Tests\u0026logo=Github\" alt=\"workflow badge\"/\u003e\u003c/a\u003e\n    \u003ca href=\"#nodejs-versions\"\u003e\u003cimg src=\"https://img.shields.io/node/v/discord.js\" alt=\"node versions\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/Luke-zhang-04/debate-timer/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/Luke-zhang-04/debate-timer\" alt=\"license\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"#features-rundown\"\u003eFeatures\u003c/a\u003e •\n    \u003ca href=\"#compared-to-other-bots\"\u003eCompared to Other Bots\u003c/a\u003e •\n    \u003ca href=\"#nodejs-versions\"\u003eNodeJS Compatibility\u003c/a\u003e •\n    \u003ca href=\"#setup\"\u003eSetup\u003c/a\u003e\n    \u003cp align=\"center\"\u003e\u003cimg width=\"90%\" src=\"./assets/timer.png\" alt=\"Timer\"/\u003e\u003c/p\u003e\n\u003c/p\u003e\n\n## Features Rundown\n\n-   Timer\n    -   You can start, stop, pause, and resume timers\n    -   You can wind timers forwards or backwards\n-   Motions\n    -   Get up to 20 motions by default, complete with info slides and ensuring messages don't exceed Discord message maximums\n    -   All motions are from the [HelloMotions spreadsheet](https://docs.google.com/spreadsheets/d/1qQlqFeJ3iYbzXYrLBMgbmT6LcJLj6JcG3LJyZSbkAJY/edit#gid=2007846678)\n-   Team Generation\n    -   Generate random teams, partners, and create draws and rounds\n-   Broadcasting\n    -   Reply to a message and broadcast it to all channels that match a [regex](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Regular_Expressions/Cheatsheet) argument\n    -   For example, you can reply to a motion and run `!broadcast poi`. This will broadcast a message too all chats which match the [regex](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Regular_Expressions/Cheatsheet) `poi`\n    -   Admin only\n-   Coinfip and dice\n-   Fuzzy String Matching\n    -   Automatically corrects typos (e.g `hekp` -\u003e `help`, `star` -\u003e `start`)\n-   Simple Syntax\n    -   Straightforward syntax makes this bot easy to use (e.g `!start 5` instead of `+start {5}`)\n\n## Compared to Other Bots\n\nWhy use this bot over other existing bots?\nNamely the widely used bot [CUDS NotTDBot](https://github.com/spiltbeans/NotTDBot)\n\n1. **Live Speech Timer** - a progress bar and current time is displayed and continuously changed, so you don't have to speculate time. Unlike the NotTDBot, this bot can reliabily time you and can replace your phone.\n2. **Configurable** - host the bot yourself and configure it to your liking with YAML\n3. **User Friendly** - created with ease of use in mind\n    1. Simple autocorrect (e.g `hekp` -\u003e `help`, `star` -\u003e `start`)\n    2. Syntax is straighforward (e.g `!start 5` instead of `+start {5}`)\n4. **Other Functions** - features such as random motions, team generation, and some other useful debate commands are included.\n\n## NodeJS Versions\n\nThis bot only works on Node JS \u003e= 12. This is because Discord JS only supports Node \u003e= 12. Therefore, we don't test for, nor support Node JS 10 or 8.\n\nWhen installing Node JS for the first time with a package manager such as Yum or DNF, it may install Node 10. Make sure you install Node 12.\n\n## Setup\n\n**_These steps are applicable to Linux and MacOS, but not necessarily Windows, unless you're using something like git-Bash_**\nIf you're using Windows, you'll have to do everything yourself.\n\nMake sure you have git installed. If not, you can download this package to a zip file.\n\n1. Use one of the below methods\n   Stable release with pre-built bundle\n\n```bash\n# Git clone\ngit clone --single-branch --branch release https://github.com/Luke-zhang-04/debate-timer.git \u0026\u0026 cd debate-timer\n```\n\nLastest features, which you have to build yourself (no big deal)\n\n```bash\ngit clone --single-branch --branch master https://github.com/Luke-zhang-04/debate-timer.git \u0026\u0026 cd debate-timer\n```\n\n2. Install dependencies\n\n```bash\n./install.bash\n\n# Or\nbash install.bash\n```\n\n3. Get credentials\n\n-   You need to put a [Google Sheets API key](https://developers.google.com/sheets/api/quickstart/js#step_1_turn_on_the) in your .env file for the value APIKEY\n-   You need to put your [Discord auth token](https://github.com/Tyrrrz/DiscordChatExporter/wiki/Obtaining-Token-and-Channel-IDs) in your .env file for the value AUTHTOKEN\n\nNote that these values are sensitive and should not be shown publicly\n\n4. Run\n\n```bash\n./bot.mjs\n\n# To run it in the background\n./bot.mjs \u0026 disown\n\n# Other ways you can run\nnode .\nnode bot.mjs\n```\n\n### CLI\n\nThe CLI is a REPL that lets you send messages on behalf of the bot\n\nRun\n\n```bash\nnode cli\n```\n\nAnd type `help` for help\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluke-zhang-04%2Fdebate-timer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluke-zhang-04%2Fdebate-timer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluke-zhang-04%2Fdebate-timer/lists"}