#nullable enable using System.Collections.Generic; using System.Linq; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; namespace Kruzya.TelegramBot.Core.Service; internal class EntityFormatter { private static readonly Dictionary HtmlMap = new() { { MessageEntityType.Bold, "{0}" }, { MessageEntityType.Code, "{0}" }, { MessageEntityType.Italic, "{0}" }, { MessageEntityType.TextMention, "{0}" }, { MessageEntityType.Pre, "
{0}
" }, { MessageEntityType.Underline, "{0}" } }; private static readonly Dictionary MarkdownMap = new() { { MessageEntityType.Bold, "*{0}*" }, { MessageEntityType.Code, "```{0}```" }, { MessageEntityType.Italic, "_{0}_" }, { MessageEntityType.TextMention, "[{0}](tg://user?id={1})" }, { MessageEntityType.Pre, "```{0}```" }, { MessageEntityType.Underline, "__{0}__" } }; public string? FormatMessage(Message msg) { var text = msg.Text; var entities = msg.Entities; if (entities == null || text == null) return text; foreach (var entity in entities.Reverse()) { var entityText = text.Substring(entity.Offset, entity.Length); text = text .Remove(entity.Offset, entity.Length); } return text; } }