Бот для телеграм для проверки талонов к врачу через апи горздрава
-
склонировать или скопировать репозиторий
git clone <repository-url> cd <repository-folder>
-
создать
.envфайл в корне проектаBOT_TOKEN="ваш телеграм токен от @BotFather" DB_FILE="sqlite.db" CHECKER_TIMEOUT_SECS=60
-
создать виртуальное окружение
python -m venv venv
-
активировать виртуальное окружение
Linux
source venv/bin/activateWindows
venv\Scripts\activate
-
установить зависимости
# Установить зависимости pip install -r requirements.txt -
Запуск
python3 src/app.py
Настройки для запуска программы хранятся в текстовом файле .env.
| Параметр | Описание |
|---|---|
BOT_TOKEN |
токен телеграм бота от @BotFather |
DB_FILE |
имя файла базы данных (создается новый если файла нет) |
CHECKER_TIMEOUT_SECS |
период проверки свободных талончиков через api горздрава |
Бот проверяет периодически доступность талончиков к врачу и выводит оповещение в телеграм пользователю, если у врача есть свободные талончики.
| Команда | Описание |
|---|---|
/status |
показать статус врача и статус отслеживания |
/on |
включить отслеживание свободных мест для записи |
/off |
отключить отслеживание свободных мест для записи |
/help |
помощь |
/start |
создать профиль пользователя бота |
/delete |
удалить профиль пользователя бота |
/set_doctor |
задать врача для отслеживания |
- хранит пользователей бота:
- телеграм ид
- включен ли мониторинг свободных мест у врача
- ссылка на врача
- время последнего взаимодействия с ботом
- хранит врачей пользователя:
- ид района
- ид медучреждения
- ид специальности
- ид врача
https://github.com/egorantonov/gorzdrav/wiki/SPB-Gorzdrav-API-Documentation
- https://gorzdrav.spb.ru/_api/api/v2/shared/districts - список районов
- https://gorzdrav.spb.ru/_api/api/v2/shared/district/10/lpus - список медучреждений в 10 районе
- https://gorzdrav.spb.ru/_api/api/v2/schedule/lpu/229/specialties - информация по всем свободным специальностям в больнице с ид 229
- https://gorzdrav.spb.ru/_api/api/v2/schedule/lpu/30/speciality/981/doctors - информация по доступным врачам в больнице 30 по специальности 981
- https://gorzdrav.spb.ru/_api/api/v2/schedule/lpu/1138/doctor/36/timetable - расписание врача 36 в больнице 1138
- https://gorzdrav.spb.ru/_api/api/v2/schedule/lpu/30/doctor/222618/appointments - доступные назначения к врачу
При получении списка докторов на сайте горздрава, можно сразу получить информацию о количестве у них свободных мест в поле freeParticipantCount. Далее при выборе места для записи запрашивается информация о appointments. Но количество appointments может отличаться от количества свободных номерков freeParticipantCount в поле доктора. Т.е. в списке докторов у него может не быть свободных номерков, но быть несколько свободных appointments.
Запуск тестов
cd src
python -m pytest .v1.2.2- фикс модели ApiAppointmentv1.2.0- Автоматически отключаются проверку у пользователей, которых не было видно больше 2х месяцевv1.1.0- Добавлена возможность устанавливать количество дней в пределах которого ищется талончик от текущего дня. (в БД появилась новая колонка у пользователя)