Олимпиадный тренинг

Задача . Проект "Умный Кинобот 2.0"


Задача

Темы:

Техническое задание на разработку Telegram-бота "Умный Кинобот 2.0"

Цель: Создать бота для поиска информации о фильмах и получения персонализированных рекомендаций.

 

1. Общие требования

  • Язык программирования: Python
  • Библиотека: python-telegram-bot (PTB) версии 20.x+
  • Данные о фильмах: Использовать готовый словарь (прилагается) или API (по желанию).
  • Бот должен:
    • Отвечать на команды и текстовые сообщения.
    • Поддерживать кнопки для удобства взаимодействия.
    • Сохранять контекст диалога при выдачи рекомендаций.

2. Обязательный функционал

A. Команды

Команда Действие
/start Приветствие + краткое описание возможностей бота.
/film Поиск фильма по названию (через текстовый ввод).
Организовать возможность использовать команду с разными параметрами (поиск по названию, на жанру и рейтингу, по жанру и году)
/help Список всех команд с примерами использования.
/recommend Запуск опроса для персональной рекомендации (FSM).

B. Обработка текстовых сообщений

  • При вводе названия фильма (например, "Интерстеллар") бот выводит:

    • Год выпуска
    • Жанр
    • Режиссёра
    • Рейтинг
  • Если фильм не найден: "Фильм не найден. Попробуйте /film".

C. Система рекомендаций (/recommend)

Бот задает последовательно минимум 3 вопроса и выдает рекомендацию (добавьте большее число вопросов, для большего балла):

  1. Жанр (кнопки: Фантастика, Комедия, Драма, Боевик).
  2. Год (кнопки: 2020+, 2010-2019, 2000-2009, 1990-1999).
  3. Минимальный рейтинг (кнопки: Выше 8, 7-8, 5-7, Любой).

Результат:

"Вам может понравиться: Интерстеллар (2014, фантастика, рейтинг 8.6)"


3. Дополнительные функции (на дополнительные баллы)

  • Поиск по режиссёру (текстовый запрос: "Фильмы Нолана").
  • Случайный фильм (кнопка в меню).
  • Статистика (/stats): Общее количество фильмов, средний рейтинг.
  • Избранное (/favorites): Сохранение понравившихся фильмов.

4. Особенности технической реализации

  • Используйте ReplyKeyboardMarkup для этапов рекомендаций.
  • Используйте кнопки BotCommand для организации меню бота
  • FSM для рекомендаций
  • Используйте готовый словарь и добавьте в него еще несколько фильмов с жанрами, которые еще не представлены
  • Используйте context.user_data для хранения ответов пользователя.
  • Добавьте обработку ошибок (например, если введен несуществующий фильм).
  • Оптимизируйте код: вынесите поиск фильмов в отдельные функции.
Любые другие улучшения и добавление другого функционала привествуется и оценивается дополнительными баллами. 
 

 


time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя