add reminder schedule

This commit is contained in:
Dmitry
2026-07-06 13:30:48 +03:00
parent 793716f699
commit c4b72b22e6
8 changed files with 253 additions and 3 deletions
+19
View File
@@ -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")),
)