Отправка изображения в Telegram
Пробовал использовать для этой задачи PowerShell, но в итоге заставить его правильно воспринимать картинку для отправки не смог. Зато подвернулся мне bash, который и справился с этой задачей.
Bash оказался очень забавным языком после PowerShell, постарался максимально в комментариях указать что и как. Но так как в bash я не силен, вышло вот так.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/bash # узнаем где установлен bash - whereis bash # Нужно указать сверху (!) # при указании переменных нельзя использовать пробелы. File="Patch-to-image" BotToken="Token-Key" chatid="ID-Chat" # комманда отправки изображения curl -s -X POST "https://api.telegram.org/bot"$BotToken"/sendPhoto" -F chat_id="$chatid" -F photo="@$File" # Не забываем, что для того, чтоб скрипт можно было запустить, надо изменить права доступа к нему, # добавив возможность исполнения файла, например командой # chmod a+x script.sh # Пример curl -s -X POST "https://api.telegram.org/bot<token>/sendPhoto" -F chat_id=<chatid> -F photo="@/path/to/your/photo.jpg" # Запускать командой ./название-скрипта.sh |
6 комментариев
Иван
Здравствуйте!
Спасибо за пример. С текстовыми сообщениями проблем не возникло, а вот с фото пришлось помучиться. В итоге чуть переделал ваш код и все получилось
kanitelka
Хорошо
Anton
Вообще-то curl — внешняя программа. (curl.exe под виндусом). Так что и под повершелом оно должно работать аналогично.
kanitelka
Это если она стоит, то можно через переменную выйти на это. Но на тот момент меня устроило данное решение. Хотя возможно стоит попробовать в вашем направлении.
Andrey
Подскажите, у меня возникла проблема, если пользоваться таким способом передачи файла, то в caption почему-то не воспринимаются переносы строк (в телеграмме это %0A ) а если использовать не формы -F а просто -d то перенос строк работает но файл не передается. что делать?
так передается фото но не работают переносы
-s -X POST «https://api.telegram.org/bot/sendPhoto»-F chat_id= -F photo=»@/path/to/your/photo.jpg» F caption=’one%0Atwo’
так работают переносы но не передается фото
-s -X POST «https://api.telegram.org/bot/sendPhoto» -d chat_id= -d photo=»@/path/to/your/photo.jpg» d caption=’one%0Atwo’
kanitelka
ANDREY
Возможно для решения переноса придется писать предварительно функцию, а уже потом ее использовать.