0

電報でボットをプログラミングしていますが、reply_mark up を介して特別なキーボードを作成していません。誰か助けてもらえますか? 私のコードはこれです:

file_get_contents($website."/sendmessage?chat_id=".$myID."&text=keyTest&reply_markup={"keyboard":[["test"]]}");
4

2 に答える 2

0

OK、私はあなたのための解決策を持っていると思います! したがって、これはコードです:

$key = "{\"keyboard\":[ [\"OPTION1\"], [\"OPTION2\"], [\"OPTION3\"] ]}";
$url = $GLOBALS[API_URL]."/sendmessage?chat_id=$id&text=Choose%20your%20action&reply_markup=".urlencode($key);
file_get_contents($url);

変数 $GLOBALS[API_URL] = https://api.telegram.org/bot123456789:AAf6g4fr4rt5y67hadsffaerafasfasf だから、私のグローバル変数をあなたの直接のURLなどに置き換えてください:D あなたにとって興味深い他の関数はこれです:

function close_keyboard($id, $message)
{       
    //$text = "Keyboard_closed!";
    $message = str_replace(" ", "%20", $message);
    $key = "{\"hide_keyboard\":true}";
    $url = $GLOBALS[API_URL]."/sendmessage?chat_id=$id&text=$messagge&reply_markup=".urlencode($key);
    file_get_contents($url);
}

この関数はカスタム キーボードを閉じます。他の私の個人的な関数は次のとおりです。

function build_keyboard($elements, $message, $chat_id)
{
    //Get length of array
    $len = count($elements);

    //Build custom keyboard
    $keyboard = "{\"keyboard\":[ [\"";
    for($i = 0; $i < $len; ++$i)
    {
        if($i < $len-1)
            $keyboard .= $elements[$i]."\"],[\"";
        else
            $keyboard .= $elements[$i]."\"] ]}";
    }

    $url = $GLOBALS[API_URL]."/sendmessage?chat_id=$chat_id&text=".urlencode($message)."&reply_markup=".urlencode($keyboard);
    file_get_contents($url);
}

この関数のプロトタイプは build_keyboard(array(), String, String) です。 例:

$messagge = "Wrong choise";
$keyboard = array("OPT1", "OPT2", "OPT3");
build_keyboard($keyboard, $message, $chat_id);

$message が常に必要であるか、reply_doesntt が機能しないことを忘れないでください!

これが役に立つことを願っています!どういたしまして!

于 2016-04-13T22:26:04.460 に答える