using BotPages.Core.Context; using BotPages.Core.Messaging; namespace BotPages.Core.Abstractions; /// /// Контракт адаптера мессенджера. /// Определяет операции отправки сообщений, файлов и прогресса. /// public interface IMessengerAdapter { /// /// Уникальный идентификатор адаптера. /// string Id { get; } /// /// Тип адаптера (Telegram, VK, WhatsApp и т.д.). /// string Type { get; } /// /// Доступные возможности мессенджера. /// Capabilities Capabilities { get; } /// /// Универсальный метод отправки с использованием общего описания запроса. /// Task SendAsync(SendRequest request, CancellationToken ct = default); /// /// Универсальный метод удаления сообщения. /// Task DeleteAsync(string chatId, string messageId, CancellationToken ct = default); /// /// Удалить несколько сообщений за раз. /// Task DeleteMultipleAsync(string chatId, IEnumerable messageIds, CancellationToken ct = default); /// /// Редактировать только текст сообщения. /// Task EditTextAsync(string chatId, string messageId, string text, MessageFormat? format = null, CancellationToken ct = default); /// /// Редактировать только клавиатуру сообщения. /// Task EditButtonsAsync(string chatId, string messageId, IEnumerable>? inlineButtons = null, CancellationToken ct = default); /// /// Закрепить сообщение в чате. /// Task PinMessageAsync(string chatId, string messageId, bool disableNotification = false, CancellationToken ct = default); /// /// Открепить сообщение в чате. /// Task UnpinMessageAsync(string chatId, string messageId, CancellationToken ct = default); /// /// Получить информацию о сообщении. /// Task GetMessageInfoAsync(string chatId, string messageId, CancellationToken ct = default); /// /// Переслать сообщение. /// Task ForwardMessageAsync(string fromChatId, string messageId, string toChatId, bool disableNotification = false, CancellationToken ct = default); /// /// Копировать сообщение с возможностью редактирования. /// Task CopyMessageAsync(string fromChatId, string messageId, string toChatId, string? caption = null, MessageFormat? captionFormat = null, bool disableNotification = false, CancellationToken ct = default); /// /// Создать билдер альбома для отправки медиагруппы. /// IAlbumBuilder CreateAlbumBuilder(PageContext ctx); /// /// Вызывается при выходе со страницы. /// Task OnLeaveAsync(PageContext ctx, CancellationToken ct); } /// /// Контракт конфигурации адаптера. /// public interface IMessengerAdapterSetup : IMessengerAdapter { /// /// Внутренний метод для установки ID адаптера. /// void SetAdapterId(string adapterId); /// /// Запуск работы адаптера /// /// /// /// /// Task StartAdapterAsync(Func onUpdate, List commands, CancellationToken ct); }