Spaces:
Runtime error
Runtime error
| # filename: config.py (Updated for String Session) | |
| import os | |
| import re | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| def get_env(key, default=None, cast_to=str): | |
| value = os.getenv(key, default) | |
| if value is None: return None | |
| if isinstance(value, cast_to): return value | |
| if cast_to == bool: return value.lower() in ('true', '1', 't', 'y', 'yes') | |
| try: return cast_to(value) | |
| except (ValueError, TypeError): return default | |
| # --- Telegram Credentials --- | |
| API_ID = get_env("API_ID", cast_to=int) | |
| API_HASH = get_env("API_HASH") | |
| BOT_TOKEN = get_env("BOT_TOKEN") | |
| OWNER_ID = get_env("OWNER_ID", cast_to=int) | |
| if not all([API_ID, API_HASH, BOT_TOKEN, OWNER_ID]): | |
| raise ValueError("Error: One or more mandatory Telegram credentials are not set.") | |
| # --- Database Configuration --- | |
| mongo_vars = {} | |
| for key, value in os.environ.items(): | |
| if match := re.match(r"MONGODB_URL_(\d+)", key): | |
| if value: mongo_vars[int(match.group(1))] = value | |
| MONGODB_URIS = [mongo_vars[key] for key in sorted(mongo_vars.keys())] | |
| if not MONGODB_URIS: | |
| raise ValueError("Error: No MONGODB_URL_<n> variables found. Set at least MONGODB_URL_1.") | |
| DATABASE_NAME = get_env("DATABASE_NAME", "terabox_bot_db") | |
| if not DATABASE_NAME: | |
| raise ValueError("Error: DATABASE_NAME environment variable is not set.") | |
| # --- Bot Functionality --- | |
| TERABOX_WORKER_URL = get_env("TERABOX_WORKER_URL") | |
| if not TERABOX_WORKER_URL: | |
| raise ValueError("Error: TERABOX_WORKER_URL is not set.") | |
| # --- Bot Features (Optional) --- | |
| FORCE_SUB_CHANNEL_USERNAME = get_env("FORCE_SUB_CHANNEL_USERNAME") | |
| BACKUP_CHANNEL_ID = get_env("BACKUP_CHANNEL_ID", cast_to=int) | |
| # --- Performance, Limits & Toggles --- | |
| PREMIUM_WORKERS = get_env("PREMIUM_WORKERS", 1, cast_to=int) | |
| FREE_WORKERS = get_env("FREE_WORKERS", 1, cast_to=int) | |
| _free_limit_mb = get_env("FREE_USER_FILE_SIZE_LIMIT", 50, cast_to=int) | |
| FREE_USER_FILE_SIZE_LIMIT_BYTES = _free_limit_mb * 1024 * 1024 | |
| ENABLE_FFMPEG = get_env("ENABLE_FFMPEG", True, cast_to=bool) | |
| # --- NEW: Telethon String Session --- | |
| # Reads the string session from your secrets. | |
| TELETHON_SESSION_STRING = get_env("TELETHON_SESSION_STRING") | |