- BrainTools - https://www.braintools.ru -

Claude пишет — бот работает: полный цикл создания Telegram-бота

В последние годы разработка ускорилась так, что старые подходы уже не успевают за новыми реалиями. Но дело не в новых языках или фреймворках. Появился другой рабочий сценарий — когда разработчик перекладывает часть рутины на нейросеть и ведёт её через обычный диалог. Это и называют вайбкодингом.

Звучит как модный термин, но по факту всё просто: вы меньше печатаете, больше управляете. Ставите задачу, задаёте границы, проверяете результат. И да, промптинг здесь — не магия, а обычная инструкция для модели.

Claude пишет — бот работает: полный цикл создания Telegram-бота - 1

Сегодня на практике посмотрим, как это работает. Создадим Telegram-бота-ассистента через вайбкодинг с Claude. Бот будет отвечать на вопросы, переформулировать текст и делать краткие саммари. А потом задеплоим его на сервер.

Шаг 1. Создаём бота через BotFather

Первым делом заходим в Telegram. В строке поиска вводим @BotFather — это официальный бот от самой Telegram, который выдает токены для новых ботов. Выглядит он как синяя галочка и ник, заканчивающийся на bot.

Нажимаем /start или просто отправляем команду /newbot. BotFather спросит: “Alright, a new bot. How are we going to call it? Please choose a name for your bot.”

Имя — это то, как бот будет отображаться в вашем списке контактов и диалогах. Оно может быть любым, на русском или английском, с пробелами и эмодзи. Например: Личный ассистент или Student Helper Bot.

Отправили имя. Дальше BotFather попросит username — уникальный короткий адрес, по которому бота можно будет найти. Тут строгие правила:

  • Только латиница и цифры (без пробелов и спецсимволов)

  • Обязательно заканчивается на bot

  • Длина — минимум 5 символов

  • Например: your_awesome_assistant_bot или study_helper_bot

Если username уже занят, BotFather выдаст ошибку [1] — придётся придумать другой, чуть длиннее или с цифрами.

бывает

бывает

Когда username успешно принят, BotFather поздравляет и показывает токен. Это длинная строка вида:

7234567890:AAFjdhfghjkldfghjkl_edQhiuFjks

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

Сохраните токен в надёжное место. Лучше всего — в отдельный файл .env, который Git будет игнорировать (через .gitignore). Пример содержимого .env:

BOT_TOKEN=7234567890:AAFjdhfghjkldfghjkl_edQhiuFjks

Помимо токена, BotFather предлагает ещё несколько настроек:

  • /setdescription — краткое описание бота (показывается в профиле)

  • /setuserpic — аватарка бота

  • /setcommands — список команд с подсказками, которые будут выпадать при вводе / в чате с ботом (очень удобно для пользователей)

Теперь у нас есть токен, username. Переходим к следующему шагу — вайбкодим логику [2] через Claude.

Откуда брать идеи для промптов

И тут многие спотыкаются. Токен есть, желание есть, а с чего начать — непонятно. Как объяснить Claude, что именно писать? Какие команды сделать? Какую логику закладывать?

Можно полчаса сидеть, формулировать, переписывать, снова стирать. А можно поступить проще.

Я создал бесплатного Telegram‑бота [3], который объединяет сразу несколько моделей — ChatGPT, Gemini, Grok и DeepSeek. И я, когда пишу промпты для Claude, часто сначала прогоняю идею через этот бот. Просто описываю, чего хочу добиться, а он помогает структурировать задачу, подсказывает архитектуру, набрасывает черновик промпта.

Сам бот: https://t.me/ChatGPTAIAssistantBot [3]

А теперь — к делу. Промпт готов, идём в Claude.

Шаг 2. Вайбкодим бота через Claude

Теперь самое интересное. Идём в Claude [4] или любого другого ИИ-ассистента, который умеет писать код — подойдёт также ChatGPT, DeepSeek или GitHub Copilot. Но для примера возьмём Claude.

Первый промпт. Не пытаемся сделать идеально с первого раза. Просто даём понятное описание того, что хотим получить:

Напиши мне телеграм-бота на Python с библиотекой aiogram, html теги, бд sqlite, logging всех сообщений. Бот должен работать как ИИ-ассистент через OpenRouter API key.

Что нужно:

  1. Бот получает API-ключ OpenRouter из переменной окружения OPENROUTER_API_KEY.

  2. На любое текстовое сообщение от пользователя бот отправляет запрос к OpenRouter API и возвращает ответ от ИИ-модели.

  3. Используй топ-5 бесплатных моделей OpenRouter в качестве fallback. Если одна модель недоступна или выдаёт ошибку — автоматически переключайся на следующую по списку. Список моделей:

    • google/gemini-2.0-flash-exp:free

    • anthropic/claude-3.5-haiku-20241022:free

    • mistralai/mistral-7b-instruct:free

    • meta-llama/llama-3.2-3b-instruct:free

    • qwen/qwen-2.5-7b-instruct:free

  4. Если все модели недоступны — бот отвечает: “Все модели временно недоступны, попробуйте позже”.

  5. Добавь обработку ошибок, таймауты (30 секунд), логирование в консоль.

  6. Сделай базовую структуру: main.py [5] с хендлерами команд (/start, /help) и обработчиком текстовых сообщений. Добавь requirements.txt. Код прокомментируй на русском.

диалог с клауди

диалог с клауди

Claude сгенерирует код с логикой работы через OpenRouter, циклическим перебором моделей и обработкой ошибок.

Смотрим код. Проверяем, что всё правильно: есть команда /start, есть /help, есть асинхронная функция для запросов к OpenRouter, которая перебирает модели по очереди.

Вот тут и начинается вайбкодинг. Смотрим, что можно улучшить (пример, сами вы можете написать другие улучшения):

Хорошо, код рабочий. Но добавь ещё пару моментов. Во-первых, сделай так, чтобы в каждом запросе к OpenRouter передавался параметр “temperature”: 0.7 для более креативных ответов. Во-вторых, добавь ограничение на длину истории диалога — храни последние 5 сообщений, чтобы не перегружать контекст. В-третьих, сделай команду /models — чтобы бот показывал, какие модели доступны в его ротации.

Claude поправит код. Теперь бот помнит контекст диалога, умеет показывать список моделей и отвечает чуточку интереснее за счёт температуры.

Тестируем локально. Сохраняем файлы в папку проекта. Назовём её, например, tg_assistant_bot. Главный файл — main.py [5]. Рядом создаём .env с токеном Telegram и API-ключом OpenRouter:

BOT_TOKEN=7234567890:AAFjdhfghjkldfghjkl_edQhiuFjks
OPENROUTER_API_KEY=sk-or-v1-...

Как получить ключ OpenRouter? Идёте на openrouter.ai [6], регистрируетесь, заходите в раздел Keys, создаёте новый ключ — он бесплатный для работы с бесплатными моделями.

И requirements.txt:

aiogram>=3.0.0
python-dotenv>=1.0.0
httpx>=0.24.0

Запускаем локально: python3 main.py. Открываем Telegram, пишем боту “Привет, как дела?”. Бот отправляет запрос к первой модели из списка (Gemini) и возвращает ответ. Если Gemini недоступен — переключается на Claude, потом на Mistral, и так по списку.

Проверяем команду /models — бот показывает пять моделей в порядке приоритета.

Всё работает. Бот использует бесплатные модели OpenRouter, ротация даёт отказоустойчивость — даже если одна модель временно недоступна, остальные подхватят.

Код готов, бот работает. Теперь его нужно положить на сервер, чтобы он отвечал 24/7, даже когда компьютер выключен.

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

Поэтому я сделал бесплатного телеграм‑бота [7], который генерирует ботов под ключ. Одна идея — один запрос — готовый код. Без лишних разговоров.

Сам бот: https://t.me/GenerateYourAIBot [7]

