Перейти к содержанию

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

Обратите внимание что список изменения не обновлялся с версии v6.2! Актуальная версия на данный момент v6.5. Приносим свои изменения за такое недоразумение.

draft

Окак

Это изменения, которые вносятся в данный момент. но пока не имеют конкретной версии. Быть может это будет v6.6 или сразу v7. Зависит от масштаба изменений.

v6.5

А где

Список изменения для данной версии пока не написан. Будем ждать хороших вестей.

v6.4.2

А где

Список изменения для данной версии пока не написан. Будем ждать хороших вестей.

sp v6.2 / tg v2.5.1 (11.10.2024)

Это обновление было посвящено переработке системы кеширования расписания. После введения класса Platform расписание не обновлялось автоматически, Теперь это исправлено.

Users

  • Исправлено создание базы данных при первом запуске.
  • Исправлено сохранение данных пользователя во время проверки обновления.

Schedule

  • Переработан процесс получения расписания.
  • Обновлён формат метаданных при сохранении расписания.
  • Расписание автоматически кешируется во время работы бота.

Messages

  • Отображение времени начала текущего урока.
  • Обновлено расписание звонков.

Telegram

  • Исправлена отправка сообщения со списком изменений.
  • Отправка сообщения об ошибках администратору бота.

sp v6.1 / tg v2.5 / cli v1.6 (29.08.2024)

Это большое накопительное обновление с множеством исправлений и приятных функций. класс Platform постепенно вступает в своё законное владение. Это ещё один небольшой шаг на пути к sp v7. Все усилия сейчас будут направлены на полномасштабное обновление sp v7, так что ветка v6 сейчас просто будет получать свои небольшие обновления безопасности. Также этим обновлением окончательно закрывается поддержка sp v5.8.x.

Также с этого обновления Вк покидает состав репозитория и перемещается в собственный репозиторий. Возможно это конец его поддержки и он так и останется на версии v5.8.12.

Docs

  • Обновился главный файл документации.
  • Появились якоря на некоторое файлы.
  • Инструкция по установке стала более полной.
  • API документация также обновлена до последней версии sp.
  • Секции API теперь сортированы в логическом порядке по их важности.

Splatform

  • Подсказки типов стали более точными.
  • Проект поднял версию Python до 3.10.
  • counter: Совмещение функций счётчиков и класса TextCounter привело к образованию класса CurrentCounter.
  • exceptions: Добавлен в конце суффикс Error.
  • users.Intent: Новые методы для управления намерение по умолчанию.
  • users.Intent: Получение всех намерений осуществляется через генератор.
  • users.Intent: Немного магических методов для получения намерений.
  • users.Storage: Исправлен метод получения обновлений пользователя.
  • users.Storage: Исправлено сохранения пользователей во время проверки обновления в расписании.
  • intents: Исправлена запаковка намерений в строку.
  • intents: Удалён метод reparse.
  • messages: Метод send_update перемещён в SPMessages.
  • messages: класс стал независимым от пользователя.
  • messages: Метод check_updates отделялся от send_lessons.
  • messages: Статусное сообщение вновь отображает всю информацию как в v5.8, включая данные о хранилище пользователей.
  • parser: Исправление получения расписания если файл пустой.
  • parser: Удалён метод get_cl.
  • parser: Удалена передача класса по умолчанию в конструктор класса.
  • получение относительно дня недели перемещено из sp_tg в Platform.
  • platform: Добавлено множество сокращений для методов SPMessages.

Telegram v2.5

  • Фильтр IsAdmin. Теперь изменять настройки бота могут только администраторы чатов.
  • Использует новые методы платформы.
  • Глобальная чистка кода и обновление строк документации.
  • Сообщение я об ошибке стали более информативными.
  • Предупреждение, если пользователь пытается добавить пустое намерение.
  • Исправлено получение клавиатур из-за метода relative_day.
  • Добавлен Docker файл для сборки Telegram бота.
  • Поправки в соответствии с новой функцией-генератором для получения намерений.
  • Обновлено статусное сообщение.

