# Claude Telegram Bot - Environment Configuration # ============================================================================== # REQUIRED # ============================================================================== # Telegram bot token from @BotFather TELEGRAM_BOT_TOKEN=1234567890:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 # Comma-separated Telegram user IDs allowed to use the bot # Find your ID: message @userinfobot on Telegram TELEGRAM_ALLOWED_USERS=123456789 # ============================================================================== # RECOMMENDED # ============================================================================== # Working directory where Claude runs (loads CLAUDE.md, skills, MCP config) CLAUDE_WORKING_DIR=/Users/yourname/personal # OpenAI API key for voice message transcription # Without this, voice messages won't work OPENAI_API_KEY=sk-... # ============================================================================== # OPTIONAL - Security # ============================================================================== # Comma-separated paths Claude can access # Default: working dir, ~/Documents, ~/Downloads, ~/Desktop, ~/.claude # Note: Setting this OVERRIDES defaults. Include ~/.claude for plan mode to work. # ALLOWED_PATHS=/Users/yourname/personal,/Users/yourname/projects,/Users/yourname/.claude # User rate limiting (token bucket per user) # RATE_LIMIT_ENABLED=true # RATE_LIMIT_REQUESTS=20 # RATE_LIMIT_WINDOW=60 # Telegram API rate limiting (prevents hitting Telegram's 30 msg/s and 20 msg/min limits) # TELEGRAM_RATE_LIMIT_DEBUG=false # TELEGRAM_MAX_PER_SECOND=25 # Global limit (default: 25, Telegram limit: 30) # TELEGRAM_MAX_PER_MINUTE_PER_CHAT=18 # Per-chat limit (default: 18, Telegram limit: 20) # Message batching and optimization (reduces API calls during streaming) # MESSAGE_BATCHING_ENABLED=true # MERGE_TOOL_STATUSES=true # SHOW_THINKING_MESSAGES=false # ============================================================================== # OPTIONAL - Claude Authentication # ============================================================================== # Agent provider (default: claude) # AGENT_PROVIDER=claude # Optional: Node.js path for Codex worker # CODEX_NODE_PATH=/usr/local/bin/node # API key for environments without Claude Code CLI auth # Get from: https://console.anthropic.com/ # Note: API usage is billed per token - CLI auth is more cost-effective # ANTHROPIC_API_KEY=sk-ant-api03-... # Path to Claude CLI (auto-detected from PATH by default) # CLAUDE_CLI_PATH=/usr/local/bin/claude # ============================================================================== # OPTIONAL - Extended Thinking # ============================================================================== # Keywords that trigger extended thinking (comma-separated, case-insensitive) # THINKING_KEYWORDS=think,pensa,ragiona # Keywords that trigger deep thinking (50k tokens) # THINKING_DEEP_KEYWORDS=ultrathink,think hard,pensa bene # ============================================================================== # OPTIONAL - Voice Transcription # ============================================================================== # Additional context for voice transcription (names, technical terms, etc.) # TRANSCRIPTION_CONTEXT=Common names: John, Alice. Tech: Kubernetes, GraphQL. # ============================================================================== # OPTIONAL - Logging # ============================================================================== # Audit log path # AUDIT_LOG_PATH=/tmp/claude-telegram-audit.log # Output audit logs as JSON (default: human-readable) # AUDIT_LOG_JSON=false # ============================================================================== # OPTIONAL - Timeouts (milliseconds) # ============================================================================== # Media group timeout - wait time for additional photos/documents (default: 1000ms) # MEDIA_GROUP_TIMEOUT_MS=1000 # Query timeout - max time for Claude query before prompting user (default: 180000ms = 3 min) # QUERY_TIMEOUT_MS=180000 # Timeout prompt wait - time to wait for user response to continue prompt (default: 30000ms = 30s) # TIMEOUT_PROMPT_WAIT_MS=30000 # Streaming throttle - throttle interval for streaming message updates (default: 500ms) # STREAMING_THROTTLE_MS=500 # Tool spinner interval - animation update interval for tool status (default: 3000ms) # TOOL_SPINNER_INTERVAL_MS=3000 # Shell command timeout - max time for shell commands executed via !cmd (default: 30000ms = 30s) # SHELL_COMMAND_TIMEOUT_MS=30000 # Session save debounce - debounce interval for saving session state (default: 500ms) # SAVE_DEBOUNCE_MS=500 # Shutdown timeout - graceful shutdown timeout (default: 5000ms = 5s) # SHUTDOWN_TIMEOUT_MS=5000 # Bucket expiration - rate limiter bucket expiration time (default: 3600000ms = 1 hour) # BUCKET_EXPIRATION_MS=3600000 # Cleanup interval - rate limiter cleanup interval (default: 600000ms = 10 minutes) # CLEANUP_INTERVAL_MS=600000 # Rotation check interval - audit log rotation check interval (default: 60000ms = 1 minute) # ROTATION_CHECK_INTERVAL_MS=60000