Skip to content

YanaRyazanova/OOPProfect

Repository files navigation

MathMech Chat Bot

Проект по ООП студентов УрФУ

Название проекта: Чат-бот "Матмех"

Участники: Рязанова Яна Андреевна ФТ-202, Бараковский Михаил Сергеевич ФТ-202, Павлов Захар Витальевич ФТ-202, Рогов Артемий Фт-201

Основные сценарии использования

Пользователь хочет иметь от этого бота функционал, упрощающий жизнь на матмехе, для этого имеются следующие опции:

  1. Оповещает о начале занятия за 10 минут (где, когда)
  2. По просьбе скидывает расписание на текущий и на следующий день
  3. Наличие кнопки «Я в столовой» и остальные пользователи бота увидят, сколько человек в столовой, чтобы оценить свои шансы поесть в большак

Основные компоненты системы

Внешный слой (User Interface) — взимодействие с пользователем. Будет класс, который обрабатывает запрос пользователя (разбивает запрос на поля, например метод «дать расписание», ID пользователя — группа) и передаёт дальше. Это будет инфраструктура, которая может быть использована потом в других проектах. Этот слой взаимодействует с Application, чтоб отображать данные на нужной платформе, с Domain, чтобы передавать полученные от пользователя данные, и с Infrastructure, чтобы делать запросы к базе данных.

Application — Интерфейс взаимодействия с разными платформами (Алиса, Телеграм)

Domain — есть интерфейс, который описывает поведение всех «фич», и от которого наследуются классы каждой отдельной «фичи». Каждая фича — отдельный класс (Single Responsibility Principle). Оповещение о начале занятий: не получает никаких данных, отправляет пользователю информацию, основываясь на Базе Данных (делаем запрос к Infrastructure) и текущем времени. Все действия типа «получить команду от пользователя и выдать что-то из Базы Данных» помещаем в один абстрактный класс (Расписание/ссылки на чаты): получаем запрос от пользователя скинуть расписание/ссылку на чат, обращаемся к Infrastructure и выдаём пользователю информацию из БД. Кнопки «Я в столовой»/«Сколько людей в столовой»: вызывается функция «увеличить счётчик» / возвращается счётчик.

Infrastructure — База данных хранит расписание. Должен быть класс, который принимает от внешнего слоя данные, которые ввёл пользователь, и добавляет новое значение в базу данных

Точки расширения

  1. Разные статусы пользователей

    1.1. Интерфейс для студента

    1.2. Интерфейс для преподавателя (он сможет скидывать дз учебным группам, которые есть в ботe)

  2. Кроссплатформенность

    2.1. Интерфейс для Телеграма

    2.2. Интерфейс для BК

  3. База данных

    3.1. SQLite

    3.2. CSV

About

MathMechBot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages