using BotPages.Core.Context; using BotPages.Core.Messaging; namespace BotPages.Core.Abstractions; /// /// Контракт адаптера мессенджера. /// Определяет операции отправки сообщений, файлов и прогресса. /// public interface IMessengerAdapter { /// /// Отправить текстовое сообщение в чат. /// Task SendTextAsync(PageContext ctx, string text, MessageFormat format, IEnumerable>? inline, IEnumerable>? reply, CancellationToken ct); /// /// Отправить файл в чат. /// Task SendFileAsync(PageContext ctx, FileDescriptor file, string? caption, CancellationToken ct); /// /// Создать билдер альбома для отправки медиагруппы. /// IAlbumBuilder CreateAlbumBuilder(PageContext ctx); /// /// Начать отображение прогресса операции. /// Task StartProgressAsync(PageContext ctx, string title, CancellationToken ct); /// /// Обновить прогресс операции. /// Task UpdateProgressAsync(PageContext ctx, string messageId, string title, int percent, CancellationToken ct); /// /// Вызывается при выходе со страницы. /// Task OnLeaveAsync(PageContext ctx, CancellationToken ct); } /// /// Контракт конфигурации адаптера. /// public interface IMessangerAdapterSetup : IMessengerAdapter { /// /// Запуск работы адаптера /// /// /// /// Task StartAdapterAsync(Func onUpdate, CancellationToken ct); }