CLI

  • Обновлена до последней версии sp.
  • Использует новые методы платформы.
  • Небольшой рефакторинг кода для его лучшей читаемости.

Updater

  • Обновлён до последней версии sp_tg.
  • Обновлены строки документации.
  • Исправлено открытие раздела списка изменений.

sp v6 / tg v2.4 / cli v1.6 (20.06.2024)

Данное масштабное обновление связано с изменениями в архитектуре проекта. Как вы возможно уже знаете, связующим компонентом до этого обновления был SPMessages, который отвечает как за подготовку текстовых сообщений, так и за работу с пользователями. Данное масштабное обновление добавляет новое хранилище пользователей. Обо всём по порядку.

Docs

Не обошло стороной обновление и изменения в документации. За долгое время документация несколько освежилась. Это позволит вам лучше понять как работают те или иные методы проекта.

  • Добавлены некоторые подсказки к будущим обновлениям.
  • counter Добавлено описание перечисления CounterTarget.
  • Добавлена странница exceptions.
  • Обновлён index, описание стало более актуальным, появилась подсказка относительно обновления sp v6.
  • intents Описание альтернативного способа создания намерений через методы Schedule.
  • messages Описание временного класса расписания звонков.
  • messages Предупреждение о возможно скором переносе некоторых функций.
  • messages Удалены методы для работы с пользователем.
  • parser Описание класса ScheduleFile.
  • parser Обновлены ссылки на прочие разделы документации.
  • parser Обновлены заголовки.
  • parser Описание где можно применять некоторые из методов.
  • Добавлена страница документации для platform, text_counter, users.
  • Многочисленные правки строк документации в проекте.

Exceptions

Постепенно проект становится не таким безмолвным, если что-то идёт не так. Для этого появились первые исключения, связанные с несовместимостью класса представления или если вы захотите использовать класс представления, но не установили его в платформе.

  • Добавлено исключение ViewCompatibleError.
  • Добавлено исключение ViewSelectedError.

Platform

Добавлен новый класс платформы, которой вскоре станет мостом между поставщиками расписаниями и их потребителями. Платформа под капотом настраивает пользовательских хранилища, а также классы представления (Пока только SPMessages).

  • Добавлен класс Platform.
  • Добавлены геттеры и сеттеры для установки класса представления.
  • Добавлен метод get_user для быстрого получения пользователя.
  • Добавлены методы для получения хранилища намерений пользователя.

Messages

  • Подчищен код.
  • Удалены константы пользовательских путей к хранилищу.
  • Конструктор SPMessages больше не требует передачи пользовательских данных. Теперь можно использовать SPMessages обособленно.
  • Многие методы принимают экземпляр пользователя для работы.
  • send_status() сокращает объём отображаемой статистики из-за изменений. После это будет исправлено.
  • Удалены методы для работы с пользователями.
  • Получила аттрибут API_VERSION отражающая совместимость с платформой.

Users

  • Добавлен класс UserData, для хранения данных пользователя.
  • Класс FileUserStorage - хранилище пользователей в JSON файле.
  • Класс User - для управления конкретным пользователем хранилища.
  • В FileUserStorage добавлены основные методы для работы с хранилищем.
  • В User добавлены методы для управления пользователем платформы.
  • Добавлен метод unset_class() для сброса класса, без сброса прочих данных.
  • Пользовательское хранилище перемещено в sp.users.
  • Хранилище намерений пользователя перенесено из Телеграм бота.
  • Все методы получили подробную документацию.

Telegram v2.4

  • Переведена под использование нового хранилища пользователей.
  • Обновлены комментарии и строки документации, которые помогут в формировании документации платформ.
  • Теперь можно получить доступ к данным пользователя, использую аргумент user в обработчиках.
  • Исправлено отображение ближайшего дня при смене и установке класса.
  • Использует новый класс Platform.
  • Некоторое изменение поведение обработки исключений от Telegram.
  • Хранилище намерений перемещено в sp.users.intents.

CLI v1.6

