Как отправить изображение POST-запросом в телеграм функцией WebRequest?

 

Здравствуйте!

Я пытаюсь отправить скриншот графика себе в телеграм при помощи метода sendPhoto (документация: https://core.telegram.org/bots/api#sendphoto ), но составить правильный POST-запрос так и не получается. Вот текущий код:


string filename = "spread_indicator_screenshot.png";

ChartScreenShot(get_spread_indicator_chart_id(), filename, 2160, 720);

// -----------------------------
// -----------------------------
// Читаем файл скриншота в массив:  
int h=FileOpen(filename, FILE_ANSI|FILE_BIN|FILE_READ); 

if (h<0) {
   Print("Не удалось открыть файл " + filename); 
   return; 
}

FileSeek(h, 0, SEEK_SET);
ulong n=FileSize(h); // узнали размер файла

uchar photo[]; 
ArrayResize(photo, (int)n); // создали uichar массив под размер данных
FileReadArray(h, photo); // прочитали файл в массив

FileClose(h); // закрыли файл
// -----------------------------
// -----------------------------

string bound="++1BEF0A57BE110FD467A++"; // разделитель данных запроса
string head="Content-Type: multipart/form-data; boundary="+bound+"\r\n"; // заголовок
 
string url="https://api.telegram.org/bot[token]/sendPhoto"; //chat_id=415857081
string params = "chat_id:
415857081 \r\nphoto:" + CharArrayToString(photo);

char data[];
StringToCharArray(params, data, 0, StringLen(params)-1);

Print("Длина массива photo: " + ArraySize(photo));

string cookie=NULL;
string headers;
charpost[],result[];

ResetLastError();
int res=WebRequest("POST", url, cookie, NULL, 500, data, ArraySize(data), result, headers);
 
if(res==-1){
   Print("Ошибка в WebRequest. Код ошибки  =",GetLastError() + "; Возможно дело в том, что домен, на который была попытка отправить запрос, не добавлен в список разрешенных доменов для отправки запросов (Сервис -> Настройки -> Советники)");
}
else{

   Print("Что-то пришло!");

   ResetLastError();
   int handle=FileOpen("response.html",FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE){
   //--- запишем данные массива в конец файла
   FileSeek(handle,0,SEEK_END);
   FileWriteArray(handle,result,0,n);
   //--- закрываем файл
   FileClose(handle);
   }


   if(res==200){
      Print("Вроде получилось отправить скриншот!!!");
   }
   else{
      Print("Не получилось! Статус ответа: " + res);
   } 
     
}

Использовать wininet.dll не хотелось бы, так как все запросы мой советник делает при помощи нативной функции WebRequest.


Заранее спасибо!

Telegram Bot API
  • core.telegram.org
The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram. To learn how to create…
 
Создание бота для Telegram на языке MQL5
Создание бота для Telegram на языке MQL5
  • www.mql5.com
Эта статья — пошаговое руководство по созданию бота для Telegram на языке MQL5. Данный материал будет интересен тем, кто хочет связать торгового робота со своим мобильным устройством. В статье приведены примеры ботов, выполняющие рассылку торговых сигналов, поиск информации на сайте, присылающие информацию о состоянии торгового счета, котировки и скриншоты графиков на ваш смартфон.
Причина обращения: