messages#

Генератор текстовых сообщений с использованием Schedule.

Преобразует «сырые» результаты работы методов класса Schedule в тексовые сообщения, которые могут использваоться в чат ботах. Например Telegram и Вконтакте.

Вспомогательные функции#

sp.messages.get_complited_lessons() list[int]#

Возвращает номера завершённых уроков.

Список содержит индексы уже завершённых уроков. Если уроки не начались или уже закончились, возаращает [-1].

Результат:

Список индексов уже прошедших уроков.

Тип результата:

list[int]

Список изменений#

Вспомогательные функции, которые используются для просмотра списка изменений уроков в расписании.

sp.messages.send_cl_updates(cl_updates: list[list[str] | None]) str#

Возвращет сообщение списка изменений для класса.

В зависимости от типа изменений вид сообщений немного отличается.

Условные обозначения:

  • {l} - Название урока.

  • {c} - Кабнет урока.

  • {ol} - Название урока до изменений.

  • {oc} - Кабнет урока до изменений.

Типы сообщений:

  • ++{ol}:{oc} - Добавлися урок в расписания.

  • –{ol}:{oc} - Урок убран из расписания.

  • {ol} -> {l}:{c} - Если сменился только урок, без кабинета.

  • {l}:({oc} -> {c}) - Если сменился только кабинет, без урока.

  • {ol}:{oc} -> {l}:{c} - Остальные случаи.

Параметры:

cl_updates (list[Optional[list[str]]]) – Список изменений для класса.

Результат:

Сообщение со списком изменений класса.

Тип результата:

str

sp.messages.get_update_header(update: dict[str, int | dict], exstend_info: bool | None = True) str#

Возвращает заголовок списка изменений.

Собирает диноммический заголовок о списке записи изменений.

Запись об изменениях представляет собой временной промежуток в пределах которого были зафиксированы некоторые изменения в расписании.

Пример заголовка:

> 16.02 23:37 ➜ 18.02 19:49 [🗘 44:12:02]

Заголовок изменений содержит:

  • Дата начала временного промежутка.

  • Дата окончания временного промежутка.

  • Полное время временного промежутка.

  • (опционально) сколько времени прошло с окончания записи.

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

Параметры:
  • update (dict[str, Union[int, dict]]) – Словарь данными записи.

  • exstend_info (Optional[bool]) – Показывать ли дополнительны информацию в шапке.

Результат:

Заголовок списка изменений.

Тип результата:

str

sp.messages.send_update(update: dict[str, int | list[dict]], cl: str | None = None) str#

Собирает сообщение со списком изменений в расписании.

Собирает сообщение из записи об измении в расписании.

Пример сообщения со списком изменений:

Параметры:
  • update (dict[str, Union[int, list[dict]]]) – Запись об изменении в расписании.

  • cl (Optional[str]) – Упоминание какого класса опускать в заголовке.

Результат:

Сообщение со списком изменений в расписании.

Тип результата:

str

Функции отображения#

Используеются для преобразования «сырых» данных расписания в готовые текстовые сообщения, которые можно использовать в чат-ботах.

sp.messages.send_day_lessons(lessons: list[list[str] | str]) str#

Собирает сообщение с расписанием уроков на день.

Возаращает сообещния со списком уроков на день. Помимо списка уроков укзаывает какие уроки прошли и какие ещё буду, а также указатель на текущий урок и время начала и конца уроков.

Также можно преедавать несколько кроуов в расписании. Это может использоваться чтобы при просмотре результатов поиска в расписании.

Параметры:

lessons (list[Union[list[str], str]]) – Список уроков.

Результат:

Сообщение с расписанием на день.

Тип результата:

str

sp.messages.send_search_res(intent: Intent, res: list) str#

Собирает сообщение с результатами поиска в расписании.

Является некоторой обёрткой над функцией send_day_lessons. Собирает заголовок поискового запроса и возвращает результаты поиска. Намерения используются при формировании результатов поиска.

Oaram intent:

Намерения для уточнения результатов поиска.

Параметры:

res (list[list[list[str]]]) – Результаты поиска в расписании.

