Бот для записи должен показать услугу и свободное время, получить контакт, занять слот один раз и отправить понятное подтверждение. Ниже дана схема для Telegram и внешнего календаря. Она подходит консультациям, занятиям и услугам по времени. Если расписание всегда согласуется вручную или ресурс нельзя описать слотами, проще собирать заявку без автоматической брони.
Выберите: заявка или подтверждённая запись
До выбора конструктора или кода определите обещание бота. Заявка означает, что человек назвал удобное время, а сотрудник подтвердит его позже. Подтверждённая запись означает, что система уже проверила доступность и закрепила слот. Эти статусы нельзя называть одинаково.
- Выбирайте заявку, если расписание меняется вручную, встречу должен одобрить специалист или точного календаря пока нет.
- Выбирайте автоматическую запись, если длительность услуг известна, свободные интервалы хранятся в одном источнике и бот может создать событие без участия сотрудника.
- Добавляйте предоплату только после того, как обычная запись, отмена и возврат слота работают без ошибок.
- Оставляйте ручной контакт как запасной путь, если календарь или бот временно недоступны.
Надпись «Вы записаны» допустима только после окончательной проверки и создания записи. До этого используйте статус «Запрос принят» и не обещайте занятое время.
Если бот ещё не создан, сначала получите отдельного бота и сохраните токен безопасно по базовой инструкции как создать бота в Telegram. Официальное введение Telegram предупреждает, что токен даёт полный контроль над ботом и его нельзя публиковать: Bots: An introduction for developers.
Бот приносит пользу, когда он работает, а не когда про него прочитали. На бесплатном эфире показывают, как собрать и запустить бота с помощью ИИ.
Посмотреть запуск ботаСоставьте карту услуги и расписания
Запишите данные, без которых бот не сможет принять решение. Минимальная модель включает услугу, специалиста или ресурс, начало, длительность, часовой пояс, контакт, статус и идентификатор операции. Если ресурс один, например кабинет или оборудование, он тоже участвует в проверке занятости.
- Перечислите услуги и задайте для каждой длительность без ручных исключений в тексте.
- Определите рабочие интервалы, перерывы, выходные и минимальное время до визита.
- Выберите один канонический календарь, из которого бот читает занятость и куда записывает событие.
- Зафиксируйте статусы
new,held,confirmedиcancelledи условия перехода между ними. - Решите, какие данные нужны для подтверждения: имя, способ связи и согласие с условиями.
- Опишите отмену и перенос так, чтобы старый слот освобождался только после понятного подтверждения.
Правило выбора источника простое: свободное время должно определяться в одном месте. Если бот показывает интервалы из таблицы, а сотрудник ведёт фактические визиты в другом календаре, двойные записи неизбежны. Для сайта с тем же типом задачи полезен отдельный разбор слотов без двойной записи.
По теме: Claude-бот в Telegram: схема, шаги и проверка
Соберите диалог бота
В личном чате бот может получать сообщения пользователя, но сам не начинает разговор: человек должен сначала открыть бота и отправить сообщение. Это ограничение закреплено в официальном введении Telegram. Поэтому ссылка на бота и кнопка Start входят в обязательный путь.
- После
/startпокажите, что бот записывает, для какого часового пояса работает и как связаться с человеком. - Предложите выбрать услугу кнопкой, а не вводить название свободным текстом.
- После услуги покажите только интервалы, которые прошли проверку занятости.
- Перед подтверждением повторите услугу, дату, время, часовой пояс, длительность и контакт.
- После согласия ещё раз проверьте слот, создайте запись и только затем покажите статус
confirmed. - В подтверждении дайте понятный способ отмены или переноса и резервный контакт.
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.
Диагностика по симптому
- Бот молчит после кнопки: найдите входящий
callback_query, затем проверьте обработчик и вызовanswerCallbackQuery. - Время отличается на несколько часов: сравните часовой пояс услуги, календаря, клиента и сохранённого события.
- Слот виден свободным, но занят: проверьте, выполняется ли повторный
freeBusyнепосредственно перед созданием. - Появляются дубли: найдите одинаковый
update_idилиoperation_idи запретите повторное создание. - Подтверждение есть, события нет: меняйте порядок, сначала фиксируйте событие и статус, затем отправляйте финальное сообщение.
Не очищайте базу и календарь во время диагностики. Сохраните идентификаторы тестовой операции, сообщения и события, устраните одну причину, повторите один сценарий и только потом удалите тестовые данные.
По теме: Как создать бота для группы в Telegram в 2026: права и настройка
Ограничения и случаи, когда бот не подходит
Бот не заменяет расписание, если сотрудники продолжают вести визиты в разных местах. Он также не подходит как единственный канал для аудитории, которая не пользуется Telegram, или для процесса, где перед записью обязательна сложная очная оценка. В таких случаях оставьте телефон, веб-форму или ручное согласование.
Если запись связана с чувствительными данными, собирайте только необходимое и не отправляйте подробности в групповой чат. Для первой версии достаточно контакта, услуги и времени. Медицинские сведения, документы и платёжные реквизиты требуют отдельной защищённой системы и правил хранения.
Частые вопросы
Можно ли сделать бота для записи без кода?
Да, если конструктор умеет хранить состояния диалога и подключаться к вашему календарю. Всё равно проверьте двойной клик, одновременную запись, отмену и недоступность календаря.
Нужен ли отдельный календарь?
Не обязательно, но нужен один канонический источник занятости. Если личные события тоже закрывают рабочее время, подключите их к проверке, не раскрывая клиенту названия встреч.
Как не допустить двойную запись?
Повторно проверяйте слот перед созданием события, выполняйте создание атомарно и используйте уникальный ключ операции, чтобы повторный запрос вернул прежний результат.
Что делать, если календарь временно недоступен?
Не показывайте окончательное подтверждение. Сохраните заявку со статусом ожидания или предложите ручной контакт, а после восстановления проверьте слот заново.
Когда добавлять оплату?
После стабильной работы обычной записи и отмены. Сначала определите, в какой момент слот удерживается и что происходит при неуспешной оплате. Отдельная схема разобрана в материале как сделать оплату в боте.
На бесплатном вебинаре вы соберёте логику работающего бота с помощью ИИ и научитесь проверять сценарий до передачи реальным пользователям.
Записаться на вебинар