Реализовать напоминания клиентам в телеграм боте.

Откликнуться
g
Заказчик
Отзывы фрилансеров: + 0 - 0
Зарегистрирован на сайте 2 месяца
Бюджет: по договоренности
# Требования:
- **Python 3.11+**
- **Litestar** – веб-фреймворк
- **SQLAlchemy**, **Advanced-Alchemy** – ORM,
    Понимание как работают модели, как запрашивать данные опимально, понимание как работают репозитории advanced-alchemy
- **APScheduler** – планировщик задач
- **aiogram** – Telegram bot framework
- **that_depends** – DI контейнер

нужно создать ряд веток уведомлений и напоминаний через ТГ-бот.
Как по триггеру, так и по расписанию.
Например, уведомления и напоминания о событии.
Сообщения по расписанию с обратной связь в виде кнопок в сообщении.

пример веток

пример возможного ТЗ

# ТЗ
Реализовать напоминания клиентам о предстоящих записях за 24 часа, 2 часа и 15 минут до начала в телеграм боте.

## Описание системы
### Архитектура
```
service/
  services/bot.py – BotService логика работы бота
  scheduler.py          – setup_scheduler для регистрации задач
  infra/database/
    models.py           – SQLAlchemy модели
    repositories.py     – репозитории для работы с БД
```

### Таблицы БД
- Appointment – запись клиента на услугу на определенное время
- AppointmentClient – связывает множество клиентов с одной записью
- Client – клиент
- Specialist – специалист, который выполняет услугу
- Business – бизнес в котором работает специалист
- Service – услуга специалиста

### 1. Периодическая задача

В `service/scheduler.py`:

Создать асинхронную функцию `send_appointment_reminders()`.
Сделать inject BotService c помощью DI.
Вызвать BotService метод достающий нужные данные и отправляющий уведомления.

Пример:
```python
@inject
async def some_task(bot_service: BotService = Provide[IOCContainer.bot_service]) -> None:
    pass
```

Зарегистрировать в `scheduler` c интервалом (каждые 5 минут).
Колличество минут вынести как переменную в `settings.scheduler_reminders_interval_in_minutes`.

Пример:
```python
scheduler.add_job(
    ...
)
```

### 2. Логика отправки

В `service/services/bot.py`
в BotService создать функцию, которая делает запрос данных и отправляет уведомления

`time_period` может быть 24ч (`datetime.timedelta(hours=24)`), 2ч, 15мин

Добавить `settings.scheduler_reminders_time_window_in_minutes=1`

1. **Логика фильтрации db_models.Appointment**:
    – `db_models.Appointment.status == models.AppointmentStatus.pending`
    – сформировать временной диапазон в котром будут запрашиваться данные

    начало периода: `datetime.now()` + `time_period` – `settings.scheduler_reminders_time_window_in_minutes`

    конец периода: `datetime.now()` + `time_period` + `settings.scheduler_reminders_time_window_in_minutes`

    – Сделать запрос, где `db_models.Appointment.start_date` внутри диапазона

2. **Собрать данные**:
   – service_name – из `appointment.service.name`
   – specialist_name – из `appointment.specialist.user.first_name`, `appointment.specialist.user.last_name`  
   – start_date – из `appointment.start_date`
   – business_address – из `appointment.location.address`
   – business_phone – из `appointment.specialist.business.phone`

3. **Отправить каждому клиенту**:
   – Получить `client.user.tg_chat_id` из `appointment.appointment_clients.clients.user`
   – Вызвать `bot_service.send_message(chat_id, message)`

### 3. Формат сообщения

за 24 часа
```
🔔 НАПОМИНАНИЕ О ЗАПИСИ

Завтра в {time} у вас:
{service_name} у {specialist_name}

📍 {business_address}
📞 Контакты: {business_phone}
```

за 2 часа
```
⏰ СКОРО ВСТРЕЧА!

Через 2 часа в {time}:
{service_name} у {specialist_name}

📍 Адрес: {business_address}
📞 Телефон: {business_phone}
```

за 15 минут
```
👋 ЖДЁМ ВАС!

Надеемся, что вы уже в пути. {specialist_name} готов к вашему визиту.
```

## Примечания
- Сделать запрос в БД и логику как можно более оптимальными
- Продумать названия переменных и функций
- Соблюсти стиль и логику в как в других `service/services`
- Используй `typing.Final` для неизменяемых переменных
- Если у клиента нет `tg_chat_id` – пропустить
- Логировать ошибки отправки, не останавливать обработку других клиентов
Разделы:
Опубликован:
22.12.2025 | 11:42 [поднят: 22.12.2025 | 11:42]
Откликнуться

Выберите способ верификации:

Обновите страницу после прохождения верификации.

Посмотреть другие заказы Разместить заказ

Теги:

Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».