This project implements a Telegram bot system with two instances: a daemon bot and an apprentice bot. The daemon bot handles the main workload, while the apprentice bot can be updated and take over when needed. The system supports both OpenAI (ChatGPT) and Anthropic (Claude) AI models.
Here are some of the upcoming features and improvements planned for the bot:
* **Refactor messaging service integration:** Abstract the messaging service (currently Telegram) to allow for easier integration of other services like Slack or email. Dummy classes for new services will be created as a first step. (Issue #194)
* **Dynamic inference service switching:** Enable switching between different inference services (e.g., Gemini, OpenAI) during runtime without restarting the bot. Message history will be preserved across service switches. (Issue #195)
* **Scheduled agent tasks:** Allow agents to run on a timer to perform specific tasks autonomously, such as:
* Checking for newly created issues.
* Reviewing Pull Requests.
* Analyzing metrics.
(Issue #196)
*Note: For timed agent tasks, API keys and other sensitive information will be stored server-side, envisioning a future paid service model.*
* **Enhanced onboarding and configuration:**
* On `/start`, prompt the user for a GitHub API key and provide a pre-configured link to generate a new key with the required permissions.
* Validate the API key and then ask for the target repository.
(Issue #197)
* **Repository switching command:** Implement a command to allow users to switch between different GitHub repositories seamlessly. (Issue #198)
* **User data storage for GitHub:** Store the GitHub API key and current repository in `context.user_data["github_api_key"]` and `context.user_data["current_repository"]` respectively on the Telegram side. (Issue #199)
* **User-provided inference service API keys:** Allow users to input their own API keys for inference services (e.g., OpenAI, Gemini, Anthropic, other OpenAI-compatible services). These keys will be stored in `context.user_data`. A wizard may be implemented to guide users through obtaining API keys if needed. (Issue #200)