messages#
Генератор текстовых сообщений с использованием Schedule.
Является прототипом первого будущего класса представления. Явялется промежуточным слоем междцу расписанием и платформой. Используется для преобразования необработанных результатов работы методов класса Schedule. Выходным результатом генератора сообщеняи являются строки. Вы можете использовать их в чат-ботах, например Telegram.
Подсказка
Новое хранилище пользователй
Теперь генератор сообщения не отвечает за пользователей. Более подробно узнать о работе нового хранилища можно узнать:
Хринилище пользователей:
sp.users.storage.FileUserStorage.Пользователь
sp.users.storage.User.
Расписание звонков#
Осторожно
Это временное решение.
Эти методы не должны здесь находится, однако они тут. До того как буедт создан класс для работы с расписание звонков эти методы будет располагаться в генераторе сообщений. Однако мы не рекомендуем вам их сейчас использовать.
- class sp.messages.LessonTime(start: time, end: time, index: int)#
Описывает время начала и конца урока.
Этот фрагмент должен был стать частью будущего обновления. Данные фрагмен будет переписан со врменем. Используется для более детального отображения укзаателя на текущий урок.
- Параметры:
start (time) – Время начала урока.
index (int) – Порядковый номер текущего урока.
- Oaram end:
Время окончания урока.
- sp.messages.time_to_seconds(now: time) int#
Переводит datetime.time в полное количество секунд этого дня.
- sp.messages.seconds_to_time(now: int) time#
Переводит полное количество секунд в datetime.time.
- sp.messages.get_current_lesson(now: time) LessonTime | None#
Возаращет текущий урок.
Ичпользуется в функции сбора расписания на день. Чтобы можно было покзаать указатель на текущий урок.
Если уроки ещё не начались или уже кончились -> None.
- Результат:
Текущий урок, если он есть.
- Тип результата:
LessonTime | None
Список изменений#
Вспомогательные функции, которые используются для просмотра списка изменений уроков в расписании.
Осторожно
Перенос функицй
Поскольку больше нет надобность указывать пользователя. Можно спокойно использовать методы платформы вне заисимости от пользователя. Так что надобность данных функций отпадает. Вскоре они будут перемещены внутрь класса представления.
- 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#
Собирает сообщение со списком изменений в расписании.
СОбирает полноценное сообщение со всеми изменениями. Также добавляет заголосвок записи об зименении. Вы также можете передать класс, чотбы он не отображался в заголовке классов.
Пример сообщения со списком изменений:
📀 21.05 16:00 ➜ 05.06 18:47 🔷 На четверг 🔸 Для 5б: 2: --физкульт:330
- Параметры:
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: CounterTarget | None = None, days_counter: bool | None = False) str#
Возвращает сообщение с результами работы счётчика.
Собирает сообщение сгруппированного результата работы счётчика. Отображает результаты счётчика, отсортированные от большего к меньшему. Если указана подгруппу (target), то она также буде включена в результаты счётчика.
- Параметры:
groups (dict[int, dict[str, dict]]) – Сгруппированные результаты работы счётчика.
target (Optional[CounterTarget]) – Режим просмотра расписания.
days_counter (Optional[bool]) – Заменять имена групп на названия дней недели.
- Результат:
Сообщение с результатами работы счётчиков.
- Тип результата:
str
Генератор сообщений#
- class sp.messages.SPMessages#
Предоставляет методы для более удобной работы с расписанием.
В отличие от необработанных результатов работы Schedule, данный генератор сообщения в своих методах возвращает строки. Генератор сообщения используется в чат-ботах, поскольку возвращает уже готовые текстовые сообщения.
API Версия: 1
- send_status(user: User) str#
Возвращает информацию о парсере и пользователях.
Эта статистическая информация, о работа парсера, времени последней проерки и обновления и прочих параметрах, связанных с парсером и пользователями платформы.
- Параметры:
user (User) – Какой пользователь запрошивает информацию.
- Результат:
Статус парсера и хранилища пользователей.
- Тип результата:
str
- send_lessons(intent: Intent, user: User) str#
Собирает сообщение с расписанием уроков.
Обрётка над методом класса Schedule для получения расписания. Принимает намерения, для уточнения форматов расписание. Форматирует сообщений с помощью send_day_lessons.
- send_today_lessons(intent: Intent, user: User) str#
Расписание уроков на сегодня/завтра.
Работает как send_lessons. Отправляет расписание для классов на сегодня, если уроки ешё идут. Отпрвялет расписание на завтра, если уроки на сегодня уже кончились.
Использует намерения для уточнения расписания. Однако будет игнорировать указанные дни в намерении. Иначе используйте метод send_lessons.
- get_current_day(intent: Intent, user: User) int#
Получате текщий или следующий день если уроки кончились.
Работает это так, если уроки ещё не кончились, то метод вернёт номер текущего дня. Иначе же прибавит +1 к текущему номер дня. Также автоматически происходит сдвиг на понедельник, если нужно. это используется при умном получении расписания на сегодня или завтра в зависимости от времени.
- Параметры:
intent (Intent) – Намерение для получения расписания
user (Uaer) – Кто хочет получить расписание.
- Результат:
Номер дня недели, для которого получать расписание
- Тип результата:
int
- 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]]]