Как создать Telegram-бота с помощью AI-агента

Как создать Telegram-бота с помощью AI-агента

Телеграм-бота, который отвечает языковой моделью в заданном вами стиле, сегодня собирают за вечер и без единой строчки кода, написанной руками. Код пишет AI-агент в редакторе, вы описываете поведение словами. Ниже вся цепочка целиком, от токена у BotFather до сервера, на котором бот работает круглосуточно и без вашего компьютера.

Что получится в итоге

Самый простой рабочий сетап выглядит так. Человек пишет боту в Telegram, сервер принимает сообщение, отправляет его в языковую модель вместе с вашей инструкцией и возвращает ответ обратно в чат. Бот держит характер, отвечает в вашем стиле и доступен всем, кому вы дали его адрес.

На этом каркасе делаются очень разные вещи. Бот-писатель, который переписывает черновики в вашей манере. Помощник, который отвечает на вопросы по вашим материалам. Собеседник с характером для канала или сообщества. Механика одна, отличается только инструкция внутри.

Путь одного сообщения
Путь одного сообщения

Что понадобится

Из чего собирается бот
Из чего собирается бот

Времени на первый заход уходит около трех-четырех часов, из них половина на аккаунты и оплату. Второй бот собирается за полчаса, потому что вся обвязка уже настроена.

Шаг 1. Среда с агентом в редакторе

Работа начинается с места, где появится код. Вам нужен редактор с AI-агентом внутри, который умеет создавать файлы, запускать команды и исправлять свои ошибки по тексту сообщения об ошибке.

Подходит любой инструмент этого класса. Claude Code в терминале, Cursor и Antigravity как отдельные редакторы, OpenCode и другие консольные агенты. Разница для нашей задачи почти нулевая, берите то, на что уже есть подписка.

Дальше создаете пустую папку под проект и открываете ее в редакторе. Все, что происходит потом, вы делаете разговором с агентом.

Заведите папку с понятным именем вроде telegram-bot в домашней директории. Агенты сбиваются, когда проект лежит в загрузках вперемешку с сотней файлов, и начинают предлагать переименования вместо работы.

Шаг 2. Токен бота у BotFather

Telegram выдает ботов через служебного бота BotFather. Находите его поиском по адресу @BotFather, проверяете галочку верификации и запускаете диалог.

  1. Команда /newbot начинает создание.
  2. Первым спрашивается имя. Это то, что видно в шапке чата, тут можно писать по-русски и менять потом.
  3. Вторым спрашивается адрес. Он обязан заканчиваться на bot, быть уникальным на весь Telegram и меняется потом только через удаление бота.
  4. В ответ приходит токен, длинная строка из цифр и букв. Это пароль от вашего бота, любой человек с этой строкой получает полный доступ к нему.

Пока вы в диалоге с BotFather, стоит сразу задать описание через /setdescription, короткий текст о боте через /setabouttext и аватарку через /setuserpic. Список команд для меню задается через /setcommands.

/newbot Alright, a new bot. How are we going to call it? Please choose a name for your bot. Мой редактор текстов Good. Now let's choose a username for your bot. It must end in bot. my_text_editor_bot Done! Use this token to access the HTTP API: 8123456789:AAF...

Токен сразу копируется в надежное место. В переписку, в заметки на общем компьютере и в код он не попадает никогда.

Шаг 3. Ключ языковой модели

Бот сам по себе умеет только принимать и отправлять сообщения. Думает за него модель, к которой код обращается по API, и для этого нужен ключ.

Путей два. Первый, взять ключ напрямую у провайдера модели в его панели разработчика. Второй, пойти через агрегатор вроде OpenRouter, где один ключ открывает доступ к моделям почти всех провайдеров сразу. Для первого бота второй путь удобнее по трем причинам. Модель меняется одной строкой в настройках, оплата идет в одном месте, и там есть бесплатные модели.

