Telegram 机器人如何使用富文本格式:标题、原生表格、LaTeX 数学公式、剧透与 Bot API 7.x 实体
本文介绍 Telegram 机器人消息可用的富文本格式,包括标题、表格、折叠引用、代码块与公式,并给出在窄屏手机上设计消息结构的实用建议,帮助你判断何时该用结构、何时该克制。
本文介绍 Telegram 机器人消息可用的富文本格式,包括标题、表格、折叠引用、代码块与公式,并给出在窄屏手机上设计消息结构的实用建议,帮助你判断何时该用结构、何时该克制。

机器人发送的消息可以承载比人们通常以为的更多结构——标题、表格、可以折叠收起的引用、代码、公式。这一切都能在普通的聊天气泡中渲染出来,无需附件,也无需点开任何东西。
这就引出一个与能力无关的问题:聊天中的一条消息在不再算作消息之前,究竟能承载多少结构。
你将能够做到
- 了解机器人能在气泡里放什么。
- 选择在手机上真正有帮助的结构。
- 用折叠引用收纳冗长的部分。
- 说清楚哪些内容在转发后仍然保留。
这里的一切仍然只是聊天中的一条消息,而这正是值得在设计时加以应对的约束。
气泡很窄,而且永远如此
机器人输出中大多数格式错误,都源于在宽屏上编写、在窄屏上阅读。一张五列的表格在编辑器里清晰可读,到了手机上就变成一堆换行后的碎片,而几乎所有内容都是在手机上读的。
有用的做法是把宽度视为固定且很短。两到三列,值要短到不会换行,标题只用一个词。任何不符合这一点的东西都不是表格的问题——它说明这个答案本该是一个文件、一个链接,或者几条消息。
长度也是同样的道理。一个气泡能装下很多东西,但读者装不下:一条占满两屏的消息,无论底下结构多好,都会被略读到第一行然后划过去。
机器人发送了一条格式良好的消息。有人转发了它。到达对方那里的是什么?
带着格式的消息,因为结构是消息本身的一部分
纯文本——转发时格式会被剥离
一个指回原消息的链接
格式会随之传递,因为它属于消息本身,而不是由所在聊天施加的。这一点从两方面都值得了解:一条结构良好的机器人回复在被人转给同事后依然有效,而任何你不希望以那种形式流传出去的内容,就根本不该出现在消息里。不会随之传递的是消息之外的东西——附在消息上的按钮通常就是牺牲品。
一张五列的表格在手机上会怎样?
它会在气泡内横向滚动
它会换行,变得难以阅读
它会被拒绝,并以纯文本发送
聊天气泡不是页面,宽度完全由手机决定。放不下的列会换行,对齐会崩塌,一张原本让对比一目了然的表格会变成对话中最难读的东西。如果数据确实需要五列,诚实的选项是减少行数、改用文件,或者链接到某个能妥善排版的地方。
什么时候代码块是普通文本的正确选择?
任何时候你想让它从其余内容中凸显出来
当确切的字符很重要、而且有人会复制它们时
从不——它只用于编程语言
代码块会原样保留空格和标点,并让读者无需手动选中就能复制内容。这使它适合参考编号、标识符、命令,以及任何错一个字符就会出问题的地方——无论它是不是代码。把它当作强调来用才是误用:它会让普通句子更难读,并暗示出文本并不具有的含义。
机器人的回复很长但结构良好。它应该以什么开头?
一个标明章节的标题
答案,一行,放在任何结构之前
对用户所问内容的总结
第一行是唯一保证会被读到的部分,而在聊天中,它也是出现在通知和聊天列表里的内容。它下面的结构能帮助继续读下去的人;顶部的标题则把答案推迟了一行,还重复了读者已经知道的东西。复述问题更糟——它用用户自己提供的信息占满了那唯一重要的一行。
结构不等于清晰
有一种模式值得点明,因为出于好意的机器人经常掉进去:一条回复带着标题、项目符号、表格和引用,而这一切都用在两句话的内容上。格式让消息看起来经过深思熟虑,却让它读起来长了三倍。
一条有用的规则是:结构应当由内容赢得。确实有列表时才用项目符号。在相同属性之间做比较时才用表格。只有在不止一个章节时才用标题。用在任何更短的内容上,这一切都只是给一条本该写成一段话的消息做装饰。
克制也正是结构在出现时能起作用的原因。如果每条回复都带格式,就没有一条能凸显出来;如果格式只在内容确实有形状时出现,读者就会明白它意味着什么。
格式化机器人输出
- 把答案放在第一行它是唯一保证会被读到的。
- 假定屏幕很窄最多两到三列。
- 把冗长部分折叠进引用同时做到简短和完整。
- 用代码块处理精确字符串不是用来强调。
- 让内容赢得结构项目符号需要有列表。
- 在手机上的真实聊天中检查它在别人看到之前。