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