Server Settings

Let server admins configure your bot per-guild from a public settings page.

Server settings let you define options that Discord server admins can configure for their server — without editing code or contacting you.

How It Works

  1. You define a settings schema in the bot editor (up to 15 fields)
  2. Each public bot gets a settings page at /bot/{id}/settings/{guildId}
  3. Server admins with Manage Server or Administrator permission can open the page and configure values
  4. Your bot reads those values at runtime via {setting:key} in visual commands or ctx.getSetting(key) in code
  5. Server owners & admins can access this page directly through the help command when interacting with the bot

Field Types

TypeWhat the admin sees
stringText input
numberNumeric input
booleanToggle switch
selectDropdown with options you define
channelDropdown of the server's channels
roleDropdown of the server's roles

Each field has a key, display label, optional description, and optional default value.

Defining Settings

Add settings from the bot editor's settings schema panel. Each setting needs:

  • Key — unique identifier used in code and templates (e.g. log-channel)
  • Label — what the admin sees (e.g. "Log Channel")
  • Type — one of the types above
  • Description — optional helper text shown below the input
  • Default value — used when a server hasn't configured the setting yet
  • Options — for select type, the list of choices

Using Settings

In visual commands

Use {setting:key} as a template variable. Channel and role IDs are automatically formatted as mentions.

Welcome to {server}! Check out {setting:rules-channel} for the rules.

In code commands

const logChannel = await ctx.getSetting("log-channel");
await ctx.setSetting("welcome-message", "Hello!");

Settings Page Customization

  • Accent color — set a custom accent color for the settings page header and buttons
  • Branding — Pro plan bots can hide the BotDen branding on the settings page

Module Settings

Installed modules can add their own settings fields automatically. These module-created settings can't be deleted manually — they're removed when the module is uninstalled.