Telegram 机器人键盘 PHP

Telegram bot keyboard PHP

我在 PHP 中为我的电报机器人编写了这个函数,但它不起作用:

if($text == "t"){
    $keyboard = array(
        "inline_keyboard" => array(
            array(
                array(
                    "text" => "My Button Text", 
                    "callback_data" => "myCallbackData"
                )
            )
        )
    );
    $key = array(
        "keyboard" => $keyboard,
    );
    keyboard($chatId, "asadsd", $key);
}
function keyboard($chatID, $text, $t)
{
    $t2 = $t;
    $t3 = json_encode($t2);

    api("sendMessage?chat_id=$chatId&text=$text&parse_mode=HTML&reply_markup=$t3");        
}

它应该可以工作,但没有这样做。

我该如何解决这个问题? (me and my bot)

您的代码无效,因为您正试图将 inline_keyboard 数组放入经典键盘数组中。所以:

  • 删除 $key = array(...); 并且当您调用键盘功能时输入 $keyboard 而不是 $key .
  • 在键盘函数中使用 $chatID 而不是 $chatId 因为 php 变量名称区分大小写。
  • 删除 $t2$t3,因为它们没用。
  • 我建议放置一个参数变量并使用 http_build_query 构建参数,这样它会自动进行 urlencode 并构建变量。

您的代码应如下所示:

if($text == "t"){
    $keyboard = array(
        "inline_keyboard" => array(
            array(
                array(
                    "text" => "My Button Text", 
                    "callback_data" => "myCallbackData"
                )
            )
        )
    );

    keyboard($chatId, "asadsd", $keyboard);
}
function keyboard($chatID, $text, $t)
{
    $args = array(
        "chat_id" => $chatID,
        "text" => $text,
        "parse_mode" => "HTML",
        "reply_markup" => json_encode($t),
    );
    api("sendMessage?".http_build_query($args));        
}

假设一切都已设置,代码应该可以正常工作。下次请更具体