Configuration

config.env holds every runtime setting. Docker Compose loads it through env_file, so no secret is baked into the image. Restart the container after you edit it.

Variable Required Default Purpose
DISCORD_WEBHOOK_URL Yes None Destination for scheduled posts.
LEAGUE_ID Yes None ESPN league ID.
LEAGUE_YEAR No 2026 Season the bot reads.
ESPN_S2 Private leagues None ESPN auth cookie.
SWID Private leagues None ESPN auth cookie.
DISCORD_BOT_TOKEN No None Enables slash commands. Without it, only scheduled posts run.
START_DATE No 2026-09-04 First day the scheduler fires jobs.
END_DATE No 2027-01-05 Last day the scheduler fires jobs.
TIMEZONE No America/New_York Timezone for morning and evening jobs.
DAILY_WAIVER No False Posts a waiver report every day at 9:01 AM.
MONITOR_REPORT No True Posts the Sunday injury report.
TOP_HALF_SCORING No False Adds top-half scoring to standings.
RANDOM_PHRASE No False Appends a random phrase to messages.
INIT_MSG No None Overrides the startup message.

DASHBOARD_URL is set in docker-compose.yml and controls the link that /dashboard returns.

ESPN cookies

ESPN_S2 and SWID come from your browser cookies on espn.com. Both are required for waiver reports, because ESPN treats transaction data as private.