На прошлой неделе мне написал знакомый: «Слушай, хочу своего чат-бота в Телеге. Чтоб отвечал как я, помнил контекст и не тупил». Я спросил — зачем? Он пожал плечами: «Просто хочу». Ну, подумал я, если хочет — помогу разобраться. За вечер собрали рабочий прототип. Делюсь тем, что узнал.
Зачем вообще заморачиваться
Телеграм стоит почти у каждого. Открыл чат, написал — получил ответ. Никаких отдельных приложений, никакой авторизации. Для личного ассистента это идеальный интерфейс.
Но давай честно: если ты просто хочешь поговорить с ChatGPT — ставь официальное приложение. А вот если тебе нужен бот, который знает твои проекты и контекст, умеет работать с твоими файлами и заметками, подключается к внешним сервисам вроде календаря или почты и отвечает не как безымянный ассистент, а как ты сам — тогда свой бот в Telegram это реально удобно. Не потому что это сложно. Просто это твоё пространство.
Что понадобится из инструментов
Я не буду перечислять двадцать фреймворков — упомяну то, с чем реально работал.
Для начала нужна языковая модель. Не обязательно самая мощная. Я использую API от OpenAI или Claude — и там, и там есть бесплатные стартовые лимиты. Для личного бота этого хватает за глаза.
Дальше — библиотека для бота. Если пишешь на Python, выбор между python-telegram-bot и aiogram. Я пользуюсь aiogram3 — он понятный и асинхронный из коробки. На Go тоже есть неплохие либы, но с питоном быстрее прототипировать.
И третье — хранилище контекста. Модель не помнит предыдущие сообщения между сессиями. Если хочешь, чтобы бот помнил, о чём вы говорили вчера, нужен способ сохранять историю. Проще всего — SQLite или просто файлы JSON. Для серьёзных проектов лучше векторная база, но это уже отдельная история.
Как это работает пошагово
Дальше практика. Покажу на примере aiogram3 и OpenAI API — минимальный набор, который запускается за вечер.
Шаг 1. Создай бота в Telegram. Пишешь @BotFather команду /newbot, задаёшь имя, получаешь токен. Токен сохраняй — он даёт доступ к управлению ботом.
Шаг 2. Настрой Python-проект. Ставишь pip install aiogram openai. Дальше базовый каркас:
from aiogram import Bot, Dispatcher
from aiogram.filters import Command
import openai
bot = Bot(token="ТВОЙ_ТОКЕН")
dp = Dispatcher()
openai.api_key = "ТВОЙ_OPENAI_KEY"
Шаг 3. Добавь обработчик сообщений. Бот получает сообщение, сохраняет его в историю, отправляет в API модели, получает ответ, отправляет пользователю. Выглядит примерно так:
@dp.message()
async def handle_message(message):
user_id = message.from_user.id
text = message.text
history = load_history(user_id)
history.append({"role": "user", "content": text})
response = openai.chat.completions.create(
model="gpt-4o-mini",
messages=history
)
answer = response.choices[0].message.content
history.append({"role": "assistant", "content": answer})
save_history(user_id, history)
await message.answer(answer)
Это упрощённый пример. В реальности добавляешь обработку ошибок, лимиты на длину, системный промпт — чтобы бот отвечал в нужном стиле.
Шаг 4. Системный промпт — это важно. Именно он определяет, как бот себя ведёт. Можно задать: «Ты персональный ассистент. Отвечай коротко, по делу, не злоупотребляй эмодзи. Если не знаешь — говори честно». Промпт загружается первым сообщением в историю и работает на всю сессию.
Что я понял за время экспериментов
Первая версия моего бота была глупой. Я напихал туда все функции подряд: переводчик, планировщик, поисковик. Получился уродец, который всё делал средне. Потом упростил. Оставил две вещи — контекстный ассистент и хранилище заметок. Стало намного лучше.
Ещё важный момент — стоимость. Один запрос к GPT-4o-mini стоит копейки при личном использовании. Но если запустить бота для друзей — расходы растут пропорционально. Имей это в виду.
И третья штука, которую недооценивают — приватность. Ты отправляешь сообщения на серверы OpenAI. Если это рабочие вещи — подумай, что именно ты туда отправляешь. Для личного использования норм, для корпоративной информации — уже нет.
Куда двигаться дальше
Если базовый бот заработал и тебе понравилось — есть куча улучшений. Можно подключить память на несколько дней, чтобы бот помнил контекст дольше. Можно научить его работать с файлами — загружаешь документ, бот анализирует и отвечает. Можно прикрутить инструменты: поиск в интернете, выполнение кода, отправку писем.
У меня сейчас бот умеет сохранять ссылки в читать-потом, искать в моих заметках и напоминать о задачах. Не мега-функционал, но каждый день пользуюсь. А это и есть настоящая ценность — не та, которая впечатляет на скриншоте, а та, которая просто работает и экономит твоё время.
Попробуй. Начни с простого — бот, который отвечает в твоём стиле. Посмотри, как оно зайдёт. А там уже решишь — оставить минимальным или допиливать дальше.
