我制作了一个电报机器人,它在我们的电报聊天中记录严重错误。该机器人已在另一个 symfony 应用程序 (4.4) 中使用,并且运行良好。但是现在我试图在 Symfony 3.4 项目中使用它,并且在生成错误时,电报响应: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_modefrom更改为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(); }}提前致谢
3 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
问题很可能是您的消息中的一个变量($user、$path、$file、$line)的内容,它创建了一个无效的 markdown 字符串。也许您有一个开盘降价符号,但没有相应的收盘符号。喜欢*
或_
。
如果这没有帮助,请在此处发布准确的消息,替换变量,以便我们发现降价错误。
胡说叔叔
TA贡献1804条经验 获得超8个赞
如果您只想发送纯文本而不需要 Markdown 或 HTML,只需parse_mode
完全删除该参数即可。它将以纯文本形式发送消息,您不必担心任何特殊字符(除了对消息文本进行编码的 URL)。
- 3 回答
- 0 关注
- 188 浏览
添加回答
举报
0/150
提交
取消