Задать вопрос
sham63
@sham63

InlineKeyboardMarkup Telegram. Что я мог потерять?

Написал простой генератор кнопок. На вход подаем $tg->GenKeyboard2("#строка1# #строка1# ? #строка2# #строка2#");
(код)
public function GenKeyboard2($data)
    {
        $data = trim($data);
        $mas = explode("#", $data);
        $i=0;$j=0;$j_=0;
         foreach ($mas as  $key => $value) {
            if(!empty(trim($value)))
            {

                if(strpos($value, "?")===FALSE)
                {  
                    $arInfo["inline_keyboard"][$i][$j]["text"] = $value;  
                    $j++; 
                    
                }
                else { $i++; $j=0; }
                
            }
          }
        return $arInfo;
    }


На выходе получаем
array(1) {
  ["inline_keyboard"]=>
  array(2) {
    [0]=>
    array(2) {
      [0]=>
      array(1) {
        ["text"]=>
        string(13) "строка1"
      }
      [1]=>
      array(1) {
        ["text"]=>
        string(13) "строка1"
      }
    }
    [1]=>
    array(2) {
      [0]=>
      array(1) {
        ["text"]=>
        string(13) "строка2"
      }
      [1]=>
      array(1) {
        ["text"]=>
        string(13) "строка2"
      }
    }
  }
}


Далее пытаюсь отправить это дело в телеграм следующим образом:
public function send($id, $message,$keyboard='') 
    {   
		
		if($keyboard == "DEL"){		
			$keyboard = array(
				'remove_keyboard' => true
			);
		}
		if($keyboard){
			$encodedMarkup = json_encode($keyboard);
			
			$data = array(
				'chat_id'      => $id,
				'text'     => $message,
				'reply_markup' => $encodedMarkup
			);
		}else{
			$data = array(
				'chat_id'      => $id,
				'text'     => $message
			);
		}
       
        $out = $this->request('sendMessage', $data);       
        return $out;
    }


С простыми кнопками(ReplyKeyboardMarkup) все прекрасно работает а вот с InlineKeyboardMarkup не хочет...
  • Вопрос задан
  • 141 просмотр
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
phobious
@phobious
Не отрицаю свою глупость, и нет, мне не стыдно
может поможет, я лично писал так
через NuGet подключил Telegram.Bot
и сам скрипт :

switch (message.Text)
{
case "/btn":
var inlineKeyboard = new InlineKeyboardMarkup(new[]
{
new[]
{
InlineKeyboardButton.WithUrl("ccылка", "текст"),
},
new[]
{
InlineKeyboardButton.WithCallbackData("кнопка2"),
}
});
await Bot.SendTextMessageAsync(message.From.Id, "доступные кнопки",
replyMarkup: inlineKeyboard);
break;
default:
break;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы