diff --git a/README.md b/README.md index be69ae1c..8f97674c 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,51 @@ -### Config format example +# Development +These instructions are intended for bot development only. -Config files are currently located at `config/.yml` (and `config/global.yml` for global plugins). +👉 **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: - 50: "1234" # Mod role id - 100: "5678" # Admin role id + "12345678": 100 # Example admin + "98765432": 50 # Example mod plugins: mod_plugin: config: kick_message: 'You have been kicked' - permissions: - kick: false + can_kick: false overrides: - level: '>=50' - permissions: - kick: true + config: + can_kick: true - level: '>=100' config: kick_message: 'You have been kicked by an admin'