在Telegram机器人开发中,默认发送的消息是纯文本,但通过设置parse_mode为HTML,你可以让消息支持富文本格式,如加粗、斜体、超链接、代码块等。本文将为你提供一份完整的HTML格式消息支持标签教程,帮助你掌握所有可用标签、转义规则以及实际代码写法,让你的机器人消息更专业、更易读。
一、为什么选择HTML格式?
Telegram Bot API提供了两种富文本格式:HTML和Markdown。相比Markdown,HTML语法更直观,且与网页开发习惯一致,对于有前端经验的开发者更友好。此外,HTML格式对嵌套标签的支持更灵活,调试也更方便。
二、Telegram官方支持的HTML标签列表
根据Telegram Bot API官方文档,当parse_mode设置为HTML时,以下标签是允许使用的:
<b>或<strong>:加粗<i>或<em>:斜体<u>或<ins>:下划线<s>或<strike>或<del>:删除线<span class="tg-spoiler">或<tg-spoiler>:隐藏文本(点击显示)<a href="URL">:内联链接<code>:行内等宽字体<pre>:块级等宽字体(可加language属性指定语言)
注意:<pre>标签中如果包含代码,需要将特殊字符进行HTML转义,否则可能解析失败。
三、必须转义的字符
即使使用HTML格式,Telegram也要求开发者将以下字符转义为HTML实体,以避免被误解为标签的一部分:
| 原始字符 | 转义实体 |
|---|---|
| & | & |
| < | < |
| > | > |
注意,双引号"不需要转义,除非在属性值中,但建议在属性中使用单引号或进行转义。
四、如何发送HTML格式消息?
发送HTML格式消息非常简单,只需在调用sendMessage方法时设置parse_mode为HTML即可。以下是Python与Node.js的示例代码。
Python(python-telegram-bot库)
from telegram import Bot
from telegram.constants import ParseMode
bot = Bot(token="YOUR_BOT_TOKEN")
chat_id = "@your_channel_or_user_id"
html_text = "<b>加粗</b> <i>斜体</i> <a href='https://example.com'>链接</a>"
bot.send_message(chat_id=chat_id, text=html_text, parse_mode=ParseMode.HTML)
Node.js(node-telegram-bot-api库)
const TelegramBot = require('node-telegram-bot-api');
const bot = new TelegramBot('YOUR_BOT_TOKEN', {polling: true});
const chatId = '@your_channel_or_user_id';
const htmlText = '<b>加粗</b> <i>斜体</i> <a href="https://example.com">链接</a>';
bot.sendMessage(chatId, htmlText, {parse_mode: 'HTML'});
注意:在实际代码中,htmlText字符串中的标签应直接写为<b>等,而不是转义后的字符串。示例中为了在HTML中展示代码进行了转义,实际开发时请直接使用标签。
五、常见错误与调试技巧
不少开发者会遇到“HTML标签无效”的报错,通常原因如下:
- 使用了不支持的标签(如
<font>) - 标签未正确闭合
- 在
<pre>标签内未转义<和> - 链接的
href属性值未加引号或包含非法字符
建议:在发送前先用在线HTML校验工具检查,或者将parse_mode临时改为空字符串来查看原始文本。
六、进阶技巧:组合使用标签与实体按钮
HTML格式不仅可以用于文本展示,还可以与InlineKeyboardButton结合,让消息同时拥有富文本和交互按钮,提升用户体验。示例:
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
button = InlineKeyboardButton("访问网站", url="https://example.com")
keyboard = InlineKeyboardMarkup([[button]])
bot.send_message(chat_id, "<b>欢迎!</b> 点击下方按钮访问。", parse_mode=ParseMode.HTML, reply_markup=keyboard)
七、总结
通过本文的教程,你已经掌握了Telegram机器人发送HTML格式消息的所有关键点:支持的标签列表、转义规则、代码实现和常见问题。合理使用这些标签,可以让你的消息更加清晰有力,明显提升机器人的专业度。如果你需要处理更复杂的文本格式,建议结合entities参数(通过Bot API的MessageEntity结构)实现同样的效果,但HTML方式更简单直观,适合大多数场景。
现在就去升级你的机器人消息吧!