экранирования перед использованием "MarkdownV2" в parse_mode
Добавлено: 08 июл 2025, 08:07
экранирования перед использованием "MarkdownV2" в parse_mode
Какие символы нужно экранировать в MarkdownV2?
Список зарезервированных символов:
Как правильно экранировать?
Перед каждым из этих символов ставьте обратный слеш \.
Пример функции для экранирования:
Использование:
http://reo7sp.github.io/tgbot-cpp/class_tg_bot_1_1_api.html#ac32f2c493cccf92747faab5016ec9bc0
https://core.telegram.org/bots/api#formatting-options
В MarkdownV2 необходимо экранировать все специальные символы, чтобы избежать ошибок парсинга.При указании параметра "MarkdownV2" в parse_mode выводит такую ошибку во время работы программы, и программа падает
Error: Bad Request: can't parse entities: Character '.' is reserved and must be escaped with the preceding '\'
Какие символы нужно экранировать в MarkdownV2?
Список зарезервированных символов:
Код: Выделить всё
_ * [ ] ( ) ~ ` > # + - = | { } . !
Перед каждым из этих символов ставьте обратный слеш \.
Пример функции для экранирования:
Код: Выделить всё
#include <string>
std::string escapeMarkdownV2(const std::string& text) {
std::string escaped;
const std::string special_chars = "_*[]()~`>#+-=|{}.!";
for (char c : text) {
if (special_chars.find(c) != std::string::npos) {
escaped += '\\';
}
escaped += c;
}
return escaped;
}
Код: Выделить всё
std::string message = escapeMarkdownV2("Это пример. Текст с точками и _подчеркиванием_");
bot.getApi().sendMessage(message->chat->id, message, nullptr, nullptr, keyboard, "MarkdownV2");
https://core.telegram.org/bots/api#formatting-options