Соберите бота вместе с ИИ

Опишите бота своими словами в ChatGPT, Claude, Gemini, DeepSeek или другом ИИ и прикрепите нашу инструкцию. ИИ задаст пару вопросов и пришлёт готовый сценарий — его можно загрузить в конструктор одной кнопкой.

Скачать инструкцию
  1. Прикрепите файл к чату с ИИ. Если ИИ умеет открывать ссылки — достаточно дать ссылку bot.days.by/ai.md.
  2. Опишите бота: чем вы занимаетесь, что спросить у клиента, цены или товары, нужен ли расчёт стоимости. Например:

    Помоги собрать Telegram-бота на bot.days.by по прикреплённой инструкции. Мой бизнес: … Бот должен: … Нужен файл импорта.

  3. Выберите результат. «Файл импорта» — сценарий загрузится целиком. «Пошаговая инструкция» — ИИ распишет, какие шаги добавить и что в них написать, если хотите собрать руками.
  4. Загрузите сценарий: Мои боты → бот → «Сценарий» → «Сценарий от ИИ: импорт и экспорт» → вставьте ответ ИИ → «Заменить сценарий». Бота нет — сначала подключите его токеном от @BotFather с шаблоном «Пустой».
  5. Проверьте в симуляторе и в Telegram, добавьте фото и файлы. Если загрузка показала ошибки — скопируйте их и отправьте ИИ: он исправит файл.

Чтобы доработать готового бота, скачайте его сценарий в том же блоке («скачать сценарий (JSON)»), приложите к чату вместе с инструкцией и напишите, что изменить.

Текст инструкции
# Инструкция для ИИ: Telegram-бот на bot.days.by

Пользователь прикрепил этот файл и описал, какой Telegram-бот ему нужен. Ты — ИИ-ассистент. Твоя задача — спроектировать
сценарий бота для конструктора bot.days.by и выдать один из двух результатов:

- **А. Файл импорта** (JSON) — пользователь вставит его в редактор, и сценарий соберётся целиком. Предлагай по умолчанию.
- **Б. Пошаговая инструкция** — что нажимать и заполнять в редакторе, если пользователь хочет собрать бота руками.

Актуальная версия этого файла: https://bot.days.by/ai.md

## Порядок работы

1. Прочитай описание. Если не хватает важного — задай **одним сообщением до 5 вопросов**: чем занимается бизнес, что бот
   должен выяснить у клиента, есть ли цены или товары, нужен ли расчёт стоимости, какие кнопки-ссылки (сайт, карта, Instagram).
   Если пользователь просит сразу — не спрашивай, придумай разумные значения и в конце перечисли, что заменить на свои.
2. Спроси, нужен файл импорта или пошаговая инструкция (если пользователь не сказал). Не знает — делай файл импорта.
3. Спроектируй сценарий только из возможностей ниже. Чего нет в списке — не обещай и не изобретай поля.
4. Проверь результат по чек-листу в конце и отдай его.
5. Если пользователь вернулся с ошибками импорта — исправь именно их и пришли файл целиком заново.

## Как работает конструктор

Сценарий — список шагов. Бот начинает с **первого шага** (по команде /start) и идёт по стрелкам «дальше» и по кнопкам.
Ответы клиента сохраняются в поля с именами (например «Имя», «Телефон») и подставляются в тексты как `{Имя}`.
Шаг «Заявка» отправляет владельцу все собранные поля: в Telegram (лично или в чат команды) и в раздел «Заявки» на сайте.

Типы шагов (`type`):

| type | В редакторе | Что делает | Ждёт клиента? |
|------|-------------|-----------|---------------|
| `message` | Сообщение | Текст и до 10 кнопок. Кнопка ведёт на шаг или открывает ссылку. Без кнопок-переходов бот сразу идёт на `next` | да, если есть кнопки-переходы |
| `question` | Вопрос | Задаёт вопрос, проверяет ответ и сохраняет его в поле `save_as` | да |
| `catalog` | Каталог | Список товаров (до 30) с ценой; клиент выбирает количество, товар попадает в корзину. Кнопки под товарами ведут дальше (например «Оформить заказ») | да |
| `calc` | Расчёт | Считает формулу и сохраняет число в поле `save_as`. Клиент ничего не видит | нет |
| `if` | Условие | Проверяет условие и ведёт на `then` или `else`. Клиент ничего не видит | нет |
| `submit` | Заявка | Сохраняет заявку со всеми полями, отправляет владельцу и показывает клиенту текст | нет |

Подробности:

- **Тип ответа** у вопроса (`answer`): `text` — любой текст; `phone` — телефон, клиент видит кнопку «Отправить мой номер»,
  номер приводится к виду +375(29)123-45-67; `number` — число (12 или 12,5); `email` — адрес почты. Неверный ответ бот
  попросит повторить сам.
- **Сохранение выбора**: у `message` с кнопками поле `save_as` запоминает подпись нажатой кнопки (например «Услуга»).
- **Подстановки** в любом тексте: `{Поле}` — сохранённый ответ, `{first_name}` — имя клиента в Telegram.
  Каталог сам заполняет `{Заказ}` (список позиций) и `{Сумма}` (итог с «р»). Неизвестная подстановка останется как написана.
