# Чат бот для магазина на вайб-кодинге: 10 простых шагов до своих ответов

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

Источник: https://vibeceh.ru/cases/otvety-na-chastye-voprosy-v-chat-bote-dlya-magazina
Автор: Сергей Мазур · опубликовано 2026-08-16

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

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

А началось всё с вопроса про одну и ту же дрель.

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

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

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

Сначала я думал сделать просто список ответов. Потом понял, что список должен быть связан с понятным входом: сообщением клиента или кнопкой в Telegram. Иначе папка останется ещё одним файлом, который нужно открывать вручную.

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

Главное ощущение после сборки у меня не про технологии. Я перестал отвечать на вопрос «есть ли это в наличии?» наугад и идти проверять каждую полку. Теперь при вопросе о наличии я говорю о состоянии товара: витрина, резерв или возврат.

## Что изменится в магазине после чат-бота?

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

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

В исследовании Naumen по ритейлу боты давали консультацию по темам оплаты, чеков, промокодов, возвратов, доставки и программ лояльности в 58-76% случаев. В исследовании участвовали 113 ритейлеров и проведено более 2300 обращений. Это ориентир для типа вопросов, а не обещание результата конкретному магазину. ([naumen.ru](https://www.naumen.ru/events/news/7830/))

Есть и другая важная граница. В исследовании Usedesk автоматический ответ в мессенджере встречался в 53% случаев, но самостоятельное решение вопроса чат-ботом составило только 3%. ([usedesk.ru](https://usedesk.ru/research-customer-service-2023))

То есть наличие ответа ещё не означает, что покупатель получил решение. Бот может быстро сказать, где посмотреть цену или условия гарантии. Но если клиент спрашивает про конкретную модель, комплектацию и состояние возврата, продавец должен проверить данные.

У меня система полезна именно на этом разделении:

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

Я не стал просить помощника отвечать на всё подряд. В магазине инструмента ошибка в ответе о наличии раздражает сильнее, чем честное «уточню у продавца». Поэтому неизвестный вопрос лучше передать человеку, чем придумать уверенный текст.

Бот также не должен превращаться в рекламную рассылку. Ответ на вопрос о гарантии и самостоятельное сообщение с предложением купить набор оснастки - разные вещи. Для рекламных сообщений нужно предварительное согласие клиента, а по требованию адресата рассылку нужно немедленно остановить. Это требование статьи 18 закона «О рекламе». ([consultant.ru](https://www.consultant.ru/document/cons_doc_LAW_58968/f892dec1383709792452f18d36e7043306e2be0a/))

## Почему свою систему нельзя сравнивать с готовым сервисом?

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

![Кот сравнивает готовый сервис и свою систему ответов.](https://s3.regru.cloud/crossmark/statejnik/images/guides/otvety-na-chastye-voprosy-v-chat-bote-dlya-magazina/kadr-1.webp)

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

Так устроена и FAQ-система DataTalksClub. В ней ответы хранятся отдельными Markdown-файлами, а новый вопрос проходит отдельную обработку. В открытом описании проекта указано 1395 записей по шести курсам. ([github.com](https://github.com/DataTalksClub/faq/))

FAQ-помощник - это Slack-бот, который отвечает студентам, используя этот FAQ как один из источников» (перевод с английского).

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

Готовый сервис выигрывает в другой точке. Не нужно разбираться с Google Таблицей, Apps Script, токеном и вебхуком. Подключил тариф, настроил сценарий и работаешь в уже собранном интерфейсе. Если задача типовая и меняться не будет, это разумный выбор.

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

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

## Как устроена система ответов на вопросы?

Покупатель пишет сообщение или нажимает кнопку в Telegram. Telegram отправляет обновление на webhook, тот передаёт его в Apps Script. Скрипт читает строки FAQ в Google Таблице, находит подходящий ключ и отправляет ответ обратно через Telegram. Если совпадения нет, скрипт передаёт вопрос менеджеру.

Внутри пять частей.

- **Telegram** принимает сообщение покупателя и показывает кнопки. Там же открывается меню с разделами вроде «Цены», «Оплата», «Гарантия» и «Условия работы».
- **Webhook** - это адрес-приёмник, куда Telegram сам отправляет заявку о новом сообщении. Постоянно опрашивать Telegram для этой схемы не нужно.
- **Apps Script** - это бесплатный обработчик от Google. Он достаёт текст сообщения или событие от кнопки, находит нужную запись и отправляет ответ.
- **Google Таблица** хранит сами ответы. Это папка, которую можно открыть глазами. В ней не должен лежать весь складской хаос. Только утверждённые тексты и признаки активности.
- **Ответ в Telegram** возвращается через Bot API. Для текста используется `sendMessage`, для кнопок к сообщению добавляется `reply_markup`.

Схема выглядит так:

```text
Telegram -> webhook -> Apps Script -> Google Таблица -> ответ в Telegram
```

Если клиент нажал «Гарантия», в событии приходит значение кнопки. Скрипт ищет ключ `warranty`, читает ответ из активной строки и отправляет его. Если клиент написал вопрос свободным текстом, помощник может настроить простое сопоставление ключевых слов или передать запрос менеджеру.

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

Для таблицы достаточно такой структуры:

```text
key | question | answer | active
price | Цена | Актуальную цену уточни по карточке модели или у продавца. | yes
payment | Оплата | Способы оплаты уточни у продавца перед оформлением заказа. | yes
warranty | Гарантия | Условия гарантии зависят от модели и документов на покупку. | yes
```

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

Если хочешь собрать такую же связку ответов на своей задаче и проверить её руками, приходи на практикум:

## Что поставить и сколько это стоит?

Для сборки нужны Visual Studio Code, Claude Code, Telegram, Google-аккаунт и Google Таблица. VS Code и Telegram ставятся бесплатно. Claude Code работает внутри VS Code и входит в подписку Claude Pro за $20 в месяц, что составляет около 1 560 ₽ без комиссии посредника. API оплачивается отдельно.

VS Code нужен как папка проекта с понятным окном для файлов. Кода придётся писать немного, но базовые шаги нужно проверять глазами. Открываешь папку, запускаешь помощника и описываешь задачу словами.

Claude Code встраивается в редактор и работает с файлами проекта. Он может создать структуру, изменить Apps Script, объяснить ошибку и показать, что именно поменял. Я всё равно просматриваю результат, особенно места, где используются токен бота и доступ к таблице.

Установка занимает около четверти часа:

1. Скачай и установи VS Code.
2. Запусти Claude Code внутри редактора.
3. Войди в аккаунт.
4. Создай или открой папку проекта.
5. Проверь, что помощник видит файлы.

Поставил один раз - потом можно собирать соседние автоматизации теми же инструментами. Меняется задача: сегодня FAQ для магазина, позже таблица остатков или простой отчёт. Сам редактор и помощник остаются теми же.

Подписка Claude Pro стоит $20 в месяц официально. Это около 1 560 ₽ без комиссии за оплату из России, но точную сумму списания сверяй по актуальному курсу ЦБ и условиям платёжного сервиса: комиссия, конвертация и возможный налог добавляются отдельно. ([support.anthropic.com](https://support.anthropic.com/en/articles/8325606-what-is-the-pro-plan))

Claude Code входит в Pro, но API в подписку не входит. Если проект начнёт обращаться к API напрямую, расходы считаются отдельно через Claude Console. У Pro есть сессионные и недельные лимиты: их удобно [контролировать таблицей расходов](/guides/tokeny-limity-i-schet-tablica-kontrolya-rashodov-claude-code). Сессионный лимит сбрасывается каждые пять часов, а доступный объём зависит от длины сообщения, файлов, текущего диалога, инструментов и выбранной модели. ([support.anthropic.com](https://support.anthropic.com/ru/articles/11145838-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-claude-code-%D1%81-%D0%B2%D0%B0%D1%88%D0%B8%D0%BC-%D0%BF%D0%BB%D0%B0%D0%BD%D0%BE%D0%BC-pro-%D0%B8%D0%BB%D0%B8-max))

[Google Таблица](/concepts/google-tablicy) нужна как хранилище FAQ. Telegram-бот создаётся через `@BotFather`, там же получается токен. Токен нельзя публиковать в статье, пересылать продавцам или оставлять в открытой таблице.

Claude Pro даёт доступ к Claude Code, но вызовы API оплачиваются отдельно. Перед сборкой проверь, каким способом помощник работает в проекте, чтобы не получить другую статью расходов.

## Как собрать чат-бота по шагам?

Собирай систему от данных к запуску. Сначала подготовь FAQ и опиши границы ответа, затем создай Apps Script, подключи Telegram, опубликуй web app, установи webhook и добавь кнопки. После каждого шага отправляй тестовое сообщение. Так собирают программы с минимумом ручного кода и проверкой каждого шага, и называется это [вайб-кодингом](/concepts/vajb-koding).

![Собака смотрит на три шага сборки чат-бота от папки проекта до таблицы FAQ.](https://s3.regru.cloud/crossmark/statejnik/images/guides/otvety-na-chastye-voprosy-v-chat-bote-dlya-magazina/kadr-2.webp)

Создай папку на компьютере, открой её в VS Code и запусти Claude Code. Не проси сразу «сделать полноценный магазин». Начни с ответа на типовые вопросы.

   

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

Открой Google Таблицы и добавь четыре колонки. Не смешивай в одном ответе цену, гарантию и рекламное предложение.

   ```text
   key | question | answer | active
   price | Цена | Актуальную цену конкретной модели уточни у продавца перед оформлением заказа. | yes
   payment | Оплата | Способы оплаты и порядок оформления уточни у продавца. | yes
   warranty | Гарантия | Условия гарантии зависят от модели и документов на покупку. | yes
   return | Возврат | Условия возврата зависят от товара и ситуации, сложный вопрос передаём продавцу. | yes
   delivery | Доставка | Возможность и срок доставки уточни у продавца по конкретной модели. | yes
   availability | Наличие | Наличие проверяется отдельно по модели, комплектации и состоянию товара. | yes
   ```

В колонке `active` оставляй `yes` только для готовых и проверенных текстов. Если ответ устарел, измени его или поставь `no`.

Дай ему ссылку на таблицу через доступ Google или попроси создать подключение в проекте. Не передавай лишние данные покупателей.

   

В ответ помощник должен описать доступ к таблице и способ чтения строк. Проверь глазами, что неактивная запись не попадёт в ответ.

Открой Apps Script из Google Таблицы или создай отдельный проект. Нужна функция `doPost(e)`, которая принимает тело POST-запроса и разбирает JSON Telegram.

   

После результата проверь, что скрипт различает текст сообщения и отсутствие совпадения. Telegram прямо указывает, что бота нужно подключить к серверу или облачному скрипту через API, поэтому одного создания бота в `@BotFather` недостаточно. ([core.telegram.org](https://core.telegram.org/bots/faq))

В Apps Script выбери развёртывание как веб-приложения. В доступе укажи вариант, при котором Telegram сможет отправлять POST-запросы. Скопируй URL, который заканчивается на `/exec`.

   

Для веб-приложения Apps Script требуется `doGet(e)` или `doPost(e)`. После публикации URL можно передать Telegram методом `setWebhook`. ([developers.google.com](https://developers.google.com/apps-script/guides/web?authuser=4))

Создай бота через `@BotFather`, получи токен и добавь его в защищённую настройку проекта. Не вставляй токен в публичный промпт, README или сообщение продавцу.

   

После сохранения токена отправь боту `/start`. Если ответа нет, сначала проверь URL web app и доступ проекта, а не переписывай всю систему.

Передай Telegram URL опубликованного web app через `setWebhook`. Затем запроси `getWebhookInfo` и проверь адрес.

   

При webhook Telegram отправляет каждое новое обновление HTTPS POST-запросом на указанный URL. Скрипт получает объект `Update`, разбирает `message.text` или `callback_query` и выбирает ответ. ([core.telegram.org](https://core.telegram.org/bots/api?source=post_page))

В меню можно вынести «Цены», «Оплата», «Гарантия» и «Условия работы». Для верхнего меню подойдут reply-кнопки. Для кнопок внутри ответа можно использовать inline-кнопки с callback-событиями.

   

Telegram разделяет reply-кнопки и inline-кнопки. Inline-кнопка может передать callback-событие без отправки видимого текста в чат. ([core.telegram.org](https://core.telegram.org/bots/tutorial))

Отправь `/start`, нажми каждую кнопку, напиши вопрос свободным текстом и проверь неизвестный запрос. Отдельно проверь, что ответ о наличии не обещает продажу витринного образца, резерва или возврата.

   

В этот момент не оценивай систему по одному удачному сообщению. Прогони похожие формулировки: «сколько стоит», «цена этой дрели», «есть ли гарантия», «можно оплатить картой». Ответ должен оставаться точным и не превращаться в догадку.

Один текст, отправляемый через `sendMessage`, не должен превышать 4096 символов после обработки сущностей. Длинные условия разбивай на несколько сообщений или сокращай до карточки с понятным маршрутом. ([core.telegram.org](https://core.telegram.org/bots/api?source=post_page))

   

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

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

## Что появится в папке, когда бот заработает?

После сборки останутся Google Таблица с колонками `key`, `question`, `answer`, `active`, проект Apps Script, опубликованный URL web app и настройки Telegram с токеном и webhook. Текст ответа меняется в таблице. В код без необходимости лезть не нужно, но токен, доступы и входящие сообщения нужно проверять отдельно.

В Google Таблице лежит содержимое FAQ:

```text
key | question | answer | active
```

В проекте Apps Script находится обработчик входящих запросов. Он принимает JSON, определяет сообщение или нажатие кнопки, обращается к таблице и вызывает Telegram API.

Опубликованный URL нужен как адрес, на который Telegram отправляет новые обновления. Если URL изменился, webhook нужно установить заново.

В настройках проекта хранятся технические значения:

- токен бота;
- идентификатор Google Таблицы;
- URL webhook;
- служебные параметры доступа.

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

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

## Что ломается и как попросить помощника это починить?

Чаще всего ломается доставка обновлений и ограничения Telegram. Текст FAQ тут обычно ни при чём. Дубликаты появляются при повторной обработке `update_id`, второй экземпляр вызывает `409`, превышение лимита даёт `429`, а бот не может первым начать диалог. После замены токена отдельно проверь старый offset, потому что исходящая отправка может работать при потерянных входящих.

![Мужчина прикрывает лицо рядом со схемой сбоев Telegram-бота.](https://s3.regru.cloud/crossmark/statejnik/images/guides/otvety-na-chastye-voprosy-v-chat-bote-dlya-magazina/kadr-3.webp)

### Повторный ответ из-за `update_id` Один вопрос может обработаться дважды, если система повторно приняла то же обновление. Обработчик должен помнить обработанные идентификаторы и не создавать повторное действие.

Такой сбой описан в issue php-telegram-bot: повторная доставка приводила к сообщению «Duplicate update received». ([github.com](https://github.com/php-telegram-bot/core/issues/659))

### Конфликт второго экземпляра Если старый процесс продолжает получать обновления, а новый запускается параллельно, Telegram возвращает `409 Conflict`. В минимальной схеме на Apps Script не запускай рядом другую копию с тем же ботом.

### Лимит `429` При всплеске сообщений или массовой отправке Telegram может попросить подождать. Код должен прочитать `retry_after`, выдержать паузу и повторить отправку. Очередь должна иметь запас, а не работать ровно на пределе.

Ошибка `429` и параметр `retry_after` описаны в Telegram Bot API, а в группе отдельной причиной может стать включённый медленный режим. ([core.telegram.org](https://core.telegram.org/bots/api?source=post_page))

### Бот не начинает диалог Если покупатель ни разу не нажал кнопку запуска и не написал боту, бот не сможет сам отправить ему личное сообщение. Дай ссылку на запуск заранее или предложи телефон, почту и форму.

Telegram не разрешает боту первым начинать разговор с пользователем. Диалог должен запустить сам пользователь. ([core.telegram.org](https://core.telegram.org/bots/faq))

### Старый offset после замены токена Это последняя проверка, и она коварнее остальных. Исходящие сообщения могут отправляться, `getMe` может работать, но входящие обновления не приходят. После замены токена проверь не только исходящую отправку, но и получение нового сообщения.

Сообщение от имени бота ещё не доказывает, что входящие вопросы доходят. После смены токена отправь новое сообщение пользователю и проверь webhook, входящий счётчик и ответ на свежий `update_id`.

## Сколько стоит своё решение против сервиса и подрядчика?

Своя сборка требует постоянной подписки Claude Pro за $20 в месяц, или около 1 560 ₽ без комиссии посредника. Готовый сервис может стоить от 0 ₽ до 59 880 ₽ в год. Разработка на заказ начинается от 8 320 ₽ за небольшой FAQ-бот и может доходить до 49 000-50 000 ₽ за более полную сборку.

| Вариант | Цена | Что входит |
|---|---:|---|
| Своя сборка | $20 в месяц, около 1 560 ₽ по курсу ЦБ | Claude Pro с Claude Code, Telegram, Google Таблица, Apps Script, самостоятельная настройка и проверка |
| Готовый сервис | от 0 ₽ до 500 ₽ в месяц | Шаблон, конструктор или базовый тариф, состав функций зависит от продукта |
| Готовый сервис | 790 ₽ в месяц | Более широкий опубликованный тариф, состав нужно сверять отдельно |
| Готовый сервис | до 59 880 ₽ в год | Годовой тариф из открытого прайса, не прямой аналог минимальной схемы |
| Подрядчик | от 8 320 ₽ разово | Небольшой FAQ-бот |
| Подрядчик | от 49 000-50 000 ₽ разово | Более полная сборка |

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

Готовый тариф за 0 ₽ выглядит привлекательно, но там может не быть нужного числа каналов, кнопок или передачи менеджеру. Сравнивать нужно не только цену, но и состав: где хранится FAQ, кто меняет ответы, есть ли Telegram, что происходит с неизвестным вопросом.

Собственная сборка не бесплатна. Claude Pro остаётся постоянной статьёй расходов. API в подписку не входит и оплачивается отдельно. Если система используется редко, подписка может оказаться невыгодной. Если она нужна для нескольких автоматизаций и изменения ответов, самостоятельный вариант получает больше смысла.

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

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

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

## Что сделать сегодня, если технологии не для тебя?

Сначала собери список повторяющихся вопросов магазина. Установку инструментов оставь на потом. Запиши короткие утверждённые ответы, раздели справку и обращения к продавцу, затем собери маленький FAQ-бот по промптам. После установки VS Code и Claude Code останутся для соседних автоматизаций, но каждый новый результат всё равно нужно проверять.

Сначала выпиши вопросы, которые продавцы слышат постоянно:

- сколько стоит модель;
- какие способы оплаты;
- есть ли гарантия;
- как оформить возврат;
- возможна ли доставка;
- есть ли товар сейчас;
- чем отличается одна комплектация от другой.

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

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

Потом открой Google Таблицу, создай колонки `key`, `question`, `answer`, `active` и добавь несколько записей. Не начинай с двадцати кнопок. Сначала проверь два-три ответа и неизвестный вопрос.

Связь с практикумом здесь простая: на занятиях вайб-кодинг отрабатывается руками на собственной задаче. Ты описываешь свою рутину, проверяешь результат и просишь помощника исправить конкретный симптом.

## Вопросы и ответы

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

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

Сообщение или нажатие кнопки приходит в Telegram, webhook передаёт его в Apps Script, скрипт ищет активную запись в Google Таблице, затем отправляет найденный текст через `sendMessage`. При отсутствии совпадения срабатывает передача менеджеру.

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

Создай таблицу FAQ с колонками `key`, `question`, `answer`, `active`, подключи её к Apps Script и настрой Telegram webhook. Начни с нескольких тем: цена, оплата, гарантия и доставка. После этого проверь кнопки и свободные формулировки.

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

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

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

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

Проверь ответ по точности, полноте и маршруту действия. Отправь несколько вариантов одного вопроса, нажми каждую кнопку, проверь неактивную строку и неизвестный запрос. Автоматический ответ сам по себе не доказывает, что вопрос решён: в одном исследовании разница составила 53% против 3%. ([usedesk.ru](https://usedesk.ru/research-customer-service-2023))

- [Naumen: исследование автоматизации обращений в ритейле](https://www.naumen.ru/events/news/7830/)
- [Usedesk: исследование клиентского сервиса](https://usedesk.ru/research-customer-service-2023)
- [DataTalksClub FAQ assistant](https://github.com/DataTalksClub/faq/)
- [Telegram Bots FAQ](https://core.telegram.org/bots/faq)
- [Google Apps Script Web Apps](https://developers.google.com/apps-script/guides/web?authuser=4)
- [Telegram Bot Tutorial](https://core.telegram.org/bots/tutorial)
- [Telegram Bot API](https://core.telegram.org/bots/api?source=post_page)
- [Anthropic: What is the Pro plan?](https://support.anthropic.com/en/articles/8325606-what-is-the-pro-plan)
- [Anthropic: использование Claude Code с планом Pro или Max](https://support.anthropic.com/ru/articles/11145838-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-claude-code-%D1%81-%D0%B2%D0%B0%D1%88%D0%B8%D0%BC-%D0%BF%D0%BB%D0%B0%D0%BD%D0%BE%D0%BC-pro-%D0%B8%D0%BB%D0%B8-max)
- [Федеральный закон «О рекламе», статья 18](https://www.consultant.ru/document/cons_doc_LAW_58968/f892dec1383709792452f18d36e7043306e2be0a/)
- [Telegram Bot API: дубликаты update_id](https://github.com/php-telegram-bot/core/issues/659)
- [Telegram: ошибка 429 и повторная отправка](https://core.telegram.org/bots/api?source=post_page)

_Это собирательная история выпускников практикума, а не рассказ одного человека: так эта работа устроена в большинстве таких дел._
