首页 > 解决方案 > How should I use parse_mode='HTML' in telegram python bot?

问题描述

I'm trying to send a message in a channel with a bot, using Telegram API's send_photo() method. It takes a caption parameter (type String) but I can't format it through parse_mode='HTML' parameter...

If I use something like this:

send_photo(chat_id, photo, caption="<b>Some text</b>", parse_mode='HTML') 

it sends the message but without any kind of formatting. Does anybody know why? Thanks

标签: pythonbotstelegramtelegram-botpython-telegram-bot

解决方案


首先,您需要像这样导入 ParseMode telegram

from telegram import ParseMode

然后,您只需要指定parse_mode=ParseMode.HTML. 这是一个工作示例:

def jordan(bot, update):
    chat_id = update.message.chat.id
    with open('JordanPeterson.jpg', 'rb') as jordan_picture:
        caption = "<a href='https://twitter.com/jordanbpeterson'>Jordan B. Peterson</a>"
        bot.send_photo(
            chat_id, 
            photo=jordan_picture, 
            caption=caption,
            parse_mode=ParseMode.HTML
        )

我们可以看到它有效:

作品

更新:实际上,parse_mode='html'(正如@slackmart所建议的)和parse_mode='HTML'你自己都为我工作!

另一个更新(根据您的评论):您可以使用多个标签。这是一个例子,带有hyperlinkbolditalic

多个标签

另一个更新:关于您的评论

...我对 HTML 标签有什么限制吗?我不能使用类似<img><br>画线的东西

诚实地,

试着找出

这就是我所做的!

现在您正在尝试使用 格式化图像的标题HTML,这意味着您正在格式化 a text,因此很明显,您不能使用“类似的东西<img>”。它必须是“文本格式标签”(加号<a>)。甚至不是全部!我相信您只能使用这些:<a><b><strong><i><em>

如果您尝试使用类似 的文本格式标记<del>,则会出现以下错误:

无法解析实体:字节偏移量 148 处不支持的开始标记“del”

这是一个耻辱!我希望能够在图像的标题中做这样的事情。或类似的东西!


推荐阅读