You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram API如何在代码块消息中显示换行符?

我之前也碰到过这个问题,其实核心是要让Telegram的解析引擎正确识别代码块内的换行符,以下是两种经过验证的可行方案:

方案1:使用MarkdownV2解析模式(推荐)

Telegram现在推荐使用MarkdownV2而非旧版的Markdown模式,它对代码块的解析更稳定。只需要用```包裹你的代码文本,并且确保文本里的\n是原始换行符(不要转义成\\n)。

示例代码(Python + requests)

import requests

bot_token = "你的机器人Token"
chat_id = "目标聊天ID"
# 带换行的代码内容,直接用\n或者多行字符串
code_content = "def calculate_sum(a, b):\n    return a + b\n\nresult = calculate_sum(5, 3)\nprint(result)"

# 用MarkdownV2代码块包裹内容
message = f"```\n{code_content}\n```"

# 发送请求
requests.post(
    f"https://api.telegram.org/bot{bot_token}/sendMessage",
    data={
        "chat_id": chat_id,
        "text": message,
        "parse_mode": "MarkdownV2"
    }
)

方案2:使用HTML解析模式

如果你更习惯用HTML标签,<pre>标签会完美保留代码的换行和缩进格式。同样要注意传递原始的\n,如果代码里包含<、>、&这些HTML特殊字符,需要提前转义。

示例代码(Python + requests)

import requests

bot_token = "你的机器人Token"
chat_id = "目标聊天ID"
code_content = "def calculate_sum(a, b):\n    return a + b\n\nresult = calculate_sum(5, 3)\nprint(result)"

# 转义HTML特殊字符(如果代码里有这些字符的话)
code_content = code_content.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")

# 用<pre>标签包裹
message = f"<pre>{code_content}</pre>"

# 发送请求
requests.post(
    f"https://api.telegram.org/bot{bot_token}/sendMessage",
    data={
        "chat_id": chat_id,
        "text": message,
        "parse_mode": "HTML"
    }
)

常见坑点排查

  1. 不要转义换行符:如果你的代码里把\n写成了\\n,Telegram会显示字面量的\n而不是换行,一定要确保传递的是实际的换行符。
  2. 弃用旧版Markdown:旧的parse_mode="Markdown"存在很多解析bug,官方已经不推荐使用,换成MarkdownV2就好。
  3. 文本长度限制:sendMessage接口最多支持4096字符,如果你的代码过长,建议用sendDocument发送代码文件,或者拆分消息。
  4. HTML特殊字符转义:用HTML模式时,代码里的<、>、&必须转义,否则会破坏HTML结构,导致解析失败。

内容的提问来源于stack exchange,提问作者NVO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:19:59