# Development These instructions are intended for bot development only. 👉 **No support is offered for self-hosting the bot!** 👈 ## Running the bot 1. `npm ci` 2. Make a copy of `bot.env.example` called `bot.env`, fill in the values 3. Run the desired start script: \- `npm run start-bot-dev` to run the bot with `ts-node` \- `npm run build` followed by `npm run start-bot-prod` to run the bot compiled \- `npm run watch-bot` to run the bot with `ts-node` and restart on changes 4. When testing, make sure you have your test server in the `allowed_guilds` table or the guild's config won't be loaded at all ## Running the API server 1. `npm ci` 2. Make a copy of `api.env.example` called `api.env`, fill in the values 3. Run the desired start script: \- `npm run start-api-dev` to run the API server with `ts-node` \- `npm run build` followed by `npm run start-api-prod` to run the API server compiled \- `npm run watch-api` to run the API server with `ts-node` and restart on changes ## Running the dashboard 1. Navigate to `dashboard/` 2. `npm ci` 3. Make a copy of `.env.example` called `.env`, fill in the values 4. Run the desired start script: \- `npm run build` compiled the dashboard's static files in `dist/` which can then be served with any web server \- `npm run watch` runs Parcel.js's dev server that automatically reloads on changes ## Config format example Configuration is stored in the database in the `configs` table ```yml # role id: level levels: "12345678": 100 # Example admin "98765432": 50 # Example mod plugins: mod_plugin: config: kick_message: 'You have been kicked' can_kick: false overrides: - level: '>=50' config: can_kick: true - level: '>=100' config: kick_message: 'You have been kicked by an admin' spam: config: filter_words: ['heck'] overrides: - channel: '1234' config: +filter_words: ['foo'] - level: '>=50' config: -filter_words: ['heck'] ```