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