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

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

1.3.0⚓︎

Добавлено:

  • Механизм health-check для отслеживания состояния подключения бота:
    • push-модель через callback Bot(on_health_check=func_callback), который вызывается при изменении статуса подключения;
    • pull-модель через метод bot.health_check(), который возвращает текущее состояние бота.
    • статусы connected, authorized и disconnected.
  • Поддержка bot.me_id для хранения идентификатора авторизованного бота.
  • Шорткат message.mention, который возвращает True, если в сообщении упомянут текущий бот или используется @all.
  • Модуль форматирования trueconf.utils.formatting для удобного построения HTML/Markdown-сообщений через классы: Text, Bold, Italic, Underline, Strikethrough, Link, Mention, AllMention.
  • Зависимость truststore для работы с системным хранилищем доверенных сертификатов.
  • Тип SSLVerify для унифицированной типизации параметра verify_ssl: bool | str | ssl.SSLContext.
  • Свойство bot.me_chat как новое имя для получения chat_id чата "Избранное".

Изменено:

  • Обновлена логика работы verify_ssl:
    • verify_ssl=True использует системное хранилище доверенных сертификатов через truststore;
    • verify_ssl=False отключает проверку сертификата;
    • verify_ssl="/path/to/ca.pem" использует пользовательский CA bundle;
    • verify_ssl=ssl.SSLContext(...) использует переданный SSL-контекст.
  • Обновлена SSL-логика для WebSocket-подключений: теперь используется единый self.ssl_context, созданный через build_ssl_context(...).
  • Обновлено логирование при инициализации бота: теперь в лог выводится человекочитаемая информация о SSL-контексте.

Исправлено:

  • Обработка неполной цепочки сертификатов заканчивалась неудачей. Теперь цепочка сертификатов проверяется успешно за счёт возможности использовать системное хранилище через truststore или передавать собственный SSL-контекст.

Устарело:

  • Асинхронное свойство bot.me, которое возвращает chat_id чата "Избранное", помечено как устаревшее. Используйте await bot.me_chat вместо него.

Документация:

  • Интегрирован ИИ-ассистент (виджет чата Context7): интерактивный помощник для консультаций по коду и документации.
  • Добавлен новый раздел документации Отправка сообщений с описанием:
    • получения chat_id;
    • отправки текстовых сообщений через bot.send_message(...);
    • отправки ответа через reply_message_id;
    • пересылки сообщений через bot.forward_message(...);
    • форматирования текста через trueconf.utils.formatting;
    • ограничения длины сообщения в 4096 символов и использования safe_split_text(...).
  • Добавлено описание health-check в документацию:
    • push-модель через callback;
    • pull-модель через bot.health_check();
    • пример совместного использования с HTTP health endpoint.
  • Добавлены и обновлены docstring для модуля форматирования, Message.mention, verify_ssl и health-check API.
  • Добавлены новые разделы: Шорткаты, Ограничения, Formatting, Exceptions.

1.2.3⚓︎