- **Баллы и цена кнопок**: у кнопки шага `message` может быть число `add` — оно прибавляется к счётчику шага
  (`add_to`, по умолчанию «Баллы»). Счётчик — сумма чисел нажатых кнопок по всем шагам; повторное нажатие на том же шаге
  заменяет число. Так делают тесты, квизы и калькуляторы «тип + опции».
- **Формулы** (`calc`): числа, поля в фигурных скобках, `+ - * /` и скобки. Пример: `{Площадь} * 25 + {Баллы}`.
  Если поле не число или не заполнено, оно считается как 0. Результат округляется до 2 знаков.
- **Условия** (`if`): одно сравнение `>= <= > < = !=`. Числа сравниваются как числа, текст — без учёта регистра:
  `{Баллы} >= 10`, `{Оценка} <= 6`, `{Город} = Минск`. И/ИЛИ нет — для нескольких проверок поставь несколько `if` подряд.
- **Кодовые слова** (`keywords`): клиент пишет слово боту или открывает ссылку `t.me/<бот>?start=<слово>` (для QR и рекламы) —
  и попадает на этот шаг. Слово из ссылки сохраняется в заявке как поле «Источник». Только латиница, цифры, `_` и `-`
  для ссылок; кириллические слова работают, если клиент их пишет.
- **Каталог**: единицы `unit`: `кг`, `шт`, `уп`. Цена — за единицу, в рублях. Кнопка из каталога на обычный шаг не пустит дальше
  с пустой корзиной. Несколько разделов меню — несколько шагов `catalog` с кнопками между ними, корзина общая.
- **После заявки** шаг `submit` может вести дальше (`next`), например на сообщение с кнопками «В начало». Если после конца
  сценария клиент пишет — сообщение пересылается владельцу.
- **Фото и файлы** (JPG, PNG, PDF, Word, Excel, ZIP до 10 МБ) прикрепляются к шагам и товарам **только в редакторе**, в файле
  импорта их нет. Если сценарию нужен файл (гайд, прайс, фото товара) — напиши в тексте шага, что его прикрепить.
- **Ответ клиенту, подтверждение, чат команды, тексты «Подтвердить»/«Отклонить»** настраиваются в «Настройках» бота,
  не в сценарии.

Ограничения: до 60 шагов, до 10 кнопок в шаге, до 30 товаров в разделе каталога,
подпись кнопки до 64 символов, текст шага до 4000, имя поля до 40, название товара до 48, описание товара до 200.
Кнопки в одном столбце, по одной в ряд.

Чего **нет** (не предлагай): приём оплаты, рассылки, отложенные напоминания, запись по свободным слотам календаря, ИИ-ответы,
работа бота в группах и каналах, разные кнопки в зависимости от условия (вместо этого — `if` и разные шаги),
проверка ответа по своему шаблону, переменные кроме полей и счётчиков. Если без этого никак — предложи пользователю
оставить заявку на bot.days.by: недостающее добавляют в течение суток.

## А. Файл импорта (JSON)

Отдай **один JSON-объект** в блоке кода и предложи сохранить его как `bot.json` (или скопировать). Без комментариев внутри JSON.

```json
{
  "format": "bot.days.by/1",
  "name": "Название бота",
  "steps": [ … ]
}
```

Поля шага:

| Поле | Для типов | Значение |
|------|-----------|----------|
| `id` | все | Уникальный короткий ключ латиницей: `hello`, `phone`, `done` |
| `type` | все | `message`, `question`, `catalog`, `calc`, `if`, `submit` |
| `text` | message, question, catalog, submit | Текст, который видит клиент. Переносы строк — `\n` |
| `formula` | calc | Формула |
| `condition` | if | Условие |
| `save_as` | message, question, calc | Имя поля, куда сохранить выбор, ответ или результат |
| `answer` | question | `text`, `phone`, `number`, `email` |
| `next` | message, question, calc, submit | `id` следующего шага; нет поля — сценарий здесь заканчивается |
| `then`, `else` | if | `id` шага, если условие верно / неверно |
| `buttons` | message, catalog | `[{"text": "Подпись", "go": "id шага"}]` или `[{"text": "Наш сайт", "url": "https://…"}]`; у message можно `"add": 5` |
| `add_to` | message | Имя счётчика для чисел кнопок (по умолчанию «Баллы») |
| `items` | catalog | `[{"name": "Маргарита", "price": 16.9, "unit": "шт", "description": "Томаты, моцарелла"}]` |
| `keywords` | любой | `["price", "qr1"]` — кодовые слова этого шага |
| `file` | любой, товар | Не добавляй сам. Встречается в файле, выгруженном из редактора, — оставь как есть, это прикреплённое фото |

Правила:

- Первый шаг в списке — старт. Порядок списка = порядок карточек в редакторе; держи связанные шаги рядом.
- Все `next`, `then`, `else`, `go` ссылаются на существующие `id`.
- `message` с кнопками-переходами ждёт нажатия, его `next` не используется. `message` без кнопок сразу переходит на `next` —
  так можно отправить несколько сообщений подряд.
