Docs/Guides

Configuration

Dreamliner server configuration is edited entirely from the web dashboard and stored as JSON in the database under the hood — there is no in-Discord upload/download workflow anymore. Defaults (every plugin's on/off state and every field's default value) live in the zod schemas under src/config/schemas/, not in a hand-maintained file — config/default.server.yaml is a generated snapshot (npm run schema:export writes it) kept around only for the external dashboard's fallback path, and documents the shape below in YAML form for readability.

Only the Utility plugin is enabled out of the box; every other plugin is opt-in from the dashboard.

#Shape

yaml
# Server events: joins, leaves, edits, deletes, voice activity, role/nickname changes. Unset
# (no logs sent) until you pick a channel on the dashboard's Logging page.
server_log_channel_id: ""

# Moderation: infractions, automod, censor, /clean, voice mod, cases, expirations. Same as above.
moderation_log_channel_id: ""

# Deprecated - use moderation_log_channel_id instead
# log_channel_id: "1234567890123456789"

# When true, command replies are only visible to the user who ran the command.
ephemeral_responses: false

plugins:
  utility:
    enabled: true
    config:
      jumbo_size: 128
      autojoin_threads: true
      info_on_single_result: true
  automod:
    enabled: false
    config: {}

can_* permission flags (like can_search, can_clean above) are no longer set in config — grant them to a Dreamliner Role instead. See Permissions.

#Emojis

The icons used on command response embed titles (success, error, neutral, warning, unchecked) and on log card titles (logging.emojis) are fixed bot-wide and not configurable — every server sees the same set, and the dashboard cannot change them. The emojis/logging.emojis keys are no longer part of guild config; an uploaded YAML with either block simply has it ignored (they fail schema validation and get repaired away). See src/core/embeds.ts (DEFAULT_EMOJIS) and src/core/logging/emojis.ts (LOG_EMOJI) if you're maintaining a fork and want to change the defaults in code.

Embed author always shows Dreamliner with the bot avatar. The title shows the emoji plus command title (e.g. success emoji + Configuration saved).

#Response visibility

yaml
ephemeral_responses: false

When false (default), command replies are public in the channel. Set to true to make all responses ephemeral (only visible to the user who ran the command).

#Admin bypass

yaml
admin_bypass: true

When true (the default, no configuration required), anyone with Discord's Administrator permission — or the server owner — can use any bot command, regardless of Dreamliner Role assignment. This is what lets a freshly-invited bot work for admins immediately. Toggle it from the dashboard's server settings page, or set admin_bypass: false here to require explicit Dreamliner Role grants even for admins.

#Dreamliner Roles

Permissions are managed with Dreamliner Roles — named permission groups (built-in Member, Moderator, Admin, plus any custom roles you create), each with assigned Discord roles/users and a flat set of granted can_* flags. They live in the database, not in this YAML — there is no levels field and no can_* grant here anymore.

A member's effective permission for a flag is the OR of every Dreamliner Role they belong to.

Manage Dreamliner Roles from the dashboard's Roles page, or with /permissions role ... in Discord.

For a complete setup guide with examples, see Permissions setup.

#Log channels

yaml
server_log_channel_id: "1234567890123456789"
moderation_log_channel_id: "1234567890123456789"
logging:
  events:
    member_join: true
    voice_self_mute: false
Channel / keyPurpose
server_log_channel_idDiscord channel for server/guild audit events
moderation_log_channel_idDiscord channel for infractions, automod, censor, clean, voice mod, case updates
logging.eventsPer-event toggles (missing keys default to enabled). Configured in dashboard Logging.

Events are also stored for the dashboard Logs page (90 days). The legacy log_channel_id still works as a fallback for moderation Discord posts. See Logs plugin.

#Plugin sections

Each plugin is configured under plugins.<name>:

FieldDescription
enabledOn/off. Every plugin defaults to false except Utility
configDirect config values

can_* permission flags are never set here — grant them to a Dreamliner Role on the dashboard's Roles page, or with /permissions role grant. There is no more overrides/replaceDefaultOverrides field, and no more channel/category-scoped grants. See Permissions.

#Merge behavior

Whatever you save on the dashboard is deep-merged with config/default.server.yaml — you only ever customize the fields you touch, and new Dreamliner defaults apply automatically to anything you haven't.

See also: Autorole, Member identity, Translation, Logs, Starboard.

#Config commands

CommandDescription
/configPosts a link to open this server's dashboard
/permissions role ...Manage Dreamliner Roles without leaving Discord
/plugin toggleEnable or disable a plugin (plugin + state: Enable / Disable)
/plugin listShow which plugins are enabled or disabled

#Workflow

  1. Run /config (or open the dashboard link from the join message) and sign in with Discord.
  2. Pick this server, edit plugins and fields (channels/roles/members have search autocomplete).
  3. Click Save — Dreamliner applies the config immediately, no restart or re-upload needed.

A new server already has a working default config the moment Dreamliner joins, so every command works immediately; the dashboard is only for customizing it. Machine-readable schema for the editor is generated with npm run schema:export into schema/guild-config.schema.json (also run during prebuild).

#Reloading

Admins with can_reload_guild can run /reload to re-read the config from the database without re-uploading.

#Plugin index

Dreamliner is organized into plugins under the plugins: key. Each plugin has its own config and enabled flag.

CategoryPlugins
Moderationinfractions, slowmode
Protectionautomod, scam_protect, persist, autodelete
Role managementroles, autorole
Self-serve rolesreaction_roles, role_buttons, role_panels
Lookupslocate_user, name_history, username_saver
Engagementwelcome_message, companion_channels, starboard
Auto responsestags, autoreplies, autoreactions, translation
Schedulingreminders, counters
Customizationdream_commands
Utilitiesutility, stats, bot_customisation, logs
Feedbackreviews, suggestions

See Documentation index for setup guides per plugin. The dashboard exposes every configurable field for every plugin.