April 29

Промпт на основе бота по маникюру

Напиши полностью готового Telegram-бота на Python с использованием библиотеки aiogram (последняя стабильная версия) и SQLite для базы данных.

Бот предназначен для мастера по маникюру

Функционал бота:

Бот должен показывать доступные дни и время для записи.

Расписание формируется на 1 месяц вперед.

Пользователь:

выбирает дату

выбирает доступное время

может записаться только на 1 свободный слот

после бронирования выбранное время автоматически становится недоступным

После выбора времени бот должен запросить:

имя

номер телефона

После подтверждения:

запись сохраняется в базе данных

информация отправляется владельцу бота (ID администратора)

дополнительно формируется сообщение в отдельный Telegram-канал с расписанием

У пользователя должна быть возможность отменить свою запись.

Должна быть админ-панель (доступ только по ID администратора), где можно:

добавлять рабочие дни

добавлять/удалять временные слоты

отменять записи клиентов

полностью закрывать определенный день

просматривать расписание на выбранную дату

Интерфейс должен быть через inline-кнопки.

Все состояния должны быть реализованы через FSM.

Код должен быть:

структурирован по файлам (bot.py, handlers, database, config и т.д.)

с комментариями

готов к запуску

с инструкцией по установке зависимостей

Дополнительные требования:

Использовать SQLite

Проверка, чтобы один пользователь не мог записаться на несколько дат одновременно

При отмене записи слот снова становится доступным

Использовать календарь через inline-кнопки

Красивое форматирование сообщений (HTML)

В конце выведи:

структуру проекта

requirements.txt

инструкцию по запуску 1. Добавить кнопку "Прайсы"

Требования:

Добавить кнопку в главное меню.

При нажатии отправлять HTML-сообщение:

Френч — 1000₽
Квадрат — 500₽

Без использования FSM.

2. Добавить кнопку " Портфолио"

Требования:

Добавить кнопку в главное меню.

При нажатии отправлять сообщение с inline-кнопкой:

Текст кнопки:
Смотреть портфолио

Ссылка:
https://ru.pinterest.com/crystalwithluv/_created/

3. Добавить обязательную проверку подписки на канал

Требования:

В config.py добавить:

CHANNEL_ID

CHANNEL_LINK

Использовать getChatMember для проверки.

Если пользователь не подписан:

сообщение:
"Для записи необходимо подписаться на канал"

кнопки:
Подписаться (ссылка на канал)
Проверить подписку

До подтверждения подписки:

запретить доступ к записи.

После успешной проверки — открыть доступ.

4. Добавить автонапоминание за 24 часа до записи

Требования:

Использовать APScheduler (AsyncIOScheduler).

При создании записи:

автоматически планировать задачу отправки напоминания за 24 часа до даты и времени записи.

Если запись отменяется:

задача напоминания должна удаляться.

Текст напоминания:

"Напоминаем, что вы записаны на наращивание ресниц завтра в {время}.
Ждём вас ️"

Если запись создана менее чем за 24 часа до визита:

напоминание НЕ создаётся.

Задачи должны корректно работать после перезапуска бота:

при старте бота нужно восстанавливать задачи из базы данных.