feat(config): add Config class for env loading
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import os
|
||||
import logging
|
||||
|
||||
from typing import Any
|
||||
from dotenv import load_dotenv
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Config:
|
||||
def __init__(self):
|
||||
self._config_data = self._load()
|
||||
logger.success("Конфигурация успешно загружена.")
|
||||
|
||||
def _load(self):
|
||||
load_dotenv()
|
||||
|
||||
try:
|
||||
# Pyrogram
|
||||
api_id = os.getenv(key="API_ID", default=None)
|
||||
api_hash = os.getenv(key="API_HASH", default=None)
|
||||
|
||||
# Lolz
|
||||
lolz_token = os.getenv(key="LOLZ_TOKEN", defualt=None)
|
||||
lolz_thread_id = int(os.getenv(key="LOLZ_THREAD_ID", defualt=None))
|
||||
|
||||
# Stars
|
||||
stars_count = int(os.getenv(key="STARS_COUNT", defualt=1))
|
||||
|
||||
# Misc
|
||||
check_interval = max(
|
||||
int(os.getenv(key="CHECK_INTERVAL", defualt=30)), 0.2
|
||||
) # 300r/60s для GET запросов, 60/300 = минимум
|
||||
api_delay = max(
|
||||
int(os.getenv(key="API_DELAY", defualt=5)), 2
|
||||
) # 30r/60s для non-GET запросов, 60/30 = минимум
|
||||
max_retries = int(os.getenv(key="MAX_RETRIES", defualt=3))
|
||||
|
||||
enable_reply = (
|
||||
os.getenv(key="ENABLE_REPLY", default="true")
|
||||
).lower() == "true"
|
||||
skip_commented = (
|
||||
os.getenv(key="SKIP_COMMENTED", default="true")
|
||||
).lower() == "true"
|
||||
|
||||
return {
|
||||
# Pyrogram
|
||||
"api_id": api_id,
|
||||
"api_hash": api_hash,
|
||||
# Lolz
|
||||
"lolz_token": lolz_token,
|
||||
"lolz_thread_id": lolz_thread_id,
|
||||
# Stars
|
||||
"stars_count": stars_count,
|
||||
# Misc
|
||||
"check_interval": check_interval,
|
||||
"api_delay": api_delay,
|
||||
"max_retries": max_retries,
|
||||
"enable_reply": enable_reply,
|
||||
"skip_commented": skip_commented,
|
||||
}
|
||||
|
||||
except:
|
||||
raise
|
||||
|
||||
def __getattr__(self, name: str) -> Any:
|
||||
return self._config_data.get(
|
||||
name, True if name == "skip_posts_with_comments" else None
|
||||
)
|
||||
Reference in New Issue
Block a user