Saltar al contenido

Cómo crear botones en línea en PHP Bot Telegram

Pudiera darse el caso de que encuentres algún fallo con tu código o trabajo, recuerda probar siempre en un ambiente de testing antes añadir el código al proyecto final.

Solución:

En primer lugar, no es necesario utilizar /setinline comando en botFather. este comando es para el “modo en línea” mientras está usando un inline_keyboard que es un teclado personalizado en el modo de chat normal.

también debe proporcionar un callback_data en tu teclado array para cada botón:

$keyboard = [
    'inline_keyboard' => [
        [
            ['text' => 'forward me to groups', 'callback_data' => 'someString']
        ]
    ]
];
$encodedKeyboard = json_encode($keyboard);
$parameters = 
    array(
        'chat_id' => $chatId, 
        'text' => $response, 
        'reply_markup' => $encodedKeyboard
    );

send('sendMessage', $parameters); // function description Below

Por último, debe enviarlo a través de curl. Aquí hay una función que uso en mis códigos:

function send($method, $data)

    $url = "https://api.telegram.org/bot". "/" . $method;

    if (!$curld = curl_init()) 
        exit;
    
    curl_setopt($curld, CURLOPT_POST, true);
    curl_setopt($curld, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curld, CURLOPT_URL, $url);
    curl_setopt($curld, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($curld);
    curl_close($curld);
    return $output;

PD Yo personalmente uso PhpStorm, es bueno 😉

He administrado alguna función con https://github.com/irazasyed/telegram-bot-sdk si no desea administrar la fila en la palabra clave en línea, puede omitir foreach y usar $inline_keyboard[] = $palabra_clave_datos; mostrar palabra clave

verifique la imagen por $datos_de_palabras clave array

$palabra_clave_datos array

 public function inlineKeyword($chat_id, $keyword_data, $msg = '') 
        if (empty($msg)) 
            $msg = "Select";
        
        $inline_keyboard = array();
        $row = 0;
        $prev_value = '';
        foreach ($keyword_data as $value) 
            if (isset($prev_value['text']) && strlen($prev_value['text']) < 10 && strlen($value['text']) < 10) 
                $inline_keyboard[$row - 1][] = $value;
             else 
                $inline_keyboard[$row][] = $value;
            
            $prev_value = $value;
            $row++;
        
//    $inline_keyboard[] = $keyword_data;
        $reply_markup = $this->telegram->replyKeyboardMarkup([
            'inline_keyboard' => $inline_keyboard,
            'resize_keyboard' => true
        ]);
        $response = $this->telegram->sendMessage([
            'text' => $msg,
            'reply_markup' => $reply_markup,
            'chat_id' => $chat_id
        ]);
    

Respuesta de función en telegrama

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *