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