SudoBot stores per-guild settings in a JSON file atDocumentation 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/config.json. Each top-level key in that file is a Discord guild ID, and the value is the configuration object for that guild. You can edit the file directly while the bot is offline, or use the bot’s configuration commands to update it at runtime.
All time values in the guild configuration are in milliseconds unless otherwise stated. For example, a two-hour mute duration is
7200000.File structure
config.json
GUILD_ID with the Discord snowflake ID of your server. You can add multiple guilds by adding additional top-level keys.
Top-level fields
The command prefix used for legacy text commands. Set this to any string, such as
! or ?.Enables extra debug logging for this guild. Useful when diagnosing configuration problems. Turn this off in production.
Commands
Thecommands object controls how the bot handles command invocations in this guild.
config.json
When
true, users can invoke commands by mentioning the bot instead of using the text prefix (e.g., @SudoBot ban).Controls what happens to the command message after a moderation command runs. Set to
"delete" to automatically delete the invoking message, or "default" to leave it.When
true, the bot re-executes a command if the user edits their original command message.List of channel IDs that the
channels.mode rule applies to.Set to
"exclude" to block commands in the listed channels, or "include" to allow commands only in the listed channels.Names of commands that are disabled in this guild. Users who try to run these commands receive no response.
When
true, the bot sends an error message when a command’s preconditions are not met (e.g., missing permissions). Set to false to silently ignore such invocations.Enables per-user command rate limiting for this guild.
The sliding window duration in milliseconds within which
max_attempts commands are allowed.Maximum number of commands a user can run within
timeframe milliseconds before being rate-limited.How long in milliseconds the user is blocked after exceeding the rate limit.
Per-command rate limit overrides. Keys are command names; values have the same shape as the top-level
ratelimiting object. Use this to apply stricter limits to sensitive commands.User IDs who are immune to troll commands (commands that perform harmless pranks on members).
Permissions
config.json
Selects the permission system. Accepted values:
"discord"— uses Discord’s built-in role permissions"levels"— uses SudoBot’s numeric permission level system"layered"— combines both systems
Controls when Discord’s native permission checks are applied. Accepted values:
"always", "during_automod", "during_manual_actions", "never".Overrides the system-level
command_permission_mode for this guild. Accepted values: "ignore", "overwrite", "check".Role IDs whose members cannot be targeted by moderation actions, even by other moderators.
User IDs that cannot be targeted by moderation actions.
Infractions
config.json
When
true, the DM sent to an infracted user includes the infraction ID so they can reference it when appealing.What to do when the bot cannot DM the user. Accepted values:
"none"— do nothing"create_channel"— create a temporary channel and post the infraction message there"create_thread"— create a temporary thread instead
The channel ID in which the fallback channel or thread is created. Required when
dm_fallback is not "none".How long the fallback channel or thread remains open before the bot deletes it. Default is one week (604800000 ms).
Named reason templates. Keys must match
[A-Za-z0-9_-]+. Values are the full reason text. Reference them in commands using the placeholder wrapper.The syntax used to insert a reason template into a command. The default
{{%name%}} means you would type {{%warn_toxicity%}} in a command to expand the warn_toxicity template.Infraction point values assigned to each action type. These accumulate on a member’s record and can trigger automatic escalations. All default to sensible values; set any to
0 to make that action point-neutral.Anti-spam
config.json
Enables the anti-spam system for this guild.
Maximum number of messages a user can send within
timeframe milliseconds before being flagged as spam.The time window in milliseconds for counting messages toward the spam limit.
Channel IDs that
channels.mode applies to."exclude" to disable anti-spam in listed channels, or "include" to enable it only in those channels.The moderation actions to apply when spam is detected. Each action object must have a
type field. Supported types: ban, kick, mute, role, warn, verbal_warn, clear, delete_message, none.Logging
config.json
Enables the logging system for this guild.
The channel ID where the bot sends all log events that don’t have a specific channel override.
When
true, bulk message deletions are logged as a JSON attachment containing all deleted messages.When
true, all log event types are enabled by default even if no override is configured for them.Events from these channel IDs are never logged, regardless of overrides.
Maps message IDs to channel IDs for special webhook-based logging. Keys and values are both snowflakes.
Per-event-type channel routing rules. Each entry specifies an array of events and either enables them with a target channel or disables them.
config.json
Rules that exclude specific users, channels, or category channels from logging. Each exclusion specifies a
type ("user", "channel", or "category_channel"), a list of snowflakes, a mode ("exclude" or "include"), and an optional list of events to apply the exclusion to.Event types that the bot never logs, even if
default_enabled is true. Use this to opt out of specific noisy events without configuring full overrides.AI auto-moderation
config.json
Enables AI-powered auto-moderation using Google’s Perspective API. Requires
PERSPECTIVE_API_TOKEN to be set in your environment.The maximum allowed combined score across all toxicity categories before an action is triggered. Scores are on a 0–10 scale.
The maximum score any single toxicity category (e.g.,
toxicity, insult, threat) may reach before an action is triggered.Per-category score thresholds. Categories include:
toxicity, threat, severe_toxicity, identity_attack, insult, profanity, sexually_explicit, flirtation, spam, obscene, incoherent, unsubstantial. All default to 7.Actions to apply when a message exceeds the score thresholds.
Regular expressions that exempt matching messages from AI moderation. Each entry is either a pattern string or a
[pattern, flags] tuple.How many messages from a user to skip before starting AI evaluation. Set to
-1 to evaluate every message.Configures automatic escalation tiers based on accumulated scores.
stops maps score thresholds to action arrays.Raid protection
config.json
Enables raid detection for this guild.
Number of members joining within
timeframe milliseconds that triggers the raid response.The time window in milliseconds used to count join events.
What the bot does when a raid is detected. Accepted values:
"auto"— lets the bot choose the most appropriate response"lock"— locks all channels"antijoin"— enables anti-join mode, kicking or banning new arrivals"lock_and_antijoin"— does both"none"— logs the raid but takes no action
Actions applied to each member who joins during an active raid.
When
true, the bot sends a log message when a raid is detected.Member verification
config.json
Enables the member verification gate for this guild.
When
true, the bot uses ProxyCheck.io to detect VPN and proxy connections during verification. Requires PROXYCHECKIO_API_KEY.Require verification for accounts younger than this many seconds.
Require verification for accounts with no avatar.
When
true, every new member must verify regardless of their account age or avatar status.Roles assigned to members who have not yet verified. Remove these roles from verified members automatically.
Roles granted to members once they complete verification.
How the verification challenge is delivered. Accepted values:
"dm_interaction"— sends the challenge via DM"channel_interaction"— posts the challenge in a channel"channel_static_interaction"— posts a persistent challenge message in a channel
Maximum time in seconds a member has to complete verification before expired actions are applied.
Welcomer
config.json
Enables welcome messages for this guild.
The channel ID where welcome messages are posted.
The welcome message text. Leave unset to use the default message.
When
true, the welcome message mentions the new member.When
true, the bot randomly picks from a set of built-in welcome messages instead of using custom_message.Forces welcome messages to use embed formatting.
The embed color as a decimal integer (e.g.,
5793266 for #587BF2). Only applies when force_embeds is true.Automatically deletes the welcome message after this many milliseconds.
Adds a “Say Hi” button to the welcome message that other members can click to greet the new arrival.
How long the button remains clickable in milliseconds. Minimum 5000, maximum 600000 (10 minutes).
Auto-role
config.json
Automatically assigns roles to new members when they join.
Role IDs to assign automatically.
When
true, auto-role does not apply to bot accounts.Reaction roles
config.json
Enables the reaction roles feature for this guild.
When
true, bot reactions do not trigger role assignment.Rate limits reaction role assignments to prevent abuse. Has the same fields as command rate limiting:
enabled, timeframe, max_attempts, and block_duration.Bump reminder
config.json
Enables the bump reminder for this guild. Reminds members to use
/bump after the cooldown expires.Channels where the bump reminder is never sent.
How long to wait after a bump before sending the reminder. Default is two hours.
The message sent when it is time to bump again.
The message sent immediately after a successful bump.
Message reporting
config.json
Enables the message reporting feature, allowing members to flag messages for moderator review.
The channel where reported messages are sent for review.
User IDs who can submit reports.
Role IDs whose members can submit reports.
Discord permission names (e.g.,
"ManageMessages") required to submit reports.Additional features
Anti-member join
Anti-member join
Prevents new members from joining by automatically kicking or banning them. Use this during an active raid as an alternative to full lockdown.Set
config.json
behavior to "kick" or "ban". If "ban", set ban_duration to automatically lift the ban after the specified milliseconds.Quick mute
Quick mute
Adds quick-mute buttons to messages so moderators can mute a member with a single click.
config.json
Channel archives
Channel archives
Moves inactive channels into an archive category automatically.
config.json
Echoing
Echoing
Controls whether the
echo command can produce messages with mentions.config.json
Muting role
Muting role
Specifies the role used for muting members when Discord timeouts are unavailable.
config.json
