Пекарня закрыта. А заказ всё равно принят.
В 01:39 покупатель открывает Telegram, выбирает торт, сразу видит настоящую цену и ближайшее возможное время выдачи и оставляет телефон. Утром владелец находит готовый заказ, а не пропущенное сообщение. Всё на этой странице работает на том же движке диалога, что и живой бот. Нажимайте кнопки и смотрите.
Закажите что-нибудь
Нажимайте кнопки или пишите сами. Бот понимает 25.09, 25 сентября, завтра, обычные числа и прямо говорит, если что-то не получится.
Что видит владелец на телефоне
0Так заказы сохраняются
| Заказ | Что | Когда | Получение | Сумма |
|---|---|---|---|---|
| Заказов пока нет. | ||||
Живой бот пишет ту же запись в orders.json. А может писать в Google Таблицу или CRM пекарни: для этого меняется один небольшой файл.
Повтор одной ночи
Нажмите кнопку: движок прямо в вашем браузере обработает заранее придуманную ночь покупателей. Это одна сентябрьская ночь, выдуманная, как и всё демо. Все цифры ниже посчитаны из этого прогона, а не вписаны руками.
Утренний итог для владельца
Заказы за ночь
| Заказ | Что | Когда | Получение | Сумма |
|---|
Все чаты этой ночи
Откройте любой, в том числе те, что не закончились заказом. Бота, который справляется только с послушными покупателями, нельзя выпускать к людям.
Как это устроено
Один движок, два входа
Диалог — чистый конечный автомат: он получает текущее состояние и одно событие и возвращает следующее состояние и ответ. Живой бот подаёт в него сообщения из Telegram, эта страница подаёт ваши нажатия. Отдельной версии для демо нет: тест падает, если копия на странице расходится с исходными файлами. Русская и английская версии работают на одном движке, меняется только языковой пакет: фразы, меню и цены в рублях.
Сделан, чтобы пережить ночь
Если ответ потерялся, Telegram присылает сообщение повторно, поэтому бот запоминает номер каждого и не обрабатывает дважды. Сбои сети и лимиты Telegram бот переживает повторными попытками с растущей паузой. Кнопки из старых сообщений он узнаёт и вежливо отвечает, а не портит не до конца оформленный заказ. Заказ записывается на диск до того, как покупатель видит «Готово».
Без сторонних пакетов, без ключей в коде
Бот написан на чистом Node.js, без npm-зависимостей, которые нужно проверять и обновлять. Токен лежит в файле .env, который не попадает в репозиторий, и никогда не печатается в журнале. Хостинг оформляется на аккаунт пекарни, так что данные остаются под её контролем.
Что входит в месяц поддержки
Бот не плакат: меняется меню, цены, сам Telegram. Ежемесячная поддержка держит его в рабочем состоянии:
- Меню, цены, сроки и зоны доставки обновляются, как только пекарня их меняет.
- Присмотр за ботом: если он перестанет отвечать, я узнаю раньше покупателей.
- Изменения Telegram API учитываются до того, как что-то сломают.
- Небольшие доработки по мере того, как становится ясно, о чём спрашивают покупатели: новые товары, вопросы, время выдачи.
- Отчёт раз в месяц: сколько заказов принял бот и где покупатели бросали заказ.
- Резервные копии заказов и выгрузка в то, чем пекарня ведёт учёт.