1 GrumpySettings EN
darksoon edited this page 2026-07-11 01:05:01 +02:00

Settings — central config management

/settings is the central command for toggling addons and setting channel IDs without editing config.yml by hand. Changes are written atomically to configs/config.yml (write to a temp file + rename, so there's no risk of a corrupted config if the process crashes mid-write).

This module has no dedicated configs/modules/settings.yml/settings is a pure command that patches config.yml directly. There is no Zod schema file to document.


Activation

/settings is a core command and always available — no addons.* entry needed.

Permission: Administrator by default (via setDefaultMemberPermissions). Server admins can override this per role/channel in Discord's Integrations settings.


Important: addon vs. channel — different behavior

Subcommand Effect Restart required?
/settings addon Writes addons.<key> to config.yml Yes — modules are only loaded/unloaded at bot startup; toggling at runtime does not hot-load the module
/settings channel Writes channels.<key> to config.yml No — takes effect immediately, since modules read channel IDs live from the in-memory config

/settings addon explicitly includes a warning in its reply that a restart is required.


Commands

/settings addon <module> <enabled>

Enables/disables a module in config.yml under addons.<module>.

  • module: string with autocomplete, must be one of the valid addon keys (see list below)
  • enabled: true/false
/settings addon module:leveling enabled:true
/settings addon module:polls enabled:false

Invalid keys are rejected (protects against a typo writing an arbitrary new addons.* key into config.yml).

Valid addon keys:

welcome, mod, tickets, news, voice, help, customcmd, music,
reactionroles, leveling, suggestions, polls, starboard,
reminders, birthdays, rss, giveaways, serverstats,
announcements, events, triggers

⚠️ A bot restart is required for the change to take effect. The bot confirms the toggle immediately but only updates the in-memory value (relevant for an immediate /settings show in the same process) — actual module registration only happens at boot.


/settings channel <key> <channel>

Sets a channel ID used by the bot under channels.<key> in config.yml.

  • key: choice from a fixed list (see below)
  • channel: text, announcement, or voice channel — the runtime checks whether the type matches the key
/settings channel key:mod-log channel:#mod-log
/settings channel key:voice-lobby channel:🔊-Lobby

Valid channel keys:

welcome, verify, mod-log, alert, staff, support, ticket-log,
news, voice-lobby, help, radio, suggestions, starboard, levelup

Of these, voice-lobby and radio are voice-only — a text/announcement channel is rejected here. All other keys expect text or announcement — a voice channel is rejected here.

Takes effect immediately, no restart needed.


/settings show

Shows the current enabled status of all addon keys as a list (🟢 active / 🔴 inactive), ephemeral.

/settings show

Reference: reply texts

Situation Reply
Addon toggle succeeded Module <module> is now enabled/disabled. ⚠️ Restart note
Unknown module Unknown module: <module>
Channel set succeeded <key> set to <channel> — effective immediately
Wrong channel type (needs voice) <key> must be a voice channel
Wrong channel type (needs text) <key> must be a text or announcement channel
Write error Could not write config.yml: <error>

Notes

  • All replies are ephemeral (only visible to the executing admin).
  • /settings addon and /settings channel write directly to the live config.yml under CONFIG_DIR (default: configs/) — via parseDocument/setIn from the yaml library, so existing comments and formatting in the file are preserved.
  • If the write fails (e.g. file unreadable, invalid YAML), the error is reported ephemerally and nothing is changed.
  • The list of valid addon keys is kept manually in sync with AddonsSchema in #lib/config.js — when a new module is added, ADDON_KEYS in the command code must be extended, otherwise the new module can't be toggled via /settings addon.