TelegramBot - переместить кнопку в новую строку

184
25 октября 2021, 01:00

Как сделать так, чтобы кнопки были в столбце, а не в строке. Пример изображения, как мне нужно:

Код PHP:

function sendInlineKeyboard($id_chat, $text, $array)
{
 $keyboard = array("inline_keyboard" => array($array));
        $toSend = array('method' => 'sendMessage', 'chat_id' => $id_chat, 'text' => $text, 'resize_keyboard' => true, 'reply_markup' => $keyboard);
        isset($mark) ? $toSend['parse_mode'] = $mark : '';
        isset($id_message) ? $toSend['reply_to_message_id'] = $id_message : '';     
        $ch = curl_init(API_URL);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($toSend));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
        $a = curl_exec($ch);
        return json_decode($a, true);           
}
$result = $mysqli->query("SELECT * FROM `test`");
while ($row = $result->fetch_assoc()) {             
            $array[] = array('text' => $row['city'], 'callback_data' => $id);
sendInlineKeyboard($user_id, 'String', $array);
}

Answer 1

Правильно написали в комментарии, нужно передать массив, каждый элемент которого является массивом кнопок в строке (т.е. передаётся двумерный массив).

Вот пример, как это сделано у меня:

$start_keyboard_array = [
    ["Строка1"],
    ["Строка2"],
    ["Столбец1", "Столбец2"]
];
$start_keyboard = new ReplyKeyboardMarkup($start_keyboard_array, false, true);

Как это выглядит:

P.S. использую вот эту либу: https://github.com/TelegramBot/Api

READ ALSO
$_POST всегда пустой, хотя в file_get_contents('php://input') есть данные

$_POST всегда пустой, хотя в file_get_contents('php://input') есть данные

Пытаюсь отправить данные формы при помощи fetchAPIВот форма:

73
Бросать исключение или возвращать коды ошибок/успеха? Является ли исключением то, что метод не может выполнить свою задачу?

Бросать исключение или возвращать коды ошибок/успеха? Является ли исключением то, что метод не может выполнить свою задачу?

Исключения являются для меня самой непонятной темой в программировании(пока что)Даже прочтение кучи информации не помогло мне получить...

104
Executors. Как прекращать работу потоков?

Executors. Как прекращать работу потоков?

Я делаю некий таймерПри его запуске выполняется какая-то последовательность действий, после чего поток должен закрыться и не грузить дальнейшую...

308