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 IMessangerAdapterSetup : IMessengerAdapter
{
///
/// Запуск работы адаптера
///
///
///
///
Task StartAdapterAsync(Func onUpdate, CancellationToken ct);
}