我应该如何在电报python bot中使用parse_mode ='HTML'?

时间:2019-05-12 22:33:28

标签: python bots telegram telegram-bot python-telegram-bot

我正在尝试使用电报API的send_photo()方法在带有机器人的频道中发送消息。它需要一个字幕参数(类型String),但我无法通过parse_mode='HTML'参数对其进行格式化...

如果我使用这样的东西:

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

它发送消息,但没有任何格式。有人知道为什么吗?谢谢

2 个答案:

答案 0 :(得分:1)

对我有用!这是我正在使用的代码:

>>> from telegram import Bot
>>> tkn = '88888:199939393'; chid = '-31828'
>>> bot = Bot(tkn)
>>> with open('ye.jpeg', 'rb') as fme:
...   bot.send_photo(chid, fme, caption='<b>Hallo</b>', parse_mode='html')
...
<telegram.message.Message object at 0x7f6301b44d10>

当然,您必须使用自己的电报令牌和频道ID。另请注意,我正在使用parse_mode='html' # lowercase

答案 1 :(得分:1)

首先,您需要像这样从 import 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
        )

我们可以看到它有效:

works

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

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

multiple tags

又一次更新:关于您的comment

  

...我对HTML标签有什么限制吗?我无法使用<img><br>之类的线条

老实说

try and find out

这就是我所做的!

现在,您尝试使用HTML格式化图像的标题,这意味着您正在格式化text,因此显然,您不能使用“类似于<img>。”它必须是“ text formatting tag”(加上<a>)。甚至不是全部!我相信您只能使用以下这些:<a><b><strong><i><em>

如果您尝试使用<del>之类的文本格式标签,则会出现此错误:

  

无法解析实体:不受支持的起始标记“ del”位于字节偏移148处

这是可耻的! 我希望能够在图像标题中执行类似的操作。 或诸如此类!