Skip to content

Environment Variables

Jason Tucker edited this page May 5, 2026 · 2 revisions

Environment Variables

All vars are validated with Zod in src/config/env.ts. The bot exits immediately if a required var is missing.

Core

Variable Required Description
DISCORD_BOT_TOKEN Bot token from Developer Portal
DISCORD_CLIENT_ID Application (client) ID
DATABASE_URL PostgreSQL connection string. In Docker, this is set automatically by compose using POSTGRES_PASSWORD.
NODE_ENV development or production (default: development)

Guild

Variable Required Description
GUILD_ID The single Discord server this bot serves

Sudo

Variable Required Description
SUDO_ROLE_IDS Comma-separated role IDs with full bot-admin powers
SUDO_USER_IDS Comma-separated user IDs with full bot-admin powers
BOT_OWNER_ID Discord user ID — receives DMs on startup and unhandled errors

Voice channels

Variable Required Description
AUTO_VOICE_CATEGORY_ID Category ID where hubs and auto channels live
HUB_CHANNEL_IDS Comma-separated voice channel IDs that are hubs
VOICE_CLEANUP_DELAY_MS ms before empty channel cleanup (default: 30000)

Channels

Variable Required Description
LOG_CHANNEL_ID Bot sends structured logs here
ADMIN_CHANNEL_ID Sudo-only admin channel
STAFF_APPROVAL_THREAD_ID Thread where staff requests are posted
STAFF_APPROVAL_PING_USER_ID User pinged on each staff request

Future features (optional now)

Variable Description
BIRTHDAY_CHANNEL_ID Channel for birthday pings
CLIPS_CHANNEL_ID Auto-thread on every message (best moments)
FOOD_CHANNEL_ID Auto-thread on every message

Docker

Variable Description
POSTGRES_PASSWORD Postgres password — must be hex/alphanumeric only (no #, *, ?)
BOT_IMAGE GHCR image URL for docker compose pull. Set by CI.

Uptime monitoring

Variable Description
UPTIME_KUMA_PUSH_URL Push monitor URL — bot pings it every 60s

Clone this wiki locally