За последние 24 часа нас посетили 70648 программистов и 3623 робота. Сейчас ищут 2775 программистов ...

Telegram Bot API - не срабатывает reply_markup

Тема в разделе "PHP для новичков", создана пользователем alibek23, 8 сен 2023.

Метки:
  1. alibek23

    alibek23 Новичок

    С нами с:
    19 июл 2023
    Сообщения:
    7
    Симпатии:
    0
    Есть самописный класс, обеспечивающий работу с Телеграмом.
    Если упрощенно, то примерно такой:
    PHP:
    1.   final private function http($url, $data=null, $method='POST', $type=null, $headers=null)
    2.    {
    3.      ...
    4.      $this->store['error'] = null;
    5.      curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
    6.      curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
    7.      $hdr = [];
    8.      switch ($type)
    9.      {
    10.        case "application/json":
    11.          $hdr[] = "Content-Type: {$type}; charset=utf-8";
    12.          if (isset($data) && is_array($data)) $data = json_encode($data, JSON_NUMERIC_CHECK | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
    13.          break;
    14.        ...
    15.      }
    16.      ...
    17.      switch ($method)
    18.      {
    19.        case "GET":
    20.          curl_setopt($this->curl, CURLOPT_HTTPGET, true);
    21.          if (isset($data)) $url .= '?'.$data;
    22.          break;
    23.        case "POST":
    24.          curl_setopt($this->curl, CURLOPT_POST, true);
    25.          if (isset($data)) curl_setopt($this->curl, CURLOPT_POSTFIELDS, $data);
    26.          break;
    27.      }
    28.      curl_setopt($this->curl, CURLOPT_URL, $url);
    29.      $res = curl_exec($this->curl);
    30.      $ret = curl_getinfo($this->curl);
    31.      ...
    32.    }
    33.  
    34.    final public function sendMessage($chat, $message=null, $reply=null, $preview=null, $silent=null, $variants=null)
    35.    {
    36.      ...
    37.      $api = '...sendMessage';
    38.      $params = [];
    39.      $params['chat_id'] = $chat;
    40.      ...
    41.      if (isset($variants)) $params['reply_markup'] = (is_string($variants) ? $variants : json_encode($variants));
    42.      $res = $this->http($api, $params, 'POST', 'application/json');
    43.      ...
    44.    }
    Вызывается примерно так:
    PHP:
    1.     $str = "...";
    2.     $var = [];
    3.     foreach (...)
    4.     {
    5.         ...
    6.         $var[] = ['text'=>"{$id}", 'callback_data'=>"/task {$id}"];
    7.     }
    8.     $var = [[$var]];
    9.     $tlg->sendMessage($uid, $str, null, false, null, $var);
    Но почему-то не работает.
    Не поможете с детальным примерном, как отправить сообщение со списком ответов?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.873
    Симпатии:
    753
    Адрес:
    Татарстан
    читай доку апи телеги... смотри как делается - смотри что ты шлешь.... в вашем классе самописном никто не будет разбираться
     
  3. alibek23

    alibek23 Новичок

    С нами с:
    19 июл 2023
    Сообщения:
    7
    Симпатии:
    0
    Спасибо, помогло.