Files
BotPages/BotPages.Core/Abstractions/SendRequest.cs

104 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}