@Danil97

Как при помощи Powershell отправить файл своему боту в Telegram Bot API?

Делаю так:

$file = Get-Content -Path "C:\1.txt"
$uri = "https://api.telegram.org/botXXXX/sendDocument?chat_id=XXXXX&document"
Invoke-RestMethod -Method Post -Uri $uri -ContentType 'multipart/form-data' -Body [byte]$file


При выполнении ошибка:
Invoke-RestMethod : The remote server returned an error: (400) Bad Request.

прошу помощи, заранее благодарен
  • Вопрос задан
  • 1099 просмотров
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
у Windows Powershell нет прямой поддержки 'multipart/form-data', только у Core

В частности для multipart не хватает указания bondary в ContentType
Можете попробовать поэкспериментировать с ручной сборкой типа как тут @jklemmack
https://stackoverflow.com/questions/36268925/power...
или с System.Net.Http.MultipartFormDataContent
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@azarij
В меру опытный никто
в 7ом (и, похоже, в 6ом) повершеле работает вот так:

$token = "ХХХХХХХХХХХ"
$chat_id = "ХХХХХХХХХ"
$uri = "https://api.telegram.org/bot$Token/sendDocument"
$fileObject= get-item C:\test\1.pdf
$Form = @{
        chat_id              = $Chat_ID
        document             = $fileObject
        
    }#form
$invokeRestMethodSplat = @{
        Uri         = $Uri
        ErrorAction = 'Stop'
        Form        = $Form
        Method      = 'Post'
    }

Invoke-RestMethod @invokeRestMethodSplat


в 5ом нет параметра форм в Invoke-RestMethod и там нужны пляски с бубном.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы