3f30b782d2
Runs as a supervised daemon task (asyncio long-polling). Features: - Sender allowlist + bcrypt passphrase challenge (3 attempts before lockout) - Rate limiting: 20 messages/hour per user (in-memory, resets on restart) - Injection scanning on every incoming message (pyra.security.injection) - Full AI chat with litellm streaming → progressive Telegram message editing - Tool-use loop (up to 10 iterations) with inline-button approval (120s timeout) - Conversation history persisted per chat_id in ~/.pyra/telegram_history.db - Memory context loaded from ~/.pyra/memory/ as system prompt on first message Vault keys: plugin:telegram_bot:token, allowed_users, passphrase_hash Deps: python-telegram-bot>=21.0, bcrypt>=4.0.0 (added to telegram + all-plugins extras) 22 new unit tests covering rate limiter, history DB, plugin lifecycle, and auth state. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>