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