ZeroPost
Все статьи

Как настроить персонального ИИ-ассистента в Telegram

ZeroPost AI15 августа 2026 г. 4 мин чтения
Как настроить персонального ИИ-ассистента в Telegram

Три часа ночи. Я сижу над документацией Telegram Bot API и понимаю, что сделал глупость — пытался прикрутить к боту сразу две модели, и они друг другу мешают. Вместо ассистента получился генератор бессмыслицы. Пришлось всё переделывать с нуля.

На следующий день ассистент заработал нормально. И я решил записать, что узнал, пока не забыл.

Зачем вообще городить своего бота

Большинство людей начинают с ChatGPT или Claude в браузере. Это нормально, но есть задачи, где бот в Telegram удобнее — быстрый вопрос прилетает туда, где ты уже сидишь, не нужно открывать отдельную вкладку. А ещё можно привязать к боту свои данные, базу знаний, внутренние процессы.

Для меня главная фишка — интеграция с заметками. Кидаю боту ссылку — он кратко пересказывает. Кидаю текст — он находит повторы и стилистические косяки. Без переключения контекста, без копирования туда-сюда.

С чего начать

Нужны три вещи: Telegram-бот, API-ключ от языковой модели и сервер, который будет между ними связующим звеном.

Бот в Telegram. Открываешь @BotFather, пишешь /newbot, следуешь инструкции. Получаешь токен вида 123456789:ABCdefGhIJKlmNoPQRstuVWXyz. Токен — как пароль, никому не показывай.

Ключ от модели. Большинство сервисов дают ключи бесплатно или почти бесплатно. OpenAI, Groq, Anthropic через прокси — каждый вариант со своими плюсами. Я использую Groq, потому что у них бесплатный тариф с хорошей скоростью и модели достаточно шустрые для диалога.

Серверная часть. Вот тут было интереснее всего. Можно взять готовые решения вроде CrewStack, Coze или Manybot. А можно написать самому, если умеешь в Python. Я пошёл вторым путём, потому что хотел понять, как оно работает изнутри.

Простая реализация на Python

Не буду грузить кодом целиком — покажу принцип, который оказался важным.

Сначала ставишь библиотеку:

pip install python-telegram-bot openai

Дальше минимальный каркас:

from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
from openai import OpenAI

BOT_TOKEN = "твой_токен"
OPENAI_KEY = "твой_ключ"

client = OpenAI(api_key=OPENAI_KEY)

async def start(update, context):
    await update.message.reply_text("Привет. Я твой ассистент.")

async def handle_message(update, context):
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": update.message.text}]
    )
    await update.message.reply_text(response.choices[0].message.content)

app = Application.builder().token(BOT_TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
app.run_polling()

Запускаешь, пишешь боту — он отвечает. Сорок строк, и уже работает. Я был удивлён, насколько быстро это собирается.

Но потом, конечно, начались нюансы.

Где я наступил на грабли

Первая проблема — контекст не сохранялся. Пишу боту «дополни абзац», а он отвечает на пустом месте, потому что каждый запрос — новый. Исправил через хранение истории в памяти приложения:

user_context = {}

async def handle_message(update, context):
    user_id = update.effective_user.id
    if user_id not in user_context:
        user_context[user_id] = []

    user_context[user_id].append({"role": "user", "content": update.message.text})

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=user_context[user_id]
    )

    reply = response.choices[0].message.content
    user_context[user_id].append({"role": "assistant", "content": reply})

    await update.message.reply_text(reply)

Вторая проблема — контекст разрастался. После пятнадцати сообщений модель начинала тупить и повторяться. Поставил лимит:

user_context[user_id] = user_context[user_id][-20:]

Третья — разговоры разных людей перемешивались, потому что я хранил всё в одной переменной. Добавил user_id как ключ, и стало нормально.

Что я в итоге доделал

Чистый бот хорош, но ограничен. Я докрутил несколько вещей, которые реально использую.

Системный промпт. Настроил инструкцию, которая говорит боту, как себя вести. Теперь он знает, что я работаю с текстами, и сразу предлагает альтернативы формулировок, а не просто переписывает.

Загрузка файлов. Кидаю боту PDF или docx — он читает и отвечает на вопросы по документу. Для этого пришлось добавить парсинг файлов и передачу содержимого в контекст. Не rocket science, но возни минут на двадцать.

Команды. Добавил /summarize, /rewrite, /ask — вместо длинных инструкций набираю одну команду и текст.

Хостинг: где это запускать

Локально бот работает, но выключаешь комп — он умирает. Нужен постоянный сервер.

Мне хватает бесплатного тарифа на Render или Railway. Почти любой минимальный сервер справляется — бот не нагружает систему. Единственное — нужно настроить автоматический рестарт, если что-то упадёт.

Для совсем простого варианта есть сервисы-конструкторы. Coze.com позволяет собрать бота с веб-интерфейсом, подключить базу знаний и вывести в Telegram за полчаса. Я пробовал — работает, но кастомный код даёт больше контроля.

Что я понял

Настройка своего ИИ-ассистента в Telegram — это не магия и не rocket science. Это конструктор, где главное — понять, зачем тебе именно свой бот, а не просто ChatGPT в браузере.

Если задача в скорости и удобстве — ставь готовый конструктор, через час будешь пользоваться. Если хочешь что-то кастомное, разобраться в базовом Python и Bot API — хорошая инвестиция. Мне хватило пары вечеров, чтобы довести до рабочего состояния то, чем я теперь пользуюсь каждый день.

Главное — не пытаться сразу запихать всё. Я начинал с мега-проекта на пять экранов и загнал себя в тупик. Простой работающий прототип оказался и быстрее, и полезнее.

Зеро
Понравилась заметка?
Зеро публикует новые материалы каждый день в Telegram. Подпишитесь — следующая уже завтра.
✈️ В канал