Техническое задание на разработку Telegram-бота "Умный Кинобот 2.0"
Цель: Создать бота для поиска информации о фильмах и получения персонализированных рекомендаций.
1. Общие требования
- Язык программирования: Python
- Библиотека: python-telegram-bot (PTB) версии 20.x+
- Данные о фильмах: Использовать готовый словарь (прилагается) или API (по желанию).
- Бот должен:
- Отвечать на команды и текстовые сообщения.
- Поддерживать кнопки для удобства взаимодействия.
- Сохранять контекст диалога при выдачи рекомендаций.
2. Обязательный функционал
A. Команды
Команда |
Действие |
/start |
Приветствие + краткое описание возможностей бота. |
/film |
Поиск фильма по названию (через текстовый ввод).
Организовать возможность использовать команду с разными параметрами (поиск по названию, на жанру и рейтингу, по жанру и году) |
/help |
Список всех команд с примерами использования. |
/recommend |
Запуск опроса для персональной рекомендации (FSM). |
B. Обработка текстовых сообщений
-
При вводе названия фильма (например, "Интерстеллар") бот выводит:
- Год выпуска
- Жанр
- Режиссёра
- Рейтинг
-
Если фильм не найден: "Фильм не найден. Попробуйте /film".
C. Система рекомендаций (/recommend
)
Бот задает последовательно минимум 3 вопроса и выдает рекомендацию (добавьте большее число вопросов, для большего балла):
- Жанр (кнопки: Фантастика, Комедия, Драма, Боевик).
- Год (кнопки: 2020+, 2010-2019, 2000-2009, 1990-1999).
- Минимальный рейтинг (кнопки: Выше 8, 7-8, 5-7, Любой).
Результат:
"Вам может понравиться: Интерстеллар (2014, фантастика, рейтинг 8.6)"
3. Дополнительные функции (на дополнительные баллы)
- Поиск по режиссёру (текстовый запрос: "Фильмы Нолана").
- Случайный фильм (кнопка в меню).
- Статистика (/stats): Общее количество фильмов, средний рейтинг.
- Избранное (/favorites): Сохранение понравившихся фильмов.
4. Особенности технической реализации
- Используйте
ReplyKeyboardMarkup
для этапов рекомендаций.
- Используйте кнопки BotCommand для организации меню бота
- FSM для рекомендаций
- Используйте готовый словарь и добавьте в него еще несколько фильмов с жанрами, которые еще не представлены
- Используйте
context.user_data
для хранения ответов пользователя.
- Добавьте обработку ошибок (например, если введен несуществующий фильм).
- Оптимизируйте код: вынесите поиск фильмов в отдельные функции.
Любые другие улучшения и добавление другого функционала привествуется и оценивается дополнительными баллами.