orioks-monitoring / bot

Бот для отслеживания изменений в образовательной электронной среде (ОРИОКС) НИУ МИЭТ orioks.miet.ru на платформе Telegram
https://orioks-monitoring.github.io/bot/
MIT License
14 stars 4 forks source link

Расписание занятий, информация об аудиториях #30

Open llirrikk opened 2 years ago

llirrikk commented 2 years ago

Что-то вроде @Schedule_MIET_bot:

Список команд:
/now (Сейчас) - Пара сейчас
/today (Сегодня) - Расписание на сегодня
/tomorrow (Завтра) - Расписание на завтра
<День недели> - Расписание на конкретный день в рамках текущей недели
<День недели> <Тип недели> - Расписание на конкретный день указанием типа недели в формате: 1ч, 1з, 2ч, 2з
/teacher_all - Поиск преподавателя
/weekschedule - Расписание на неделю
/weekschedule_short - Расписание на неделю в кратком виде
/week - Текущая неделя
/group - Показать группу
/auth - Авторизация
/auth_teacher - Авторизация для преподавателя
/deauth - Деавторизация
/deauth_teacher - Деавторизация для преподавателя
/subscription - Статус подписки
/subscribe - Подписаться на уведомления
/desubscribe - Отписаться от уведомлений
=======================
Для получения информации о расписании без авторизации запросы:
Сейчас <Группа>
Сегодня <Группа>
Завтра <Группа>
<День недели> <Группа>
<День недели> <Тип недели> <Группа>
Обратная связь: schedule_bot@protonmail.com
@Schedule_MIET
llirrikk commented 2 years ago

Ура, спасибо МИЭТу за https://miet.ru/schedule/data, где можно POST запросом получить данные в JSON без скрапинга

marplyn commented 2 years ago
  • найти свободные аудитории

Бесполезно. Таблица, которую выгружают на сайт миэта, не имеет изначально свободных аудиторий (поэтому всем отказывают в переносе пар, по таблицам в студофисе все забито), свободными они становятся из-за человеческого фактора, как и потом эти найденные "свободные" становятся "занятыми".

  • узнать расписание на неделю/день
  • узнать расписание преподавателя

Реализовано уже аж в двух местах:

  • подписаться на уведомления о расписании следующего дня/следующей недели

Реализовано в Schedule_MIET_bot. Функция удобна только в первый месяц обучения, и то, уведомления часто достают.

Считаю, что не имеет смысла реализовывать эту функцию, потому что:

Если возникнет запрос от пользователей - можно будет вернуться к обсуждению. Пока идем конкретно по пути "бота для отслеживания изменений в ОРИОКС".

mmev commented 2 years ago

@marplyn Мне кажется, что используя Gaming Platform, можно тянуть HTML5 странички и сделать их достаточно удобными для использования. А что касается дублирования функционала в ботах - зачем использовать N источников информации, если её можно собрать в одном месте сделав аля all in one?

marplyn commented 2 years ago

Не думаю, что на данном этапе развития нашего бота просто имеет смысл браться за реализацию этого дополнения, по нескольким причинам

Как закроем основные проблемы и сделаем рефакторинг, вернемся к этому вопросу

Whom-m0rty commented 2 years ago

Хороший повод вернуться к разработке.

image image

Whom-m0rty commented 2 years ago

Как я и говорил в #38 готов взяться за работу.

Проблемы те же, подумаем как их решить?

marplyn commented 2 years ago

Тогда удачно сдохли те варианты 👍🏻

Какие можешь предложить варианты реализации? На мой взгляд, webview или gaming platform (как предлагали выше) было бы более удобно, чем куча команд, как в старом боте с расписанием. Это не будет мешать основному потоку оповещений, и взаимодействовать пользователям будет приятнее и интуитивно понятнее. Можем попробовать сделать подобное?

Whom-m0rty commented 2 years ago

Js я не знаю, можно генерировать картинки.

Но если раскумариться, можно попробовать написать webApp на js.

llirrikk commented 2 years ago

Webview и gaming platform не нативны, поэтому возможна неплавная работа. К тому же эти технологии позволяют немного деанонить пользователей, а у нас политика такая, что нужно стараться собирать как можно меньше информации, потому что пользователь и так оставляет свой пароль (#26). Можно использовать inline-кнопочки или даже aiogram dialog. А выводить каким-нибудь красивым сообщением. Screenshot_2022-09-02-16-09-29-423_org telegram messenger

Прошлые варианты сдохли возможно ненадолго. Может они ещё не успели обновить данные, а может МИЭТ подсунул палку в колеса, изменив респонс какой-то.

  1. У нас в группе числитель и два расписания для знаменателя.

У всех по умолчанию два числителя и два знаменателя. У тебя видимо два числителя равны между собой

  1. Как понимать когда большая перемена?

Никак, это зависит от договоренности студентов с преподом

  1. Откуда брать актуальное расписание?

На https://miet.ru/schedule актуальное, но студенты могут попросить препода перенести пару, тогда на этом сайте это не учтется. Возможно, надо продумать логику изменения расписания от учеников, чтобы они могли перемещать пары.

Если я буду хранить расписание в json, а бот будет его оттуда забирать, хороший ли это подход?

Да, но можно и в БД хранить. После рефакторинга #22 появится ORM.

Планирую написать таску для celery crontab для актуализации расписания.

Про celery есть задача #31, так что проблем нет. Но обновляет ли студофис это расписание? Можно раз в неделю проверять это, конечно.

Скоро доделаем рефакторинг, тогда можно будет продолжить разработку, поскольку там новые абстракции, чтоб потом не решать конфликты

Whom-m0rty commented 2 years ago

Тогда жду рефакторинг

marplyn commented 2 years ago

Вчера бот с расписанием ожил. Тогда наша задача обдумать и потенциально сделать более удобное решение

Screenshot 2022-09-06 at 20 28 27
llirrikk commented 2 years ago

@Whom-m0rty, рефакторинг #22 готов