34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""Configuration module for loading environment variables."""
|
|
import os
|
|
from typing import Optional
|
|
from dotenv import load_dotenv
|
|
|
|
# Load environment variables from .env file
|
|
load_dotenv()
|
|
|
|
|
|
class Config:
|
|
"""Application configuration."""
|
|
|
|
# Telegram Bot Token
|
|
BOT_TOKEN: Optional[str] = os.getenv("BOT_TOKEN")
|
|
if not BOT_TOKEN:
|
|
raise ValueError("BOT_TOKEN environment variable is required")
|
|
|
|
# Database configuration
|
|
DATABASE_URL: Optional[str] = os.getenv("DATABASE_URL")
|
|
if not DATABASE_URL:
|
|
raise ValueError("DATABASE_URL environment variable is required")
|
|
|
|
# Notification settings
|
|
NOTIFICATION_TIME: str = os.getenv("NOTIFICATION_TIME", "09:00") or "09:00"
|
|
TIMEZONE: str = os.getenv("TIMEZONE", "UTC") or "UTC"
|
|
|
|
@classmethod
|
|
def validate(cls) -> None:
|
|
"""Validate that all required configuration is present."""
|
|
if not cls.BOT_TOKEN:
|
|
raise ValueError("BOT_TOKEN is required")
|
|
if not cls.DATABASE_URL:
|
|
raise ValueError("DATABASE_URL is required")
|