Telegram-бот с AI на Python: от прототипа до запуска
Telegram-бот с AI можно собрать быстро, но полезный бот отличается от демо двумя вещами: он знает границы своей задачи и сохраняет контекст так, чтобы пользователю не приходилось повторять одно и то же. Ниже — практический план минимального запуска.
Что нужно до кода
Токен Telegram-бота, полученный через BotFather.
API-ключ выбранной AI-модели или доступ к внутреннему AI-шлюзу.
Описание роли бота: поддержка, запись, генерация текстов, поиск по базе знаний.
Правила безопасности: что бот не должен обещать, какие данные нельзя сохранять, когда нужен оператор.
Минимальная архитектура
Для прототипа достаточно обработчика сообщений, функции обращения к модели и простого хранилища истории. Для продакшена добавляют очередь, базу данных, лимиты, админ-панель и мониторинг. Главное — не смешивать бизнес-логику с Telegram-обработчиками: потом бот будет проще расширять.
Пример каркаса
from aiogram import Bot, Dispatcher, types
from aiogram.filters import CommandStart
bot = Bot(token=TELEGRAM_TOKEN)
dp = Dispatcher()
@dp.message(CommandStart())
async def start(message: types.Message):
await message.answer('Здравствуйте. Опишите задачу, я помогу разобраться.')
@dp.message()
async def handle_message(message: types.Message):
answer = await ask_ai(user_id=message.from_user.id, text=message.text)
await message.answer(answer)
async def ask_ai(user_id: int, text: str) -> str:
# Здесь: загрузить контекст, добавить системную инструкцию, вызвать модель, сохранить ответ.
return 'AI response'Системная инструкция
Системная инструкция должна быть конкретной. Плохой вариант: “будь полезным ассистентом”. Хороший вариант: “ты ассистент студии, отвечаешь только про услуги, цены, сроки и запись; если вопрос выходит за рамки, просишь оставить контакт для оператора”. Чем уже задача, тем стабильнее бот.
Контекст и память
Не храните бесконечную историю чата. Для большинства задач достаточно последних сообщений и краткого профиля пользователя: имя, выбранная услуга, город, статус заявки. Всё, что влияет на бизнес-процесс, лучше хранить структурно, а не только в тексте диалога.
Что добавить перед публикацией
Лимиты на пользователя и защиту от спама.
Логи запросов и ответов без лишних персональных данных.
Команду /help и понятный сценарий передачи человеку.
Обработку ошибок API, таймаутов и пустых сообщений.
Тестовый список диалогов для проверки после каждого изменения промпта.
Деплой
Для небольшого бота подойдёт VPS или PaaS с systemd/supervisor. Webhook удобен для продакшена, polling проще для первого запуска. Важно хранить токены в переменных окружения, а не в коде, и регулярно проверять логи после публикации.
Вывод
Быстрый Telegram-бот — это не только подключение модели. Это сценарий, ограничения, память, логирование и понятная передача сложных случаев человеку. Если заложить эти элементы сразу, прототип можно спокойно развивать в рабочий инструмент.