Проект: Мониторинг талонов с zdrav.mosreg.ru  Публичный пост
26 ноября 2025  109
Мониторинг талонов с zdrav.mosreg.ru
https://github.com/crutch12/zdrav-bot

Прошу прощения за нейрокартинку на превью 😖

Я думаю многим знакома ситуация: заходишь на сайт для записи к врачу, выбираешь нужного, а там... 0 мест ☠️. А листа ожидания — нет.
И это может повторяться дни и недели, так почему бы это не автоматизировать? 🧰

О себе

Я Костя. Пилю всякое в вебе 🐒 пока пью пиво 🍺

3 года назад на коленке набросал бота. Довольно долго им пользовались мои друзья/знакомые. Сейчас решил его реанимировать и представить на суд общественности — вдруг кому-нибудь пригодится.

Делал для себя, поэтому написано через жопу с любовью 💖.

О проекте

Телеграм бот, который интегрируется с https://zdrav.mosreg.ru/ (врачебные госуслуги московской области).

На вход - номер полиса и дата рождения, на выход - уведомления о появлении новых талонов.

Бот: https://t.me/zdrav_mosreg_subscribe_bot
Исходники: https://github.com/crutch12/zdrav-bot

Как появилась идея

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

Это создавало неудобства не только мне, но и моей девушке, поэтому захотелось исправить эту ситуацию.


Конечно же было принято решение писать Телеграм бота 🤖 (через экранные кнопки, т.к. мини аппов тогда ещё не существовало).

Разработка

Бюджет: свободное время и банка пива 🍺.
Главный критерий: сделать максимально быстро и не страдать при использовании.

Поэтому в течение пары выходных дней

  • Вытащил апишки, сгенерировал типы, подготовил запросы к их api ☎️
  • Добавил обработку tg commands и actions (я один считаю, что обработка action с необходимостью парсить строку сделана неудобно? 🤔)
  • Подключился к Firestore 💾
  • Накидал cron, который каждые 10 минут ходит по подпискам и сравнивает было/стало 🦔
  • Зарегестрировал бота 🤖

Никаких DRY, KISS, SOLID и т.д. Проще и быстрее - лучше, даже если в результате получается каша.
Камон, это же обычный crawler, какие тут подходы и архитектура...

(2025) В последние пару дней реанимировал запросы (api изменилось за эти годы), обновил типы, сделал UX более удобным (например сообщения теперь обновляются, а не создаются новые)

Стек

Ну вы помните про главный критерий 🌚

  • Берём сначал укропа!
  • Бот: node.js, telegraph
  • БД: Firestore
  • Хост: VPS
  • (2025) Для локальной отладки веб хуков использую tuna.am (кто не видел tuna - крайне рекомендую ознакомиться, это лучший подобный инструмент на рынке. даже есть пост в клубе)

Думаю, что можно было бы взять какой-нибудь n8n, но на нём кода было бы больше, да и получилось бы дольше.

Как это работает

Со стороны пользователя

  • Пользователь вводит номер полиса и дату рождения 🖊️
  • Пользователь выбирает специальность врача и больницу 🏥
  • Выбирает интересных ему врачей и жмёт "подписаться" 🧑‍⚕️
  • (и так по новой)

Со стороны системы

  • Бот интегрируется с апи zdrav.mosreg.ru ☎️
  • Каждые 10 минут проходится по подпискам 🦔 и сравнивает доступные места с тем, что сохранено в БД 💾
  • Мест стало больше, чем 10 минут назад? Отлично: оповещаем пользователя 🔔


⚠️ Важно: бот сам не делает никаких create/update/delete действий, записываться нужно своими ручками.

Планы на будущее

А их нет 🤡
Делал же для себя. Задачу решает, а большего мне и не надо.
Если будут баги/пожелания, то буду исправлять/добавлять.

В целом, системы вида "каждые N минут парси сайт / читай api, сравнивай с тем, что было и присылай уведомление по условию X" довольно часто пишутся людьми для себя. Будь то талоны ко врачу или мониторинг уценки в ДНС.

Кажется, что можно написать кучу подобных решений и объединить это в одну мониторинг систему. 🤔
Или такое уже есть? Я не видел. Все, кого знаю, пишут обычно такое под себя.

Вместо выводов

Понимаю, что этот бот актуален только жителям московской области, а тут таких меньшинство, так что пригодится далеко не всем.

Ну и ничего выдающегося в этом решении нет, но если кому-то вдруг пригодится, то буду рад 🤗

Связанные посты
Откомментируйте первым 👇

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб