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); }