Guides for people writing modules or contributing to the bot core.
Start here if you want to add a new feature as a module:
- Writing a module - file layout,
module.json, lifecycle, end-to-end example. - Events - event handler shape, lifecycle gates (
botReadyAt,allowPartial,ignoreBotReadyCheck), Discord and custom events you can listen to. - Slash commands -
config/run/subcommands/autocomplete, registration, options. - Database models - Sequelize
Model.initpattern,models-dir, accessing models from events. - Localization - adding strings to
locales/en.jsonand usinglocalize().
For module config files (config.json, streamers.json, etc.):
- Configuration files - schema reference: field types, defaults,
dependsOn,elementToggle, validation. - Country localization - how user-facing strings in config files are extracted and translated.
The string + embed format used in allowEmbed config fields. Canonical reference (v2 / v3 / v4):
- V2 schema - legacy, still parsed when
_schemais absent. - V3 schema - tag with
"_schema": "v3". - V4 schema - tag with
"_schema": "v4".
- Migration - upgrading between major bot versions.
Run npm run verify-configs to validate every module's config schema. CI runs this on every PR via
.github/workflows/verify-configs.yml.