Оболочка командной строки также не осталась без внимания. Добавили новые обработчики пользовательского хранилища. Теперь вы сможете использовать sp cli, чтобы управлять пользователями в хранилище.

  • Использует новый класс Platform и хранилища пользователей.
  • Аргументы счётчика используют CounterTarget.
  • Ключ -u позволяет переопределить ID пользователя.
  • Ключ -s позволяет определить путь к хранилищу пользователей.
  • user get: Получает информацию о пользователе.
  • user count: Считает пользователей в хранилище.
  • user users: Получить полный список пользователей из хранилища.
  • user create: Создать нового / сбросить данные пользователя.
  • user remove:Удалить пользователя из хранилища.
  • user class <cl>: Установить класс по умолчанию.
  • user notify <on|off>: Включить / отключить рассылку уведомлений.
  • user hour-add <hour>: Включить рассылку расписания в указанный час.
  • user hour-remove <hour>: Отключить рассылку расписания в указанный час.
  • user hour-reset: Сбросить рассылку расписания.

tg v2.3 (05.03.2024)

Код бота наконец был поделён на несколько файлов. Это нужно для создания более модульной структуры. А также для более простой поддержки разрастающегося кода бота.

  • Код бота разделён на множество файлов.
  • Добавлен статический загрузчик обработчиков.
  • Счётчики начали использовать новый класс sp.TextCounter.
  • Некоторые функции счётчиков были удалены.
  • Обновлена клавиатура для check_updates скрипта.

v5.8 (20.02.2024)

У проекта появилась документация. Потому были переписаны все строки документации ядра проекта. Обновление по большей части касается внутренней части кода.

  • Общие улучшения качества кода (по линтеру).
  • Сортировка импортов.
  • Изменены некоторые названия переменных для большей наглядности.

Utils

  • Обновлена типизация функций.
  • Добавлены подробные комментарии к коду.
  • check_keys() помечена как устаревшая и будет вскоре удалена.
  • Используется типизация до python 3.10.
  • get_str_timedelta() Принимает только целые числа.
  • Функция ensure_list перемещена в sp.utils.

Messages

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

Parser

  • Переменные для хранения путей к файлам используют Path.
  • _get_day_hash() стала приватной функцией.
  • _clear_day_lessons() улучшена производительность.
  • Даны более понятные имена некоторые переменным.
  • Использование DefaultDict для упрощения кода.
  • parse_lessons() Использование генераторов для оптимизации.
  • Возможность передать свои пути к файлам в классе Schedule.
  • Улучшена типизация функций. Принимаемые и возвращаемые типы стали более подробными.
  • Добавлены методы для сборки намерений для текущего расписания.

tg v2.2 (10.01.2024)

Это масштабное обновление Telegram версии бота. Посвящено оно частичному решению проблемы передачи намерений в боте. Реализация намерений в боте не завершена и будет обновляться.

.. note:: Система намерений

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

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

TL;DR

  • Множество исправлений.
  • Добавлен редактор намерений.
  • Добавление/изменение/удаление намерений.
  • Использование клавиатуры выбора намерений в счётчиках и списке изменений.

Features

  • Начат постепенный переход на использование баз данных как хранилище.
  • Использование базы данных sqlite3 в sp_data/tg.db.
  • Удалены _HOME_BUTTON и _TO_HOME_MARKUP, не используются.
  • Добавлены некоторые новые комментарии к коду.
  • В user_middleware теперь также передаётся экземпляр UserIntents.
  • Немного изменён стиль логов (log_middleware).
  • Немного поправлено главное сообщение бота.
  • Исправлена типизация некоторых функций.
  • Обновлены тексты комментариев.
  • Добавлен раздел намерения в дополнительную клавиатуру.
  • get_notify_keyboard(): Больше не требует экземпляр SPMessages.
  • get_updates_keyboard(): Собирает дополнительную клавиатуру выбора намерений.
  • get_counter_keyboard(): Собирает дополнительную клавиатуру выбора намерений.
  • Вспомогательная функция get_intent_status().
  • Упрощена функция get_update_timetag().
  • Немного упрощён текст сообщения статуса.
  • get_notify_message(): Принимает теперь enabled и hours вместо экземпляра SPMessages.
  • Исправлена таблица в динамическом сообщении счётчиков.
  • Использование динамического сообщения списка изменений в обработчике /updates.

