Цель командного проекта — разработать программу-бота для взаимодействия с базами данных социальной сети. Бот будет предлагать различные варианты людей для знакомств в социальной сети ВКонтакте в виде диалога с пользователем.
Вам предстоит:
- разработать программу-бота на Python,
- спроектировать и реализовать базу данных (БД) для программы,
- настроить взаимодействие бота с ВКонтакте,
- написать документацию по использованию программы.
В результате выполнения этого задания вы:
- получите практический опыт работы в команде;
- прокачаете навыки коммуникации и умение выполнять задачи в срок;
- закрепите навыки работы с GitHub и программирования на языке Python;
- разработаете с нуля полноценный программный продукт, который можно будет добавить в портфолио бэкенд-разработчика.
- Изучили «Инструкцию по выполнению командного проекта» и «Правила работы в команде» в личном кабинете.
- Знаете, кто с вами в команде.
- Познакомились со своей командой и определились, каким способом будете общаться: переписка в любом мессенджере, видеозвонки.
- Договорились, кто будет размещать общий репозиторий проекта и отправлять его на проверку.
- У вас установлен Python 3.x и любая IDE. Мы рекомендуем работать с Pycharm.
- Компьютер настроен для работы с БД PostgreSQL.
- Установлен git и создан аккаунт на GitHub.
- Создана группа в ВКонтакте, от имени которой будет общаться разрабатываемый бот. Получен токен для группы. Инструкцию можно посмотреть здесь.
Если все этапы чеклиста пройдены, можно стартовать работу над проектом. Успехов в работе.
Нужно разработать программу-бота, который выполняет действия:
- Используя информацию (возраст, пол, город) о пользователе, который общается с ботом в ВКонтакте, сделать поиск других пользователей ВКонтакте для знакомств.
- У тех людей, которые подошли под критерии поиска, получить три самые популярные фотографии в профиле. Популярность определяется по количеству лайков.
- Выводить в чат с ботом информацию о пользователе в формате:
- имя и фамилия,
- ссылка на профиль,
- три фотографии в виде attachment(https://dev.vk.com/method/messages.send).
- Должна быть возможность перейти к следующему человеку с помощью команды или кнопки.
- Сохранить пользователя в список избранных.
- Вывести список избранных людей.
Обратите внимание: инструкция для получения токена для ВК находится в вашем личном кабинете в итоговом блоке по модулю.
Работа над проектом рассчитана на 10 дней для команды из 2-3 человек. Для планирования времени рекомендуем опираться на roadmap. Придерживайтесь следующего деления проекта на этапы и задачи участников.
1. Вариант для команды из 2 участников
- Участник А. Создайте общий репозиторий на GitHub. Для предоставления доступа другим участникам нужно зайти в
Settings
репозитория проекта, найти разделCollaborators
, кликнуть по кнопкеAdd people
, добавить ник напарника и выбрать рольAdmin
. - Участник Б. Спроектируйте БД. В БД должно быть создано минимум 3 таблицы.
- Участник А. Разработайте взаимодействие с ВКонтакте для получения информации о пользователях и их фотографий. Можно использовать готовые библиотеки.
- Участник Б. Реализуйте БД для программы с помощью PostgreDB. Приложите скрипты для создания таблиц, чтобы преподаватель смог создать у себя БД. Можно использовать ORM.
- Участник А.
- Разработайте взаимодействие с ботом. Можно воспользоваться этим шаблоном. Будет плюсом, если вы добавите кнопки для более удобного взаимодействия с пользователем.
- Подготовьте проект к сдаче курсовой работы. Исправьте ошибки.
- Участник Б.
- Реализуйте интеграцию бота и БД. Напишите документацию.
- Подготовьте проект к сдаче курсовой работы. Исправьте ошибки.
2. Вариант для команды из 3 участников
- Участник А. Создайте общий репозиторий на GitHub. Для предоставления доступа другим участникам нужно зайти в
Settings
репозитория проекта, найти разделCollaborators
, кликнуть по кнопкеAdd people
, добавить ник напарника и выбрать рольAdmin
. - Участник Б. Спроектируйте БД. В БД должно быть создано минимум 3 таблицы.
- Участник B. Разработайте взаимодействие с ВКонтакте для получения информации о пользователях и их фотографий. Можно использовать готовые библиотеки.
- Участник А. Разработайте взаимодействие с ботом. Можно воспользоваться этим шаблоном. Будет плюсом, если вы добавите кнопки для более удобного взаимодействия с пользователем.
- Участник Б. Реализуйте БД для программы с помощью PostgreDB. Приложите скрипты для создания таблиц, чтобы преподаватель смог создать у себя БД. Можно использовать ORM.
- Участник B. Реализуйте интеграцию бота и БД.
- Участник A. Подготовьте проект к сдаче курсовой работы. Исправьте ошибки.
- Участник Б. Подготовьте проект к сдаче курсовой работы. Исправьте ошибок.
- Участник В. Напишите документацию.
- Получать токен от пользователя с нужными правами.
- Добавлять человека в чёрный список, чтобы он больше не попадался при поиске, используя БД.
- Создать кнопки в чате для взаимодействия с ботом.
- Добавить возможность ставить/убирать лайк выбранной фотографии.
- К списку фотографий из аватарок добавлять список фотографий, где отмечен пользователь.
- В ВКонтакте максимальная выдача при поиске — 1 000 человек. Подумайте, как это ограничение можно обойти.
- Можно усложнить поиск, добавив поиск по интересам. Разбор похожих интересов — группы, книги, музыка — нужно будет провести с помощью анализа текста.
- У каждого критерия поиска должны быть свои веса, то есть совпадение по возрасту должно быть важнее общих групп, интересы по музыке — важнее книг, наличие общих друзей — важнее возраста и т. д.
- разработан бот, и все части кода объединены в главной ветке (master/main);
- один из участников команды добавил ссылку на публичный репозиторий в личном кабинете в поле «Ссылка на решение» и в поле «Отправить на проверку эксперту» проставил галочку.
Зачёт по разработанному проекту ставится, если созданный программный продукт соответствует критериям:
- Отсутствуют ошибки (traceback) во время выполнения программы.
- Результат программы записывается в БД. Количество таблиц должно быть не меньше трёх. Приложена схема БД.
- Программа добавляет человека в избранный список, используя БД.
- Программа декомпозирована на функции/классы/модули/пакеты.
- Написана документация по использованию программы.
- Код программы удовлетворяет PEP8. Перед отправкой решения на проверку проверьте код с помощью линтеров.
Зачёт ставится всем студентам-участникам команды при выполнении всех требований командного проекта.