а теперь к деплою

Шаг 3. Деплой проекта в продакшен

Деплоить мы будем через сервис Timeweb Cloud [8]. Вкратце — это российская облачная платформа для бизнеса, стартапов и разработчиков. Она предоставляет комплекс инструментов для создания и масштабирования IT-инфраструктуры: от тестовых сред до высоконагруженных проектов. 

Пошаговая инструкция по созданию сервера:

1. Во-первых вам нужно пройти регистрацию на сервисе Timeweb.

2. Далее заходите во вкладку “облачные серверы”. Здесь у нас есть большой спектр различные ОС. Мы выбираем Ubuntu 24.04.

Claude пишет — бот работает: полный цикл создания Telegram-бота - 4

3. Далее выбираем любой зарубежный регион, либо же российские сервер.

Зачем нам нужен зарубежный регион? Могут задаться вопросом некоторые читатели. Если ваш бот использует внешние API, например Groq, ChatGPT, которые заблокирован в России, то всегда выбирайте сервер за пределами России. Если ваш бот не использует API никаких ИИ и работает по скрипту, берите российский регион.

Все возможные сервера в Timeweb

Все возможные сервера в Timeweb

4. Далее у нас идёт конфигурация. Это очень важный, но простой раздел. Поскольку у вас пока только один бот, смело выбирайте минимальную конфигурацию — ваш бот не потребляет много трафика и будет использовать примерно ~6–10% ресурсов процессора. Это удобно и экономно, особенно на старте.

Сервер у меня на Нидерландах

Сервер у меня на Нидерландах

5.  Далее у нас идет сеть здесь мы все сохраняем и переходим к следующему пункту:

6. Далее у нас идёт блок про бекапы.

Бекапы — это резервные копии вашего проекта. Они нужны для того, чтобы не потерять данные и код, если что-то пойдёт не так:

  • сервер сломался или завис

  • база данных SQLite испортилась

  • случайно удалили файлы или внесли ошибку в код

📌 С бекапами вы всегда можете восстановить рабочую версию и продолжить работу без потерь.

Проще говоря: бекапы — это страховка вашего проекта, которая спасает время и нервы. Здесь выбирайте нас свое усмотрение (советую выбрать).

Наши любые бэкапы

Наши любимые бэкапы

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

После оплаты у нас должен загрузиться наш сервис примерно (30–60 секунд). 

Инструкция по хостингу самого бота

1. Подключение к серверу

Заходите на ваш сервис, копируйте ваш пароль (он будет справа) и заходите в консоль вашего сервера:

  1. Enter

  2. Вводите логин root

  3. Через Ctrl + Shift + V вставляйте ваш root-пароль

  4. Далее вы увидите приветственное сообщение

2. Установка зависимостей

Теперь нам требуется установить системные зависимости и рантаймы:

sudo apt update 
sudo apt upgrade
sudo apt install python3 python3-pip -y
sudo apt install nodejs npm -y
npm install pm2 -g   

📌 Важно:

  • если появляется (Y/N) → всегда нажимайте Y

  • если консоль зависла → введите clear

3. Перенос проекта на сервер

Далее нам нужно перенести нашу папку с файлами на сервак. Есть два варианта, как можно сделать: через GitHub либо же через FileZilla, сделаем мы это через второй вариант.

Установить FileZilla можно по ссылке: https://filezilla-project.org/ [9]

4. Подключение

После того как мы установили и зашли, нам нужно внести наши данные:

  1. хост (IPv4)

  2. имя пользователя – root

  3. пароль – root-пароль

  4. порт – 22

Пароль и хост можно взять в дашборде на Timeweb.

Claude пишет — бот работает: полный цикл создания Telegram-бота - 8

5. Перенос файлов

После того как мы внесли наши данные, перенесите папку с проектом в FileZill’y. 

Claude пишет — бот работает: полный цикл создания Telegram-бота - 9

Здесь generator – мой проект.

6. Переход в папку проекта

