add reminder schedule
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from dataclasses import dataclass
|
||||
from os import getenv
|
||||
from pathlib import Path
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
@@ -18,6 +19,9 @@ class Config:
|
||||
telegram_proxy: str | None
|
||||
reminder_min_seconds: int
|
||||
reminder_max_seconds: int
|
||||
reminder_start_hour: int
|
||||
reminder_end_hour: int
|
||||
reminder_timezone: ZoneInfo
|
||||
|
||||
|
||||
def _required(name: str) -> str:
|
||||
@@ -36,7 +40,19 @@ def _hours_to_seconds(value: str) -> int:
|
||||
# return int(float(value))
|
||||
|
||||
|
||||
def _hour(name: str, default: str) -> int:
|
||||
hour = int(getenv(name, default))
|
||||
if not 0 <= hour <= 23:
|
||||
raise RuntimeError(f"{name} должен быть числом от 0 до 23")
|
||||
return hour
|
||||
|
||||
|
||||
def load_config() -> Config:
|
||||
reminder_start_hour = _hour("REMINDER_START_HOUR", "7")
|
||||
reminder_end_hour = _hour("REMINDER_END_HOUR", "23")
|
||||
if reminder_start_hour >= reminder_end_hour:
|
||||
raise RuntimeError("REMINDER_START_HOUR должен быть меньше REMINDER_END_HOUR")
|
||||
|
||||
return Config(
|
||||
bot_token=_required("BOT_TOKEN"),
|
||||
allowed_user_ids=_user_ids(_required("ALLOWED_USER_IDS")),
|
||||
@@ -47,4 +63,7 @@ def load_config() -> Config:
|
||||
telegram_proxy=getenv("TELEGRAM_PROXY"),
|
||||
reminder_min_seconds=_hours_to_seconds(getenv("REMINDER_MIN_HOURS", "2")),
|
||||
reminder_max_seconds=_hours_to_seconds(getenv("REMINDER_MAX_HOURS", "3")),
|
||||
reminder_start_hour=reminder_start_hour,
|
||||
reminder_end_hour=reminder_end_hour,
|
||||
reminder_timezone=ZoneInfo(getenv("REMINDER_TIMEZONE", "Europe/Moscow")),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user