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