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