Делюсь этим с удовольствием. Ниже пошаговая инструкция: шесть шагов, к каждому готовый промпт. Копируй их, описывай свою работу и собирай похожую вещь для автосервиса, салона, клиники или магазина, как таблицы прайсов для бригады. Тебе не понадобится писать код.
А началось всё с повторяющихся вопросов про одну и ту же цену.
В шиномонтаже заказ состоит не из одной кнопки. Нужно понять размер колеса, выбрать пакет работ, отдельно учесть балансировку, датчики, хранение и другие операции. В сезон заказов становится больше, клиент торопится, а я в это время принимаю следующую машину.
Раньше прайс жил в файле и переписке. Я открывал его, искал нужную строку, объяснял, что входит в пакет, а что считается отдельно. Если клиент называл другой размер колеса или добавлял балансировку, приходилось пересчитывать всё заново.
Самое неприятное здесь не сложность расчёта. Прайс просто устроен так, что одна ошибка в объяснении меняет ожидания клиента. Пакетная услуга включает только заранее перечисленные работы. Балансировка, датчики и хранение добавляются отдельно.
Поэтому я собрал небольшую вещь: Telegram-бот читает цены из таблицы, показывает разделы шиномонтажа и принимает запрос на расчёт. Прайс теперь меняется в одном месте. Я перестал держать в голове, какая сумма относится к какому размеру колеса.
Как прайс в Telegram убрал повторные объяснения цены клиенту?
В сезон особенно заметно, зачем это понадобилось. Машины приезжают одна за другой. Один клиент спрашивает про сезонную смену, другой сразу добавляет балансировку, третий интересуется хранением. Пока отвечаешь одному, уже нужно принимать следующую машину.
В боте меню выглядит проще, чем мой старый файл:
- сезонная смена;
- пакеты работ;
- балансировка;
- датчики;
- хранение;
- рассчитать стоимость.
Клиент сам открывает нужный раздел. Я не пересылаю ему старую фотографию прайса и не объясняю, почему в одном сообщении указана базовая работа, а в другом сумма с допуслугами.
Это не заменяет разговор во всех случаях. Если нужна сложная проверка или нестандартная работа, бот оставляет запрос на расчёт. Но для обычных вопросов он закрывает первую часть общения.
Главное изменение для меня простое: я перестал называть цену на глаз, когда меняется размер колеса или добавляется операция. Пакет остаётся пакетом, а отдельные работы видны отдельными строками.
Почему свой прайс удобнее готового сервиса?
Запрос «прайс лист онлайн» обычно означает не красивую страницу, а понятный способ быстро показать стоимость. Для шиномонтажа это особенно важно: клиенту нужна цена по размеру колеса и составу операции, а не длинный каталог с десятками ненужных полей.
В готовом сервисе уже есть меню и кнопки. Это плюс. Не нужно собирать базовую механику. Но услуга может быть устроена не так, как у тебя. Например, в тарифе есть пакет, а отдельно добавить хранение нельзя или оно прячется в другом сценарии.
В своей сборке я не зашивал прайс в меню. Если появляется новая сезонная услуга, я добавляю строку в таблицу. Если меняется цена, меняю ячейку. Кнопки и логика остаются прежними.
Так же можно добавить балансировку, датчики или хранение. Важно только не смешивать их с пакетом. Если клиент выбирает пакет работ, бот показывает состав пакета. Если нажимает отдельную операцию, она прибавляется отдельно.
У готового сервиса есть другое преимущество: поддержка и инфраструктура уже собраны. При самостоятельной сборке за ними приходится следить самому. Поэтому я не считаю свой вариант универсально лучшим. Он удобен, когда прайс меняется по своим правилам и хочется быстро подстроить инструмент под свою рутину.
Практикум здесь связан напрямую: на нём такие вещи собирают руками на собственной задаче, а не изучают абстрактные команды. Если хочешь пройти этот путь с сопровождением, ссылка на практикум:
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК
Из чего состоит прайс в Telegram-боте?

