I am working on a Telegram Bot in Python but I struggle to use markdown correctly and I can not find any proper resources about the telegram markdown implementation. It gets even more complicated because of two different markdown "versions" (Markdown and Markdown_V2). And none of them is matching the behavior of the normal chat field (typing by hand).
Test String:
*Bold*, _italic_, *_bold and italic_*, **double bold**, __double italic__, __**double bold and double italic**__
parse_mode="Markdown"
:
Bold, italic, _bold and italic_, double bold, double italic, double bold and double italic
parse_mode="Markdown V2"
:
Bold, italic, bold and italic, double bold, double italic, double bold and double italic
in Chat:
*Bold*, _italic_, *bold and italic*, double bold, double italic, **double bold and double italic**
–
How do I add bold and italic, and are there any other commands like underline and more? I need some explanation. Thanks.
2
Answers
Bots need a different markdown syntax.
To send bold and italic text use:
from the official telegram website https://core.telegram.org/bots/api#markdownv2-style
I recommend to use only MarkdownV2 syntax, since Markdown is less powerful
Just a note, with Markdownv2 you have to escape special characters. "Special" here means those that Telegram defined as special (doc).
Personally I find it easier to work with
parse_mode='HTML'
where you can use a common function to escape HTML chars (e.g.html.escape
in Python,_.escape
in JS). With HTML you have way more options for text decoration.