
Бесконтактное заселение в квартиру: как я сделал бота для своей посуточной аренды
Я экономист, а не программист. Основной бизнес — Спецраз.рф, спецразрешения на перевозку негабаритных грузов. Но у меня есть ещё посуточная квартира. На ней я учусь делать продукты с ИИ-агентами Claude Code и Codex. Ниже — первый из них: Telegram-бот «33 квадрата». Он ловит брони, ставит код на умный замок и сам проводит гостя через заселение. Без прикрас.
Что было до бота
Брони приходят с нескольких площадок. Каждую надо заметить, завести, отправить гостю код от замка и объяснить, как добраться и какие правила в доме.
Сначала заселение шло автосообщениями в WhatsApp. WhatsApp заблокировали — сам мессенджер, а не мой аккаунт. Перешёл на автосообщения в Telegram — заблокировали и Telegram. Нужен был свой бот, а не рассылка с чужой площадки.

Что получилось
Бот работает на моей квартире. Система из трёх частей: админ-бот для меня, гостевые боты в Telegram и MAX и мини-приложение с календарём.
- Ловит брони из писем и через API RealtyCalendar. Понимает письма пяти площадок: Авито, Островок, Суточно, Яндекс, Отелло.
- Карточка брони в админ-боте: даты, прогресс гостя по инструкциям, календарь.
- Гостевой бот в Telegram и MAX. Гость нажимает ссылку из SMS и проходит инструкции: как добраться, как войти, правила.
- Код на умном замке. Кнопка ставит код через TTLock: он действует с 14:00 дня заезда до 12:10 дня выезда. Бронь отменили — код удаляется.
- Журнал замка. Мне приходит «дверь открыта», «неверный код», «батарея садится».
- Залог через мой же сервис SafeZalog: сумма замораживается на карте, а не списывается. В день заезда бот напоминает гостю про залог.
- Вопрос про выезд. В 20:00 бот спрашивает гостя, когда он уезжает.

Решения остаются за мной. Код на замок и SMS гостю — по кнопке: хозяину остаётся нажать пару кнопок. Полностью автономным бот не делал намеренно.
Как это строилось
Бот не одиночка. Из его идей вырос GuestCom — мультитенантный сервис для хостов с несколькими объектами. Но сначала был этот, простой.
- Март 2026. Первая версия, от идеи до запуска — неделя. Я сделал её по-быстрому и выкатил на сервер напрямую, без git, поэтому бот сразу начал работать.
- 22 июля. Код попал в git: к этому времени я научился с ним работать.
- 23 июля. Залог через SafeZalog: клиент партнёрского API, кнопка «Внести депозит» в Telegram- и MAX-ботах, напоминание в день заезда, страница возврата «Вернуться в бота».
- 30–31 июля. Команда `/payback`, уведомление о возврате залога.
- 12 августа. Отмены броней из RealtyCalendar и коды на замок TTLock.
- 19–20 сентября. Поллер научился восстанавливать бронь, которую RealtyCalendar вернул из «Отменено».
- 21–24 октября. Журнал замка: открытия, неверные коды, батарея.
Дня большого релиза не было. Бот рос по реальной боли: что мешает мне и гостям сегодня, то и делаем.
Как я работаю с ИИ-агентами
Я не пишу код. Моя работа — объяснить, что болит, и проверить, что стало лучше. Детали процесса — в статье про СУЗ. Здесь то же самое в малом: заметка → задача на GitHub → Claude Code разбирается, Codex пишет, второй ИИ-агент ревьюит → выкатка.
Для SafeZalog перед кодом были документы: дизайн интеграции, техзадание для соседнего сервиса и план реализации. Все лежат в репозитории.
Что пошло не так
Четыре месяца без git. Первую версию я выкатил на сервер напрямую. Бот работал, но правки шли без истории и без отката: если что-то сломается, вернуться некуда. В git код попал только в июле. Вывод: сначала git, потом сервер. Сейчас на сервер у меня не уходит ничего, чего нет в git.
Блокировки мессенджеров. Автосообщения в WhatsApp, потом в Telegram — оба раза упёрся в блокировку. Вывод: не строить заселение на рассылке через чужие каналы. Нужен свой бот, которым управляешь сам.
Ссылка, которую режут. У бота короткая ссылка на свой домен. Оказалось, что на мобильном интернете с белыми списками она не открывается. Гость жмёт ссылку на бота — и ничего. Добавили команду `/max`: она даёт прямую ссылку на бота в MAX в обход короткого домена. Вывод: ссылка гостю должна открываться у гостя, а не у меня. И вообще гостя чаще подводит не бот, а отсутствие мобильного интернета — хотя бот работает и в Telegram, и в MAX.
Бронь пропала из календаря. RealtyCalendar сам перевёл одну бронь в «Отменено», а через сутки вернул в «Бронь». Бот отмену обработал, а возврата не знал: бронь осталась скрытой, и в календаре её не было. Разобрали отдельным разбором ошибки, добавили переход «отменено → снова активна» и тест. Вывод: у внешней системы больше состояний, чем кажется в документации, — смотрите реальные письма и записи.
Платёж по СБП не штраф. Когда подключал залог, бот принял списание по СБП за штраф с залога. Исправили: такая операция — прямое списание, а не холд. Вывод: названия событий платёжной системы надо проверять на реальных платежах, а не угадывать.
Шум в уведомлениях. Сначала журнал замка слал уведомления всем админам. Остальным он мешал. Теперь только владельцу. Вывод: уведомление, которое никого не касается, — шум.
Цифры
- 44 коммита, 4 принятых пулл-реквеста.
- ≈ 7 900 строк кода (Python и HTML).
- 47 тестовых функций pytest.
- 5 площадок, письма которых понимает бот.
- 3 сервиса на сервере, запущены как systemd-юниты.
- 1 неделя от идеи до запуска в марте 2026 года.
- 180 заселений через бота с марта по октябрь 2026 года, без отменённых броней.
Расходы на подписки и серверы я описал в статье про СУЗ.
Можно ли так же у вас

Если вы сдаёте квартиры посуточно, пробовали собрать бота сами и упёрлись — в замок, в интеграцию с календарём, в блокировки, в то, что ИИ ломает работающее, — напишите. Расскажу, как можно сделать такое для вас.