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