web-dev-qa-db-ja.com

テレグラムは一部のマークダウン文字をエスケープしません

テレグラムは、いくつかのマークダウン文字をエスケープしません。次に例を示します。

  • これは問題なく動作します

    _test\_test_

  • しかし、これは解析エラーを返します

    *テスト\ *テスト*

私は何が間違っていますか?

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

]文字をエスケープしないでください。 [がエスケープされている場合、]は通常の文字のように扱われます。

7
pdenti

実際には両方ともエラーが発生しています。

{
  "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>

3
Vahid Msm

唯一の回避策は、parse_modeHTMLを使用することです。

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

2
Oleg

マークアップトークン'\\'をエスケープするには、*_[`を使用する必要があります。つまり、代わりにこれを送信します。

*test\\*test*

1
Karb0f0s