python - How should I use parse_mode='HTML' in telegram python bot?
问题描述
I'm trying to send a message in a channel with a bot, using Telegram API's send_photo()
method. It takes a caption parameter (type String
) but I can't format it through parse_mode='HTML'
parameter...
If I use something like this:
send_photo(chat_id, photo, caption="<b>Some text</b>", parse_mode='HTML')
it sends the message but without any kind of formatting. Does anybody know why? Thanks
解决方案
首先,您需要像这样导入 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'
你自己都为我工作!
另一个更新(根据您的评论):您可以使用多个标签。这是一个例子,带有hyperlink
、bold
和italic
:
另一个更新:关于您的评论:
...我对 HTML 标签有什么限制吗?我不能使用类似
<img>
或<br>
画线的东西
诚实地,
这就是我所做的!
现在您正在尝试使用 格式化图像的标题HTML
,这意味着您正在格式化 a text
,因此很明显,您不能使用“类似的东西<img>
”。它必须是“文本格式标签”(加号<a>
)。甚至不是全部!我相信您只能使用这些:<a>
、<b>
、 <strong>
和<i>
。<em>
如果您尝试使用类似 的文本格式标记<del>
,则会出现以下错误:
无法解析实体:字节偏移量 148 处不支持的开始标记“del”
这是一个耻辱!我希望能够在图像的标题中做这样的事情。或类似的东西!
推荐阅读
- kubernetes - 如何在 Google Composer 中重新启动自我管理的 Airflow Web 服务器
- c# - 如何从本地 forder uwp 中显示图像
- xcode - 你知道仪器为什么离线吗?
- kubernetes - 在 MicroK8s 中运行 JFrog 打开文件太低
- c# - 并行长时间运行任务的时间优化
- java - 如何使用java在Selenium中已经打开的excel表上写
- regex - Perl 正则表达式解析第一个锚标记
- python - python manage.py runserver 不显示任何内容
- r - 将字符向量与 data.frame 和完整的表相结合
- kotlin - 带有 kotlin MVVM 和数据绑定的 recyclerview 中的单选按钮