using BotPages.Core.Abstractions;
namespace BotPages.Core.Context;
///
/// Контекст входящего обновления от мессенджера.
/// Содержит нормализованные данные для страниц.
///
public sealed class UpdateContext
{
/// Адаптер, от которого пришло обновление.
public required IMessengerAdapter Adapter { get; init; }
///
/// Данные пользователя, от которого пришло обновление.
///
public required UserContext User { get; init; }
///
/// Данные чата, в котором произошло обновление.
///
public required ChatContext Chat { get; init; }
///
/// Тип обновления (текст, файлы, кнопка).
///
public required UpdateKind Kind { get; init; }
///
/// Текст сообщения, если Kind = Text.
/// Payload кнопки, если Kind = Button.
///
public string? Text { get; init; }
///
/// ID сообщения, к которому относится обновление.
///
public string? MessageId { get; init; }
///
/// ID сообщения, на которое дан ответ (если есть).
///
public string? ReplyToMessageId { get; init; }
///
/// Список файлов, если Kind = File.
/// Может содержать один или несколько файлов.
///
public List Files { get; init; } = new();
///
/// Информация о редактировании (если Kind = Edit).
///
public EditInfo? EditInfo { get; init; }
///
/// Информация об удалении (если Kind = Delete).
///
public DeleteInfo? DeleteInfo { get; init; }
///
/// Информация о закреплении (если Kind = Pin).
///
public PinInfo? PinInfo { get; init; }
}