Бот Telegram Не может найти конец сущности, начиная с (усечено ...) - PullRequest
1 голос
/ 15 апреля 2020

Я создал бота для телеграмм, который регистрирует критические ошибки в нашем чате с телеграммой. Этот бот использовался в другом приложении symfony (4.4) и работал нормально.

Но сейчас я пытаюсь использовать его в проекте Symfony 3.4, и после генерации ошибки Telegram отвечает: :

resulted in a `400 Bad Request` response:
{"ok":false,"error_code":400,"description":"Bad Request: can't parse entities: Can't find end of the entity starting at  (truncated...)

Тем не менее, изменение parse_mode с Markdown на HTML устраняет проблему, но я пытаюсь понять, почему это может быть.

Это строка, которую я пытаюсь отправить:

$message = "$user just had an error at: $path\n`$error`\n$file:$line";

Эта функция отправляет запрос:

/**
 * @param $method
 * @param $headers
 * @param $body
 * @return mixed|ResponseInterface
 * @throws GuzzleException
 */
public function APIMethod($method, $headers, $body)
{
    $client = new Client();
    $uri = 'https://api.telegram.org/bot' . $this->telegramToken . '/' . $method;

    return $client->request('POST', $uri, [
        'headers' => $headers,
        'form_params' => $body,
    ]);
}

/**
 * @param $telegramId
 * @param $text
 * @return mixed|ResponseInterface
 * @throws GuzzleException
 */
public function sendNotification($telegramId, $text)
{
    try {
        return $this->APImethod('sendMessage', [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => 'application/json',
        ], [
            'chat_id' => $telegramId,
            'parse_mode' => 'Markdown',
            'text' => $text,
            'disable_web_page_preview' => true,
        ]);
    } catch (Exception $exception) {
        return $exception->getMessage();
    }
}

Заранее спасибо

1 Ответ

0 голосов
/ 15 апреля 2020

Проблема, скорее всего, заключается в содержимом одной вашей переменной ($ user, $ path, $ file, $ line) внутри вашего сообщения, которая создает недопустимую строку разметки. Возможно, у вас есть открывающий символ уценки без соответствующего закрывающего. Например, * или _.

. Если это не поможет, опубликуйте здесь точное сообщение с замененными переменными, чтобы мы могли определить ошибки уценки.

...