refactor: add ConfigError and Lolz error handling
Build and Push (dev) / build (push) Successful in 10m53s

This commit is contained in:
2026-08-07 05:08:46 +05:00
parent b7a7508654
commit 76e6659c00
5 changed files with 208 additions and 83 deletions
+26 -8
View File
@@ -7,6 +7,11 @@ from dotenv import load_dotenv
logger = logging.getLogger(__name__)
class ConfigError(Exception):
"""Ошибка валидации конфигурации"""
pass
class Config:
def __init__(self):
self._config_data = self._load()
@@ -53,18 +58,25 @@ class Config:
# Notification bot (aiogram)
bot_token = os.getenv(key="BOT_TOKEN", default=None)
admin_id = (
os.getenv(key="ADMIN_ID", default=None)
if not os.getenv(key="ADMIN_ID", default=None)
else int(os.getenv(key="ADMIN_ID", default=None))
)
admin_id_str = os.getenv(key="ADMIN_ID", default=None)
admin_id = int(admin_id_str) if admin_id_str else None
notify_admin = (
os.getenv(key="NOTIFY_ADMIN", default="true")
).lower() == "true"
# Lolz
# Lolz - required fields
lolz_token = os.getenv(key="LOLZ_TOKEN", default=None)
lolz_thread_id = int(os.getenv(key="LOLZ_THREAD_ID", default=None))
if not lolz_token:
raise ConfigError("LOLZ_TOKEN обязателен, но не установлен")
lolz_thread_id_str = os.getenv(key="LOLZ_THREAD_ID", default=None)
if not lolz_thread_id_str:
raise ConfigError("LOLZ_THREAD_ID обязателен, но не установлен")
try:
lolz_thread_id = int(lolz_thread_id_str)
except (ValueError, TypeError) as e:
raise ConfigError(f"LOLZ_THREAD_ID должен быть целым числом: {lolz_thread_id_str}") from e
# Stars
stars_count = int(os.getenv(key="STARS_COUNT", default=1))
@@ -118,8 +130,14 @@ class Config:
"bump_check_interval": bump_check_interval,
}
except:
except ConfigError:
raise
except (ValueError, TypeError) as e:
logger.error(f"Invalid configuration value: {e}")
raise ConfigError(f"Invalid configuration value: {e}") from e
except Exception as e:
logger.error(f"Unexpected error loading configuration: {e}")
raise ConfigError(f"Failed to load configuration: {e}") from e
def __getattr__(self, name: str) -> Any:
return self._config_data.get(