using BotPages.Core.Messaging;
namespace BotPages.Core.Abstractions;
///
/// Универсальная структура запроса на отправку сообщения/файла, используемая адаптерами.
///
public sealed class SendRequest
{
/// Идентификатор чата/сессии в мессенджере.
public required string ChatId { get; init; }
/// Текст сообщения (если отправляется текст).
public string? Text { get; init; }
/// Формат текста (HTML/Markdown/Plain).
public MessageFormat? TextFormat { get; init; }
/// Inline кнопки (строки кнопок).
public IEnumerable>? Inline { get; init; }
/// Reply клавиатура (строки кнопок).
public IEnumerable>? Reply { get; init; }
/// Id редактируемого сообщения (если редактируем).
public string? MessageId { get; init; }
/// Файл для отправки (если отправляется файл).
public FileDescriptor? File { get; init; }
/// Подпись для файла.
public string? Caption { get; init; }
/// Формат подписи/подписи для файла.
public MessageFormat? CaptionFormat { get; init; }
///
/// Контейнер адаптер-специфичных опций.
/// Содержит имена/ключи адаптеров и соответствующие объекты опций.
///
public AdapterOptionsBag? AdapterOptions { get; init; }
///
/// ID сообщения, на которое отвечаем.
///
public string? ReplyToMessageId { get; init; }
///
/// Цитировать ли оригинальное сообщение при ответе.
///
public bool QuoteReply { get; init; } = true;
///
/// Заголовок цитаты (для некоторых мессенджеров).
///
public string? QuoteTitle { get; init; }
///
/// Показывать ли предпросмотр ссылок в сообщении.
///
public bool DisableWebPagePreview { get; init; } = false;
///
/// Отключает уведомление о сообщении.
///
public bool DisableNotification { get; init; } = false;
///
/// Защищает содержимое сообщения от пересылки и сохранения.
///
public bool ProtectContent { get; init; } = false;
///
/// Стиль разметки сообщения (для некоторых мессенджеров).
///
public MessageStyle? Style { get; init; }
///
/// Позволяет указать дату отправки сообщения (для планирования).
///
public DateTime? ScheduleDate { get; init; }
///
/// Тема сообщения (для форумов и тредов).
///
public string? Topic { get; init; }
}
///
/// Стиль оформления сообщения.
///
public enum MessageStyle
{
/// Обычный стиль.
Default,
/// Стиль заголовка.
Heading,
/// Стиль предупреждения.
Warning,
/// Стиль успеха.
Success,
/// Стиль ошибки.
Error
}