Форматирование текста сообщений
В мессенджерах Телеграм, WhatsApp и Facebook можно задействовать форматирование текста (ползунок Markdown в Telegram).
ВКонтакте поддерживает только перенос строки с помощью html-тега <br>
.
В Инстаграм текст становится жирным, если отправляется вместе с кнопкой.
Формат текста (что получаем) | Телеграм | Что вводим | ||
---|---|---|---|---|
жирный | *жирный шрифт*
| |||
курсив | _курсив_
| |||
подчернутый | __нижнее подчеркивание__
| |||
~зачеркнутый~
| ||||
моноширный |
`моноширный` или ```моноширный``` (для 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