首页 > 解决方案 > 我在 Telegram 中发现了一个错误吗?

问题描述

我使用 Telegram 机器人将来自本地天气服务的天气警报整合到我的家庭自动化系统中。今天我发现了一个奇怪的问题,因为包含天气警报的消息没有发送。如果我在 Linux 上的 bash 中尝试此操作:(
output="Nationaal Hitteplan";curl "https://api.telegram.org/botxxxxxxxxx:longsecuritycode/sendMessage?chat_id=xxxxxxxxx&text=$output"
当然,我在上述命令中删除了我的个人令牌......)
然后我收到400 Bad Request并且没有发送消息。如果我将 output="Nationaal Hitteplan" 更改为 output="Nationaal hitteplan" 则消息将按预期发送。
我看不出这里有什么问题。Nationaal Hitteplan 一词基本上是一组关于在炎热天气中做什么的建议。它没有与之相关的负面含义,但显然 Telegram 检测到了问题。
除了如上所述更改术语之外,是否有人对此有解决方案?

标签: linuxbashtelegramtelegram-bot

解决方案


包含空格等特殊字符的 URL 应进行 url 编码。

使用以下 curl 命令让 curl 让编码:

token='xxxxxxxxx:longsecuritycode';
output="Nationaal Hitteplan";
curl -G \
    --data-urlencode 'chat_id=1234567' \
    --data-urlencode "text=${output}" \
    "https://api.telegram.org/bot${token}/sendMessage"

如何对 curl 命令的数据进行 urlencode?


推荐阅读