Схема выглядит так:
Клиент
↓
Telegram-бот
↓
Webhook
↓
Google Apps Script
↓
Google Таблица
↓
Ответ в TelegramTelegram здесь только интерфейс. Он показывает кнопки и принимает нажатия. Источник актуальной цены находится в таблице.
Google Таблица может содержать лист Прайс с такими колонками:
Раздел | Код услуги | Услуга | Размер колеса | Цена | Единица | Входит в пакет | АктивнаПример строки:
Сезонная смена | seasonal_17 | Сезонная смена колёс | R17 | 2400 | комплект | да | даApps Script получает сообщение от Telegram через doPost, разбирает нажатую кнопку и обращается к нужному диапазону. Для кнопки «Балансировка» используется один идентификатор, для «Хранение» другой. Скрипт не ищет цену по случайному номеру строки, а смотрит на раздел или код услуги.
Когда в веб-приложение приходит HTTP POST-запрос, Apps Script направляет его в функцию doPost, которая возвращает ответ (Веб-приложения Apps Script).
- Google for Developers, Веб-приложения Apps Script
Webhook нужен, чтобы Telegram отправлял обновления на HTTPS-адрес опубликованного Apps Script. После чтения таблицы скрипт вызывает sendMessage и возвращает клиенту ответ.
Я отдельно держу лист Заявки. Туда попадают запросы на расчёт: дата, время, выбранный размер колеса, пакет, допуслуги, имя и контакт клиента. Прайс и заявки не смешиваются.
Сколько стоит собрать прайс и что поставить?
Сначала поставь VS Code. Это редактор, в котором видна папка проекта и файлы. Писать программу руками не придётся.
Второй инструмент - Claude Code. Он встраивается в редактор и работает внутри проекта. Ты описываешь задачу обычными словами, а помощник создаёт файлы, меняет их и объясняет результат. Инструменты ставятся один раз. Потом можно собирать другую автоматизацию, меняя только описание задачи.
Для Claude Pro официально указана цена $20 в месяц или $200 в год. В тариф входит Claude Code. Это не цена в рублях для России: Россия отсутствует в списке поддерживаемых стран Anthropic, а официальной российской цены и штатной оплаты российской картой нет.
Бесплатный Claude стоит $0 в месяц. Но бесплатный доступ работает по сессионному лимиту, который сбрасывается каждые пять часов, а число сообщений зависит от текущей нагрузки. Для знакомства этого может хватить. Для последовательной сборки автоматизации лимит будет плавающим.
При активной работе возможны дополнительные usage credits после исчерпания лимита тарифа. Поэтому $20 в месяц лучше считать базовой стоимостью, а не обещанием, что расходы никогда не вырастут.
Я поставил инструменты, вошёл в аккаунт и дальше почти не возвращался к установке. Технические шаги помощник объяснял по очереди. Если потребуется дополнительная программа, он должен сказать об этом прямо, а не считать её установленной.
Через @BotFather создай бота командой /newbot. В ответ Telegram выдаст токен. Это пароль от бота. Не вставляй его в открытый код, таблицу или сообщение подрядчику.
Как создать прайс-лист из таблицы и подключить его к Telegram-боту?

