电报不会逃脱某些降价字符

时间:2016-11-16 08:07:04

标签: markdown telegram-bot

电报不会转义某些降价字符,例如:

  • 这很好用

    _test \ _test _

  • 但是这个返回解析错误

    *测试\ *试验*

我做错了什么?

5 个答案:

答案 0 :(得分:5)

String escapedMsg = toEscapeMsg
    .replace("_", "\\_")
    .replace("*", "\\*")
    .replace("[", "\\[")
    .replace("`", "\\`");

不要逃避]字符。如果[被转义,]将被视为普通字符。

答案 1 :(得分:2)

实际上两者都有错误 { "ok": false, "error_code": 400, "description": "Bad Request: Can't parse message text: Can't find end of the entity starting at byte offset 11" } 听起来像Telegram不支持转义字符用于降价,所以我建议你改用HTML: <b>test*test</b>

答案 2 :(得分:1)

唯一的解决方法是在HTML

中使用parse_mode

https://core.telegram.org/bots/api#html-style

答案 3 :(得分:1)

您应该使用'\\'来转义标记令牌*_[`,即发送此代码:

*test\\*test*

答案 4 :(得分:-1)

pdenti的答案仅替换消息中找到的第一个字符。使用带有全局标记的正则表达式替换所有正则表达式。

String escapedMsg = toEscapeMsg
    .replace(/_/g, "\\_")
    .replace(/\*/g, "\\*")
    .replace(/\[/g, "\\[")
    .replace(/`/g, "\\`");