Бесплатные модели у OpenRouter помечены суффиксом :free в названии и работают при нулевом балансе. Ограничения на сентябрь 2026 такие. Около 20 запросов в минуту и порядка 50 запросов в сутки, пока вы ни разу не пополняли счет. После разового пополнения на 10 долларов суточный потолок поднимается примерно до тысячи запросов. Для личного бота и для проверки идеи этого хватает с большим запасом. Список бесплатных моделей регулярно меняется, поэтому смотреть его надо прямо в каталоге сервиса перед стартом.

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

Шаг 4. Техзадание агенту вместо написания кода

Дальше начинается та часть, ради которой все затевалось. Вы описываете бота словами, агент пишет код. Качество результата зависит от того, насколько подробно описано поведение, поэтому первое сообщение стоит собрать целиком.

Собери телеграм-бота на Python в этой папке. Что он делает: - принимает текстовое сообщение от пользователя - отправляет его в языковую модель через OpenRouter вместе с системной инструкцией - возвращает ответ в тот же чат Требования: - библиотека для Telegram на твое усмотрение, пиши на той, что стабильно работает сейчас - два секрета читаются из переменных окружения: BOT_TOKEN и OPENROUTER_API_KEY - системная инструкция лежит в отдельном файле prompt.md и читается при старте, чтобы менять ее без правки кода - модель задается переменной MODEL со значением по умолчанию из бесплатных - бот показывает статус печатает, пока ждет ответ модели - ответ длиннее 4000 символов режется на несколько сообщений - команда /start отвечает коротким приветствием - любая ошибка пишется в лог и превращается в понятное сообщение пользователю, процесс при этом не падает Что сделать помимо кода: - requirements.txt со всеми зависимостями - .env.example с именами переменных без значений - .gitignore, куда входит .env - README.md с инструкцией запуска для человека, который видит проект впервые Сначала покажи план файлов и жди подтверждения.

Последняя строка экономит больше всего времени. План файлов на десять строк читается за минуту, готовый проект на триста строк уже нет.

Дальше агент создает файлы, ставит зависимости и предлагает запустить бота локально. На этом этапе бот уже отвечает в Telegram, пока запущен ваш компьютер. Все правки поведения делаются одной фразой вроде добавь команду /reset, которая очищает историю разговора.

Память разговора

По умолчанию такой бот отвечает на каждое сообщение с чистого листа и не помнит, о чем шла речь минуту назад. Лечится одной строкой в задании. Попросите агента хранить последние 10-20 сообщений диалога по каждому пользователю и отправлять их в модель вместе с новым вопросом. Хранение в памяти процесса подходит для старта, при перезапуске бота история обнулится. Когда бот дорастет до постоянных пользователей, туда добавляется база данных, и это тоже задача на один запрос агенту.

Чем длиннее история, тем дороже каждый следующий ответ. В модель уходит весь накопленный диалог, и счет считается по всей переписке. Двадцать сообщений это разумный потолок для болтающего бота.

Шаг 5. Секреты и минимальная безопасность

Два ключа, токен бота и ключ модели, это деньги и доступ. Правила обращения с ними простые и нарушаются примерно всеми, кто делает первого бота.

  • В коде ключей нет никогда. Они лежат в файле .env рядом с проектом и читаются оттуда при старте.
  • Файл .env попадает в .gitignore до первого коммита. Ключ, однажды уехавший в репозиторий, остается в истории даже после удаления из файла.
  • На сервере ключи задаются переменными окружения в панели проекта, файл туда не загружается.
  • В общий чат и в переписку с поддержкой ключи не отправляются. Скриншот терминала с видимым токеном это то же самое.
  • Утечка лечится отзывом. Токен бота перевыпускается у BotFather командой /revoke, ключ модели удаляется в панели провайдера, оба заменяются на новые за минуту.
BOT_TOKEN=8123456789:AAF... OPENROUTER_API_KEY=sk-or-v1-... MODEL=провайдер/модель:free

