【问题标题】:How should I use parse_mode='HTML' in telegram python bot?我应该如何在电报 python bot 中使用 parse_mode='HTML'?
【发布时间】:2019-09-29 22:07:34
【问题描述】:

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

如果我使用这样的东西:

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

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

【问题讨论】:

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


    【解决方案1】:

    首先,您需要像这样导入 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' 你曾经为我工作!

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

    另一个更新:关于你的comment

    ...我对 HTML 标签有什么限制吗?我不能使用 &lt;img&gt;&lt;br&gt; 之类的东西来画线

    老实说,

    我就是这么做的!

    现在您正在尝试使用HTML 格式化图像的标题,这意味着您正在格式化text,所以很明显,您不能使用“类似@ 987654345@。”它必须是“text formatting tag”(加上&lt;a&gt;)。甚至不是全部!我相信你只能使用这些:&lt;a&gt;&lt;b&gt;&lt;strong&gt;&lt;i&gt;&lt;em&gt;

    如果你尝试使用像&lt;del&gt; 这样的文本格式标签,它会给你这个错误:

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

    真可惜! 我希望能够在图像的标题中做这样的事情。或者这样的事情!

    【讨论】:

      【解决方案2】:

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

      >>> 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

      【讨论】:

      • 嗯,我总是用parse_mode=ParseMode.HTML 做的。没想到parse_mode='html' 也可以!为此 +1。
      • 顺便说一句,您的回答表明问题在于HTML,它是大写的。但是,html 也可以。
      • 谢谢,但我可以使用的标签有限制吗?我的意思是,我不能在标题上使用 ,对吗?或者有没有办法同样使用它?
      • @Federico 查看我的第二次更新。此外,您可以使用&lt;a href=""&gt;&lt;/a&gt;!你有没有看我的回答?
      • @Federico 我添加了另一个更新来解决您的问题。让我们把话题移到我自己的答案下,以免给@slackmart 制造不必要的噪音。但是,cmets 不适用于扩展对话,如果有一些问题没有得到解答,您应该更新您的问题,以明确您希望理解的内容。
      猜你喜欢
      • 2019-10-14
      • 2018-10-27
      • 1970-01-01
      • 2017-12-25
      • 2018-01-17
      • 1970-01-01
      • 2020-12-26
      • 2022-01-04
      • 2021-04-08
      相关资源
      最近更新 更多