UserIntents

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

Класс предоставляет методы для сохранения, получения, изменения намерений для конкретного пользователя расписания.

Методы класса:

  • get(): Получить список намерений пользователя.
  • get_intent(name): Получить намерение пользователя по имени.
  • remove_all(): Удалить все намерения.
  • add(name, i): Добавить/обновить намерение.
  • rename(old_name, new_name): Переименовать намерение.
  • remove(name): Удалить намерение.

Messages

Новые статические и динамические сообщения в боте.

Статические:

  • Информация о намерениях.
  • Установка имени намерения.
  • Указание параметров намерения.
  • Режим удаления намерений.
  • Достижение предела количества намерений.

Динамические:

  • Сообщение списка изменений.
  • Информация о намерении.
  • Списка намерений.

Keyboards

Новые функции для динамической сборки клавиатур бота.

  • Редактор списка намерений.
  • Редактор намерения.
  • Клавиатура удаления намерений.

Handlers

  • Команды /cancel => Сброс машины состояний.
  • Команда /intents, кнопка intents => раздел редактора намерений.
  • Команда /add_intent, кнопка intent:add => Добавить новое намерение.
  • Состояние EditIntentStates.name => Выбор имени намерения.
  • Состояние EditIntentStates.parse => Выбор параметров намерения.
  • Кнопка intent:show:{name} => Режим редактирования намерения.
  • Кнопка intent:remove:{name} => Удалить намерение пользователя.
  • Кнопка intent:reparse:{name} => Изменение параметров намерения.
  • Команда /remove_intents, кнопка intents:remove_mode => Удаления намерений.
  • Кнопка intent:remove_many:{name} => Удалить множественно намерение.
  • Кнопка intents:remove_all => Удалить все намерения.

v5.3.8 -> v5.7 (27.12.2023)

Как вы возможно уже знаете, в проекте до сих пор путаница версий так и не совсем ясный список изменений, который плохо отображает какие изменений к какой версии компонента относятся.

чтобы решить эту проблему, тут будет описаны все изменения в парсере, начиная с версии 5.3.8 и заканчивая последней версией 5.7.

v5.3.8

Улучшено сообщение статуса.

  • Изменён стиль сообщения.
  • Улучшено отображение времени последнего обновления и проверки.
  • Добавлен таймер до следующей проверки расписания.
  • Добавлен счётчик количества пользователей по классам.

