К содержимому

Демо-проект — салон «Лаванда», мастера, услуги и цены вымышлены

Все работы

Демо-проект

Бот записи к мастеру

Бот-администратор вымышленного салона «Лаванда»: клиент прямо в чате выбирает услугу, мастера, дату и свободное время, оставляет имя и телефон и получает подтверждение. Администратор сразу видит новую запись в Telegram. Занятое время не показывается, а в «Моих записях» запись можно посмотреть и отменить.

  • Python
  • aiogram 3
  • SQLite
  • Автотесты (pytest)

Что умеет бот

  • Сценарий записи по шагам: услуга → мастер → дата (ближайшие 7 дней) → свободное время → имя → телефон → подтверждение.
  • Занятые слоты не показываются; два клиента не могут занять одно время — это защищено на уровне базы, а не только кнопок.
  • «Мои записи» и отмена записи: отменённое время сразу освобождается.
  • Уведомление администратору о новой записи и об отмене. Если уведомление не дошло, запись клиента всё равно сохраняется.
  • Защита от типичных сбоев: повторный /start посреди записи, двойные нажатия, устаревшие кнопки, неверный телефон и имя.
  • Все записи хранятся в SQLite: один файл, ничего дополнительно ставить не нужно. Тексты, услуги и мастеров легко заменить под вашего клиента.

Бот в Telegram не запущен. Это демонстрация кода и сценария: ниже скриншоты из прогона. Живой бот под вашего мастера или салон настраиваем по запросу. Демо сделано на Telegram; для клиентов делаем такие боты в MAX.

Сценарий по шагам

Навигация идёт кнопками под сообщением и правит одно и то же сообщение, поэтому чат не засоряется. На каждом шаге есть «Отмена» (и команда /cancel), на шагах 2–4 — «Назад».

  1. /startПриветствие салона «Лаванда» и кнопки «Записаться» и «Мои записи».
  2. Выбор услуги«Шаг 1 из 5»: четыре услуги салона.
  3. Выбор мастераТолько мастера, которые делают выбранную услугу.
  4. Выбор датыБлижайшие 7 дней; показаны только рабочие дни мастера, где есть свободное время.
  5. Выбор времениЗанятые слоты скрыты; на сегодня — только время не раньше чем через час.
  6. ИмяКлиент пишет, как к нему обращаться.
  7. ТелефонТекстом или кнопкой «Поделиться контактом». Неверный номер бот не принимает и просит повторить.
  8. ПодтверждениеБот показывает итог: услуга, мастер, дата, время, имя, телефон. Клиент нажимает «Подтвердить».
  9. «Вы записаны!»Клиент получает итог записи; администратору уходит уведомление «Новая запись».
  10. «Мои записи» и отменаКлиент открывает список, выбирает запись, подтверждает отмену. Время освобождается, администратор получает уведомление об отмене.

16 скриншотов

Нажмите на скриншот, чтобы увеличить; стрелками на клавиатуре или кнопками можно листать.

Скриншоты сняты в эмуляторе чата из реального прогона кода бота. Это не снимки приложения Telegram: тексты и кнопки взяты из ответов настоящих обработчиков, оформление «под Telegram» нарисовано вёрсткой. Дата в прогоне зафиксирована: четверг, 15 октября 2026, 12:00. Клиентка «Анна» и телефон +7 900 000-00-00 — тестовые данные.

Запись

  • 1. /start
    Приветствие салона и пометка «Демо-проект»
  • 2. Шаг 1
    Выбор услуги
  • 3. Шаг 2
    Выбор мастера: только те, кто делает эту услугу
  • 4. Шаг 3
    Выбор даты на ближайшие 7 дней
  • 5. Шаг 4
    Свободное время, занятое не показывается
  • 6. Шаг 5
    Бот спрашивает имя
  • 7. Телефон
    Текстом или кнопкой «Поделиться контактом»
  • 8. Проверка
    Итог записи перед подтверждением
  • 9. Готово
    «Вы записаны!»
  • 10. Администратору
    Уведомление о новой записи

Занятое время и ошибки ввода

  • 11. Другой клиент
    Занятое 11:00 уже не показывается
  • 12. Неверный телефон
    Бот просит ввести номер ещё раз

Мои записи и отмена

  • 13. Мои записи
    Список предстоящих записей
  • 14. Отмена
    Подтверждение отмены
  • 15. Отмена
    Запись отменена, время свободно
  • 16. Администратору
    Уведомление об отмене

Как сделано и что упрощено

  • Python 3.11+, aiogram 3 (long polling: домену и SSL не нужны, хватит небольшого VPS), SQLite.
  • 29 автотестов прогоняют весь сценарий без реального Telegram: запись целиком, кнопка контакта, скрытие занятых слотов, гонка за слот, «Мои записи» и отмена, неверный ввод, недоступность администратора.
  • В демо упрощено: один слот — один час, график мастеров зашит в код, напоминаний клиентам нет, состояние диалога хранится в памяти (сами записи после перезапуска сохраняются).
  • В боевой версии перед сбором телефона нужна ссылка на политику обработки персональных данных (152-ФЗ); в демо её нет.

Все работы