SudoBot’s global configuration lives inDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/onesoft-sudo/sudobot/llms.txt
Use this file to discover all available pages before exploring further.
$SUDO_PREFIX/config/system.json. Unlike the per-guild config.json, this file controls settings that apply across every guild the bot operates in — including which users are system administrators, how the internal API behaves, what presence the bot displays, and how commands are registered with Discord.
Changes to
system.json require a bot restart to take effect unless you use a configuration reload command. The file is validated against the SystemConfigSchema on startup; invalid values cause the bot to exit with an error.File structure
system.json
Top-level fields
Optional path or URL to the JSON schema for this file. Used only by editors for validation and autocompletion; SudoBot itself ignores this field.
When
true, SudoBot syncs custom emoji from the home guild to the application’s emoji store on startup. Disable this if you manage application emojis manually.Controls how the bot resolves custom emoji references. Accepted values:
"both"— searches the home guild first, then falls back to application-level emojis"home_guild"— uses only the home guild’s custom emojis"application"— uses only application-level emojis
EMOJI_RESOLVE_STRATEGY environment variable overrides this field when both are set.The process exit code SudoBot uses when restarting. Process managers like PM2 can use non-zero exit codes to distinguish a deliberate restart from a crash.
The number of reverse proxy hops to trust when reading client IP addresses from headers like
X-Forwarded-For. Set this to the number of proxies in front of the API server (e.g., 1 for a single Nginx instance). Omit to disable proxy trust.Enables a global file-type filter that inspects attachments in messages. When enabled, disallowed file types are blocked across all guilds.
The default mode for resolving command permissions. Accepted values:
"ignore"— ignores Discord’s built-in slash command permissions"overwrite"— SudoBot’s permission system takes precedence"check"— checks both Discord’s and SudoBot’s permissions; the user must pass both
permissions.command_permission_mode in config.json.System admins
system.json
Discord user IDs who have full system-level access to the bot. System admins bypass all guild-level permission checks and can run any command in any guild, including commands that normal administrators cannot access.
Commands
system.json
When
true, any guild that does not override this setting allows users to invoke commands by mentioning the bot.Controls when and where slash commands are registered. Accepted values:
"always_global"— registers all commands globally on every boot"auto_global"— registers globally only when the command list has changed"guild"— registers commands only in the home guild (faster, for development)"none"— never registers commands automatically; you manage registration manually
Maps group names to lists of command names. Groups are used to organize commands in the help system. Keys are group names; values are arrays of command name strings.
Command names that are disabled across all guilds at the system level. No guild can enable these commands.
User IDs who are banned from using any bot command across all guilds.
Bot presence
system.json
The activity text displayed in the bot’s status (e.g., “Watching your server”).
The activity type. Accepted values:
"Playing", "Watching", "Listening", "Streaming", "Competing", "Custom".The bot’s online status. Accepted values:
"online", "idle", "dnd", "invisible".A URL associated with the activity. Only visible when
type is "Streaming", in which case this should be a Twitch stream URL.API
system.json
Enables the built-in HTTP API server. Disable this if you do not use the API or the web frontend.
The status string returned by the API’s status endpoint. Accepted values:
"operational"— everything is working normally"degraded"— some functionality is impaired"partial_outage"— some services are down"major_outage"— most services are down"maintenance"— the bot is undergoing planned maintenance"error"— the bot encountered an unexpected error state
An optional human-readable explanation of the current
server_status. This string is included in the API status response.Extensions
system.json
The default state for extensions that are not explicitly configured. Set to
"enable_all" to activate all installed extensions by default, or "disable_all" to require each extension to be enabled explicitly in config.json.Log server
system.json
Enables the internal log server, which streams bot log output over a Unix socket. Used by companion tools that consume live log data.
When
true, the log server starts automatically with the bot. When false, you must start it manually.Logging
Thelogging block configures a global webhook that receives all system-level log events, independent of the per-guild logging configuration in config.json.
system.json
Enables the global system logging webhook.
A Discord webhook URL where system-level log events are sent. Must be a valid HTTPS URL.
Statistics
system.json
Enables periodic statistics collection. When active, the bot gathers usage metrics such as command invocations and moderation actions.
How often in milliseconds the bot syncs collected statistics to the database. Default is one minute (60000 ms).
Infractions
system.json
When
true, the bot stores copies of message attachments that are part of infraction evidence (e.g., images in a deleted message that triggered a rule). Disable this to reduce storage usage.Snippets
system.json
When
true, the bot downloads and stores attachments included when a snippet is created, so they remain available even if the original message is deleted.