Боты и автоматизация2026-08-308 минРедакция Submarine School

Как создать бота для записи клиентов и не путать слоты

Как создать бота для записи клиентов и не путать слоты

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

Выберите: заявка или подтверждённая запись

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

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

Надпись «Вы записаны» допустима только после окончательной проверки и создания записи. До этого используйте статус «Запрос принят» и не обещайте занятое время.

Если бот ещё не создан, сначала получите отдельного бота и сохраните токен безопасно по базовой инструкции как создать бота в Telegram. Официальное введение Telegram предупреждает, что токен даёт полный контроль над ботом и его нельзя публиковать: Bots: An introduction for developers.

Бот приносит пользу, когда он работает, а не когда про него прочитали. На бесплатном эфире показывают, как собрать и запустить бота с помощью ИИ.

Посмотреть запуск бота

Составьте карту услуги и расписания

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

  1. Перечислите услуги и задайте для каждой длительность без ручных исключений в тексте.
  2. Определите рабочие интервалы, перерывы, выходные и минимальное время до визита.
  3. Выберите один канонический календарь, из которого бот читает занятость и куда записывает событие.
  4. Зафиксируйте статусы new, held, confirmed и cancelled и условия перехода между ними.
  5. Решите, какие данные нужны для подтверждения: имя, способ связи и согласие с условиями.
  6. Опишите отмену и перенос так, чтобы старый слот освобождался только после понятного подтверждения.

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

По теме: Claude-бот в Telegram: схема, шаги и проверка

Соберите диалог бота

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

  1. После /start покажите, что бот записывает, для какого часового пояса работает и как связаться с человеком.
  2. Предложите выбрать услугу кнопкой, а не вводить название свободным текстом.
  3. После услуги покажите только интервалы, которые прошли проверку занятости.
  4. Перед подтверждением повторите услугу, дату, время, часовой пояс, длительность и контакт.
  5. После согласия ещё раз проверьте слот, создайте запись и только затем покажите статус confirmed.
  6. В подтверждении дайте понятный способ отмены или переноса и резервный контакт.

Telegram поддерживает inline-клавиатуры рядом с сообщением, а нажатие такой кнопки приходит как callback_query. После обработки интерфейс должен ответить методом answerCallbackQuery, иначе у пользователя остаётся ощущение зависшего клика. Эти элементы описаны в Telegram Bot API.

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

Отдать боту рутину

Подключите календарь без двойной брони

Если используется Google Calendar, метод freeBusy.query возвращает занятые интервалы выбранных календарей, а events.insert создаёт событие в календаре организатора. Это два разных шага, подтверждённых справкой Freebusy и справкой Events: insert.

Между показом времени и нажатием подтверждения другой человек может занять тот же интервал. Поэтому проверка при показе нужна для удобства, а решающая проверка выполняется непосредственно перед созданием записи. Уникальный ключ операции защищает от повторного клика и повторной доставки одного события. От двух разных клиентов нужна отдельная база записи, где только один процесс может атомарно занять слот: вызовы freeBusy.query и events.insert сами по себе такой блокировки не дают.

receive confirmation
validate user and service
acquire slot lock; check slot in canonical calendar
if busy: show fresh alternatives
if free: create one event with operation_id
save confirmed status
send confirmation and cancellation link

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

По теме: Как удалить созданного бота в Telegram в 2026: BotFather пошагово

Проверьте весь путь, а не только счастливый сценарий

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

  • Свободный слот: появляется одно событие, клиент получает точное подтверждение.
  • Занятый слот: бот не создаёт событие и предлагает свежие варианты.
  • Два подтверждения одновременно: успешна только одна запись, второй человек видит, что время уже занято.
  • Повторный клик: возвращается существующее подтверждение без второго события.
  • Отмена: событие меняет статус, слот снова доступен, обе стороны получают сообщение.
  • Перенос: новая запись подтверждается до освобождения старой.
  • Недоступный календарь: бот не обещает запись, сохраняет заявку или предлагает ручной контакт.
  • Перезапуск сервера: незавершённый статус можно безопасно продолжить или отменить.

Тестируйте отдельным ботом, чтобы не смешивать пробные сообщения с клиентскими. Telegram прямо рекомендует запускать отладочный экземпляр на другом бот-аккаунте: Testing your bot.

Диагностика по симптому

  1. Бот молчит после кнопки: найдите входящий callback_query, затем проверьте обработчик и вызов answerCallbackQuery.
  2. Время отличается на несколько часов: сравните часовой пояс услуги, календаря, клиента и сохранённого события.
  3. Слот виден свободным, но занят: проверьте, выполняется ли повторный freeBusy непосредственно перед созданием.
  4. Появляются дубли: найдите одинаковый update_id или operation_id и запретите повторное создание.
  5. Подтверждение есть, события нет: меняйте порядок, сначала фиксируйте событие и статус, затем отправляйте финальное сообщение.

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

По теме: Как создать бота для группы в Telegram в 2026: права и настройка

Ограничения и случаи, когда бот не подходит

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

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

Частые вопросы

Можно ли сделать бота для записи без кода?

Да, если конструктор умеет хранить состояния диалога и подключаться к вашему календарю. Всё равно проверьте двойной клик, одновременную запись, отмену и недоступность календаря.

Нужен ли отдельный календарь?

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

Как не допустить двойную запись?

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

Что делать, если календарь временно недоступен?

Не показывайте окончательное подтверждение. Сохраните заявку со статусом ожидания или предложите ручной контакт, а после восстановления проверьте слот заново.

Когда добавлять оплату?

После стабильной работы обычной записи и отмены. Сначала определите, в какой момент слот удерживается и что происходит при неуспешной оплате. Отдельная схема разобрана в материале как сделать оплату в боте.

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

Записаться на вебинар
Разборы, кейсы и фишки вайбкодинга каждую неделю в телеграм-канале «Яков вайбкодит».
Первый проект с ИИ: живой разбор, бесплатно Занять место