Далее переходим в консоль Timeweb и переходим в нашу папку, выполняя команду:

cd /root/название_папки 

Чтобы проверить, какие файлы у нас есть в папке, введите команду:

ls 

7. Виртуальное окружение

Далее устанавливаем виртуальное окружение командами:

apt install python3-venv -y
cd ~/название_папки
python3 -m venv venv
source venv/bin/activate 

Скачивайте строго по одному.

8. Установка зависимостей

И под конец устанавливаем зависимости, ваши зависимости записаны в requirements:

pip install aiogram python-dotenv httpx

Возможные другие зависимости. НО в большинстве случаев они такие.

9. Запуск бота

Запускаем файл:

pm2 start main.py 
Claude пишет — бот работает: полный цикл создания Telegram-бота - 10

Дополнительные полезные команды:

1. Чтобы посмотреть версию python, выполните команду:

python --version 

2. Чтобы посмотреть логи вашего проекта, введите команду:

pm2 logs

3. Чтобы перезапустить проект, выполните команду:

pm2 restart main.py                  Объяснить с

 Где, main.py – ваш главный файл для запуска.

Что делать, если мне нужно поменять механику в моем файле?

Иногда вам нужно изменить логику бота: добавить функцию, исправить баг, выпустить апргейд или улучшить поведение [10].

Разберём, как это сделать правильно.

Инструкция 

1. Подключение к серверу

Переходим в FileZilla и подключаемся к нашему серверу, как мы это делали в пункте 4 (Подключение). Теперь нам уже не нужно переносить файлы, они уже там. 

2. Открытие файла

Как только вошли, нажимаем дважды на нашу папку и потом правой кнопкой мыши на сам файл, который мы хотим подредактировать. У вас должно получится вот так:

Claude пишет — бот работает: полный цикл создания Telegram-бота - 11

3. Редактирование

Нажимаем на «Просмотр/Правка» и далее выбираем наш IDE.

4. Сохранение изменений

После того как что-то поправили, мы сохраняем изменения Ctrl + S и переходим в FileZilla, нам высветится сообщение об изменении → Нажимаем «Да».

5. Перезапуск бота

Переходим в консоль Timeweb и перезапускаем бота командой:

pm2 restart main.py  

Готово! 

Чек-лист

  1. Внёс изменения

  2. Сохранил файл

  3. Перезапустил бота

  4. Проверил результат

Если вы не перезапустили бота, ничего не сохранится! 

Итог

Мы прошли полный цикл. Создали бота через BotFather, навайбкодили его логику через Claude с подключением к OpenRouter, задеплоили на сервер в Timeweb Cloud.

Что важно вынести из этого всего.

Вайбкодинг — не магия. Это просто другой способ работать. Вы не пишете код руками строка за строкой, а управляете моделью через диалог: ставите задачу, уточняете, правите. Главное — понимать, что вы хотите получить, и уметь проверять результат. Если этого нет, никакой ИИ не спасёт.

Итерации важнее идеального промпта с первого раза. Спросили, посмотрели, уточнили, поправили. Диалог, а не монолог.

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

Если на каком-то этапе было непонятно или что-то пошло не так — перечитывайте логи, уточняйте промпты, пробуйте снова

Автор: Andrey_Popov30

Источник [11]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/29683

URLs in this post:

[1] ошибку: http://www.braintools.ru/article/4192

[2] логику: http://www.braintools.ru/article/7640

[3] Telegram‑бота: https://t.me/ChatGPTAIAssistantBot

[4] Claude: https://claude.ai/new

[5] main.py: http://main.py

[6] openrouter.ai: http://openrouter.ai

[7] телеграм‑бота: https://t.me/GenerateYourAIBot

[8] Timeweb Cloud: https://timeweb.cloud/

[9] https://filezilla-project.org/: https://filezilla-project.org/

[10] поведение: http://www.braintools.ru/article/9372

[11] Источник: https://habr.com/ru/articles/1030378/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1030378

www.BrainTools.ru

Rambler's Top100