diff --git a/telegram_inference_bot.py b/telegram_inference_bot.py index 855c16b..43b42ee 100644 --- a/telegram_inference_bot.py +++ b/telegram_inference_bot.py @@ -7,7 +7,7 @@ from telegram import Update from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes from dotenv import load_dotenv from tools.base_tool import BaseTool -from ai_providers import create_ai_provider +from ai_providers import create_ai_provider, AnthropicProvider, OpenAIProvider # Load environment variables load_dotenv() @@ -116,31 +116,56 @@ def call_tool(function_call): async def switch(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: global ai_provider - if isinstance(ai_provider, OpenAIProvider): - ai_provider.use_smart_model = not ai_provider.use_smart_model - model = ai_provider.get_model() - logging.info(f"Switched to model: {model}") - await update.message.reply_text(f"Switched to model: {model}") - else: - await update.message.reply_text("Switching models is only available for OpenAI provider.") + model = ai_provider.switch_model() + logging.info(f"Switched to model: {model}") + await update.message.reply_text(f"Switched to model: {model}") async def switch_providers(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: await clear(update, context) global ai_provider - if isinstance(ai_provider, AnthropicProvider): - ai_provider = create_ai_provider("openai") - logging.info("Switched to OpenAI provider") - await update.message.reply_text("Switched to OpenAI provider") - else: - ai_provider = create_ai_provider("anthropic") - logging.info("Switched to Anthropic provider") - await update.message.reply_text("Switched to Anthropic provider") + new_provider_name = "openai" if isinstance(ai_provider, AnthropicProvider) else "anthropic" + ai_provider = create_ai_provider(new_provider_name) + logging.info(f"Switched to {new_provider_name} provider") + await update.message.reply_text(f"Switched to {new_provider_name} provider") async def status(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: - if isinstance(ai_provider, AnthropicProvider): - await update.message.reply_text(f"Currently using Anthropic: {ai_provider.model}") - else: - await update.message.reply_text(f"Currently using OpenAI: {ai_provider.get_model()}") + global ai_provider, conversation_history, tools + + provider_name = ai_provider.__class__.__name__ + model = ai_provider.get_model() + + total_conversations = sum(len(history) for history in conversation_history.values()) + active_users = len(conversation_history) + + available_tools = [tool.__class__.__name__ for tool in tools] + + status_message = f""" +🤖 Bot Status Report 🤖 + +AI Provider: {provider_name} +Current Model: {model} + +📊 Usage Statistics: +• Total Conversations: {total_conversations} +• Active Users: {active_users} + +🛠 Available Tools ({len(available_tools)}): +{', '.join(available_tools)} + +💡 Commands: +• /start - Start the bot +• /clear - Clear conversation history +• /switch - Switch AI model (OpenAI only) +• /toggle - Toggle between AI providers +• /status - Show this status report + +🔧 System Info: +• Python version: {os.sys.version.split()[0]} +• Telegram Bot API version: {Application.VERSION} +""" + + logging.info("Status command executed") + await update.message.reply_text(status_message) def main() -> None: # Create the Application and pass it your bot's token