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