Подготовь лист с ценами.
Создай Google Таблицу с листами
ПрайсиЗаявки. ВПрайсдобавь строки для сезонной смены, пакетов работ, балансировки, датчиков и хранения.Подготовить структуру прайсаУ меня шиномонтаж. Подготовь структуру Google Таблицы для Telegram-бота. Нужны листы «Прайс» и «Заявки». В листе «Прайс» должны быть колонки: раздел, уникальный код услуги, название услуги, размер колеса, описание, цена, единица измерения, входит ли услуга в пакет, активна ли строка. Добавь примеры для сезонной смены, пакета работ, балансировки, датчиков и хранения. Пакетные работы и отдельные допуслуги не смешивай. В листе «Заявки» сделай колонки: дата, время, chat_id, имя, телефон, размер колеса, пакет, выбранные допуслуги, комментарий, статус. Объясни структуру простыми словами.
Помощник выдаст таблицу полей и тестовые строки. Проверь, что балансировка, датчики и хранение не помечены частью пакета, если ты продаёшь их отдельно.
Создай Telegram-бота.
Открой @BotFather, отправь
/newbot, задай имя и username. Полученный токен сохрани отдельно, не в открытой ячейке.Правила хранения секретаСоздай в проекте файл README.md с правилами безопасности. Запиши, что TELEGRAM_TOKEN, SPREADSHEET_ID и WEBHOOK_SECRET нельзя хранить в открытом коде, пересылать в чатах и вставлять в клиентские сообщения. Объясни, что эти значения нужно хранить в свойствах проекта Apps Script. Не вставляй в файл настоящие токены и секреты.
В файле появится памятка. Сам токен добавь в свойства проекта позже, когда помощник покажет нужное место.
Опиши общую схему помощнику.
Открой папку проекта в VS Code и попроси сначала разобрать задачу, а не сразу писать всё целиком.
Разобрать прайс-бота до сборкиУ меня шиномонтаж. Клиент должен открыть Telegram-бота, выбрать раздел прайса, размер колеса, пакет работ и отдельные допуслуги. В разделах есть сезонная смена, пакеты работ, балансировка, датчики и хранение. Цены лежат в Google Таблице и должны читаться оттуда при запросе. После выбора клиент может нажать «Запросить расчёт», а данные должны записаться в лист «Заявки». Хочу использовать Google Apps Script и webhook Telegram. Пока не пиши весь код. Разбери архитектуру простыми словами, перечисли файлы, настройки и порядок сборки. Отдельно укажи, где хранить токен бота, ID таблицы и секрет webhook.
В ответ появится план проекта. Если помощник предлагает зашить цены в код, останови его. Источник цены должен оставаться в Google Таблице.
Подключи таблицу и webhook.
Создай проект Apps Script из Google Таблицы. Дай ему доступ к таблице, опубликуй как веб-приложение с запуском от имени владельца и получи HTTPS-адрес.
Подключить Google Таблицу и TelegramСобери Apps Script для Telegram-бота. Скрипт должен принимать POST-запрос webhook, читать JSON обновления Telegram, определять нажатую кнопку и обращаться к листу «Прайс» в Google Таблице. Токен Telegram, ID таблицы и секрет webhook бери из Script Properties с ключами TELEGRAM_TOKEN, SPREADSHEET_ID и WEBHOOK_SECRET. Не вставляй секреты в код. Сделай отдельную функцию проверки соединения с таблицей и отдельную функцию обработки входящего сообщения. Перед изменениями перечисли файлы и функции, которые меняешь.
Помощник подготовит функции
doPost, чтение свойств и обращение к таблице. После публикации webhook проверь отдельно: один запрос должен давать один ответ.Добавь меню и расчёт.
Теперь нужны кнопки разделов, размер колеса, пакет и допуслуги.
Добавить меню прайса и сценарий расчётаДобавь в Telegram-бот меню с кнопками: «Сезонная смена», «Пакеты работ», «Балансировка», «Датчики», «Хранение», «Запросить расчёт». После выбора сезонной смены или пакета покажи кнопки размеров колеса: R13, R14, R15, R16, R17, R18 и R19. Читай цены из листа «Прайс», а не из текста программы. Для пакета сначала покажи, что в него входит, затем предложи отдельные кнопки балансировки, датчиков и хранения. При нажатии «Запросить расчёт» спроси имя, телефон, размер колеса, пакет и допуслуги, затем запиши заявку в лист «Заявки». Сделай защиту от повторной записи одной и той же заявки. Ответы должны быть короткими и понятными.
После первого результата помощника клиент уже видит рабочее меню и цены. Так собирают программы без программиста, и называется это вайб-кодинг.
Проверь живые сценарии.
Не ограничивайся кнопкой
/start. Пройди несколько комбинаций: другой размер колеса, пакет без допуслуг, пакет с балансировкой, хранение отдельно, запрос на расчёт и повторное нажатие.Проверить прайс-ботаПроверь Telegram-бота как клиент шиномонтажа. Пройди сценарии: сезонная смена для R15, пакет работ для R17, пакет с балансировкой, пакет с датчиками, хранение отдельно и запрос на расчёт с именем и телефоном. Проверь, что цена читается из Google Таблицы, отдельные допуслуги не входят в пакет автоматически, заявка записывается один раз, а повторное нажатие не создаёт дубль. Проверь длинный ответ и пустую цену. Составь список найденных ошибок с причиной и предложением исправления. Секреты не выводи в ответ.
Правильный результат виден глазами: цена соответствует строке таблицы, пакет описан прозрачно, допуслуги считаются отдельно, а заявка появляется в листе
Заявки.
Что появилось в папке, когда прайс заработал?
Обычно внутри получается несколько частей:
- файл с обработчиком
doPost; - функции чтения прайса;
- функции отправки сообщений и кнопок;
- обработка запроса на расчёт;
- настройки Script Properties;
- Google Таблица с листами
ПрайсиЗаявки; - адрес опубликованного веб-приложения;
- секрет webhook.
Тебе не требуется разбираться в каждом файле. Достаточно понимать, где лежит источник цены и где хранятся настройки.
SPREADSHEET_ID указывает, какую таблицу читать. TELEGRAM_TOKEN даёт скрипту доступ к боту. WEBHOOK_SECRET помогает отличить настоящий запрос Telegram от случайного обращения к адресу.
Не вставляй эти значения в открытый JavaScript. Если токен попадёт не туда, его можно отозвать через @BotFather и выпустить новый.
Что делать, если бот показывает старую цену или присылает два ответа?

