我正在尝试使用电报API的send_photo()
方法在带有机器人的频道中发送消息。它需要一个字幕参数(类型String
),但我无法通过parse_mode='HTML'
参数对其进行格式化...
如果我使用这样的东西:
send_photo(chat_id, photo, caption="<b>Some text</b>", parse_mode='HTML')
它发送消息,但没有任何格式。有人知道为什么吗?谢谢
答案 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
)
我们可以看到它有效:
更新:实际上,parse_mode='html'
(由@slackmart建议)和parse_mode='HTML'
都是您自己为我工作的!
另一个更新(根据您的comment):您可以使用多个标签。这是一个hyperlink
,bold
和italic
的例子:
又一次更新:关于您的comment:
...我对HTML标签有什么限制吗?我无法使用
<img>
或<br>
之类的线条
老实说
这就是我所做的!
现在,您尝试使用HTML
格式化图像的标题,这意味着您正在格式化text
,因此显然,您不能使用“类似于<img>
。”它必须是“ text formatting tag”(加上<a>
)。甚至不是全部!我相信您只能使用以下这些:<a>
,<b>
,<strong>
,<i>
和<em>
。
如果您尝试使用<del>
之类的文本格式标签,则会出现此错误:
无法解析实体:不受支持的起始标记“ del”位于字节偏移148处
这是可耻的! 我希望能够在图像标题中执行类似的操作。 或诸如此类!