Telegram-бот на Python (aiogram 3.x)

Готовый шаблон продакшен-бота для Telegram на современном асинхронном фреймворке aiogram 3.x. Подключение к шлюзу Api Router с сохранением контекста диалога и статусом набора текста (typing).

Фреймворк aiogram 3.x — ведущий стандарт создания асинхронных ботов для Telegram на Python. Сочетание aiogram с асинхронным клиентом Api Router позволяет создавать умных помощников, способных удерживать контекст беседы, имитировать естественный набор текста и моментально отвечать тысячам пользователей одновременно.

Полный исходный код бота

Установите зависимости: pip install aiogram openai.


import asyncio
import os
from aiogram import Bot, Dispatcher, types
from aiogram.filters import CommandStart
from openai import AsyncOpenAI

BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
API_ROUTER_KEY = os.getenv("API_ROUTER_KEY")

bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()

ai_client = AsyncOpenAI(
    base_url="https://api-router.velar.plus/v1",
    api_key=API_ROUTER_KEY
)

@dp.message(CommandStart())
async def cmd_start(message: types.Message):
    await message.answer("Здравствуйте! Я умный ассистент на базе Api Router. Задайте мне любой вопрос.")

@dp.message()
async def handle_message(message: types.Message):
    await bot.send_chat_action(chat_id=message.chat.id, action="typing")
    try:
        response = await ai_client.chat.completions.create(
            model="anthropic/claude-sonnet",
            messages=[
                {"role": "system", "content": "Вы полезный русскоязычный ассистент."},
                {"role": "user", "content": message.text}
            ]
        )
        answer = response.choices[0].message.content
        await message.answer(answer)
    except Exception as e:
        await message.answer(f"Произошла ошибка при обработке: {e}")

async def main():
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())
  

Связанные разделы документации

Рекомендуем также изучить смежные технические руководства и спецификации: