We welcome help from the community! Issues are accepted for questions, bug reports, and feature requests; pull requests are accepted for bugfixes and new features. Please make an issue for any new features before dedicating the time to writing a PR.
Fork the repo, clone it to your computer, and check the README's "Usage" section for notes on installing dependencies and running the project. From there, you're ready to start making your changes.
The project has an ESLint configuration that works on both JS and TS files.
Lint your code with npm run lint
(or npm run lint:fix
to use ESLint's auto-fixing behavior) before submitting. You might consider configuring your editor to auto-fix ESLint issues when saving files.
At a high level, the bot consists of a Discord client, a web server, and a dataabse. The database stores persistant information including bot configuration and moderation notes. The discord client receives events from Discord which it interprets as commands, references the database, and sends data to and from Discord. The web server hosts a JSON API, which is used to interface the web frontend with the database and Discord. The API is consumed by a web frontend, which is maintained separately.
The bot is written against a MongoDB database, and relies heavily on a few other projects whose documentation will be helpful to contributors: