Форматирование текста сообщений

Материал из SaleBot Help
Перейти к навигации Перейти к поиску
Пример форматирования сообщений в Телеграм

В мессенджерах Телеграм, WhatsApp и Facebook можно задействовать форматирование текста (ползунок Markdown в Telegram).

ВКонтакте поддерживает только перенос строки с помощью html-тега <br>.

В Инстаграм текст становится жирным, если отправляется вместе с кнопкой.

Формат текста (что получаем) Телеграм WhatsApp Facebook Что вводим
жирный поддерживается поддерживается поддерживается *жирный шрифт*
курсив поддерживается поддерживается поддерживается _курсив_
подчернутый поддерживается не поддерживается не поддерживается __нижнее подчеркивание__
зачеркнутый поддерживается поддерживается поддерживается ~зачеркнутый~
моноширный поддерживается поддерживается поддерживается `моноширный` или ```моноширный``` (для WhatsApp, FB)
скрытый текст поддерживается не поддерживается не поддерживается ||скрытый текст||
ссылка поддерживается не поддерживается не поддерживается [текст ссылки](http://example.com/)
упоминание пользователя поддерживается не поддерживается не поддерживается [упоминание пользователя](tg://user?id=#{platform_id})

Форматирование в Телеграм

После активации ползунка Markdown в Telegram в редакторе, произойдет экранирование текста символом \ в поле Текст сообщения.

Следующие символы должны быть обязательно экранированы:

_ * [ ] ( ) ~ ` > # + - = | { } . !


Экранирование должно быть как в поле Текст сообщения, так и в используемых переменных (при помощи функции tg_escape() в Калькуляторе).


Пример экранирования в "калькуляторе":

outStr = tg_escape(inStr)

В переменнойinStr находится наш исходный текст, в outStr – результат функции (экранированный текст), в ec_out – форматированный текст:

Форматирование текста. Редактор сообщения

Так выглядит наш текст в Телеграм:

Форматирование текста в Телеграм


Видео: https://youtu.be/yzGHBrBywOo - Форматирование текста в Telegram

Если сообщение не отправляется

Ошибка при отправке сообщения

Если сообщение с включенной разметкой Markdown не приходит, проверьте ошибки во вкладке Клиенты:

Ошибка при отправке форматированного текста

Здесь видно, что символ . в конце предложения не экранирован. Исправим это, и сообщение отправится.

Автоматический контроль ошибок

В боте можно предусмотреть сценарий проверки на ошибки, другими словами, что будет делать бот, когда сообщение не отправится.

Для этого, воспользуемся функцией last_message_id(). Из определения функции ясно, что если сообщение отправлено, функция вернет нам номер сообщения, а если нет – None. Это нам и нужно.

Дополним сообщение двумя блоками Состояние диалога и стрелками с таймером в 1 секунду:

Контроль ошибок при форматировании сообщений

В стрелке, ведущей в блок "Ошибка", в поле Переменная для сравнения, укажем:

last_message_id() == None


В стрелке, ведущей в блок "Нет ошибки", в поле Переменная для сравнения, укажем:

last_message_id() != None


Таким образом, мы организовали проверку ошибок, и, если форматированное сообщение из зеленого блока не отправится, пользователь увидит сообщение из блока "Ошибка".

Полезные ссылки

Форматирование текста в Телеграм: https://core.telegram.org/api/entities // Styled text with message entities