# Local usability improvements These changes are in this local clone and the portfolio source download. They have not been pushed to GitHub. ## Run ```sh cp .env.example .env # Fill BOT_TOKEN and optional ADMIN_USER_ID in .env ./run.sh --check ./run.sh ``` The launcher creates `.venv` and installs `requirements.txt` on first use. Python 3.12 is the verified runtime. Override the interpreter with `PYTHON_BIN` or use a prepared environment through `PROJECT_PYTHON`. ## Changes - Made imports safe without a bot token and added a configuration check. - Moved the admin ID to environment configuration and supplied .env.example. - Validated exact platform hostnames, HTTPS and media paths. - Moved downloads off the async event loop; used unique temporary directories, upload size limits and media groups of at most ten. - Fixed URL extraction around emoji and preserved the earlier bot as an example. ## Verification and scope 11 URL validation tests passed. No Telegram calls or media downloads were made. Live operation requires the owner-supplied BOT_TOKEN, with ffmpeg needed for some formats. ## Run the regression tests ```sh .venv/bin/python -m pip install -r requirements-dev.txt .venv/bin/python -m pytest -q ```