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

Python实现Telegram频道加粗文本发送失败求助

问题:Telegram MarkdownV2 加粗文本不生效且出现异常转义字符

问题原因

核心问题是转义时机错误:

  • 先在消息中插入了MarkdownV2的加粗标记*,随后调用转义函数时把这些*也转义了,导致Telegram无法识别为格式标记,只能将其当作普通文本显示
  • 虽然Sky Sports+中的+被转义为\+是符合规则的,但由于整体格式被破坏,显得异常

解决方案

调整逻辑:先转义用户输入的变量内容,再添加MarkdownV2格式标记,避免格式标记被误转义。

修正后的代码

转义函数可保留,需调整消息生成逻辑:

def escape_markdown_v2(text):
    special_chars = r"_[]()~`>#+|{}.!"
    for char in special_chars:
        text = text.replace(char, f'\\{char}')
    return text
def create_match_message(home_team, away_team, match_date, match_time, stadium, tv_channels):
    # 先转义所有变量中的特殊字符,避免破坏格式
    escaped_home = escape_markdown_v2(home_team)
    escaped_away = escape_markdown_v2(away_team)
    escaped_date = escape_markdown_v2(match_date)
    escaped_time = escape_markdown_v2(match_time)
    escaped_stadium = escape_markdown_v2(stadium)
    escaped_tv = escape_markdown_v2(tv_channels)
    
    # 最后添加MarkdownV2加粗标记,此时*不会被转义
    message = (
        f"*{escaped_home} vs {escaped_away}*\n"
        f"*Date:* {escaped_date}\n"
        f"*Time:* {escaped_time}\n"
        f"*Venue:* {escaped_stadium}\n"
        f"*TV Channels:* {escaped_tv}"
    )    
    return message

发送函数无需修改:

def send_telegram_message(group_id, topic_id, message):
    url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
    payload = {
        "chat_id": group_id,
        "text": message,
        "reply_to_message_id": topic_id,
        "parse_mode": "MarkdownV2"  
    }
    response = requests.post(url, json=payload)
    if response.status_code != 200:
        print(f"Error sending message: {response.status_code}, Response: {response.text}")
    else:
        print("Message sent successfully!")

效果说明

  • 变量中的特殊字符(如+)会被正确转义,不会干扰格式解析
  • 加粗标记*未被转义,Telegram会将其解析为加粗格式,最终消息会正常显示加粗效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:57:46