Добавлено:

  • Добавлен таймаут ожидания ответа сервера — 10 секунд. Если ответ не будет получен за это время, будет вызвано исключение asyncio.TimeoutError: Request to {self.__api_method__} timed out after {timeout}s (#12).

Исправлено:

  • Исправлены ситуации, когда Mashumaro не мог распарсить ответ, из-за чего приложение могло завершиться с ошибкой (#8, #11).

1.2.2⚓︎

Исправлено:

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

1.2.1⚓︎

Добавлено:

  • Добавлена поддержка TrueConf Server 5.5.4.
  • Добавлен флаг receive_system_messages в Bot() и Bot.from_credentials() для включения или отключения получения системных сообщений.
  • Добавлен новый метод bot.get_chat_participant(), который заменяет bot.has_chat_participant().

Исправлено:

  • Исправлена поддержка TrueConf Server 5.5.3+. Удалена лишняя проверка версии, из-за которой код не запускался при использовании версии библиотеки 1.2.0.
  • Исправлены ссылки в документации на llms.txt и llms-full.txt.

Изменено:

  • При получении информации о файле через bot.get_file_info(file_id=...) ответ теперь возвращает поле file_id вместо info_hash.

Устарело:

  • Метод bot.has_chat_participant() помечен как устаревший. Используйте bot.get_chat_participant() вместо него.

1.2.0⚓︎

Добавлено:

  • Добавлена поддержка TrueConf Server 5.5.3, включая:
    • изменение названия чата с помощью bot.edit_chat_title(...);
    • изменение аватара чата с помощью bot.edit_chat_avatar(...);
    • очистку истории чата с помощью bot.clear_chat_history(...);
    • получение лимитов файлового хранилища с помощью bot.get_file_info_upload_limits(...);
    • новый подход к передаче файлов, при котором параметр file_name теперь обязателен для FSInputFile(...) и других методов загрузки файлов.
  • Добавлено кэширование настроек лимитов файлового хранилища. Эти настройки теперь используются для предварительной проверки перед загрузкой, и библиотека вызывает исключение, если файл не соответствует заданным ограничениям.
  • Добавлены библиотеки python-magic и filetype для более надежного определения типа файла по magic numbers (байтовым сигнатурам).
  • Добавлено автоматическое добавление расширения файла, если оно отсутствует в имени файла.
  • Улучшена стабильность WebSocket-соединения: добавлены экспоненциальная задержка и настраиваемая стратегия повторных подключений. Теперь можно управлять максимальным количеством попыток повторного подключения через ws_max_retries и максимальной задержкой между попытками через ws_max_delay (#6).
  • Добавлена проверка версии TrueConf Server. Теперь библиотека вызывает RuntimeError с инструкциями по обновлению, если обнаружена несовместимая версия сервера.
  • Добавлена утилита safe_split_text для безопасного разделения длинных сообщений, превышающих 4096 символов, на части длиной до 4096 символов. Это особенно полезно для ИИ-агентов, которые генерируют длинные ответы.
  • Добавлены сборки документации, удобные для ИИ: llms.txt и llms-full.txt.
  • Добавлено и расширено логирование.

Исправлено:

  • Исправлена проблема с отправкой стикеров в TrueConf Server 5.5.3+.
  • Исправлена проблема #7.
  • Исправлены различные мелкие ошибки и внесены общие улучшения.

Устарело:

  • Параметры filename и mimetype теперь помечены как устаревшие.
  • Перейдите на новые имена параметров в формате snake_case, так как старые параметры будут удалены в будущих версиях.

1.1.10⚓︎

Исправлено:

  • Исправлено отсутствие параметра file_id в SendFileResponse.

1.1.9⚓︎

Добавлено:

  • Добавлена проверка версии TrueConf Server. Теперь библиотека вызывает RuntimeError с инструкциями по обновлению, если обнаружена несовместимая версия сервера.

1.1.8⚓︎

Исправлено:

  • Добавлена поддержка verify_ssl для WSS-соединений. Ранее проверка SSL безусловно отключалась при включенном https; теперь она корректно управляется флагом конфигурации.

1.1.7⚓︎

Добавлено:

  • Добавлены шорткаты reply_photo, reply_document и reply_sticker в класс Message.
  • Добавлена поддержка reply_message_id в нескольких методах и в классе SendFile.

Исправлено:

  • Исправлено значение quote_fields=False в aiohttp.FormData.
  • Установлено значение по умолчанию None для last_message в GetChatByIdResponse (исправляет #4).

Устарело:

  • reply_message теперь помечен как устаревший. Используйте reply_message_id вместо него.

1.1.6⚓︎

Рефакторинг:

  • Локальное использование verify_ssl заменено на self.verify_ssl в методах класса.

1.1.5⚓︎

Исправлено:

  • Предотвращено зависание run(), если задача подключения завершается с ошибкой.
  • ApiErrorException и другие ошибки теперь корректно передаются вызывающему коду.

1.1.4⚓︎

Исправлено:

  • Удалено поле chat_id из RemoveChatResponse (#1).

1.1.3⚓︎

Исправлено:

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

1.1.2⚓︎

Добавлено:

  • Обновлен статус разработки.
  • Добавлен typing_extensions в зависимости.
  • Добавлен и обновлен бейдж загрузок.
  • Добавлены импорты Self и Unpack из typing_extensions.

Исправлено:

  • Исправлена неработающая функциональность шорткатов Message.

1.1.1⚓︎

Добавлено:

  • Новые классы для работы с файлами: FSInputFile, BufferedInputFile, URLInputFile. Подробнее — в документации.
  • Поддержка отображения истории сообщений display_history = True при добавлении пользователя в групповой чат или канал.
  • Поддержка запроса и события для:
  • Возможность отправки файлов с подписью (caption).
  • Шорткат .save_to_favorites() для быстрого сохранения сообщения в чат "Избранное".
  • Асинхронное свойство await bot.me, возвращающее chat_id чата "Избранное".

Исправлено:

  • Стикеры, отправленные через bot.send_sticker(), отображались с фоном из-за некорректного MIME-типа.
  • Метод .remove_participant_from_chat() не работал при указании неполного TrueConf ID.
  • Ошибка при распаковке списка участников из-за некорректного алиаса.
  • Иногда при получении токена с помощью .from_credentials() возникала ошибка 400 Bad Requests при использовании цифрового (digit) пароля.

Изменено:

  • Свойство bot.server_name стало асинхронным. Используйте его как await bot.server_name.

1.0.0⚓︎

🎉 Первый релиз!

  • Стабильная версия библиотеки python-trueconf-bot.
  • Поддержка всех основных методов API TrueConf ChatBot.
  • Псевдонимы и сочетания клавиш в стиле aiogram (message.answer, message.reply и т. д.).
  • Асинхронная передача данных по протоколу WebSocket.
  • Работа с файлами (отправка и загрузка).
  • Документация: trueconf.github.io/python-trueconf-bot/
  • PyPI: pypi.org/project/python-trueconf-bot/