Releases: prethink/PRTelegramBot
Releases · prethink/PRTelegramBot
v0.9.5
🧩 Common
- В PRBotBase добавлен метод SetServiceProvider.
- Если в DI добавлен ILogger, а не ILoggerFactory, бот попытается его использовать для логирования.
Приоритет источников логера:
- Фабрика логеров, заданная в билдере
- ILogger из DI
- ILoggerFactory из DI
- Встроенная фабрика логеров (fallback)
v0.9.4
v0.9.3
v0.9.2
🧩 Common
- Библиотека
Microsoft.Extensions.Configurationобновлена до версии 9.0.11 - Библиотека
Microsoft.Extensions.Configuration.Jsonобновлена до версии 9.0.11 - Библиотека
Microsoft.Extensions.Configuration.Jsonобновлена до версии 9.0.11 - Библиотека
Microsoft.Extensions.Hosting.Abstractionsобновлена до версии 9.0.11 - Добавлена библиотека
Microsoft.Extensions.Logging.Abstractionsверсии 9.0.11
🧾 Logger
- Добавлена поддержка
ILoggerиILoggerFactory. - Через
PRBotBuilderможно указать собственную фабрику логеровILoggerFactory, которая будет использоваться для созданияILogger. - Также поддерживается получение
ILoggerFactoryиз DI-контейнера. - Если ни один из вариантов не задан, используется встроенная (дефолтная) фабрика логеров, которая обеспечивает обратную совместимость со старым механизмом.
Приоритет источников логера:
- Фабрика логеров, заданная в билдере
- ILoggerFactory из DI
- Встроенная фабрика логеров (fallback)
v0.9.1
🔄 Breaking changes
- В MiddlewareBase стал абстрактным классом.
- В MiddlewareBase добавлено новое свойство ExecutionOrder. Определяет порядок выполнения.
Common
- В PRConstants добавлена константа ALL_BOTS_ID = -1. Данный идентификатор используется, когда следует применить команду для всех ботов. Может относиться не только к командам.
- Мелкий рефакторинг
- Добавлен модуль фоновых задач. Фоновые задачи поддерживают DI
- В MiddlewareBase добавлена поддержка DI.
- Добавлена поддержка шины событий.
v0.9
🔄 Breaking changes
PRBotBuilderперенесён изPRTelegramBot.CoreвPRTelegramBot.Builders- Метод
Message.NotifyFromCallBackперенесён вIBotContext
🧱 Builders
- Добавлен builder reply-кнопок —
ReplyKeyboardBuilder - Добавлен builder inline-кнопок —
InlineKeyboardBuilder
♻️ Refactoring
- Проведён рефакторинг класса
Message
Класс разделён на отдельные компоненты:MessageSenderMessageEditorMessageDeleterMessageNotificationMessageCopierMediaEditorMediaSender
📋 Inline меню/конвертация
- Добавлен интерфейс
IInlineMenuConverterдля конвертации данных для inline меню. - В Builder бота теперь можно указать свою реализацию конвертации меню
.SetInlineMenuConverter(IInlineMenuConverter inlineMenuConverter) - Добавлен класс
FileInlineConverter, реализующийIInlineMenuConverterдля конвертации данных в inline меню с использованием файловой системы для обхода ограничения размераcallback_data.
🧱 Builders
🧭 Контекст выполнения
- Добавлен BotContextScope, обеспечивающий доступ к текущему экземпляру бота и контексту в рамках обработки обновления.
Теперь можно легко получить их в любом месте кода, если этот код был вызван обновлением telegram:
var currentContext = CurrentScope.Context; var currentBot = CurrentScope.Bot; var serviceScope = CurrentScope.Services (IServiceProvider);
📡 События
- Добавлены события для
updateType:PurchasedPaidMediaBusinessMessage
- Добавлены события для
messageType:PaidMediaRefundedPaymentGiftUniqueGiftPaidMessagePriceChangedChecklistChecklistTasksDoneChecklistTasksAddedDirectMessagePriceChangedSuggestedPostApprovedSuggestedPostApprovalFailedSuggestedPostDeclinedSuggestedPostPaidSuggestedPostRefunded
🏗 Инициализация бота
- В билдер добавлена возможность указать Action инициализации бота.
SetInitializeAction(Action action). Данный Action будет вызван при старте бота после инициализации всех менеджеров.
👮 Менеджеры и интерфейсы
AdminManagerтеперь реализовывает интерфейсIAdminManager.- В интерфейсы IUserManager, IWhiteListManager, IAdminManager добавлен метод Initialize().
💉 Интеграция с DI
- Интерфейсы IInlineMenuConverter, IPRSerializer, IAdminManager, IWhiteListManager должны подружиться с DI.
Если вы используете DI контейнер, то зарегистрируйте их там и боты сами подтянут о них информацию в AdminManager, WhiteListManager.
Приоритетность использования ботом данных интерфейсов работает в следующем порядке.
- Через установку билдера SetAdminManager, SetWhiteListManager, SetInlineMenuConverter, SetPRSerializer
- Через DI
- Локальные/дефолтные классы.
v0.8.6
v0.8.5
- В атрибут SlashHandlerAttribute добавлена возможность указать символ разделителя для аргументов. Пример [SlashHandler('_', "/get")]
- Добавлена возможность при выполнение slash команд получить список аргументов из контекста.
var args = context.GetSlashArgs();
var args = context.GetSlashArgs();
var args = context.GetSlashArgs(); - /start с deeplink теперь можно использовать в своих slash методах, а не как раньше, только через события.
v0.8.4
- В билдере теперь есть возможность указать каким сериализатором пользоваться (SetInlineSerializer) для Inline кнопок. JsonSerializerWrapper или ToonSerializerWrapper. ToonSerializerWrapper использует меньше байт в callback_data.
- При создание экземпляра сериализатора можно устанавливать параметры сериализации.
- Добавлен класс глобальных настроек проекта PRSettingsProvider.
- Добавлена библиотека ToonNet.
- Добавлена Microsoft.Extensions.Hosting.Abstractions для возможности использования бота как IHostedService сервиса.