如何避免Telegram移动端数字自动转换为链接?
解决Telegram移动端数字自动转为电话链接的问题
你遇到的这个问题是Telegram移动端的自动识别机制导致的——它会把符合特定格式的数字(5位及以上、带小数点的数字)默认识别为电话号码并转为链接,网页端没有这个触发逻辑所以显示正常。下面分两种场景给你可行的解决方案:
手动发送消息时的解决方案
- 用反引号包裹数字:把需要避免转换的数字放在反引号里,比如输入
12345或123.45,移动端会将其识别为代码文本,不会转为电话链接。 - 插入零宽空格:在数字串中插入零宽空格(一种看不见的空白字符),比如把
12345改成12345(中间的零宽空格可以通过复制特殊字符或输入法插入),这样Telegram的识别器会把数字拆成两段,不会判定为完整的电话号码。 - 保持符号与数字无空格:像你发现的那样,直接把金额符号和数字紧贴着写(比如
€249.95),不要加空格,这样也能避免触发自动转换。
机器人通过sendMessage API发送时的解决方案
- 使用格式化标记包裹数字:
- 如果用
MarkdownV2作为parse_mode,把数字放在反引号里(注意反引号需要转义),示例代码:bot.send_message(chat_id=chat_id, text="这是一个不会转链接的数字:`12345`", parse_mode="MarkdownV2") - 如果用
HTML作为parse_mode,用<code>标签包裹数字,示例代码:bot.send_message(chat_id=chat_id, text="这是一个不会转链接的数字:<code>123.45</code>", parse_mode="HTML")
- 如果用
- 插入零宽空格字符:在发送的文本内容里,给数字串插入零宽空格的Unicode字符(
\u200B),比如把12.345改成12.\u200B345,这样Telegram的自动识别就不会生效,数字会正常显示且不带链接。
这些方法在Android移动端测试过都能生效,你可以根据自己的使用场景选择合适的方式。
内容的提问来源于stack exchange,提问作者RocketNuts
相关产品推荐
相关产品推荐

