Обновлено: октябрь 2026
Как сделать телеграм-бота для записи клиентов
Разбираем оба реальных способа — свой бот через официальный BotFather и no-code конструктор — и что нужно учесть, чтобы бот реально принимал записи, а не просто отвечал на /start.
Если вы мастер и вам нужен не код, а чтобы клиентки записывались сами, собирать бота не обязательно. Готовое мини-приложение для записи к мастеру уже есть: услуги с ценами, свободные окошки, напоминания клиенткам и предоплата по СБП, регистрация около минуты. У Mira есть и веб-версия — web.getmira.ru, с тем же кабинетом, что в Telegram. Ниже — инструкция для тех, кто пишет своего бота.
Способ 1: свой бот через BotFather
- Откройте @BotFather — официального бота Telegram для создания ботов — и отправьте команду
/newbot. - Придумайте имя и техническое имя бота — оно обязательно заканчивается на
bot, напримерmy_salon_bot. - BotFather выдаст токен API — это ключ доступа к вашему боту, храните его в секрете.
- Напишите логику бота на любом языке с библиотекой вроде python-telegram-bot (Python) или Telegraf (Node.js) — полный список методов есть в официальной документации Bot API. Бот должен показывать услуги, свободные окна и сохранять записи.
- Разверните бота на сервере или хостинге, чтобы он работал круглосуточно, а не только пока запущен у вас на компьютере.
Минимальный каркас на Python выглядит так:
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"Привет! Свободные окна на завтра: 10:00, 14:00, 16:30"
)
app = Application.builder().token("ВАШ_ТОКЕН").build()
app.add_handler(CommandHandler("start", start))
app.run_polling() Это уже отвечающий бот — но пока без выбора услуги, реального расписания, хранения записей и напоминаний. Их придётся программировать отдельно.
«/start ответил» — это лёгкая часть. Чтобы бот реально принимал записи, ему ещё нужны: защита от двойной записи на одно окно, напоминания клиентам, хранение расписания и истории записей. Это уже полноценная разработка, а не вечер выходного дня.
Как выглядит запись, а не «привет»
Разница между отвечающим ботом и принимающим записи — в кнопках и в том, что происходит после нажатия. Минимальная версия с выбором окна:
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import (Application, CommandHandler,
CallbackQueryHandler, ContextTypes)
SLOTS = ["10:00", "14:00", "16:30"]
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
keyboard = [[InlineKeyboardButton(t, callback_data=f"slot:{t}")]
for t in SLOTS]
await update.message.reply_text(
"Свободные окна на завтра:",
reply_markup=InlineKeyboardMarkup(keyboard),
)
async def pick(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = update.callback_query
await query.answer() # без этого у клиента крутится индикатор
slot = query.data.removeprefix("slot:")
if not book(query.from_user.id, slot): # book() обязан быть атомарным
await query.edit_message_text(f"{slot} уже заняли, выберите другое")
return
await query.edit_message_text(f"Записала на {slot}")
app = Application.builder().token("ВАШ_ТОКЕН").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CallbackQueryHandler(pick, pattern=r"^slot:"))
app.run_polling() Здесь уже видно, где начинается настоящая работа: список окон захардкожен, а book() не написан — и именно он окажется самой сложной функцией во всём боте.
Polling или webhook
run_polling() из примера сам ходит за обновлениями и работает откуда угодно, включая ноутбук без домена. Этого достаточно, чтобы попробовать, но не чтобы принимать записи круглосуточно.
Второй режим — webhook: Telegram сам отправляет обновления на ваш адрес. Требования из документации метода setWebhook:
- адрес по HTTPS на одном из портов 443, 80, 88 или 8443 — других вариантов нет;
- сертификат может быть самоподписанным, если загрузить публичный ключ параметром
certificate; secret_tokenдлиной 1–256 символов: Telegram кладёт его в заголовокX-Telegram-Bot-Api-Secret-Token. Без проверки этого заголовка чужой POST на ваш адрес неотличим от настоящего обновления;max_connections— по умолчанию 40, допустимый диапазон 1–100.
Сервер нужен в обоих случаях. Разница в том, кто инициирует обмен: при polling ваш процесс постоянно опрашивает Telegram, при webhook Telegram стучится к вам — меньше пустых запросов и меньше задержка, но нужен доступный извне адрес.
Способ 2: конструктор без кода
Если писать код не хочется, есть конструкторы ботов с визуальным редактором сценариев — диалог собирается из блоков («сообщение» → «кнопки» → «сохранить ответ») без единой строчки кода. Такие сервисы обычно берут абонентскую плату и подходят, если нужен не только бот для записи, а что-то более универсальное — рассылки, воронки, интеграции с другими сервисами.
Что учесть до запуска
- Защита от двойной записи на одно и то же окно
- Напоминания клиентам, чтобы не забыли прийти
- Как клиент увидит цены и свободное время без переписки с вами
- Что происходит, если клиент отменит запись в последний момент
- Как принимать предоплату, если она нужна
Три места, где самописный бот ломается первыми
Двойная запись. Проверка «окно свободно?» и сама запись — это две операции, и между ними успевает пройти второй клиент: обе записи проходят успешно, а прийти к вам в 14:00 собираются двое. Флаг в памяти процесса не спасает — обновления обрабатываются параллельно, а после перезапуска флаг обнуляется. Держит только ограничение уникальности на стороне базы (одна запись на пару «мастер + время»), где ошибка вставки и означает «занято».
Напоминания. У бота нет собственного расписания: Bot API отвечает на обновления, а не будит вас в нужный час. Напоминание за день — это отдельный процесс, который просыпается по времени, выбирает завтрашние записи и рассылает сообщения. И когда он выстрелит, упрётся в лимиты Telegram: в один чат рекомендовано не чаще одного сообщения в секунду, в группу — не больше 20 сообщений в минуту, а массовая рассылка ограничена примерно 30 сообщениями в секунду.
Жизнь процесса. Бот, запущенный из терминала, умирает вместе с закрытым ноутбуком, а вместе с ним пропадает и запись, которую клиент делал в этот момент. Нужен сервер, автозапуск после перезагрузки и понимание, что произойдёт с обновлениями, пришедшими за время простоя.
Если не хочется собирать всё это самому
У Mira уже есть готовый бот для записи бьюти-мастеров: свободные окошки, напоминания клиентам, защита от двойной записи и приём предоплаты — всё внутри Telegram, без кода.
Год бесплатно по промокоду MIRA2026 — без банковской карты. Код можно ввести при регистрации или позже в кабинете, в разделе «Премиум».
Вопросы
Сколько стоит сделать такого бота самому?
Можно ли сделать бота для записи бесплатно?
Сколько времени занимает сделать такого бота самому?
Чем бот отличается от Telegram Mini App?
Все статьи · Какой сервис онлайн-записи подходит частному бьюти-мастеру в 2026