sk-top3/sutki35
Создайте полнофункционального Telegram-бота для агентства недвижимости, который позволяет сдавать квартиры посуточно. Бот должен иметь каталог квартир, систему бронирования, интеграцию платежей и админ-панель для управления контентом. Технические требования 1. Архитектура и технологии · Фреймворк: Aiogram 3.x (асинхронный) · База данных: SQLite с SQLAlchemy 2.0 ORM · Оплата: Интеграция с ЮKassa/Telegram Payments · Состояния: FSM (Finite State Machine) для многошаговых сценариев · Конфигурация: python-dotenv для управления переменными окружения 2. Основные функции · Пользовательская часть: · Просмотр каталога квартир с фотографиями, описанием, ценами · Фильтрация по параметрам (цена, количество комнат, район) · Пошаговое бронирование с выбором дат · Оплата через Telegram Payments или ЮKassa · История бронирований пользователя · Система уведомлений о статусе брони · Административная часть: · Добавление/редактирование/удаление квартир · Загрузка фотографий (до 5 фото на квартиру) · Управление бронированиями (подтверждение, отмена) · Просмотр статистики (занятость, доходы) · Команда для рассылки уведомлений всем пользователям 3. Структура базы данных ```sql - Пользователи (user_id, username, full_name, phone, registration_date) - Квартиры (id, title, description, address, price_per_day, rooms, area, amenities, photos, is_available) - Бронирования (id, user_id, apartment_id, check_in, check_out, total_price, payment_status, booking_date, status) - Платежи (id, booking_id, transaction_id, amount, currency, status, payment_date) ``` 4. Интерфейс бота · Интуитивное меню с кнопками · Inline-кнопки для навигации по каталогу · Галерея фотографий квартир (использовать InputMediaPhoto для альбомов) · Календарь для выбора дат (можно использовать инлайн-клавиатуру) · Подтверждение брони с деталями перед оплатой · Чек после успешной оплаты Детальные инструкции для генерации кода 1. Структура проекта Создайте следующую структуру файлов: ``` real_estate_bot/ ├── data/ (директория для БД) ├── bot/ │ ├── __init__.py │ ├── config.py (настройки, загрузка .env) │ ├── database.py (модели SQLAlchemy, инициализация) │ ├── keyboards.py (все клавиатуры и inline-кнопки) │ ├── filters.py (кастомные фильтры, например, для админов) │ ├── states.py (состояния FSM для бронирования) │ ├── middlewares.py (при необходимости) │ ├── handlers/ │ │ ├── __init__.py │ │ ├── user_handlers.py (команды для пользователей) │ │ ├── admin_handlers.py (команды для админов) │ │ └── payment_handlers.py (обработка платежей) │ └── utils/ │ ├── __init__.py │ ├── payment.py (логика работы с платежами) │ └── notifications.py (отправка уведомлений) ├── .env.example (шаблон для .env файла) ├── requirements.txt ├── main.py (точка входа) └── README.md (инструкция по запуску) ``` 2. Требования к коду · Полностью асинхронная реализация · Обработка ошибок с try-except блоками · Валидация вводимых данных (дат, контактной информации) · Логирование ключевых событий · Комментарии на английском или русском языке для сложных участков кода 3. Ключевые сценарии для реализации Сценарий 1: Бронирование квартиры 1. Пользователь выбирает квартиру из каталога 2. Бот запрашивает дату заезда и выезда через FSM 3. Система проверяет доступность дат 4. Рассчитывается итоговая стоимость 5. Показывается подтверждение с деталями 6. Генерация платежного счета 7. Обработка успешной/неуспешной оплаты 8. Уведомление пользователя и администратора Сценарий 2: Добавление новой квартиры (админ) 1. Админ отправляет команду /add_apartment 2. Бот пошагово запрашивает: название, описание, адрес, цену, количество комнат, удобства 3. Запрос загрузки фотографий (поддержка нескольких фото) 4. Сохранение в БД и подтверждение 4. Интеграция платежей · Использование provider_token для Telegram Payments · Реализация PreCheckoutQuery и SuccessfulPaymentHandler · Альтернативная интеграция с ЮKassa API для карточных платежей · Обновление статуса брони после успешной оплаты 5. Тестовые данные Для проверки работоспособности создайте: · 5 тестовых квартир с разными параметрами · 2 тестовых пользователя (обычный и администратор) · Систему сброса данных для тестирования (команда /test_reset для админа) Инструкция для проверки После генерации кода, пожалуйста, протестируйте следующее: 1. Запуск бота: Убедитесь, что бот запускается без ошибок 2. Команда /start: Проверьте ответ бота и создание записи в БД 3. Каталог квартир: Проверьте отображение всех квартир, фотографий, кнопок 4. Процесс бронирования: Пройдите полный цикл бронирования (без реальной оплаты, используя тестовый режим) 5. Админ-функции: Добавьте новую квартиру, проверьте загрузку фото 6. Платежи: Протестируйте успешную и отмененную оплату Требования к документации 1. Подробный README.md с инструкцией по установке и настройке 2. .env.example с объяснением всех переменных окружения 3. Комментарии в коде для сложных функций 4. Примеры запросов к API платежной системы (если используется внешняя) Критерии успешной реализации · Бот запускается и отвечает на команды · Каталог квартир отображается корректно · Процесс бронирования работает от начала до конца · Оплата в тестовом режиме проходит успешно · Админ-панель позволяет управлять квартирами · Все данные сохраняются в БД и корректно извлекаются · Обработка ошибок (некорректные даты, недоступность квартиры и т.д.) · Многоязычные сообщения об ошибках и успешных операциях Сгенерируйте полный код проекта, готовый к запуску после установки зависимостей и настройки переменных окружения. Код должен быть производственного качества с учетом лучших практик Python и Aiogram.
Python · рейтинг 0 · 👍 0 · ❤️ 0 · 💎 0 · 0 форков · ссылка на SourceCraft
Дата анализа: 29.09.2026 22:57
Почему такой балл
Категории без данных не обнуляют итог: их вес перераспределяется между категориями, где балл есть.
Сильные и слабые стороны
Слабые: Документация: 38, Активность: 0, Issues: нет данных, Проект давно не проявлял активность, Не найдено тестов, Мало релизов за последние 30 дней, Мало merge requests за последние 30 дней, Отсутствует лицензия
Сводка YandexGPT
Находки и рекомендации
-
Проект давно не проявлял активность
Активность · критическая
+12 к Score
Последняя известная активность была около 232 дней назад (источник: repository.last_updated).
Проверьте актуальность проекта, backlog и владельцев активных направлений.
-
Не найдено тестов
Состояние кода · высокая
+12 к Score
В дереве репозитория не обнаружено ни каталогов tests/test/spec, ни файлов с типовыми именами тестов.
Добавьте тесты хотя бы для критичной части кодовой базы и подключите их к CI.
-
Мало релизов за последние 30 дней
Активность · высокая
+9 к Score
Подметрика «Релизы» — 0 из 100. Полный балл — от 3 релизов за 30 дней.
Выпустите релиз или опишите, почему проект их не использует — балл считает отсутствие релизов недобором.
-
Мало merge requests за последние 30 дней
Активность · высокая
+9 к Score
Подметрика «Merge requests» — 0 из 100. Полный балл — от 10 merge requests.
Проверьте, что изменения проходят через merge requests, а не только прямыми коммитами.
-
Отсутствует лицензия
Документация · высокая
+6 к Score
В корне репозитория нет файла LICENSE/COPYING. Без лицензии использование проекта юридически неясно.
Добавьте LICENSE с выбранной лицензией (MIT, Apache-2.0, GPL и т.п.).
-
Нет конфигурации линтера/форматтера
Состояние кода · средняя
+6 к Score
В репозитории не найдено конфигов известных линтеров/форматтеров (ESLint, Ruff/Flake8, Prettier, rustfmt и т.п.).
Подключите линтер и форматтер под используемый стек и зафиксируйте правила в конфиге.
-
Нет CHANGELOG и каталога docs/
Документация · средняя
+5 к Score
Не найдены CHANGELOG и каталог docs/ — история изменений и подробная документация отсутствуют.
Заведите CHANGELOG.md и каталог docs/ для пользовательской и разработческой документации.
-
Нет CONTRIBUTING и CODEOWNERS
Документация · средняя
+4 к Score
Не найдены файлы CONTRIBUTING и CODEOWNERS — внешним контрибьюторам неясен процесс.
Добавьте CONTRIBUTING.md с процессом PR и CODEOWNERS для автоназначения ревьюеров.
-
Нет инструкций по сборке и тестам
Документация · высокая
+3 к Score
В README не описано, как собрать проект и запустить тесты.
Добавьте разделы Build и Test с командами и необходимыми зависимостями.
-
README неполный
Документация · средняя
+1 к Score
README есть, но «README» — 92 из 100: не хватает объёма или раздела о структуре.
Допишите README: зачем проект и из чего состоит репозиторий.
-
Нет lockfile
Состояние кода · низкая
+1 к Score
Манифест зависимостей есть, но lockfile не найден — версии зависимостей не зафиксированы.
Добавьте и закоммитьте lockfile (package-lock.json/poetry.lock/go.sum и т.п.) для воспроизводимых сборок.
История проверок
- 29.09.2026 22:57 — 32
Безопасность (AppSec) и CI/CD здесь не оцениваются: к ним есть доступ только по PAT владельца репозитория.