Бот отвечает два раза. Telegram может повторно доставить update, если обработчик не подтвердил его вовремя или произошёл сбой. Сохраняй update_id, message_id и chat_id, а уже обработанный update не принимай повторно.
Бот иногда отвечает два раза на одно нажатие кнопки или дважды записывает заявку. Проверь обработку update_id, message_id и chat_id, найди место повторной обработки и предложи исправление. Добавь защиту от повторной заявки по комбинации chat_id и message_id. Не меняй логику цен и не выводи токен.
Ответ приходит с задержкой или повторяется позже. Долгое чтение таблицы и расчёт внутри webhook могут привести к timeout. Сначала запиши update, быстро верни успешный ответ, а тяжёлую обработку выполняй отдельно.
Telegram иногда присылает повторный ответ после задержки. Проверь, не выполняется ли чтение таблицы, расчёт и запись заявки до возврата ответа webhook. Покажи, какие операции можно разделить, добавь журнал времени получения update и времени завершения обработки. Объясни исправление простыми словами.
Бот перестал показывать цены при нагрузке. Google Sheets API ограничивает число чтений и записей. Не читай весь лист на каждый клик. Используй кеш прайса и обновляй его при изменении таблицы или через заданный интервал.
Прайс-бот работает на тесте, но иногда получает ошибку при нескольких запросах подряд. Проверь количество обращений к Google Таблице, добавь кеш прайса и повтор запроса после временной ошибки 429 с увеличивающейся паузой. Покажи, как проверить возраст кеша и понять, что клиент видит не слишком старую цену.
Цена съехала или пропала строка. Не ищи услугу по номеру строки. Используй уникальный service_id, проверяй пустые цены, повторы ID и активность строки.
Проверь лист «Прайс» на повторяющиеся service_id, пустые цены, цены-текст, отрицательные значения и отсутствующие разделы. Замени поиск по номеру строки поиском по service_id. Если строка ошибочная, покажи её и объясни, что исправить в таблице.
Google сообщает об отсутствии доступа. Проверь, под каким аккаунтом запускается Apps Script, есть ли у него доступ к таблице и подтверждены ли разрешения. Если менялись права, переподключи аккаунт.
Бот получает ошибку доступа к Google Таблице. Проверь аккаунт, от имени которого запускается Apps Script, доступ к нужному файлу по SPREADSHEET_ID и необходимые разрешения чтения и записи. Составь короткий порядок повторной авторизации. Не меняй токен Telegram и не публикуй секреты.
Токен стал недействительным. Telegram-токен можно отозвать через @BotFather. Ошибка 401 Unauthorized означает, что нужно проверить значение в свойствах проекта и заново настроить webhook после замены.
Telegram API возвращает 401 Unauthorized. Проверь, откуда Apps Script читает TELEGRAM_TOKEN, не пустое ли свойство и не остался ли старый webhook. Составь безопасный порядок замены токена через @BotFather. Сам токен не выводи и не записывай в файлы.
Большой раздел не отправляется. В одном текстовом сообщении Telegram нельзя передать больше 4096 символов. Показывай прайс по разделам, добавь страницы или разбивай ответ.
Раздел прайса иногда не отправляется целиком. Проверь длину готового сообщения после форматирования, раздели длинный список на части и добавь кнопки «Следующая страница» и «Назад». Не сокращай цену, название услуги или размер колеса. Проверь кириллицу, переносы строк и пустые описания.
Время заявки отображается неправильно. Telegram не знает часовой пояс бизнеса автоматически. Задай часовой пояс явно, храни время в едином формате и не определяй его по IP клиента.
В листе «Заявки» время иногда отображается не в часовом поясе шиномонтажа. Найди место преобразования даты, задай часовой пояс бизнеса отдельной настройкой проекта, сохрани дату и время заявки явно и не определяй часовой пояс по IP клиента. Объясни, как проверить результат на тестовой заявке.
Что выбрать: свой бот, готовый сервис или прежний файл?
| Вариант | Стоимость | Что получаешь | Ограничения |
|---|---|---|---|
| Свой бот | Claude Pro $20 в месяц | Своя логика, Google Таблица, кнопки, заявки | Нужно самому проверять ошибки и лимиты |
| BotPad Pro | 650 ₽ в месяц или 6240 ₽ в год | Готовый конструктор сценариев, Telegram, Google Sheets, webhook | Логика зависит от возможностей сервиса |
| Прежний способ | Отдельной платы нет | Файл, переписка и ручное объяснение цены | Версии прайса расходятся, клиент ждёт ответа |
BotPad выглядит проще на старте. Там уже есть визуальный редактор и готовая инфраструктура. Самостоятельный вариант гибче: новую сезонную услугу или отдельное правило можно описать помощнику и добавить в свою схему.
Claude Pro стоит $20 в месяц или $200 в год. Официальной рублёвой цены для России нет, и Россия не входит в список поддерживаемых стран Anthropic. В таблице сравнения поэтому оставляю именно доллары, без выдуманного пересчёта.
Свой бот не подойдёт, если нужна сложная логика расчёта, большая нагрузка или постоянная техническая поддержка. При сложных коэффициентах, интеграции с учётной системой и большом количестве клиентов готовый сервис или подрядчик может оказаться спокойнее.
Старый файл тоже не всегда плох. Если услуг немного, цены меняются редко, а клиенты почти всегда звонят, отдельный бот может не окупить внимание на сборку. Но ручное объяснение остаётся ручным объяснением.
Что сделать сегодня, если ты не разбираешься в технологиях?
Маршрут такой:
- Создай лист
Прайси внеси сезонную смену, пакеты работ, балансировку, датчики и хранение. - Добавь уникальный код каждой услуги.
- Создай лист
Заявки. - Получи токен через @BotFather и убери его в свойства проекта.
- Установи VS Code и Claude Code.
- Отправь помощнику промпт с описанием своей рутины.
- Проверь цены для нескольких размеров колеса.
- Только после этого добавь запрос на расчёт.
Не пытайся сделать сразу сложную систему. Сначала добейся одного правильного ответа из таблицы. Потом добавляй кнопки, допуслуги и заявки.
На практикуме этот путь проходят руками на своей задаче. Ты не смотришь на чужую демонстрацию, а собираешь вещь под собственный прайс и проверяешь её на своих сценариях:
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК
Вопросы и ответы
Вопросы и ответы
Как клиент увидит прайс лист с ценами в Telegram?
Клиент открывает бота, нажимает кнопку раздела, выбирает размер колеса и получает сообщение с услугой, ценой и единицей измерения. После этого он может выбрать пакет, добавить балансировку, датчики или хранение и отправить запрос на расчёт.
Подойдёт ли Telegram-бот для прайс листа товаров?
Да, если товаров или услуг не слишком много и их удобно разбить по разделам. Для шиномонтажа разделами становятся сезонная смена, пакеты работ, балансировка, датчики и хранение. Такой же подход работает и в других сферах: прайс лист на электромонтажные работы 2026 собирается по той же схеме с разделами по видам работ. Большой каталог лучше показывать страницами, чтобы не упираться в ограничение длины сообщения.
Как изменить прайс лист стоимости в таблице?
Измени цену в Google Таблице, не меняя код и кнопки. Бот при следующем чтении диапазона возьмёт новое значение. Если в проекте используется кеш, обновление может произойти после его очистки или следующего обновления, поэтому это нужно проверить отдельным сценарием.
Можно ли сделать прайс лист без программиста?
Можно. Ты описываешь задачу словами, а Claude Code создаёт и меняет файлы проекта. Самостоятельно всё равно придётся подготовить таблицу, создать Telegram-бота, дать доступ Apps Script и проверить результат. Программирование для этого маршрута не требуется, но проверка обязательна.
Можно ли использовать бесплатный прайс лист в Telegram-боте?
Google Таблица может быть источником цены без отдельной платы за саму таблицу в описанной схеме. Бесплатный Claude тоже существует, но для сборки автоматизации его лимит зависит от нагрузки и количества сообщений. Telegram-бот имеет ограничения скорости, а Apps Script и Google Sheets работают в пределах своих квот.
Нужен ли прайс лист шаблон для подготовки таблицы?
Готовый шаблон не обязателен. Минимальная структура состоит из раздела, кода услуги, названия, размера колеса, цены, единицы измерения и признака активности. Отдельно нужен лист заявок. Важно не название шаблона, а понятные уникальные коды услуг и отсутствие повторяющихся строк.
Можно ли передавать цены из прайс лист 1с в бот?
В этой сборке готового импорта из 1С нет. Подтверждённый маршрут использует Google Таблицу как источник цен. Передачу данных из 1С придётся проектировать отдельно: сначала определить, как 1С выгружает строки, затем настроить загрузку в таблицу и проверить, что коды услуг не меняются.
Как разместить прайс лист компании в Telegram?
Создай разделы в Google Таблице, подключи их к кнопкам Telegram-бота и размести ссылку на бота на сайте, в соцсетях или в переписке. Клиент должен сам открыть бота и нажать Start. Telegram-бот не может первым начать обычный диалог с пользователем.
Как показать прайс лист продукции и получить заявку?
Добавь в таблицу продукцию, цену, единицу и активность позиции. В боте сделай кнопки разделов, а после просмотра добавь «Запросить расчёт». Данные заявки записывай в отдельный лист, не смешивая их с прайсом.
Как клиент узнает, что появился новый прайс лист?
Если цена меняется в Google Таблице, бот показывает новое значение при следующем чтении источника. Отдельное уведомление можно добавить позже, но для начала достаточно обновлять таблицу в одном месте и проверить, что кеш не отдаёт старую цену.
Как показать прайс лист платных услуг в Telegram?
Раздели услуги на строки с названием, ценой, единицей и описанием. Для шиномонтажа пакет работ вынеси отдельно, а балансировку, датчики и хранение отметь как допуслуги. Кнопки Telegram только открывают разделы, а актуальная цена всегда берётся из таблицы.
Может ли Telegram быть единственным источником цены?
Нет. Telegram лучше считать интерфейсом, а Google Таблицу источником актуальной цены. Для клиентов без Telegram оставь телефон, форму или другой канал. Иначе часть людей не увидит прайс и не попадёт в очередь заявок.
Источники
- Telegram Bot API
- From BotFather to 'Hello World
- Веб-приложения Apps Script
- Properties Service Apps Script
- Чтение и запись значений Google Таблиц
- Квоты сервисов Apps Script
- Usage limits Google Sheets
- Тарифы Claude
- Лимиты Claude Code
- Где доступен Claude
- Тарифы BotPad
- Duplicate update received
- Telegram webhook и повторные попытки после тайм-аута
- Лимиты Google Таблиц при нагрузке
- Проблемы со сдвигами диапазонов в таблицах
- Ошибка OAuth доступа к Google Sheets
- Bots: An introduction for developers
Это собирательная история выпускников практикума, а не рассказ одного человека: так эта работа устроена в большинстве таких дел.
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК

