电报机器人键盘PHP

时间:2019-02-03 15:45:15

标签: php telegram telegram-bot php-telegram-bot

我已经用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");        
}

它应该工作,但是不行。

我该如何解决? (memy bot

1 个答案:

答案 0 :(得分:1)

您的代码无法正常工作,因为您试图将inline_keyboard数组放入传统的键盘数组中。所以:

  • 删除$key = array(...);,然后在调用键盘功能时放$keyboard而不是$key
  • 在键盘功能中放入$chatID而不是$chatId,因为php变量名称区分大小写。
  • 删除$t2$t3,因为它们没有用。
  • 我建议放置一个arguments变量并使用http_build_query来构建args,这样它将自动urlencode并构建vars。

您的代码应如下所示:

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));        
}

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