Рядом кладется .env.example с теми же именами и пустыми значениями. Он уезжает в репозиторий и служит подсказкой, что именно надо заполнить.

Второй слой безопасности касается денег. Публичный бот с ключом внутри означает, что за каждое сообщение любого человека платите вы. Пока бот личный, ограничьте доступ списком разрешенных Telegram ID и попросите агента добавить счетчик сообщений на пользователя в сутки. Обе защиты пишутся за пять минут и снимаются, когда вы решите открыть бота публично.

Шаг 6. GitHub как мостик между кодом и сервером

GitHub тут решает две задачи сразу. Он хранит историю изменений, поэтому сломанную правку можно откатить одной командой. И он служит мостом до сервера. Хостинг забирает код прямо из репозитория, а каждый следующий пуш автоматически обновляет бота в бою.

Руками ничего делать не нужно, все делается тем же разговором. Заводите аккаунт на GitHub, создаете пустой приватный репозиторий и просите агента отправить туда проект.

> Проверь, что .env в .gitignore, инициализируй git, сделай первый коммит и запушь в этот репозиторий: https://github.com/username/telegram-bot > После каждой рабочей правки делай коммит с понятным сообщением и пуш, без отдельного напоминания

Вторая просьба превращает агента в человека, который ведет историю проекта за вас. Дальше остается только смотреть на список коммитов.

Приватный репозиторий выбирается по умолчанию. Открытым код бота делают осознанно и после проверки, что в истории коммитов нет ни одного ключа.

Шаг 7. Сервер, на котором бот живет круглосуточно

Пока бот запущен на вашем компьютере, он работает ровно до закрытия крышки ноутбука. Чтобы отвечать всегда, коду нужен сервер.

Для первого бота проще всего Railway. Это хостинг, который берет репозиторий с GitHub, сам определяет язык проекта, ставит зависимости и запускает процесс. Настроек минимум, инфраструктурой заниматься не приходится.

  1. Регистрируетесь через GitHub, чтобы репозитории подтянулись сразу.
  2. Создаете новый проект и выбираете деплой из репозитория с ботом.
  3. В разделе переменных задаете BOT_TOKEN, OPENROUTER_API_KEY и MODEL теми же значениями, что лежат в вашем локальном .env.
  4. Дожидаетесь сборки и открываете логи. Строка о том, что бот запущен, означает готовность.
  5. Пишете боту в Telegram и проверяете ответ.

Дальше сервис живет сам. Каждый пуш в основную ветку репозитория пересобирает проект и перезапускает бота, отдельного действия для обновления не требуется.

Сколько это стоит

Новый аккаунт получает разовый пробный кредит в 5 долларов со сроком 30 дней, этого достаточно, чтобы проверить всю связку. Дальше тариф Hobby стоит 5 долларов в месяц, и в него уже включены 5 долларов ресурсов. Простой текстовый бот потребляет заметно меньше, поэтому месячный счет остается в этих пяти долларах даже с парой ботов.

Railway удобен, пока проект один. Когда рядом появляются другие сервисы, базы и вторая пачка ботов, дешевле выходит обычный VPS за те же деньги, где вы управляете всем сами. Российские облака вроде Timeweb Cloud и Amvera подходят тоже, у них проще оплата и есть готовые шаблоны под ботов.

После деплоя выключите бота на своем компьютере. Telegram отдает сообщения только одному соединению, и два одновременно запущенных экземпляра начинают перехватывать обновления друг у друга. Симптом узнаваемый. Ответы приходят через раз, а в логах висит ошибка про конфликт.

Шаг 8. Характер бота в файле с инструкцией

Технически бот готов. Осталось то, ради чего его вообще делали, потому что модель по умолчанию отвечает как справочник. Все поведение задается системной инструкцией, которую мы вынесли в отдельный файл prompt.md на четвертом шаге.

