为了账号安全,请及时绑定邮箱和手机立即绑定

电报机器人找不到实体的结尾(截断...)

电报机器人找不到实体的结尾(截断...)

PHP
四季花海 2022-12-23 14:39:29
我制作了一个电报机器人,它在我们的电报聊天中记录严重错误。该机器人已在另一个 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 字符串。也许您有一个开盘降价符号,但没有相应的收盘符号。喜欢*_

如果这没有帮助,请在此处发布准确的消息,替换变量,以便我们发现降价错误。


查看完整回答
反对 回复 2022-12-23
?
侃侃无极

TA贡献2051条经验 获得超10个赞

当您的最终字符串具有_@&(当端点对字符串有一些规则时)会发生这种情况。



查看完整回答
反对 回复 2022-12-23
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

如果您只想发送纯文本而不需要 Markdown 或 HTML,只需parse_mode完全删除该参数即可。它将以纯文本形式发送消息,您不必担心任何特殊字符(除了对消息文本进行编码的 URL)。



查看完整回答
反对 回复 2022-12-23
  • 3 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信