Python Telegram Bot Markdown
Solution 1
Bots need a different markdown syntax.
To send bold and italic text use:
update.message.reply_text('*_bold and italic_*', parse_mode='MarkdownV2')
from the official telegram website https://core.telegram.org/bots/api#markdownv2-style
*bold \*text*
_italic \*text_
__underline__
~strikethrough~
*bold _italic bold ~italic bold strikethrough~ __underline italic bold___ bold*
[inline URL](http://www.example.com/)
[inline mention of a user](tg://user?id=123456789)
`inline fixed-width code`
```
pre-formatted fixed-width code block
```
```python
pre-formatted fixed-width code block written in the Python programming language
```
I recommend to use only MarkdownV2 syntax, since Markdown is less powerful
Solution 2
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.
Schneyer
Freelance automation and efficency expert, mostly hacking AHK.
Updated on June 04, 2022Comments
-
Schneyer almost 2 years
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.
-
Chris almost 4 yearsThat's not Markdown. In Markdown,
*this*
is italic, not bold, and__this__
is bold, not "double italic", whatever that means.
-
-
Chris almost 4 years"a different markdown syntax"—the markup shown in this question isn't Markdown. If you change something fundamental like what
*this*
means, you have a different language. -
Schneyer almost 4 yearsActually telegram web does not show the combination, while the app does. Confused me even more ..., but now I got it. Thanks!