{"id":14007251,"url":"https://github.com/monkeytypegame/monkeytype-bot","last_synced_at":"2026-03-06T21:37:55.318Z","repository":{"id":37703693,"uuid":"277859789","full_name":"monkeytypegame/monkeytype-bot","owner":"monkeytypegame","description":"Discord bot for Monkeytype","archived":false,"fork":false,"pushed_at":"2025-10-15T13:13:19.000Z","size":3248,"stargazers_count":100,"open_issues_count":4,"forks_count":38,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-10-16T09:08:51.849Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/monkeytypegame.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":"2020-07-07T15:52:04.000Z","updated_at":"2025-10-15T13:13:24.000Z","dependencies_parsed_at":"2023-12-21T13:59:29.381Z","dependency_job_id":"32d1a781-bccc-4f5d-905f-7837758a31d7","html_url":"https://github.com/monkeytypegame/monkeytype-bot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/monkeytypegame/monkeytype-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkeytypegame%2Fmonkeytype-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkeytypegame%2Fmonkeytype-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkeytypegame%2Fmonkeytype-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkeytypegame%2Fmonkeytype-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monkeytypegame","download_url":"https://codeload.github.com/monkeytypegame/monkeytype-bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkeytypegame%2Fmonkeytype-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30198716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":[],"created_at":"2024-08-10T10:01:56.532Z","updated_at":"2026-03-06T21:37:55.282Z","avatar_url":"https://github.com/monkeytypegame.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Monkeytype Discord Bot (George)\n\nGeorge is a Discord.JS (v13) bot that communicates with users in the Monkeytype Discord server by showing their stats and playing games. There are also some moderation features for Monkeytype specific things like Challenge Submissions and inserting quotes.\n\nGeorge needs direct access to the MongoDB and Redis databases associated with the Monkeytype backend server. George also needs access to the Monkeytype GitHub repository. Keep this in mind when [contributing](#contributing).\n\n## Contributing\n\nIf you receive any errors during this process, contact us in the #development channel of our [Discord Server](https://discord.com/invite/monkeytype).\n\n### Forking Monkeytype and Monkeytype-Bot\n\nThe first step to contribute is to ensure you have a fork and clone of the [Monkeytype repository](https://github.com/monkeytypegame/monkeytype) set up and working properly on your local machine. Please follow the [contributing guide](https://github.com/monkeytypegame/monkeytype/blob/master/CONTRIBUTING.md) to get a local website ready to go.\n\nNext, you need to fork this repository and clone your fork, like you just did with the Monkeytype website. From now on, whenever `monkeytypegame/monkeytype-bot` or `monkeytypegame/monkeytype` is referenced, replace `monkeytypegame` with your GitHub username instead, so that you use your fork instead of the main repository.\n\n### Creating a Discord Application\n\nIn order for George to use the Discord API, you need to create a Discord Bot that George can run in. Head over to the [Discord Developer Portal](https://discord.com/developers/applications/) and click `New Application`. Enter in a name and you should be greeted with a **General Information** page. You may edit the Description (About Me), App Icon, and App Name. Click on the `Bot` tab on the left. Then, click `Add Bot` and `Yes, do it!`. This creates a bot user that can be controlled by our software. Copy the bot token and store it somewhere safe, never show your bot token to anyone. Ensure that you enable the `Message Content` and `Presence` intents. You can invite the bot to your Discord server by clicking `OAuth2` on the left, selecting the `bot` and `application.commands` scopes, copying the given url and pasting it in a new browser tab.\n\n### Developer Mode\n\nIn order to copy IDs from Discord, you may need to turn on Developer Mode which can be found in the User Settings \u003e Appearance page at the bottom. Now when you right click on any Discord object (channel, role, user, etc.), you can click `Copy ID`.\n\n### Configuration\n\nGeorge uses both a `.env` file and a `config.json` file. Copy the `example.env` file in the root directory and rename the copy to `.env`. In this file, put your MongoDB URI, Redis URI, [Discord Bot Token](#creating-a-discord-application), and [GitHub API Token](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). In `src/config`, copy and paste the `config-example.json` and rename it to `config.json`.\nInput the following information:\n\n- `guildID`: The ID of the Discord server you invited George to.\n- `devID`: Your own ID.\n- `repo`: Your Monkeytype fork. For example: `monkeytypegame/monkeytype`\n- `repoPath`: The path to the local clone of your Monkeytype fork. If both George and Monkeytype are cloned to the same directory, you can skip this step.\n- `roles.memberRole`: The ID of a \"Member\" role on your Discord server. This role is used to identify users who have linked their Discord to Monkeytype.\n- `roles.updatePingRole`: The ID of a \"Update Ping\" role on your Discord server. This role is used to notify users when there's a new release from the GitHub repository.\n- `wpmRoles`: A list of roles that show the WPM of the Discord user's Monkeytype personal best. In each object, put the ID of the role in `id`, and the min and max WPM in the respective values.\n- `challenges`: The key should be the name of the challenge, and the value should be the ID of the role to give when someone completes that challenge.\n- `channels`: Replace each value with the ID for that respective channel.\n\n### Installation\n\nThis project uses Yarn, so ensure you have it installed. You can install it by running the following command in a terminal (assuming you have NodeJS installed, which you should if you have [set up Monkeytype](#forking-monkeytype-and-monkeytype-bot)):\n\n```\nnpm install --global yarn\n```\n\nOnce you have yarn installed, you can install all dependencies for George by running the following command in a terminal that is contained in the `monkeytype-bot` directory:\n\n```\nyarn\n```\n\nIf you use Visual Studio Code (we recommend that you do), it is also helpful to install some extensions before making any changes. Install the following extensions:\n\n- JavaScript and TypeScript Nightly\n- Prettier\n- ESLint\n\n### Running the Project\n\nFinally, to run the project, run the following command in the terminal:\n\n```\nyarn dev\n```\n\nThis starts a watch process that will restart when you make any changes. You can start it permanently by running:\n\n```\nyarn start\n```\n\n### Editing Code\n\nBefore changing any code, we recommend that you have a basic understanding of TypeScript and Discord.JS. We also recommend that you familiarize yourself with how we create commands, events, etc. so that you follow our ecosystem.\n\n#### Prettier and ESLint\n\nWe enforce code style and consistency by using Prettier and ESLint. Before committing any changes, run the following commands in the terminal:\n\n```\nyarn lint-fix\n```\n\n```\nyarn pretty-fix\n```\n\n### Committing Your Changes\n\nTo push your changes to your fork, run the following commands in the terminal:\n\n```\ngit pull origin master\ngit add .\ngit commit -m \"put a commit message here\"\ngit push origin master\n```\n\nNote that you may replace `master` with the name of a branch you may create so that you can contribute many things at once.\n\nAfter you have committed and pushed your changes to your fork, go on GitHub to your repository and click the button to make a pull request at the top. If you do not see that button, go to [the official monkeytype-bot repository](https://github.com/monkeytypegame/monkeytype-bot), click `Pull Requests` and `New pull request`. Make sure that you are trying to merge your branch from your fork into the master branch of the offical repository. Add a detailed title and description of what you changed and click `Create pull request`. Your changes will be reviewed by a maintainer and feedback will be provided.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonkeytypegame%2Fmonkeytype-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmonkeytypegame%2Fmonkeytype-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonkeytypegame%2Fmonkeytype-bot/lists"}