v5.4

  • Удалены устаревшие search_lesson, search_cabinet.
  • Сам файл spm переименован в messages.`
  • Использование DefaultDict для функций счётчиков.

v5.5

На замену класса фильтров добавлен новый класс намерений (intents). В своей основе он использует именованный кортеж, вместе дата классов. Вме методы для сборки и редактирования намерения находятся в этом же классе.

  • Предоставляет методы для сборки: construct(), parse().
  • Предоставляет методы дополнения: reconstruct(), reparse().
  • Поддерживает все старые функции фильтров.
  • Добавлен счётчик активных пользователей в сообщение статуса.

v5.7

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

  • SpMessages: Возможность передать данные пользователя напрямую.
  • Попытка исправить получение "пустых" уроков.
  • Обновлён формат списка изменений.

  • Новый заголовок списка изменений. Вместо примерного времени изменения теперь показывает временной промежуток, внутри которого были зафиксированы изменения. Начало временного промежутка обновления. Конец временного промежутка обновления. Сколько продлился временной промежуток. Как давно были зафиксированы прошлые изменений.

  • Intents: Исправлено получения расписания вне недели.

  • Добавлена функция упаковки списка изменений в расписании.
  • Пользователю отправляются упакованные изменения в расписании.

tg v2.1 (24.12.2023)

Это дебют локального много страничного обучения по написанию запросов. Она поясняет основные концепции написания запросов. Что такое классы, уроки, кабинеты, как искать что-то в расписании.

  • /TypeHint -> /tutorial Новая команда.
  • restrictions -> cl_features.
  • Вместо списка ограничений отсутствия класса теперь список преимуществ.
  • Объединение главного сообщения и отсутствия класса.
  • Новое сообщение при смене класса.
  • Новое сообщение с преимуществами указания класса.
  • Новое многостраничное обучение запросам.
  • Клавиатура для постраничного просмотра обучения.
  • get_home_message() принимает класс вместо экземпляра.
  • Бот удаляет некоторые команды пользователя для чистки чата.

tg v2.0 (13.12.2023)

Смена мажорной версии обусловлена полным изменением кода бота. Бот был полностью переписан с использованием aiogram v3.2, с учётом всех новых особенностей. Новый код бота стал более понятным и читаемым. Общая чистка кода, а также подготовка к разделению бота на несколько файлов.

Telegram v1.14

Обновления, до того как код был переписан на aiogram v3.2.

  • Замена фильтров на намерения (Intents).
  • Использование переменных окружения вместо JSON файла telegram.json.
  • Обновлены тексты сообщений.
  • Добавлены вспомогательные кнопки при смене класса. (отвязать, ограничения)
  • При выборе класса отправляется список доступных классов.
  • Добавлено сообщения с подсказками как писать запросы к расписанию.
  • Исправлены текстовые ошибки.

Telegram v2.0

  • Обновлено до sp v5.7.
  • Полностью переписанный и оптимизированный код бота.
  • Обновлённые функции получения клавиатур бота.
  • Новая дополнительная клавиатура.
  • Возможность отключать рассылку в указанный час.
  • Повышено качество кода.
  • Переписана обработка callback_query.
  • Использование CallbackData factory для обработки кнопок.
  • В статусном сообщении указывается время автоматической проверки.
  • Добавлена LogMiddleware для отладки запросов к боту.
  • Больше нет возможности передавать аргументы в команду (будет решено).
  • Больше нет возможности использовать бота в групповых чатах (будет решено).

v5.3 (05.4.2023, tg v1.12)

Первое появление автоматического скрипта для проверки изменений в расписании и автоматической рассылке расписания пользователям.

Schedule

  • Период обновлений сокращён на пол часа.
  • Исправлена отправка одинакового списка изменений дважды.

Messages

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

Telegram

Обновление бота v1.12 до sp v5.3.

  • Подготовка бота для работы в групповых чатах.
  • Добавлена клавиатура для настройки уведомлений.
  • callback_handler(): Исправлено получения расписания на неделю.
  • callback_handler(): Обработка исключения MessageNotModified.
  • start_command(): Обработка исключения MessageCantBeDeleted.
  • Возможность прямо сменить класс в команде /set_class [класс].
  • Обновлены описания аргументов в справке для большей ясности.
  • Обновлено сообщение со способами смены класса.
  • Возможность обрабатывать текстовые команды командой /sc.

v5.2 (05.04.2023)

Counters

Полностью новые функция для подсчёта элементов в расписании. Все функции используют класс фильтров для уточнения результатов подсчётов.

Filters

  • Символ "?" используется для подстановки вашего класса по умолчанию.

Utils

  • Функция автоматического дополнения ключей словаря пользователя.
  • Используется модуль UJson вместо стандартного json.

Telegram

  • Обновлен до sp v5.2.
  • Новая клавиатура для счётчиков.
  • callback_handler(): Предупреждение в логирование о неизвестных данных.
  • Обновлён текст главного сообщения.
  • Обновлён текст при смене класс, как в дальнейшем можно сменить класс.
  • "Инструменты" переименованы в "ещё".
  • Добавлено пасхальное сообщение если неверно выбран класс.
  • Команда /restrictions со списком ограничений при отвязанном классе.
  • inline кнопка для смены класса теперь использует SPMessages.reset_user().

v5.1 (31.3.2023)

Filters

  • Используются дата классы для хранения фильтров.

Messages

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

Telegram

  • Отправка пуш уведомлений об исключениях через Gotify.

v5.0 (27.3.2023, tg v1.8)

Общее улучшение качества кода. Смена мажорной версии обусловлена разделением огромного файла sp.py на множество маленьких файлов с классами. Таких как parser.py, messages.py и прочее. Цикл обновлений с целью полной переработкой проекта завершён.

Schedule

  • _update_diff_file(): теперь использует collections.deque.
  • Вернулся метод search(): для общего поиска данных в расписании.
  • Улучшено обращение с пользователями, не указавшими класс.
  • Метод get_updates() для более гибкого получения списка обновлений с использованием фильтров для уточнения результатов.

Messages

  • set_class() больше не возвращает результат работы.
  • Метод reset_user() сбрасывает данных пользователя.
  • Изменён стиль списка изменений в расписании.
  • Совмещены методы search_lesson() и search_cabinet().
  • send_day_lessons(): Сильно изменён формат отображения уроков.
  • send_lessons(): При изменении расписания отображает сам список изменений.
  • Изменён формат отображения уроков.
  • Удалён метод send_users_stats().
  • send_today_lessons(): Вновь автоматически отправляет расписание на сегодня или завтра, в зависимости, закончились ли уроки.

Telegram

  • Обновления бота до v1.8.
  • Совмещены команды /start и /help.
  • Вернулись имена для кнопок в справке.
  • В главном сообщении отмечается выбранный пользователем класс.
  • Добавлена возможность отвязать пользователя от класса.
  • Изменены тексты сообщений для большей их ясности.
  • Исправлено получение расписания по команде /sp.
  • Удалена команда /users.

v4.6 (15.3.2023)

Добавлен новый класс Filter, который предоставляет набор инструментов для более точного получения результатов расписания и будет использоваться в большинстве функции бота.

  • send_update(): Вынесена как отдельная функция.
  • send_day_lessons(): Вынесена как отдельная функция.

Schedule

  • Убрана возможность переопределить пути хранения файлов.
  • Как обязательный аргумент принимает класс.
  • Удалён метод search() за ненадобностью.
  • Из SPMessages перенесены get_class() и get_lessons().

Messages

  • Убрана возможность переопределить пути хранения файлов.
  • Больше не требует класс Schedule как аргумент.
  • send_users_stats(): Отправляет статистику о пользователях.
  • Малость изменены тексты сообщений.
  • send_lessons(): Переведён на использование Filters.
  • send_today_lessons(): Переведён на использование Filters.
  • send_today_lessons(): Переведено на статическое смещение дней.
  • count_lessons(): Исправлена совместимость со старыми версиями Python.
  • Переведено на использование Filters.
  • Изменение стиля сообщения.
  • search_cabinet(): Переведено на использование Filters.
  • Изменение стиля сообщения.

Telegram

  • Обновлено до sp v4.6.
  • Изменены сообщения бота.
  • updates_command(): Исправлено получение обновлений.
  • users_command(): Добавлена команда для отправки статистики пользователей.

v4.5 (12.3.2023)

  • get_index(): Оптимизация функции и формата индексов.
  • _update_index_file(): Немного изменён формат хранения индексов.
  • count_lessons(): Использование collections.Counter().
  • Незначительные правки в аргументах методов

v4.4 (12.3.2023)

  • clear_day_lessons(): Маленькая функция для очистки списка уроков.
  • parse_lessons(): Была вынесена как отдельная функция.
  • Немного оптимизирован код.
  • Вырезан подсчёт хешей для каждого списка уроков.
  • group_update(): Была удалена, т.к. не используется.

v4.3 (10.3.2023)

Начало цикла обновлений с целью полной переработки парсера.

Schedule

  • Полное изменение формата списка изменений.
  • Функция get_day_hash() для получения хеша списка уроков на день.
  • Функция send_cl_updates() для отправки изменений "для класса".
  • Атрибут updates для получение полного списка изменений расписания.

Messages

  • Вместо send_update_page() -> send_update().

Telegram

  • Изменён формат callback_data для inline клавиатуры.
  • Добавлены описания некоторым функциям.
  • Временно убрана возможность получение списка изменений для класса.
  • В справке примеры были перемещены в начало сообщения.

v4.2 (5.3.2023)

Само обновление вышло намного-намного раньше, но попало сюда только сейчас. Зато, можно считать его обкатанным и готовым к выпуску. Переписана большая часть кода. Оптимизация, новые фишки, упрощение чтения самого кода!

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

Schedule

  • Класс стал независимым от пользователей и переименован в Schedule.
  • Весь код стал наполнился подсказками типов.
  • Вместо os.path.exists используется Pathlib.
  • Для ведения логирование теперь используется модуль loguru.
  • Данные проекта теперь будут сохранятся в директорию sp_data вместо корня.
  • save_file(): Добавлено автоматическое создание родительских директорий.
  • Полностью изменён формат хранения расписания -> лучше читаемость.
  • Изменён формат файла списка изменений.
  • Единая функция для получения l_index, c_index -> get_index().
  • Индексы теперь обновляются вместе с расписанием, а не каждый раз.
  • Парсер теперь сам определяет начало нового дня и сколько уроков.
  • Обновление расписания перенесено из get_schedule() в _process_update().
  • _process_update(): Добавлен обработчик исключений при неудачной загрузке.
  • _process_update(): Расписание обновляется теперь точно через 3600 секунд.
  • Метод get_schedule() -> get().

Messages

  • send_status(): Новый стиль сообщения статуса.
  • send_status(): Добавлено перечисление всех доступных классов.
  • Для просмотра изменений используется новые методы get_updates_pages() и send_updates_page().
  • Вновь изменились стили сообщений: {урок}:{кабинет}.
  • Единая функция для подсчёта уроков/кабинетов count_lessons().
  • count_lessons(): Отметка кабинетов/уроков, которые используются единожды.
  • search_cabinet(): Просмотр расписания от имена кабинета.

v3.2 (21.12.2022)

Поправлен метод подсчёта кабинетов в расписании. Также обёртки были обновлены до последней версии парсера.

Parser

  • Некоторые методы и атрибуты помечены приватными для логичности.
  • Индексы уроков и кабинетов теперь используют декоратор @property.

Messages

  • Исправлен метод подсчёта кабинетов в расписании.

Chio Plugins

  • Добавлена команда для подсчёта кабинетов.

v3.1.1 (12.12.2022)

В парсере изменены обращение с пустыми значениями.

v3.1 (06.12.2022)

Небольшой общий рефакторинг проекта. Смена мажорной версии обусловлена отделением класса генератора сообщений от класса расписания.

Features

  • Просмотр самых частых кабинетов.
  • Поиск по урокам/кабинетам.

Parser

  • Метод сравнения двух расписаний вынесен в отдельную функцию.
  • Изменены некоторые имена аттрибутов и методов для большей логичности.
  • Индекс уроков также стал группироваться по кабинетам.
  • Добавлен общий метод для поиска в расписании.

Messages

Методы для сборки сообщений были отделены в свой класс - SPMessages. Далее этот класс представления может называться как генератор сообщений.

TParser -> SParser (27.11.2022)

До этого проект именовался как Timetable Parser. Теперь же проект называется Schedule parser.

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

v2.4.1 (23.11.2022)

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

  • Обновлённая система поиска изменений в расписании. Вместо того, чтобы каждый раз производить сравнение, новая система проводит общее сравнение расписания для всех классов при загрузке расписания. Это значительно увеличивает производительно в промежутках загрузки расписания, хоть и замедляет саму загрузку и обработку.
  • get_schedule_diff() - Метод полного сравнения двух расписаний.
  • update_diff_file() - Запись изменений об обновлениях в файл.
  • Изменён способ проверки обновлений расписания пользователя.
  • print_sc_changes() - Метод отображения изменений в расписании.
  • Исправлено отсутствие оповещений об изменениях в расписании.
  • Исправлено получение расписания на сегодня/завтра.

v2.3 (16.11.2022)

Note

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

Parser

  • Изменены имена некоторых атрибутов для большей логичности.
  • Изменения в структуре файла расписания.
  • Небольшая оптимизация метода get_lessons_index().
  • Упрощён метод подсчёта уроков count_lessons().
  • search_lessons() Добавлена возможность сортировки результатов поиска по дням.
  • Некоторые изменения в текстах сообщений.

Chio

  • Совмещены некоторые команды для простоты использования.

v2.2 (15.11.2022)

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

Parser

  • Добавлено получение индекса уроков.
  • Новые методы get_lessons_index(), count_lessons(), search_lessons().
  • В сообщение статуса добавлена информация о классах и предметах.

Chio plugin

  • Обновлена до последней версии парсера.
  • Исправлено получение расписания на завтра.
  • Система "пассивных" уведомлений. работающих при обработке событий.

v2.1 (13.11.2022)

Добавлены новые параметры для работы с пользователем. Первое сообщение со статусом парсера. Обновление всех обёрток до актуальной версии парсера. Добавлено предупреждение, если пользователь не указал класс.

  • Добавлены новые параметры пользователя.
  • set_class - Установлен ли класс у пользователя.
  • last_parse - Время последней проверки расписания пользователем.
  • Обновлён метод сравнения хешей дней для повышения скорости работы.
  • Новый метод print_status() основной информации о состоянии парсера.

v2.0 (13.11.2022)

Смена мажорной версии обусловлено сменой названий переменных. А также в связи с многочисленными внутренними изменениями.

Parser

  • Переименован атрибут schedule -> lessons.
  • Для большей логичности некоторые названия переменных переименованы.
  • Пустыне уроки очищаются на стадии загрузки расписания одни раз.
  • В файл расписания добавлена отметка последней загрузки расписания.
  • Некоторые изменения стиля сообщений.
  • Упрощение кода проверки диапазона дней в print_lessons().

Console

  • Обновлены описания команд.

v1.6 (07.11.2022)

Улучшения работы с расписанием. Добавлено расписания звонков. Обновление обёрток до последней версии.

Parser

  • Добавлена поддержка расписания звонков.
  • Переработка методов получение и обработки расписания.
  • Новые методы get_class(), get_lessons(), get_schedule_changes().
  • Некоторые изменения в текстах сообщений методов парсера.
  • Исправления в методе пропуска пустых уроков расписания.
  • В расписание уроков также добавлено время начала и конца урока.
  • Метод print_today_lessons() для умного получения уроков на сегодня/завтра.

Chio plugin

  • Исправлено получение расписания для других дней.

v1.4.2 (23.10.2022)

Обновления коснулись метода парсера print_lessons()

  • Добавлено двухстороннее ограничение диапазона дней (0-6).
  • Удаление повторяющихся дней (0, 4, 4, 2 -> 0, 4, 2).
  • Сортировка дней по возрастанию.

Chio plugin (21.10.2022)

  • Обновлен до sp v1.4.

v1.4 (18.10.2022)

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

Parser

  • Изменено поведение уведомлений об изменениях. Теперь они отправляют расписание для дней, где оно изменилось.
  • Возможность "отсекать" пустые уроки с конца расписания.

Console

  • Возможность получить расписание на всю неделю.

v1.3 (17.10.2022)

  • Parser: Возможность получения расписания сразу на несколько дней.

v1.2 (16.10.2022)

  • Исправлено получение расписания для других классов.

v1.1 (14.10.2022)

Parser

  • попытка исправить получение расписания на субботу.
  • Добавлен аргумент update: Optional[bool]=False, для принудительного обновления расписания уроков.

Console

  • Добавлен ключ --parse для принудительного обновления расписания.

v1.0 (12.10.2022)

Начало развития собственной ветки проекта.

Parser

  • Отделён код парсера в отдельный файл sparser.py.
  • Добавлена простая система отслеживания изменений в расписании.
  • Добавлены уведомления пользователям об изменениях в расписании.
  • Удалён парсер расписания звонков.

Telegram

  • Некоторые обновления и исправления кода бота.

Console

  • Написана простая обёртка для отладки работы проекта.

v1.0b (10.10.2022)

Начало разработки проекта. За основу взят исходный код бота @optemikk. Внесены некоторые общие улучшения и исправления.

  • Исправлен список зависимостей в коде.
  • Чистка и стилизация кода.
  • Полностью переписан парсер расписания уроков.
  • Исправлены некоторые ошибки в коде.
  • Некоторая правка текстов сообщений.
  • Полностью убран так называемый раздел ВПР.
  • Добавлена возможность кэширования данных в json файл.