using BotPages.Core.Abstractions;
using BotPages.Core.Messaging;
namespace BotPages.Core;
///
/// Расширения для работы с адаптером.
/// Упрощают создание универсального `SendRequest`.
///
public static class PageContextAdapterExtensions
{
///
/// Отправить сообщение универсальным запросом через привязанный адаптер.
///
public static Task SendAsync(this PageContext ctx, SendRequest request, CancellationToken ct = default)
=> ctx.Adapter.SendAsync(request, ct);
///
/// Удалить сообщение через привязанный адаптер.
///
public static Task DeleteAsync(this PageContext ctx, string chatId, string messageId, CancellationToken ct = default)
=> ctx.Adapter.DeleteAsync(chatId, messageId, ct);
///
/// Удалить сообщение (используя ChatId из контекста).
///
public static Task DeleteAsync(this PageContext ctx, string messageId, CancellationToken ct = default)
=> ctx.Adapter.DeleteAsync(ctx.Update.Chat.Id, messageId, ct);
///
/// Удалить несколько сообщений.
///
public static Task DeleteMultipleAsync(this PageContext ctx, string chatId, IEnumerable messageIds, CancellationToken ct = default)
=> ctx.Adapter.DeleteMultipleAsync(chatId, messageIds, ct);
///
/// Удалить несколько сообщений (используя ChatId из контекста).
///
public static Task DeleteMultipleAsync(this PageContext ctx, IEnumerable messageIds, CancellationToken ct = default)
=> ctx.Adapter.DeleteMultipleAsync(ctx.Update.Chat.Id, messageIds, ct);
///
/// Редактировать текст сообщения.
///
public static Task EditTextAsync(this PageContext ctx, string chatId, string messageId, string text,
MessageFormat? format = null, CancellationToken ct = default)
=> ctx.Adapter.EditTextAsync(chatId, messageId, text, format, ct);
///
/// Редактировать текст сообщения (используя ChatId из контекста).
///
public static Task EditTextAsync(this PageContext ctx, string messageId, string text,
MessageFormat? format = null, CancellationToken ct = default)
=> ctx.Adapter.EditTextAsync(ctx.Update.Chat.Id, messageId, text, format, ct);
///
/// Редактировать кнопки сообщения.
///
public static Task EditButtonsAsync(this PageContext ctx, string chatId, string messageId,
IEnumerable>? inlineButtons = null, CancellationToken ct = default)
=> ctx.Adapter.EditButtonsAsync(chatId, messageId, inlineButtons, ct);
///
/// Редактировать кнопки сообщения (используя ChatId из контекста).
///
public static Task EditButtonsAsync(this PageContext ctx, string messageId,
IEnumerable>? inlineButtons = null, CancellationToken ct = default)
=> ctx.Adapter.EditButtonsAsync(ctx.Update.Chat.Id, messageId, inlineButtons, ct);
///
/// Закрепить сообщение.
///
public static Task PinMessageAsync(this PageContext ctx, string chatId, string messageId,
bool disableNotification = false, CancellationToken ct = default)
=> ctx.Adapter.PinMessageAsync(chatId, messageId, disableNotification, ct);
///
/// Закрепить сообщение (используя ChatId из контекста).
///
public static Task PinMessageAsync(this PageContext ctx, string messageId,
bool disableNotification = false, CancellationToken ct = default)
=> ctx.Adapter.PinMessageAsync(ctx.Update.Chat.Id, messageId, disableNotification, ct);
///
/// Открепить сообщение.
///
public static Task UnpinMessageAsync(this PageContext ctx, string chatId, string messageId,
CancellationToken ct = default)
=> ctx.Adapter.UnpinMessageAsync(chatId, messageId, ct);
///
/// Открепить сообщение (используя ChatId из контекста).
///
public static Task UnpinMessageAsync(this PageContext ctx, string messageId,
CancellationToken ct = default)
=> ctx.Adapter.UnpinMessageAsync(ctx.Update.Chat.Id, messageId, ct);
///
/// Получить информацию о сообщении.
///
public static Task GetMessageInfoAsync(this PageContext ctx, string chatId, string messageId,
CancellationToken ct = default)
=> ctx.Adapter.GetMessageInfoAsync(chatId, messageId, ct);
///
/// Получить информацию о сообщении (используя ChatId из контекста).
///
public static Task GetMessageInfoAsync(this PageContext ctx, string messageId,
CancellationToken ct = default)
=> ctx.Adapter.GetMessageInfoAsync(ctx.Update.Chat.Id, messageId, ct);
///
/// Переслать сообщение.
///
public static Task ForwardMessageAsync(this PageContext ctx, string fromChatId, string messageId,
string toChatId, bool disableNotification = false, CancellationToken ct = default)
=> ctx.Adapter.ForwardMessageAsync(fromChatId, messageId, toChatId, disableNotification, ct);
///
/// Копировать сообщение.
///
public static Task CopyMessageAsync(this PageContext ctx, string fromChatId, string messageId,
string toChatId, string? caption = null, MessageFormat? captionFormat = null,
bool disableNotification = false, CancellationToken ct = default)
=> ctx.Adapter.CopyMessageAsync(fromChatId, messageId, toChatId, caption, captionFormat,
disableNotification, ct);
}