Результат:

Сообщение с резульатами поиска в расписании.

Тип результата:

str

sp.messages.send_counter(groups: dict[int, dict[str, dict]], target: str | None = None) str#

Возвращает сообщение с результами работы счётчика.

Собирает сообщение со сгрупипрованными результатми работы счетчиков. Отображает группы счётчиков, сортрованные от больших к меньшем. Если указана цель (target), также отображает подгруппу счётчика.

Доступные цели просмотра:

  • None: Не отображать подгруппу просмотра.

  • cl: По классам в расписании.

  • days: По дням недели (0 - понедельник, 5 - суббота).

  • lessons: По урокам.

  • cabinets: По кабинетам.

  • main: Обратный для индекса (если l_index, то по кабинетам).

Параметры:
  • groups (dict[int, dict[str, dict]]) – Сгруппированные результаты работы счётчиков.

  • target (str) – Режим просмотра расписания.

Результат:

Сообщение с результатами работы счётчиков.

Тип результата:

str

Генератор сообщений#

class sp.messages.SPMessages(uid: str, user_data: dict[str, Any] | None = None)#

Предоставляет методы для более удобной работы с расписанием.

Позводяет взаимодействовать с пользователями расписнаия. Сохранять их класс по умолчанию и отслеживать их расписание. Методы возвращают текстовые сообщенияю. которые после можно использовать напрмиер в чат ботах.

Параметры:
  • uid (str) – User ID, уникальные идентификатор пользователя.

  • user_data (Optional[dict[str, Any]]) – Установленные данные пользователя.

user: dict[str, Any] | None#

Денные пользователя.

sc: Schedule#

Экземпдяр расписания.

send_status() str#

Возвращает информацию о парсере и пользователях.

Эта статистическая информация, о работа парсера, времени послдней проерки и обновления и прочих параметрах, связанных с парсером и пользователями обёрток.

Результат:

Статус парсера и пользователей.

Тип результата:

str

Управление пользователями:

Не рекомендуется, начиная с версии v5.8: Обновление будет посвящено отделению функционала генератора сообщений и хранилиа пользователей.

get_user(user_data: dict[str, Any] | None = None) dict[str, Any]#

Возвращает данные пользователя или данные по умолчанию.

Параметры:

user_data (Optional[dict[str, Any]]) – Данные пользователя по умолчанию.

Результат:

Данные пользователя или данные по умолчанию.

Тип результата:

dict[str, Any]

save_user() None#

Записывает данные пользователя в файл.

reset_user() None#

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

set_class(cl: str | None = None) bool#

Изменяет класс пользователя.

Изменяет класс пользователя на укащанный. Выставляет временную метку join_data на данный момент. Устанавливает флаг set_class в True. Перемещаеь временную метку проверки расписания на данный момент.

Если передать None - переходит в состояние «отвязанного класса».

Параметры:

cl (Optional[str]) – Какой класс установить пользователю.

Результат:

Установился ли класс пользователю.

Rtupe:

bool

get_lessons_updates() dict | None#

Возвращает упаковынный списк изменний пользователя.

Проверяет наличие новых обнволений по временной метке. Если расписание изменилось, получает список исземеий для класса. После упаковывает список изменений. Наконец, выравнивает временную метку последнего обновления пользователя с временной меткой послдней проверки расписания.

Результат:

Упокаванный список изменений расписания расписания.

Тип результата:

dict[str, Any]

Методы для работы с расписанием:

search(target: str, intent: Intent, cabinets: bool | None = False) str#

Явялется сокращение для поиска в расписании.

Производит поиск в расписании. А после собирает сообщение с резульатами поиска в расписании.

Поиск немного изменяется в зависимости от режима.

cabinets

obj

another

false

lesson

cabinet

true

cabinet

lesson

Параметры:
  • target (str) – Цель для поиска, урок или кабинет.

  • intent (Intent) – Намерения для уточнения результатов поиска.

  • cabinets (bool) – Что ищём, урок или кабинет. Обычно урок.

Результат:

Результаты поиска в расписании

Тип результата:

list[list[list[str]]]