123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916 |
- =========
- Changelog
- =========
- Данный файл содержит историю всех внесённых изменений в проекте.
- 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`.
- - Улучшена типизиация функций. Принимаемые и возвращаемые типы
- стали более подробными.
- - Добавлены методы для сборки намерений для текущего расписания.
- vk v1.2 (16.01.2023)
- ====================
- Обновление и синхронизация функций из Telegram бота в Вк версию.
- - Использование намерений из `sp v5.5`.
- - Поправлен текст некоторых кнопок.
- - Некоторым кнопка присвоены emoji.
- - Немного поправлены комментарии функций.
- - Совмещены обработчики просмотра списка изменений в расписании.
- - Доабвлена подсказка с доступными классами при выборе класса.
- - Подготовка к удалению сторого главного сообещния.
- - перенесены тексты сообщений из Telegram бота.
- - Список преиммуществ указанного класса.
- - Функция сборки сообщения списка изменений.
- - Добавлен режим просмотра *Ничего* в клавиатуре счётчиках.
- - Портирована многостраничная справка по написанию запросов к боту.
- - Клавиатура была упрощена, чтобы показывать только содержание.
- - Текст справки адаптирован под вк бота.
- - Удалены разделы про групповые чаты и поздравление с прохождением.
- - Клавиатура счётчиков использует цвета, для большей наглядности.
- 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_namw)`: Переименовать намерение.
- - `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_querry`.
- - Использование CallbackData factory для обработки кнопок.
- - В статусном сообщении указывается время автоматической проверки.
- - Добавлена `LogMiddleware` для отладки запросов к боту.
- - Больше нет возможности передавать аргументы в команду (будет решено).
- - Больше нет возможности использовать бота в групповых чатах (будет решено).
- vk v1.1 (10.7.2023, sp v5.3.8)
- ==============================
- Внутренние улучшенияе бота.
- Schedule
- --------
- - Попытка исправить двойное отправление списка изменений при обновлении бота.
- Messages
- --------
- - Поправка в типизации функции `send_search_res()`.
- - Возможность отвязать пользователя от класса в методе `set_class()`.
- Vk
- --
- - `process_request`: Всегда возращает строковый результат запроса.
- - `process_request`: Напрямую использует метод поиска `Schedule.search()`.
- - Исправлены тексты комментариев.
- - Используется метод `set_class()` для отвязки класса.
- - Объединены оброаботчики для включения и отключения оповещений в указаный час.
- - Запросы к расписанию обрабатываются только в личных сообщениях.
- - Исправлены тексты сообщений.
- - Дополнительный вариант справки при отвязанном классе.
- - В справке больше не отображается выбранный пользователм класс.
- vk v1.0 (03.7.2023, sp v5.3.6)
- ==============================
- .. note:: Нормализация версий.
- Начиная с этого обновления, версионирование проекта приходит в норму.
- Это первая сборка ВК версии бота на основе последней версии `SPMessage`.
- Кодовая база портирована с последней сборки `Telegram v1.13.4`.
- Для ВК бота используется фреймворк `vkbottle`.
- 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` вместо стандартного `josn`.
- 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
- --------
- - `_uppdate_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()` за ненадобностью.
- - Из `SPMeaasges` перенесены `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 (6.12.2022)
- ================
- Небольшой общмй рефакторинг проекта.
- Смена мажорной версии обусловлена отделением класса генератора сообщений
- от класса расписания.
- Features
- --------
- - Просмотр самых частых кабинетов.
- - Поиск по урокам/кабинетам.
- Parser
- ------
- - Метод сравнения двух расписаний вынесен в отдельную функцмю.
- - Изменены некоторые имена аттрибутов и методов для большей логичности.
- - Индекс уроков также стал группироваться по кабинетам.
- - Добавлен общий метод для поиска в расписании.
- Messages
- --------
- Методы для сборки сообщений были отделены в сволй класс - `SPMessages`.
- Далее этот класс представления может называться как генератор сообщений.
- tparser -> sparser (27.11.2022)
- ===============================
- До этого проект именовался как Timetable Pparser.
- Теперь же проект называется 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` - Установлен ли класс у пользователя.
- - `lset_parser` - Время последней проверки расписания пользователем.
- - Обновлён метод сравнения хешей дней для повышения скорости работы.
- - Новый метод `print_status()` основной информации о состоянии парсера.
- v2.0 (13.11.2022)
- =================
- Смена мажорной версии обусловлено сменой названий переменных.
- А также в связи с многочисленными внутренними изменениями.
- Parser
- ------
- - Переименован атрибут `schedule -> lessons`.
- - Для большей логичности некоторые названия переменных переименованы.
- - Пустыне уроки очищаются на стадии загрузки расписания одни раз.
- - В файл расписания добавлена отметка последней загрузки расписания.
- - Некоторые изменения стиля сообщений.
- - Упрощение кода проверки диапазона дней в `print_lessons()`.
- Console
- -------
- - Обновлены описания команд.
- v1.6 (7.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]=Fasle`, для принудительного
- обновления расписания уроков.
- Console
- -------
- - Доабвен ключ `--parse` для принудительного обновления расписания.
- v1.0 (12.10.2022)
- =================
- Начало развития собственной ветки проекта.
- Parser
- ------
- - Отделён код парсера в отдельный файл `sparser.py`.
- - Добавлена простая система отслеживания изменений в расписании.
- - Добавлены уведомления пользователям об изменениях в расписании.
- - Удалён парсер расписания звонков.
- Telegram
- --------
- - Некоторые обновления и исправления кода бота.
- Console
- -------
- - Написана простая обёртка для отладки работы проекта.
- v1.0b (10.10.2022)
- ==================
- Начало разработки проекта.
- За основу взят исходный код бота Артёма Березина.
- Внесены некоторые общие улучшения и исправления.
- - Исправлен список зависимостей в коде.
- - Чистка и стилизация кода.
- - Полностью переписан парсер расписания уроков.
- - Испрвлены некоторые ошибки в коде.
- - Некоторая правка текстов сообщений.
- - Полностью убран так называемый раздел **ВПР**.
- - Добавлена возможность кэширования данных в json файл.
|