Reference
What each concept means, the formats fields accept, and worked examples.
Discord IDs
Discord IDs are snowflakes: long numeric IDs copied from Discord with Developer Mode enabled (User Settings → Advanced), then right-click → Copy ID.
- Server ID
- The guild the bot manages.
- Channel ID
- A text channel the bot reads or posts to.
- Role ID
- A role used for admin access, exemptions, auto-roles, or rewards.
- User ID
- A specific member used for admin access or moderation exemptions.
123456789012345678
Template tags
Configure messages →Welcome, goodbye, and level-up messages replace these tags when posted.
- {user}
- Username or display name.
- {mention}
- Discord mention for the member.
- {tag}
- Username tag when available.
- {server}
- Server name.
- {count}
- Member count, for join/leave messages.
- {level}
- New level, for level-up messages.
Welcome: Welcome {mention}! You are member #{count}.
Goodbye: {user} left {server}.
Level-up: GG {mention}, you reached level {level}!
FAQ entries
Manage entries →- Trigger phrases
- Full example questions or support statements, one per line.
- Keywords
- Optional single words that help a message match.
- Answer
- The exact message the bot posts.
- Reply cooldown
- Optional seconds before that FAQ can repeat in the same channel.
Trigger phrases:
How do I reset my password?
password reset not working
Keywords:
password
reset
Custom commands
Manage commands →Commands are exact responders, separate from fuzzy FAQ matching.
- Exact
- The whole message must equal the trigger.
- Starts with
- The message must begin with the trigger.
- Contains
- The trigger may appear anywhere in the message.
Trigger: !rules
Match: Exact message
ID: rules
Response:
Read the server rules in #rules before posting support questions.
Moderation rules
Manage rules →- Phrases
- Any listed phrase can trigger the rule.
- All terms
- Every listed term must appear.
- Any terms
- At least one listed term must appear.
- Regex
- Advanced JavaScript regular expressions; keep them short and specific.
- Require URL
- Only match messages that contain a link.
ID: scam-airdrop
Action: timeout
Reason: Crypto airdrop scam
Phrases:
free airdrop
claim your reward
Any terms:
wallet
airdrop
Timeout seconds: 86400
Moderation actions
What a rule or detector does when it matches, from mildest to strongest.
- log
- Records the match only.
- delete
- Removes the message.
- warn
- Warns the member.
- timeout
- Temporarily mutes the member.
- kick
- Removes the member from the server.
- ban
- Removes the member and blocks rejoin.
GitHub repositories
Configure search →Repository settings use owner/repo only — never a full URL.
owner/repo
sparkbugz/bugbot
FAQ entries can attach a fixed GitHub URL, or search GitHub when that FAQ matches.
{
"mode": "search",
"repos": ["owner/repo"],
"type": "both",
"query": "oauth callback error",
"minScore": 0.63
}
{
"mode": "fixed",
"url": "https://github.com/owner/repo/issues/123"
}
Role rewards
Configure leveling →Level rewards use level:roleId, one per line. The role must be below the bot's highest role.
5:123456789012345678
10:234567890123456789
Settings reference
Every settings field with its accepted format and default.
General
| Setting | Format | Default |
|---|---|---|
| Discord server ID | Discord server ID, also called a guild snowflake. It is 5-25 digits. | Empty unless commands, dashboard, or moderation are enabled. |
| Bot name | Short display name used for the Discord nickname and presence. | BugBot |
Channels
| Setting | Format | Default |
|---|---|---|
| Watched channels | One Discord text channel ID per line. The bot ignores every channel not listed. | Required from DISCORD_ALLOWED_CHANNEL_IDS; no built-in default. |
| Ignored channels | One Discord channel ID per line. These override watched channels. | Empty. |
FAQ & matching
| Setting | Format | Default |
|---|---|---|
| FAQ auto-replies | On replies from the FAQ matcher; off disables automatic FAQ answers. | On when the faq module is enabled; the default module set includes faq. |
| FAQ match threshold | 0-1 confidence ratio. Lower answers more often; higher answers only close matches. | 0.72. |
| Only answer genuine questions | On gates the global GitHub fallback to likely help questions. Explicit FAQ matches still work. | On. |
| Reply cooldown (seconds) | Seconds before the same FAQ entry or GitHub fallback can reply again in one channel. | 60 seconds. |
| Per-user cooldown (seconds) | Seconds after a successful bot reply before the same user can trigger another automatic reply in that channel. | 5 seconds. |
| Max message length | Messages longer than this are ignored by FAQ/GitHub matching. | 1000 characters. |
| Max reply length | Discord messages cannot exceed 2000 characters; the bot truncates above this cap. | 1900 characters. |
GitHub search
| Setting | Format | Default |
|---|---|---|
| GitHub lookups | On allows FAQ-attached and fallback GitHub issue/PR searches. | On when the github module is enabled; the default module set includes github. |
| GitHub fallback search | On lets the bot search GitHub only after no FAQ entry matched. | Off. |
| Repositories | One repository per line in owner/repo format. Do not include https://github.com/. | Empty unless GITHUB_DEFAULT_REPOS is set. |
| Fallback match minimum score | 0-1 relevance ratio. Lower returns looser matches; higher only posts very close matches. | 0.63. |
| Max query length | Maximum normalized query text sent to GitHub. | 256 characters. |
| Result cache (seconds) | 0 disables useful cache lifetime; higher values reduce GitHub API calls but keep older results longer. | 600 seconds. |
| Request timeout (seconds) | Seconds to wait before aborting a GitHub API request. | 8 seconds. |
Commands
| Setting | Format | Default |
|---|---|---|
| Slash commands | On registers slash commands in the control server for enabled features. | On. |
| Chat admin commands | On allows authorized admins to run prefixed Discord chat commands. | Off unless the commands module is enabled. |
| Command prefix | Text prefix typed before chat admin commands. | !faqbot |
| Support triage command | On adds the support triage command for authorized admins. | Off. |
| Custom commands | On enables exact custom trigger/reply commands managed on the Custom commands page. | Off. |
| Polls | On registers /poll after the bot reconnects with slash commands enabled. | Off. |
| Giveaways | On registers /giveaway after the bot reconnects with slash commands enabled. | Off. |
Moderation
| Setting | Format | Default |
|---|---|---|
| Moderation | On enables automatic moderation and moderation commands. Moderated channels must also be set. | Off. |
| Moderated channels | One channel ID per line, or a single * to scan the whole control server. | Empty. |
| Dry-run | On logs what would happen without deleting, warning, timing out, kicking, or banning. | On. |
| Default action | Used when a moderation rule does not set its own action. | timeout. |
| Default timeout (seconds) | Timeout duration used by timeout rules without their own duration. | 3600 seconds. |
| Ban message purge (seconds) | 0-604800 seconds. Discord does not allow deleting more than 7 days of history during a ban. | 86400 seconds. |
| Exempt users | One Discord user ID per line. Automatic moderation never acts on these users. | Empty. |
| Exempt roles | One Discord role ID per line. Automatic moderation never acts on members with these roles. | Empty. |
Welcome & goodbye
| Setting | Format | Default |
|---|---|---|
| Welcome new members | On posts the welcome message when a member joins. | Off. |
| Welcome channel | Discord channel ID that receives welcome messages. | Empty. |
| Welcome message | Text template. Usable tags: {user}, {mention}, {tag}, {server}, {count}. | Welcome to {server}, {mention}! You are member #{count}. |
| Announce leavers | On posts the goodbye message when a member leaves. | Off. |
| Goodbye channel | Discord channel ID that receives goodbye messages. | Empty. |
| Goodbye message | Text template. Usable tags: {user}, {mention}, {tag}, {server}, {count}. | {user} has left the server. |
| Auto-roles on join | One role ID per line. The bot grants these roles to new members on join. | Empty. |
Reaction roles
| Setting | Format | Default |
|---|---|---|
| Reaction roles | On enables reaction-role events and requires the bot to reconnect with reaction intents. | Off. |
Server logging
| Setting | Format | Default |
|---|---|---|
| Enable logging | On records selected server events in the log channel. | Off. |
| Log channel | Discord channel ID that receives log events. | Empty. |
| Log deleted messages | On records deleted messages when server logging is enabled. | On. |
| Log edited messages | On records edited messages when server logging is enabled. | On. |
| Log joins and leaves | On records joins and leaves when server logging is enabled. | On. |
Starboard
| Setting | Format | Default |
|---|---|---|
| Enable starboard | On reposts messages once they collect enough matching reactions. | Off. |
| Starboard channel | Discord channel ID where highlighted messages are reposted. | Empty. |
| Starboard emoji | Standard emoji, custom emoji name, or custom emoji ID. | ⭐. |
| Reactions needed | Number of matching reactions required before a message is reposted. | 3 reactions. |
Leveling
| Setting | Format | Default |
|---|---|---|
| Enable leveling | On awards XP for qualifying chat messages. | Off. |
| XP per message | XP granted for each qualifying message. | 15 XP. |
| XP cooldown (seconds) | Seconds before one user can earn XP again. | 60 seconds. |
| Announce level-ups | On posts a message when a user reaches a new level. | On. |
| Level-up channel | Discord channel ID for level-up messages. Empty posts in the channel where the user leveled. | Empty. |
| Level-up message | Text template. Usable tags: {mention}, {user}, {tag}, {level}. | GG {mention}, you reached level {level}! |
| Level role rewards | One reward per line in level:roleId format. | Empty. |