80 lines
2.5 KiB
Python
80 lines
2.5 KiB
Python
import os
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
from pathlib import Path
|
|
|
|
from models.config import BotConfig
|
|
from models.stats import BotStats
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent
|
|
|
|
|
|
def _resolve_path(value: str, default: str) -> Path:
|
|
path = Path(os.getenv(value, default))
|
|
if path.is_absolute():
|
|
return path
|
|
return BASE_DIR / path
|
|
|
|
|
|
def _env_int(name: str, default: int) -> int:
|
|
raw = os.getenv(name)
|
|
if raw is None or raw == "":
|
|
return default
|
|
return int(raw)
|
|
|
|
|
|
def _env_float(name: str, default: float) -> float:
|
|
raw = os.getenv(name)
|
|
if raw is None or raw == "":
|
|
return default
|
|
return float(raw)
|
|
|
|
|
|
def _env_bool(name: str, default: bool) -> bool:
|
|
raw = os.getenv(name)
|
|
if raw is None or raw == "":
|
|
return default
|
|
return raw.strip().lower() in {"1", "true", "yes", "on"}
|
|
|
|
|
|
load_dotenv()
|
|
|
|
BOT_TOKEN = os.getenv("BOT_TOKEN", "")
|
|
LOG_BOT_TOKEN = os.getenv("LOG_BOT_TOKEN", "") or None
|
|
ADMIN_ID = _env_int("ADMIN_ID", 0)
|
|
CRYPTO_PAY_TOKEN = os.getenv("CRYPTO_PAY_TOKEN", "")
|
|
SHOP_NAME = os.getenv("SHOP_NAME", "KILL UNONY MOM")
|
|
SHOP_CHANNEL = os.getenv("SHOP_CHANNEL", "https://t.me/bot399_start_bot")
|
|
BOT_USERNAME = os.getenv("BOT_USERNAME", "bot399_start_bot")
|
|
|
|
DATABASE_DIR = _resolve_path("DATABASE_DIR", "Users")
|
|
COOKIE_FILES_DIR = _resolve_path("COOKIE_FILES_DIR", "Cookies")
|
|
CONFIG_FILE = _resolve_path("BOT_CONFIG_FILE", "bot_config.json")
|
|
STATS_FILE = _resolve_path("BOT_STATS_FILE", "bot_stats.json")
|
|
PROXIES_FILE = _resolve_path("PROXIES_FILE", "proxies.txt")
|
|
ROBSEC_FILE = _resolve_path("ROBSEC_FILE", "robsec.txt")
|
|
|
|
MAX_RETRIES = _env_int("MAX_RETRIES", 5)
|
|
CONCURRENT_CHECKS = _env_int("CONCURRENT_CHECKS", 50)
|
|
REQUEST_TIMEOUT = _env_int("REQUEST_TIMEOUT", 10)
|
|
FRESHER_BATCH_SIZE = _env_int("FRESHER_BATCH_SIZE", 10)
|
|
|
|
DATABASE_DIR.mkdir(parents=True, exist_ok=True)
|
|
COOKIE_FILES_DIR.mkdir(parents=True, exist_ok=True)
|
|
|
|
FRESHER_POOL = ThreadPoolExecutor(max_workers=64, thread_name_prefix="fresher")
|
|
|
|
DEFAULT_CONFIG = BotConfig.default()
|
|
DEFAULT_STATS = BotStats.default()
|
|
|
|
BOT_ENABLED_DEFAULT = _env_bool("BOT_ENABLED_DEFAULT", True)
|
|
SHOP_ENABLED_DEFAULT = _env_bool("SHOP_ENABLED_DEFAULT", True)
|
|
MIN_WITHDRAW_DEFAULT = _env_float("MIN_WITHDRAW_DEFAULT", 100.0)
|
|
|
|
# Apply deployment defaults before the first config file is created.
|
|
DEFAULT_CONFIG.bot_enabled = BOT_ENABLED_DEFAULT
|
|
DEFAULT_CONFIG.shop_enabled = SHOP_ENABLED_DEFAULT
|
|
DEFAULT_CONFIG.min_withdraw = MIN_WITHDRAW_DEFAULT
|