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

如何在Python中设置文本加粗?及Telegram Bot API发送图片时标题加粗失败问题排查求助

解决Telegram Bot API中标题加粗的问题

首先,你的问题出在MarkdownV2语法使用错误和GET请求参数未正确编码这两个地方,我来一步步帮你修正:

1. 错误原因分析

你当前的caption写法是*bold\*{title}*,这不符合Telegram MarkdownV2的规则:

  • MarkdownV2要求加粗内容必须用两个连续的星号包裹,也就是**需要加粗的文本**,而不是单个星号;
  • 你额外加的\*是多余的转义,反而会导致解析混乱;
  • 直接把参数拼在GET URL里,如果title或res包含特殊字符(比如空格、&、?等),会被服务器错误解析,导致API请求失败。

2. 修正后的代码示例

方式一:使用GET请求(需正确编码参数)

建议用urllib.parse.quote来编码所有需要传入URL的文本参数,避免特殊字符问题:

import requests
from urllib.parse import quote

# 先对标题进行MarkdownV2加粗格式化,再编码
formatted_title = f"**{title}**"
encoded_caption = quote(f"{formatted_title}\n\n{res}")

telegram_msg = requests.get(
    f'https://api.telegram.org/<botname>:<botAPI>/sendPhoto',
    params={
        'chat_id': '<chatID>',
        'parseMode': 'MarkdownV2',
        'photo': link,
        'caption': encoded_caption
    }
)

方式二:使用POST请求(更推荐,参数无需手动编码)

Telegram API更推荐用POST请求发送消息,尤其是参数包含特殊字符时,requests会自动帮你处理编码:

import requests

payload = {
    'chat_id': '<chatID>',
    'parse_mode': 'MarkdownV2',
    'photo': link,
    'caption': f"**{title}**\n\n{res}"
}

telegram_msg = requests.post(
    'https://api.telegram.org/<botname>:<botAPI>/sendPhoto',
    data=payload
)

3. 额外注意事项:处理特殊字符

如果你的title里包含MarkdownV2的保留字符(比如*、_、[、]、(、)、~、```、>、#、+、-、=、|、{、}、.、!),需要对这些字符进行转义(在前面加\)。你可以写一个简单的转义函数:

def escape_markdown_v2(text):
    special_chars = r'_*[]()~`>#+-=|{}.!'
    for char in special_chars:
        text = text.replace(char, f'\\{char}')
    return text

# 使用时
escaped_title = escape_markdown_v2(title)
caption = f"**{escaped_title}**\n\n{res}"

这样处理后,无论title里有什么特殊字符,都能正确被Telegram解析为加粗格式了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:14:08