Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration Reference

Complete reference for all config.toml options.


Bot Section

[bot]

Core Settings

OptionTypeRequiredDefaultDescription
tokenstringYes-Discord bot token from Developer Portal
statusstringYes-Bot’s activity status message
welcome_messagestringYes-Message sent to users when opening a ticket
close_messagestringYes-Message sent to users when ticket is closed

Typing Indicators

OptionTypeRequiredDefaultDescription
typing_proxy_from_userboolYes-Show typing indicator in ticket when user types
typing_proxy_from_staffboolYes-Show typing indicator in DM when staff types

Feature Toggles

OptionTypeRequiredDefaultDescription
enable_logsboolYes-Enable logging to a channel
enable_featuresboolYes-Enable feature request tracking
enable_panelboolYes-Enable web administration panel

Channel Configuration

OptionTypeRequiredDefaultDescription
logs_channel_idu64Conditional-Channel for bot logs. Required if enable_logs = true
features_channel_idu64Conditional-Channel for feature requests. Required if enable_features = true

OAuth2 (Panel)

Required when enable_panel = true.

OptionTypeRequiredDefaultDescription
client_idu64Conditional-Discord application client ID
client_secretstringConditional-Discord application client secret
redirect_urlstringConditional-OAuth2 callback URL (must match Discord config)

Network

OptionTypeRequiredDefaultDescription
ipstringNoAuto-detectedNetwork interface to bind the server

Note: The server attempts to bind to the configured IP address. If the IP is invalid or unavailable, it falls back to 0.0.0.0:3002 (all interfaces). Set this manually when:

  • Running in Docker with host networking
  • Auto-detection returns wrong interface
  • You need to bind to a specific network interface

Panel Administrators

OptionTypeRequiredDefaultDescription
panel_super_admin_users[u64]No[]User IDs with full panel access
panel_super_admin_roles[u64]No[]Role IDs with full panel access

Timezone

OptionTypeRequiredDefaultDescription
timezonestringNoUTCTimezone for timestamps (IANA format)

Examples: Europe/Paris, America/New_York, Asia/Tokyo


Server Mode Section

[bot.mode]

Single Server Mode

[bot.mode]
type = "single"
guild_id = 123456789012345678
OptionTypeRequiredDescription
typestringYesMust be "single"
guild_idu64YesYour Discord server ID

Dual Server Mode

[bot.mode]
type = "dual"
community_guild_id = 123456789012345678
staff_guild_id = 987654321098765432
OptionTypeRequiredDescription
typestringYesMust be "dual"
community_guild_idu64YesServer where users are
staff_guild_idu64YesServer where tickets are created

Command Section

[command]
OptionTypeRequiredDefaultDescription
prefixstringYes"!"Prefix for text commands

Thread Section

[thread]

Required Settings

OptionTypeRequiredDefaultDescription
inbox_category_idu64Yes-Category where ticket channels are created

Message Display

OptionTypeRequiredDefaultDescription
embedded_messageboolYes-Display messages as Discord embeds
user_message_colorstringYes"5865f2"Hex color for user messages (without #)
staff_message_colorstringYes"57f287"Hex color for staff messages (without #)
system_message_colorstringYes"faa81a"Hex color for system messages (without #)
block_quoteboolYes-Use block quotes for message content

Ticket Behavior

OptionTypeRequiredDefaultDescription
time_to_close_threadu64Yes0Default minutes until auto-close (0 = disabled)
create_ticket_by_create_channelboolYes-Allow ticket creation by making a channel
close_on_leaveboolNofalseAuto-close when user leaves server
auto_archive_durationu16No10080Thread auto-archive time in minutes

Language Section

[language]
OptionTypeRequiredDefaultDescription
default_languagestringYes"en"Default language code
fallback_languagestringYes"en"Fallback when translation missing
supported_languages[string]Yes["en", "fr"]Available languages

Available Language Codes

CodeLanguage
enEnglish
frFrench
esSpanish
deGerman
itItalian
ptPortuguese
ruRussian
zhChinese
jaJapanese
koKorean

Notifications Section

[notifications]

Control feedback messages shown to staff.

OptionTypeRequiredDefaultDescription
show_success_on_editboolYestrueConfirm successful edits
show_partial_success_on_editboolYestrueNotify on partial edit success
show_failure_on_editboolYestrueNotify on edit failure
show_success_on_replyboolYestrueConfirm sent replies
show_success_on_deleteboolYestrueConfirm deletions
show_successboolNotrueGeneral success notifications
show_errorboolNotrueGeneral error notifications

Logs Section

[logs]

Control what actions are logged.

OptionTypeRequiredDefaultDescription
show_log_on_editboolYestrueLog message edits
show_log_on_deleteboolYestrueLog message deletions

Reminders Section

[reminders]
OptionTypeRequiredDefaultDescription
embed_colorstringYes"ffcc00"Hex color for reminder embeds (without #)

Error Handling Section

[error_handling]
OptionTypeRequiredDefaultDescription
show_detailed_errorsboolYestrueShow technical details in errors
log_errorsboolYestrueLog errors to console
send_error_embedsboolYestrueSend errors as embeds
auto_delete_error_messagesboolYesfalseAuto-delete error messages
error_message_ttlu64No-Seconds before error deletion
display_errorsboolNotrueShow errors to users

Complete Example

[bot]
token = "YOUR_BOT_TOKEN"
status = "DM for support"
welcome_message = "Your message has been received. Staff will respond shortly."
close_message = "This ticket has been closed. Thank you for contacting us."
typing_proxy_from_user = true
typing_proxy_from_staff = true
enable_logs = true
enable_features = false
enable_panel = true
client_id = 123456789012345678
client_secret = "your_client_secret_here"
redirect_url = "https://panel.example.com/api/auth/callback"
timezone = "Europe/Paris"
logs_channel_id = 123456789012345678
panel_super_admin_users = [123456789012345678]
panel_super_admin_roles = []

[bot.mode]
type = "dual"
community_guild_id = 123456789012345678
staff_guild_id = 987654321098765432

[command]
prefix = "!"

[thread]
inbox_category_id = 123456789012345678
embedded_message = true
user_message_color = "5865f2"
staff_message_color = "57f287"
system_message_color = "faa81a"
block_quote = true
time_to_close_thread = 0
create_ticket_by_create_channel = false
close_on_leave = false
auto_archive_duration = 10080

[language]
default_language = "en"
fallback_language = "en"
supported_languages = ["en", "fr", "es", "de"]

[notifications]
show_success_on_edit = false
show_partial_success_on_edit = true
show_failure_on_edit = true
show_success_on_reply = false
show_success_on_delete = false
show_success = true
show_error = true

[logs]
show_log_on_edit = true
show_log_on_delete = true

[reminders]
embed_color = "ffb800"

[error_handling]
show_detailed_errors = false
log_errors = true
send_error_embeds = true
auto_delete_error_messages = true
error_message_ttl = 30
display_errors = true

Environment Variables

Rustmail does not currently support environment variable substitution in config.toml. For sensitive values in containerized environments, consider mounting the config file as a secret.