namespace BotPages.Core.Context;
using BotPages.Core.Abstractions;
///
/// Тип входящего обновления.
///
[Flags]
public enum UpdateKind
{
/// Неизвестное сообщение.
None = 0,
/// Текстовое сообщение.
Text = 1 << 0,
/// Файлы (один или несколько).
File = 1 << 1,
/// Нажатие кнопки.
Button = 1 << 2,
}
///
/// Контекст входящего обновления от мессенджера.
/// Содержит нормализованные данные для страниц.
///
public sealed class UpdateContext
{
/// Тип мессенджера.
public required string MessengerType { 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; }
///
/// Список файлов, если Kind = File.
/// Может содержать один или несколько файлов.
///
public List Files { get; init; } = new();
}