Что нового

Отправить фото C:\Skripti\photo.jpg в телеграмм с помощью бота

MSI

Новичок
Сообщения
3
Репутация
0
Код:
https://api.telegram.org/bot<Мой токен>/sendPhoto?chat_id=<мой ID>&photo=https://yandex.ru/collections/card/5e495498ada5968110833b1b/
-это рабочий вариант отправки сообщения через IE.
Код:
https://api.telegram.org/bot<Мой токен>/sendPhoto?chat_id=<мой ID>&photo='C:\Skripti\photo.jpg'
- это что необходимо сделать.
В телеграмм метод sendPhoto параметр photo описание ( Фото для отправки. Вы можете либо передать идентификатор file_id в виде строки для повторной отправки фотографии, которая уже находится на серверах Telegram, либо загрузить новую фотографию с помощью multipart/form-data. ) Не понимаю как это реализовать.
Ссылка на автора кода:
https://autoit-script.ru/threads/otpravka-photo-cherez-telegram-api.21521/
Использую код:
Код:
Func Telegram_SendImage($FileToUploadPath, $TelegramToken, $TelegramChatID, $Caption = "")
    $sAddress = "https://api.telegram.org/bot"&$TelegramToken&"/sendPhoto" ; the address of the target  (https or http, makes no difference - handled automatically)

    If $Caption = "" Then
        $sForm = _
            '<form action="' & $sAddress & '" method="post" enctype="multipart/form-data">' & _
            '    <input type="text" name="chat_id" />' & _
            '    <input type="file" name="photo"/>' & _
            '</form>'
    Else
        $sForm = _
            '<form action="' & $sAddress & '" method="post" enctype="multipart/form-data">' & _
            '    <input type="text" name="chat_id" />' & _
            '    <input type="file" name="photo"/>' & _ ;
            '    <input type="text" name="caption"/>' & _ ;
            '</form>'
    EndIf

    ; Initialize and get session handle
    $hOpen = _WinHttpOpen()

    $hConnect = $sForm ; will pass form as string so this is for coding correctness because $hConnect goes in byref

    If $Caption = "" Then
        ; Fill form
        $sHTML = _WinHttpSimpleFormFill($hConnect, $hOpen, _
                Default, _
                "name:chat_id", $TelegramChatID, _
                "name:photo", $FileToUploadPath)
    Else
        ; Fill form
        $sHTML = _WinHttpSimpleFormFill($hConnect, $hOpen, _
                Default, _
                "name:chat_id", $TelegramChatID, _
                "name:photo", $FileToUploadPath, _
                "name:caption", $Caption)
    EndIf

    If @error Then
        MsgBox(4096, "Error", "Error number = " & @error)
    Else
        ConsoleWrite($sHTML & @CRLF)
    EndIf

    ; Close handles
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)
EndFunc

Вызываю эту функцию:
Код:
$TelegramToken = "<Мой токен>"
$TelegramChatID = "<Мой ID>"
$FileToUploadPath = "C:\Skripti\photo.jpg"
$Caption = ''

Telegram_SendImage($FileToUploadPath, $TelegramToken, $TelegramChatID, $Caption)


Выдает сообщение Error number = 4
Подскажите как исправить данную ошибку?
Сообщение автоматически объединено:

Сообщите пожалуйста возможно ли это?
смотрел примеры Pyton, там получается такое реализовать.
Ну и придумал альтернативу для себя:
Загружать фото с диска С:\ в https://ru.imgbb.com/ указывая параметр удаления через 5 мин.
И пользоваться
Код:
https://api.telegram.org/bot<Мой токен>/sendPhoto?chat_id=<мой ID>&photo=https://ibb.co/t2VG6CT
 
Последнее редактирование:

Tick

Новичок
Сообщения
3
Репутация
0
Привет! Может быть я тревожу старые кости, но вроде бы нашел решение. Получилось отправить файлик
Код:
#include <WinHttp.au3>
_SendPhotoN(<мой чат ид>, 'C:\Users\User\Documents\GDIPlus_Image.jpg')

Func _SendPhotoN($ChatID, $Path, $Caption = "")
    Local $Query = 'https://api.telegram.org/bot<токен бота>/sendPhoto'
    $sForm = _
            '<form action="' & $Query & '" method="post" enctype="multipart/form-data">' & _
            ' <input type="text" name="chat_id"/>' & _
            ' <input type="file" name="photo"/>' & _
            ' <input type="text" name="caption"/>' & _
            '</form>'

    ; Initialize and get session handle
    $hOpen = _WinHttpOpen()
    $hConnect = $sForm ; will pass form as string so this is for coding correctness because $hConnect goes in byref
    ; Register callback function
   ; _WinHttpSimpleFormFill_SetUploadCallback(UploadCallback)
    ; Fill form
    $sHTML = _WinHttpSimpleFormFill($hConnect, $hOpen, _
            Default, _
            "name:chat_id", $ChatID, _
            "name:photo", $Path, _
            "name:caption", $Caption)
    ; Collect error number
    $iErr = @error
    ; Unregister callback function
   ; _WinHttpSimpleFormFill_SetUploadCallback(0)
    ; Kill progress bar window
    ; Close handles
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)

    If $iErr Then
        MsgBox(4096, "Error", "Error number = " & $iErr)
        ConsoleWrite("! error:" & $iErr & @CRLF & $sHTML & @CRLF)
    Else
        ConsoleWrite($sHTML & @CRLF)
    EndIf
    Return $iErr

EndFunc   ;==>_SendPhotoN
 
Последнее редактирование:

Kom6aT

Новичок
Сообщения
1
Репутация
0
Привет! Может быть я тревожу старые кости, но вроде бы нашел решение. Получилось отправить файлик
Добрый день.
Подскажите, пожалуйста, в чём принципиальное этих двух скриптов? Ну т.е. после какого изменения удалось отправить файлик?
У меня просто оба этих скрипта выдают Error number = 4.
 

Praktik

Новичок
Сообщения
7
Репутация
1
в чём принципиальное этих двух скриптов?
Первый автор использует предзагрузку файла на шару и передаёт скрипту линк и это точно должно работать.
Второй вроде отправляет на прямую с ПК, что там не так, не знаю
 
Верх