# Copy to .env and fill in. Never commit .env. # From @BotFather — the full token, e.g. 1234567890:AAH.... TELEGRAM_BOT_TOKEN=8968527151:AAFiCuNGkXjOiLZfT6urU8tkW8SCsWDM0ic # Comma-separated Telegram chat ids that receive every OTP. # Each of these users MUST have sent the bot at least one message first # (Telegram forbids a bot from opening a conversation). # Discover them with: GET http://localhost:5010/chat_ids (with the X-Api-Key header) TELEGRAM_CHAT_IDS=1277103616,110209855 # REQUIRED. Shared secret the caller must send as the `X-Api-Key` header. # Minimum 16 chars; the process refuses to start without it. # Generate one: node -e "console.log(require('crypto').randomBytes(24).toString('hex'))" # The same value goes into the .NET side's Seams:Sms:Telegram:ApiKey (user-secrets, never committed). API_KEY=ab8984974bc1fe5ce514d0fd74f71c8738b3aed92a7e4d86 # HTTP listener PORT=5010 HOST=127.0.0.1 # Set to `true` to keep the OTP code out of this process's stdout logs. # The code is still delivered over Telegram either way. REDACT_CODE_IN_LOGS=false # api.telegram.org is filtered in Iran. Point this at whatever your VPN / proxy client listens on and # this process tunnels its Telegram calls through it (HTTP CONNECT or SOCKS5, with optional # user:pass@ credentials). Leave it unset for a direct connection — nothing else changes. # local machine with a VPN client: http://127.0.0.1:10809 / socks5://127.0.0.1:10808 # VPS with a proxy container: http://proxy:1080 (the container name on the shared docker network) # HTTPS_PROXY / ALL_PROXY are honoured as a fallback if TELEGRAM_PROXY_URL is unset. # TELEGRAM_PROXY_URL=http://127.0.0.1:10809