// Single source of truth for runtime config is TSSBOT/.env. start_bot.py // loads it directly (load_dotenv(_HERE / ".env")). Do NOT add `env:` blocks // below or `require('dotenv')` here — either would create a second config // source that can silently shadow .env, and the dotenv require would fail // outright on hosts that don't have node_modules/ installed in TSSBOT. const DEPLOY_PATH = __dirname; // Reuse SREBOT's venv by default — both bots share BOTS/SHARED and most // runtime deps (discord.py, dotenv, …). Split into TSSBOT/.venv once the // dep sets diverge meaningfully. const PY_INTERPRETER = `${DEPLOY_PATH}/../SREBOT/.venv/bin/python`; module.exports = { apps: [ // Discord Bot { name: 'tssbot', script: 'start_bot.py', interpreter: PY_INTERPRETER, cwd: DEPLOY_PATH, instances: 1, autorestart: true, watch: false, max_memory_restart: '8000M', log_file: './logs/bot_combined.log', out_file: './logs/bot_out.log', error_file: './logs/bot_error.log', log_date_format: 'YYYY-MM-DD HH:mm:ss Z', merge_logs: true, kill_timeout: 5000, restart_delay: 3000 } // tssbot-api and tssbot-web will be added here once TSSBOT/server.js and // TSSBOT/web/server.js exist. They should read TSSBOT_API_PORT and // TSSBOT_WEB_PORT from .env (mirroring the SREBOT naming convention). ] };