chorus/bot/chorus_bot/config.py

47 lines
1.7 KiB
Python

import os
from dataclasses import dataclass
@dataclass
class Config:
discord_token: str
guild_id: int
inbox_channel_id: int
triage_role_id: int
backend_base_url: str
web_base_url: str
google_voice_imap_host: str
google_voice_imap_user: str
google_voice_imap_password: str
bh_email_imap_host: str
bh_email_imap_user: str
bh_email_imap_password: str
personal_email_imap_host: str
personal_email_imap_user: str
personal_email_imap_password: str
def load_config() -> Config:
def env(name: str) -> str:
value = os.environ.get(name)
if not value:
raise RuntimeError(f"Missing required env var: {name}")
return value
return Config(
discord_token=env("CHORUS_DISCORD_TOKEN"),
guild_id=int(env("CHORUS_GUILD_ID")),
inbox_channel_id=int(env("CHORUS_INBOX_CHANNEL_ID")),
triage_role_id=int(env("CHORUS_TRIAGE_ROLE_ID")),
backend_base_url=env("CHORUS_BACKEND_BASE_URL"),
web_base_url=os.environ.get("CHORUS_WEB_BASE_URL", "https://chorus.circuitforge.tech"),
google_voice_imap_host=env("CHORUS_GVOICE_IMAP_HOST"),
google_voice_imap_user=env("CHORUS_GVOICE_IMAP_USER"),
google_voice_imap_password=env("CHORUS_GVOICE_IMAP_PASSWORD"),
bh_email_imap_host=env("CHORUS_BH_EMAIL_IMAP_HOST"),
bh_email_imap_user=env("CHORUS_BH_EMAIL_IMAP_USER"),
bh_email_imap_password=env("CHORUS_BH_EMAIL_IMAP_PASSWORD"),
personal_email_imap_host=env("CHORUS_PERSONAL_EMAIL_IMAP_HOST"),
personal_email_imap_user=env("CHORUS_PERSONAL_EMAIL_IMAP_USER"),
personal_email_imap_password=env("CHORUS_PERSONAL_EMAIL_IMAP_PASSWORD"),
)