Добавить Telegram InlineKeyboardButton в MQL - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь добавить встроенную клавиатуру Telegram с 4 кнопками, каждая с текстом callback_data в этот фрагмент кода. Но мне это кажется невозможным, я не понимаю, как писать в таком формате .. Извините, я новичок в программировании ...

API для InLineKeyboard

Надеюсь на помощь ..

int SendPhoto(string &_photo_id,
                 const long _chat_id,
                 const string _local_path,
                 const string _caption=NULL,
                 const bool _common_flag=false,
                 const int _timeout=10000)
     {


.....

      //---
      int file_size=(int)FileSize(file);
      uchar photo[];
      ArrayResize(photo,file_size);
      FileReadArray(file,photo,0,file_size);
      FileClose(file);



      //--- WebRequest
      uchar result[];
      string result_headers;

      string url=StringFormat("%s/bot%s/sendPhoto",TELEGRAM_BASE_URL,m_token);

      //--- 1
      uchar data[];

      //--- add chart_id
      ArrayAdd(data,"\r\n");
      ArrayAdd(data,"--"+hash+"\r\n");
      ArrayAdd(data,"Content-Disposition: form-data; name=\"chat_id\"\r\n");
      ArrayAdd(data,"\r\n");
      ArrayAdd(data,IntegerToString(_chat_id));
      ArrayAdd(data,"\r\n");

      if(StringLen(_caption)>0)
        {
         ArrayAdd(data,"--"+hash+"\r\n");
         ArrayAdd(data,"Content-Disposition: form-data; name=\"caption\"\r\n");
         ArrayAdd(data,"\r\n");
         ArrayAdd(data,_caption);
         ArrayAdd(data,"\r\n");
        }

      ArrayAdd(data,"--"+hash+"\r\n");
      ArrayAdd(data,"Content-Disposition: form-data; name=\"photo\"; filename=\"lampash.gif\"\r\n");
      ArrayAdd(data,"\r\n");
      ArrayAdd(data,photo);
      ArrayAdd(data,"\r\n");
      ArrayAdd(data,"--"+hash+"--\r\n");


      // SaveToFile("debug.txt",data);

      //---
      string headers="Content-Type: multipart/form-data; boundary="+hash+"\r\n";
      int res=WebRequest("POST",url,headers,_timeout,data,result,result_headers);

.....

         }

Вот несколько фрагментов кода, если вы можете помочь ..

#define KEYB_MAIN    (m_lang==LANGUAGE_EN)?"[[\"Account Info\"],[\"Quotes\"],[\"Charts\"]]":"[[\"Информация\"],[\"Котировки\"],[\"Графики\"]]"
#define KEYB_SYMBOLS "[[\""+EMOJI_TOP+"\",\"GBPUSD\",\"EURUSD\"],[\"AUDUSD\",\"USDJPY\",\"EURJPY\"],[\"USDCAD\",\"USDCHF\",\"EURCHF\"]]"
#define KEYB_PERIODS "[[\""+EMOJI_TOP+"\",\"M1\",\"M5\",\"M15\"],[\""+EMOJI_BACK+"\",\"M30\",\"H1\",\"H4\"],[\" \",\"D1\",\"W1\",\"MN1\"]]"
#define KEYB_SINO "[[\"SI\"],[\"NO\"],[\"ANNULLA\"]]"
#define KEYB_SL "[[\"1.5\",\"2.5\"],[\"3.5\",\"4.5\"],[\"ANNULLA\"]]"
#define KEYB_RR "[[\"1\",\"2\"],[\"3\",\"4\"],[\"ANNULLA\",\"FREE\"]]"
#define KEYB_COMMENT "[[\"TRATT\",\"TREND\"],[\"APPOG\",\"SPESSA\"],[\"ANNULLA\"]]"

 //+------------------------------------------------------------------+
       string ReplyKeyboardMarkup(const string keyboard,
                                  const bool resize,
                                  const bool one_time)
         {
          string result=StringFormat("{\"keyboard\": %s, \"one_time_keyboard\": %s, \"resize_keyboard\": %s, \"selective\": false}",UrlEncode(keyboard),BoolToString(resize),BoolToString(one_time));
          return(result);
         }

       //+------------------------------------------------------------------+
       string ReplyKeyboardHide()
         {
          return("{\"hide_keyboard\": true}");
         }

       //+------------------------------------------------------------------+
       string ForceReply()
         {
          return("{\"force_reply\": true}");
         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...