23

I am trying to send a colored text message to a user as reply, using sendMessage with HTML parsing.

bot.sendMessage(update.message.chat_id, "<span style=\"color:blue\">foo</span>", telegram.ParseMode.HTML)

Sending <span style="color:blue">foo</span> doesn't work, as span is not supported:

Bad Request: Can't parse message text: Unsupported start tag "span" at byte offset 0 (400)

I am using the python-telegram-bot v. 4.0.3.

Is there another way?

Rakete1111
  • 47,013
  • 16
  • 123
  • 162

3 Answers3

13

Unfortunately there is no documentation about the tag accepted by the bot, except the unit test for parsemode.

The tags that work are b, i, a for bold, italic and link elements, this is what is offered, maybe there's more but I couldn't find it in the docs

edoput
  • 1,212
  • 9
  • 17
  • Is there maybe some other solution other than HTML? – Rakete1111 May 08 '16 at 07:39
  • 7
    No, the telegram api docs describes the [messageEntity](https://core.telegram.org/bots/api#messageentity) as > mention (@username), hashtag, bot_command, url, email, bold (bold > text), italic (italic text), code (monowidth string), pre (monowidth block), > text_link (for clickable text URLs) So there is no way to add colour to text message but you can always process the text into an image and display that. – edoput May 08 '16 at 07:59
  • 1
    yes, it is sad....but the few html tags supported are: https://core.telegram.org/bots/api#html-style – costamatrix Apr 02 '19 at 20:42
3

Your can enlight piece of text with grave character "`"

AAAA ` enlight piece ` BBB

0

According to the core API docs, Telegram only supports the <span> tag for spoiler text. I tried to send a message with HTML parsing and the text:

"<span style=\"color:#fc5252;\">text</span>"

And got:

Can't parse entities: tag "span" must have class "tg-spoiler" at byte offset 0

I'm guessing this means the <span> tag can only be used for spoiler text.

wraithie
  • 343
  • 1
  • 6
  • 19