import asyncio
import os
from aiogram import Bot, Dispatcher, types
from aiogram.filters import CommandStart
from openai import OpenAI

# Замените 'ВАШ_ТГ_ТОКЕН' и 'ВАШ_ОПЕНРОУТЕР_КЛЮЧ' на ваши реальные данные
TELEGRAM_BOT_TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN", "ВАШ_ТГ_ТОКЕН")
OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY", "ВАШ_ОПЕНРОУТЕР_КЛЮЧ")

# 2. Инициализация клиентов
bot = Bot(token=TELEGRAM_BOT_TOKEN)
dp = Dispatcher()

ai_client = OpenAI(
    base_url="https://openrouter.ai",
    api_key=OPENROUTER_API_KEY,
)

# Выберите модель. Для тестов отлично подойдет быстрая и бесплатная модель
MODEL_NAME = "google/gemini-2.5-flash" 

# Handler на команду /start
@dp.message(CommandStart())
async def cmd_start(message: types.Message):
    await message.answer("Привет! Я бот со встроенным искусственным интеллектом. Напиши мне любой вопрос, и я отвечу!")

# Handler для обработки всех текстовых сообщений
@dp.message()
async def handle_message(message: types.Message):
    # Отправляем статус "печать...", чтобы пользователь видел, что бот думает
    await bot.send_chat_action(chat_id=message.chat.id, action="typing")
    
    try:
        # Запрос к OpenRouter API
        completion = ai_client.chat.completions.create(
            model=MODEL_NAME,
            messages=[
                {"role": "user", "content": message.text}
            ],
            extra_headers={
                "HTTP-Referer": "https://t.me", # Опционально для аналитики
                "X-Title": "Telegram AI Bot",
            }
        )
        
        # Получаем ответ от ИИ
        ai_response = completion.choices[0].message.content
        
        # Отправляем ответ пользователю в Telegram
        await message.answer(ai_response)
        
    except Exception as e:
        print(f"Ошибка при запросе к API: {e}")
        await message.answer("Извини, произошла ошибка при обработке запроса. Попробуй позже.")

# Запуск бота
async def main():
    print("Бот успешно запущен и готов к работе...")
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())
