diff --git a/BotPages.Telegram/TelegramAdapter.cs b/BotPages.Telegram/TelegramAdapter.cs index 4334600..774956a 100644 --- a/BotPages.Telegram/TelegramAdapter.cs +++ b/BotPages.Telegram/TelegramAdapter.cs @@ -157,7 +157,7 @@ public sealed class TelegramAdapter : IMessangerAdapterSetup } /// - public async Task SendFileAsync(string chatId, FileDescriptor file, string? caption, CancellationToken ct) + public async Task SendFileAsync(string chatId, FileDescriptor file, string? caption, MessageFormat? captionFormat, CancellationToken ct) { if (_client is null) { @@ -188,20 +188,51 @@ public sealed class TelegramAdapter : IMessangerAdapterSetup inputFile = new InputFileId(file.Id); } + var parseMode = ParseMode.None; + + switch (captionFormat) + { + case MessageFormat.Html: + { + parseMode = ParseMode.Html; + break; + } + case MessageFormat.Plain: + { + parseMode = ParseMode.None; + break; + } + case MessageFormat.Markdown: + { + parseMode = ParseMode.MarkdownV2; + break; + } + case null: + { + parseMode = ParseMode.None; + break; + } + default: + { + _logger.Log(LogLevel.Warn, $"MessageFormat '{captionFormat}' not supported. Degraded to plain text."); + break; + } + } + // В зависимости от FileKind выбираем подходящий метод switch (file.Kind) { case FileKind.Photo: - await _client.SendPhoto(long.Parse(chatId), inputFile, caption ?? "", cancellationToken: ct); + await _client.SendPhoto(long.Parse(chatId), inputFile, caption ?? "", parseMode, cancellationToken: ct); break; case FileKind.Video: - await _client.SendVideo(long.Parse(chatId), inputFile, caption: caption ?? "", cancellationToken: ct); + await _client.SendVideo(long.Parse(chatId), inputFile, caption: caption ?? "", parseMode, cancellationToken: ct); break; case FileKind.Audio: - await _client.SendAudio(long.Parse(chatId), inputFile, caption ?? "", cancellationToken: ct); + await _client.SendAudio(long.Parse(chatId), inputFile, caption ?? "", parseMode, cancellationToken: ct); break; default: - await _client.SendDocument(long.Parse(chatId), inputFile, caption ?? "", cancellationToken: ct); + await _client.SendDocument(long.Parse(chatId), inputFile, caption ?? "", parseMode, cancellationToken: ct); break; } }