Обнаружил ли я ошибку в Telegram? - PullRequest
0 голосов
/ 06 августа 2020

Я использую Telegram-бота, чтобы включить метеорологические предупреждения от местной службы погоды в мою систему домашней автоматизации. Сегодня я обнаружил странную проблему, потому что сообщение с предупреждением о погоде не было отправлено. Если я попробую это сделать в bash на Linux:
output="Nationaal Hitteplan";curl "https://api.telegram.org/botxxxxxxxxx:longsecuritycode/sendMessage?chat_id=xxxxxxxxx&text=$output"
(я удалил свои личные токены в приведенной выше команде, конечно ...)
, тогда я получу 400 Bad Запрос и сообщение не отправляется. Если я изменю output = "Nationaal Hitteplan" на output = "Nationaal Hitteplan", тогда сообщение будет отправлено так, как должно быть.
Я не вижу, что здесь не так. Термин Nationaal Hitteplan в основном представляет собой набор рекомендаций о том, что делать в жаркую погоду. Он не имеет никакого отрицательного значения, но, очевидно, Telegram обнаруживает проблему.
Есть ли у кого-нибудь решение этой проблемы, кроме как изменить термин, как описано выше?

1 Ответ

3 голосов
/ 07 августа 2020

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"

Как urlencode данные для команды curl?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...