C# Telegram Bot Форматирование сообщений от пользователей
Подскажите как рассылать сообщения от пользователей с сохранением форматирования текста. Написал такой код:
StringBuilder Formatter(StringBuilder message, MessageEntity messageEntity, bool start)
{
switch (messageEntity.Type)
{
case MessageEntityType.Bold:
return FormatterMarkDown(message, messageEntity.Offset, messageEntity.Length, "*", 2, start);
case MessageEntityType.Italic:
return FormatterMarkDown(message, messageEntity.Offset, messageEntity.Length, "_", 2, start);
case MessageEntityType.Strikethrough:
return FormatterMarkDown(message, messageEntity.Offset, messageEntity.Length, "~", 2, start);
case MessageEntityType.Underline:
return FormatterMarkDown(message, messageEntity.Offset, messageEntity.Length, "__", 4, start);
case MessageEntityType.Code:
return FormatterMarkDown(message, messageEntity.Offset, messageEntity.Length, "`", 2, start);
case MessageEntityType.Spoiler:
return FormatterMarkDown(message, messageEntity.Offset, messageEntity.Length, "||", 2, start);
}
return message;
}
StringBuilder FormatterMarkDown(StringBuilder message, int offset, int length, string symbol, int left, bool start)
{
string temp = message.ToString().Substring(offset, length);
if (!start)
offset = offset + left;
temp = temp.Insert(0, symbol) + symbol;
message = message.Remove(offset, length).Insert(offset, temp);
return message;
}
Он работает если в тексте не попадаются символы которые нужно экранировать, можно перед форматированием экранировать все символы которые не поддерживаются, но тогда у MessageEntity офсеты и длина текста сбивается.