119 lines
3.0 KiB
TOML
119 lines
3.0 KiB
TOML
# Elly Discord Bot — Configuration
|
||
# ================================
|
||
#
|
||
# Copy this file to `config.toml` and fill in real values. The file is
|
||
# validated against the shared Zod schema (`@elly/shared/src/config/schema.ts`)
|
||
# at boot — missing or malformed values will abort the process before any
|
||
# side effects occur.
|
||
#
|
||
# Discord IDs must be 17–19 digit snowflakes. Channel and role names match
|
||
# guild entities by display name (case-insensitive).
|
||
|
||
[bot]
|
||
name = "<your bot name>"
|
||
prefix = "<your prefix>"
|
||
status = "<your status>"
|
||
activity_type = "watching" # playing, streaming, listening, watching, competing
|
||
|
||
[bot.owners]
|
||
ids = [
|
||
"<your owner id>",
|
||
"<your owner id>",
|
||
"<your owner id>",
|
||
"<your owner id>"
|
||
]
|
||
|
||
[database]
|
||
# Path to the unified SQLite database owned by @elly/core.
|
||
path = "./data/elly.sqlite"
|
||
|
||
[kv]
|
||
# Path to the on-disk Deno.Kv store. Used for cooldowns, interaction state,
|
||
# and PikaNetwork response caching. Replaces all in-memory ad-hoc caches.
|
||
path = "./data/kv"
|
||
|
||
[ipc]
|
||
# Local HTTP IPC between @elly/bot and @elly/core. The bot opens connections
|
||
# to this host:port; the core binds and serves on it. The shared secret
|
||
# lives in .env (IPC_TOKEN) and never in this file.
|
||
host = "127.0.0.1"
|
||
port = 8787
|
||
request_timeout_ms = 10000
|
||
|
||
[api]
|
||
pika_cache_ttl = 3600000 # 1 hour in ms
|
||
pika_request_timeout = 10000 # 10 seconds
|
||
|
||
[guild]
|
||
id = "<your guild id>"
|
||
name = "<your guild name>"
|
||
|
||
[channels]
|
||
applications = "applications"
|
||
application_logs = "reviewed-applications"
|
||
suggestions = "suggestions"
|
||
suggestion_logs = "reviewed-suggestions"
|
||
guild_updates = "guild-updates"
|
||
discord_changelog = "discord-changelog"
|
||
inactivity = "inactivity-notices"
|
||
development_logs = "development-logs"
|
||
donations = "donations"
|
||
reminders = "reminders"
|
||
|
||
[roles]
|
||
admin = "Admin"
|
||
leader = "Leader"
|
||
officer = "Officer"
|
||
developer = "Developer"
|
||
guild_member = "Guild Member"
|
||
champion = "Champion"
|
||
away = "Away"
|
||
applications_blacklisted = "Applications blacklisted"
|
||
suggestions_blacklisted = "Suggestions Blacklisted"
|
||
|
||
[roles.manageable]
|
||
ids = [
|
||
"<your role id>",
|
||
"<your role id>",
|
||
"<your role id>",
|
||
"<your role id>",
|
||
"<your role id>"
|
||
]
|
||
|
||
[features]
|
||
applications = true
|
||
suggestions = true
|
||
statistics = true
|
||
family = true
|
||
qotd = true
|
||
reminders = true
|
||
staff_simulator = true
|
||
channel_filtering = true
|
||
auto_moderation = false
|
||
welcome_system = false
|
||
level_system = false
|
||
|
||
[limits]
|
||
champion_max_days = 366
|
||
away_max_days = 355
|
||
purge_max_messages = 100
|
||
reminder_max_duration_days = 365
|
||
|
||
[colors]
|
||
primary = 0x5865F2
|
||
success = 0x57F287
|
||
warning = 0xFEE75C
|
||
error = 0xED4245
|
||
info = 0x5865F2
|
||
|
||
[logging]
|
||
# Minimum level: debug | info | warn | error | fatal
|
||
level = "info"
|
||
# Console output format: "console" (ANSI-colored, dev) or "json" (structured).
|
||
# In production (NODE_ENV=production) JSON is forced regardless of this value.
|
||
format = "console"
|
||
# Optional: also write structured JSON lines to a rotating file.
|
||
file = "./logs/elly.log"
|
||
file_max_bytes = 10485760 # 10 MiB — rotates when current file exceeds this.
|
||
file_max_backups = 5 # Number of `.1` … `.N` archives to keep.
|