我应该如何在电报 python 机器人中使用 parse_mode='HTML'?
How should I use parse_mode='HTML' in telegram python bot?
我正在尝试使用 Telegram API 的 send_photo()
方法通过机器人在频道中发送消息。它需要一个标题参数(类型 String
),但我无法通过 parse_mode='HTML'
参数对其进行格式化...
如果我使用这样的东西:
send_photo(chat_id, photo, caption="<b>Some text</b>", parse_mode='HTML')
它发送消息但没有任何格式。有人知道为什么吗?谢谢
对我有用!这是我正在使用的代码:
>>> 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
首先,你需要像这样导入 ParseMode
from 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:
...do I have any limitations on HTML tags? I can't use something like <img>
or <br>
to draw a line
老实说,
我就是这么做的!
现在您正在尝试使用 HTML
格式化图像的 标题 ,这意味着您正在格式化 text
,很明显,你不能使用 "something like <img>
." 它必须是“text formatting tag”(加上 <a>
)。甚至不是所有人!我相信你只能使用这些:<a>
、<b>
、<strong>
、<i>
和 <em>
.
如果您尝试使用 <del>
之类的 text-formatting 标签,则会出现此错误:
Can't parse entities: unsupported start tag "del" at byte offset 148
真可惜! 我希望能够在图像的标题中做这样的事情。或类似的事情!
我正在尝试使用 Telegram API 的 send_photo()
方法通过机器人在频道中发送消息。它需要一个标题参数(类型 String
),但我无法通过 parse_mode='HTML'
参数对其进行格式化...
如果我使用这样的东西:
send_photo(chat_id, photo, caption="<b>Some text</b>", parse_mode='HTML')
它发送消息但没有任何格式。有人知道为什么吗?谢谢
对我有用!这是我正在使用的代码:
>>> 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
首先,你需要像这样导入 ParseMode
from 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:
...do I have any limitations on HTML tags? I can't use something like
<img>
or<br>
to draw a line
老实说,
我就是这么做的!
现在您正在尝试使用 HTML
格式化图像的 标题 ,这意味着您正在格式化 text
,很明显,你不能使用 "something like <img>
." 它必须是“text formatting tag”(加上 <a>
)。甚至不是所有人!我相信你只能使用这些:<a>
、<b>
、<strong>
、<i>
和 <em>
.
如果您尝试使用 <del>
之类的 text-formatting 标签,则会出现此错误:
Can't parse entities: unsupported start tag "del" at byte offset 148
真可惜! 我希望能够在图像的标题中做这样的事情。或类似的事情!