- Текст `if` и `calc` не показывается клиенту; после `calc` поле можно подставить в текст: «Стоимость: {Стоимость} р».
- Если пользователь прислал файл, выгруженный из редактора (`id` вида `s1`, `s2`, ключи `file`), — меняй его, сохраняя `file`.

Пример — расчёт стоимости натяжного потолка с ветвлением:

```json
{
  "format": "bot.days.by/1",
  "name": "Расчёт потолка",
  "steps": [
    {"id": "hello", "type": "message", "text": "Здравствуйте, {first_name}! Посчитаем потолок за минуту. Какое полотно?", "save_as": "Полотно", "add_to": "Цена м²",
     "buttons": [{"text": "Матовое", "go": "area", "add": 18}, {"text": "Глянцевое", "go": "area", "add": 22}, {"text": "Наш сайт", "url": "https://example.by"}]},
    {"id": "area", "type": "question", "text": "Площадь комнаты в м²?", "save_as": "Площадь", "answer": "number", "next": "total"},
    {"id": "total", "type": "calc", "formula": "{Площадь} * {Цена м²}", "save_as": "Стоимость", "next": "big"},
    {"id": "big", "type": "if", "condition": "{Стоимость} >= 500", "then": "discount", "else": "price"},
    {"id": "discount", "type": "message", "text": "Ориентировочно {Стоимость} р. На заказ от 500 р — замер бесплатно!", "next": "phone"},
    {"id": "price", "type": "message", "text": "Ориентировочно {Стоимость} р.", "next": "phone"},
    {"id": "phone", "type": "question", "text": "Оставьте телефон — мастер уточнит детали:", "save_as": "Телефон", "answer": "phone", "next": "done"},
    {"id": "done", "type": "submit", "text": "Спасибо! Перезвоним в течение часа.", "keywords": ["potolok"]}
  ]
}
```

Как пользователю загрузить файл (напиши ему это после JSON):

1. На bot.days.by нажать «Собрать бота», войти через Telegram и подключить бота токеном от @BotFather
   (шаблон — любой, например «Пустой»; уже подключённого бота пропустите).
2. Открыть бота → вкладка «Сценарий» → блок «Сценарий от ИИ: импорт и экспорт».
3. Вставить JSON в поле или выбрать файл → «Заменить сценарий».
4. Проверить в симуляторе справа (на телефоне — под редактором), затем в Telegram. Добавить фото и файлы, если нужны.
5. Если появились ошибки — скопировать их и отправить мне.

## Б. Пошаговая инструкция

Пиши нумерованным списком, по карточкам, теми же словами, что в редакторе:

- Начни с подключения: @BotFather → `/newbot` → токен → bot.days.by «Собрать бота» → вход через Telegram →
  в форме «Подключите первого бота» вставить токен, выбрать шаблон «Пустой» (или подходящий готовый) → «Подключить».
- Шаги добавляются кнопками под списком: «+ Сообщение», «+ Вопрос», «+ Каталог», «+ Расчёт», «+ Условие», «+ Заявка».
  Новый шаг встаёт в конец; порядок меняется стрелками ↑ ↓ на карточке.
- Поля карточек: «Текст сообщения», «Вопрос», «Текст над списком товаров», «Формула», «Условие», «Ответ после заявки»;
  «Тип ответа»; «Сохранить ответ как» / «Сохранить выбор как» / «Сохранить результат как»; «Дальше»; «Если да» / «Если нет»;
  «+ Кнопка» (подпись, куда ведёт: шаг или «Открыть ссылку…», поле «+ число»); «Числа кнопок прибавлять к»;
  «+ Товар» (название, цена, единица р/кг, р/шт, р/уп, описание); «📷 Фото или файл»; «Запуск по кодовому слову или ссылке».
- Шаги в списках «Дальше» и кнопках подписаны номером и типом: «3 · Вопрос: Площадь комнаты…» — указывай номер карточки.
- Сохранение автоматическое. В конце — проверить в симуляторе («Начать») и в Telegram.
- Для каждой карточки укажи: номер, тип, точный текст и все заполняемые поля.

## Чек-лист перед ответом

- [ ] Первый шаг приветствует и сразу объясняет, что умеет бот.
- [ ] Каждая ветка заканчивается заявкой (`submit`) или осмысленным концом; нет кнопок и `next`, ведущих в никуда.
- [ ] Перед заявкой спрошен способ связи (обычно `answer: phone`).
- [ ] Все `{Поля}` в текстах и формулах где-то сохраняются (`save_as`, `add_to`, «Заказ», «Сумма», «Источник») — с тем же написанием.
- [ ] Формулы и условия используют только числовые поля (`answer: number`, счётчики, результаты `calc`).
- [ ] Не больше 60 шагов и 10 кнопок в шаге, подписи кнопок короткие (до 64 символов, лучше до 25).
- [ ] Нет того, чего конструктор не умеет (оплата, рассылки, календарь и т.д.).
- [ ] JSON валиден: двойные кавычки, без запятых в конце списков, без комментариев.
- [ ] В конце — короткий список того, что пользователю заменить на свои данные.