NC
Все примеры
Обложка статьи «Telegram-бот на Python: aiogram, webhook и ИИ-ответы» — пример автоматизации с ИИ, категория «Боты», NeiroCursor
Боты

Telegram-бот на Python: aiogram, webhook и ИИ-ответы

Обновлено: Mon Jul 06 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

Пошаговый разбор Telegram-бота на aiogram 3: команды, FSM, webhook на VPS и подключение LLM для умных ответов.

Что получится

Схема
Архитектура Telegram-бота с LLM
BotFather → aiogram → webhook → LLM → VPS.

Telegram-бот с командами /start, /help, диалогом через FSM и опциональными ИИ-ответами через OpenRouter или другой LLM API.

Инструкция
Пошаговая инструкция по теме статьи
Пошаговый план действий — следуйте пунктам по порядку.

Шаг 1. Регистрация бота

  1. Откройте @BotFather в Telegram.

  2. /newbot → имя и username.

  3. Сохраните токен в .env (BOT_TOKEN=), не в git.

Шаг 2. Каркас на aiogram 3


Создай структуру: handlers/, services/, main.py.

Router для /start и echo. Pydantic settings из env.

Типичная структура:


bot/

  main.py

  handlers/

  services/llm.py

  config.py

Шаг 3. Webhook vs polling

Сравнение
Polling для dev vs webhook для prod
На продакшене только HTTPS webhook.

| Режим | Когда |

|-------|-------|

| Polling | локальная разработка |

| Webhook | продакшен на VPS с HTTPS |

Webhook URL: https://ваш-домен.ru/bot/webhook — проксируется nginx на контейнер с ботом.

Шаг 4. ИИ-ответы

  1. Вынесите вызов LLM в services/llm.py.

  2. Rate limit на пользователя (Redis или in-memory для MVP).

  3. Не логируйте тексты с PII — маскируйте user_id.

Шаг 5. Деплой

Советы
Советы по безопасности Telegram-бота
TOKEN в env, rate limit, без PII.
  • Docker-образ с Python 3.12.

  • systemd или compose-сервис bot.

  • Healthcheck и перезапуск при падении.

Связанные материалы

Ключевые выводы

aiogram 3 + webhook на VPS + env для токена — базовая prod-схема. LLM-ответы выносите в сервисный слой с rate limit и без логирования PII.

FAQ

Polling или webhook?

Polling для dev, webhook для prod с HTTPS.

Где хранить BOT_TOKEN?

Только в .env на сервере, не в git и не в rules Cursor.

Как ограничить спам в боте?

Rate limit по user_id, captcha или whitelist для MVP.