# Роль Ты редактор текстов. Пользователь присылает черновик, ты возвращаешь переписанный вариант. # Как пишешь - короткие предложения, одна мысль в каждом - глаголы вместо отглагольных существительных - никаких вводных оборотов и канцелярита - обращение на вы - без смайликов и без восклицательных знаков # Формат ответа 1. Переписанный текст 2. Строка о том, что именно поменялось, до 15 слов # Границы - факты и цифры из черновика не меняешь и не добавляешь - если прислали вопрос вместо текста, коротко просишь прислать черновик - в спор о вкусах не вступаешь, даешь свой вариант

Характер бота живет в одном текстовом файле. Роль отвечает за то, что бот делает, стиль за то, как он звучит, границы за то, чего он не делает никогда.

Дальше инструкция дорабатывается по живым ответам. Хороший цикл выглядит так. Пишете боту десяток типичных сообщений, находите места, где ответ вас не устраивает, и добавляете правило именно про этот случай. Через две-три итерации бот начинает попадать в тон.

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

Что навешивается на этот каркас дальше

Первый бот обычно живет неделю в текстовом виде, после чего хочется большего. Все следующее добавляется тем же способом, одной просьбой к агенту.

  • Кнопки и команды. Меню режимов вроде переписать, сократить, перевести вместо угадывания намерения по тексту.
  • Голосовые сообщения. Бот принимает голос, расшифровывает его и работает с текстом. Удобнее всего для заметок на ходу.
  • Файлы и картинки. Прием документа с разбором содержимого, если модель это умеет.
  • Работа по вашим материалам. Бот отвечает по вашей базе знаний.
  • Подключение сервисов. Календарь, таблицы и почта через протокол MCP.
  • Задачи по расписанию. Утренний дайджест или напоминание, которое бот присылает сам.

Грабли, на которые наступают все

Частые проблемы и что с ними делать
Частые проблемы и что с ними делать

Отдельно про диагностику. Почти любая проблема видна в логах хостинга, и разбираться в них самому не нужно. Копируете текст ошибки, отдаете агенту и просите починить. Это тот же цикл, в котором писался код.

Что запомнить

  • Связка простого бота состоит из пяти частей. Агент в редакторе, токен у BotFather, ключ модели, репозиторий на GitHub, сервер.
  • Код пишет агент по вашему техзаданию. Полезнее всего в задании просьба сначала показать план файлов и дождаться подтверждения.
  • Ключ модели удобно брать через агрегатор вроде OpenRouter. Один ключ открывает все модели, среди них есть бесплатные с лимитом около 50 запросов в сутки.
  • Секреты живут в .env на компьютере и в переменных окружения на сервере. Файл .env попадает в .gitignore до первого коммита.
  • GitHub служит мостом до сервера. Каждый пуш пересобирает бота в бою, откат сломанной правки делается одной командой.
  • Railway поднимает бота из репозитория за несколько минут и стоит около 5 долларов в месяц. Для нескольких проектов дешевле обычный VPS.
  • Характер бота лежит в отдельном файле с инструкцией и правится без единой строчки кода.
  • После деплоя локальный бот выключается, иначе два экземпляра начинают перехватывать сообщения друг у друга.
  • История диалога тратит деньги на каждом ответе, поэтому у нее должен быть потолок и лимит сообщений на пользователя.
  • Программировать для всего этого не требуется. Достаточно понимать, где лежат ключи, что такое переменная окружения и как читать логи.

Бот это первый проект, на котором собирается общий навык. Описать задачу словами, отдать ее агенту, положить код в репозиторий и поднять на сервере. Дальше по этой же схеме делаются рабочие инструменты под ваши процессы, а телеграм тут просто самый удобный вход.

Сервисы и модели меняются каждые несколько месяцев, поэтому рабочие связки и находки я выкладываю в канале по ходу дела.

5
2
1