161 lines
5.3 KiB
Markdown
161 lines
5.3 KiB
Markdown
# Configuration Guide
|
|
|
|
This document outlines the structure and available options for the `config/config.json` file. The configuration is validated using Zod schemas at runtime (see `src/lib/config.ts`).
|
|
|
|
## Core Structure
|
|
|
|
### Leveling
|
|
Configuration for the XP and leveling system.
|
|
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `base` | `number` | The base XP required for the first level. |
|
|
| `exponent` | `number` | The exponent used to calculate XP curves. |
|
|
| `chat.cooldownMs` | `number` | Time in milliseconds between XP gains from chat. |
|
|
| `chat.minXp` | `number` | Minimum XP awarded per message. |
|
|
| `chat.maxXp` | `number` | Maximum XP awarded per message. |
|
|
|
|
### Economy
|
|
Settings for currency, rewards, and transfers.
|
|
|
|
#### Daily
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `amount` | `integer` | Base amount granted by `/daily`. |
|
|
| `streakBonus` | `integer` | Bonus amount per streak day. |
|
|
| `weeklyBonus` | `integer` | Bonus amount for a 7-day streak. |
|
|
| `cooldownMs` | `number` | Cooldown period for the command (usually 24h). |
|
|
|
|
#### Transfers
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `allowSelfTransfer` | `boolean` | Whether users can transfer money to themselves. |
|
|
| `minAmount` | `integer` | Minimum amount required for a transfer. |
|
|
|
|
#### Exam
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `multMin` | `number` | Minimum multiplier for exam rewards. |
|
|
| `multMax` | `number` | Maximum multiplier for exam rewards. |
|
|
|
|
### Inventory
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `maxStackSize` | `integer` | Maximum count of a single item in one slot. |
|
|
| `maxSlots` | `number` | Total number of inventory slots available. |
|
|
|
|
### Lootdrop
|
|
Settings for the random chat loot drop events.
|
|
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `activityWindowMs` | `number` | Time window to track activity for spawning drops. |
|
|
| `minMessages` | `number` | Minimum messages required in window to trigger drop. |
|
|
| `spawnChance` | `number` | Probability (0-1) of a drop spawning when conditions met. |
|
|
| `cooldownMs` | `number` | Minimum time between loot drops. |
|
|
| `reward.min` | `number` | Minimum currency reward. |
|
|
| `reward.max` | `number` | Maximum currency reward. |
|
|
| `reward.currency` | `string` | The currency ID/Symbol used for rewards. |
|
|
|
|
### Roles
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `studentRole` | `string` | Discord Role ID for students. |
|
|
| `visitorRole` | `string` | Discord Role ID for visitors. |
|
|
| `colorRoles` | `string[]` | List of Discord Role IDs available as color roles. |
|
|
|
|
### Moderation
|
|
Automated moderation settings.
|
|
|
|
#### Prune
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `maxAmount` | `number` | Maximum messages to delete in one go. |
|
|
| `confirmThreshold` | `number` | Amount above which confirmation is required. |
|
|
| `batchSize` | `number` | Size of delete batches. |
|
|
| `batchDelayMs` | `number` | Delay between batches. |
|
|
|
|
#### Cases
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `dmOnWarn` | `boolean` | Whether to DM users when they are warned. |
|
|
| `logChannelId` | `string` | (Optional) Channel ID for moderation logs. |
|
|
| `autoTimeoutThreshold` | `number` | (Optional) Warn count to trigger auto-timeout. |
|
|
|
|
### System & Misc
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `commands` | `Object` | Map of command names (keys) to boolean (values) to enable/disable them. |
|
|
| `welcomeChannelId` | `string` | (Optional) Channel ID for welcome messages. |
|
|
| `welcomeMessage` | `string` | (Optional) Custom welcome message text. |
|
|
| `feedbackChannelId` | `string` | (Optional) Channel ID where feedback is posted. |
|
|
| `terminal.channelId` | `string` | (Optional) Channel ID for terminal display. |
|
|
| `terminal.messageId` | `string` | (Optional) Message ID for terminal display. |
|
|
|
|
## Example Config
|
|
|
|
```json
|
|
{
|
|
"leveling": {
|
|
"base": 100,
|
|
"exponent": 1.5,
|
|
"chat": {
|
|
"cooldownMs": 60000,
|
|
"minXp": 15,
|
|
"maxXp": 25
|
|
}
|
|
},
|
|
"economy": {
|
|
"daily": {
|
|
"amount": "100",
|
|
"streakBonus": "10",
|
|
"weeklyBonus": "500",
|
|
"cooldownMs": 86400000
|
|
},
|
|
"transfers": {
|
|
"allowSelfTransfer": false,
|
|
"minAmount": "10"
|
|
},
|
|
"exam": {
|
|
"multMin": 1.0,
|
|
"multMax": 2.0
|
|
}
|
|
},
|
|
"inventory": {
|
|
"maxStackSize": "99",
|
|
"maxSlots": 20
|
|
},
|
|
"lootdrop": {
|
|
"activityWindowMs": 300000,
|
|
"minMessages": 10,
|
|
"spawnChance": 0.05,
|
|
"cooldownMs": 3600000,
|
|
"reward": {
|
|
"min": 50,
|
|
"max": 150,
|
|
"currency": "CREDITS"
|
|
}
|
|
},
|
|
"commands": {
|
|
"example": true
|
|
},
|
|
"studentRole": "123456789012345678",
|
|
"visitorRole": "123456789012345678",
|
|
"colorRoles": [],
|
|
"moderation": {
|
|
"prune": {
|
|
"maxAmount": 100,
|
|
"confirmThreshold": 50,
|
|
"batchSize": 100,
|
|
"batchDelayMs": 1000
|
|
},
|
|
"cases": {
|
|
"dmOnWarn": true
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
> [!NOTE]
|
|
> Fields marked as `integer` or `bigint` in the types can often be provided as strings in the JSON to ensure precision, but the system handles parsing them.
|