我应该如何在电报 python bot 中使用 parse_mode='HTML'?
Posted
技术标签:
【中文标题】我应该如何在电报 python bot 中使用 parse_mode=\'HTML\'?【英文标题】: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')
它发送消息但没有任何格式。有人知道为什么吗?谢谢
【问题讨论】:
【参考方案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):您可以使用多个标签。这是一个例子,hyperlink
、bold
和 italic
:
另一个更新:关于你的comment:
...我对 HTML 标签有什么限制吗?我不能使用
<img>
或<br>
之类的东西来画线
老实说,
我就是这么做的!
现在您正在尝试使用HTML
格式化图像的标题,这意味着您正在格式化text
,所以很明显,您不能使用“类似@ 987654345@。”它必须是“text formatting tag”(加上<a>
)。甚至不是全部!我相信你只能使用这些:<a>
、<b>
、<strong>
、<i>
和<em>
。
如果你尝试使用像<del>
这样的文本格式标签,它会给你这个错误:
无法解析实体:不支持在字节偏移 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 查看我的第二次更新。此外,您可以使用<a href=""></a>
!你有没有看我的回答?
@Federico 我添加了另一个更新来解决您的问题。让我们把话题移到我自己的答案下,以免给@slackmart 制造不必要的噪音。但是,cmets 不适用于扩展对话,如果有一些问题没有得到解答,您应该更新您的问题,以明确您希望理解的内容。以上是关于我应该如何在电报 python bot 中使用 parse_mode='HTML'?的主要内容,如果未能解决你的问题,请参考以下文章