簡體   English   中英

Bot電報PHP將對象參數發送到最后一個命令

[英]Bot Telegram PHP Send Object Parameters to last Command

我對Bot Telegram PHP有疑問,我的Bot是成功發送帶有nilai(space)[value]格式的請求。

勞斯萊斯 :

  1. 用戶:發送消息:nilai(space)IT602
  2. 機器人:發送消息:顯示代碼為IT602的對象數據

我想更改格式nilai(space)[value]到這卷。

  1. 用戶:發送消息-> nilai <-這是/ nilai這樣的命令
  2. Bot:發送消息->請輸入nilai代碼,例如:IT601
  3. 用戶:發送消息-> IT602
  4. Bot:發送消息->顯示代碼IT602的對象數據

這是我的代碼,格式為nilai(space)[Value]。

function prosesApiMessage($sumber)
{
    $updateid = $sumber['update_id'];

    if(isset($sumber['message']))
    {
        $message = $sumber['message'];

        if(isset($message['text']))
        {
            prosesPesanText2($message);
        } 
    }


    return $updateid;
}

function prosesPesanText2($message)
{
    $idpesan = $message['message_id'];

    $balas = $message['reply_to_message'];

    $pesan = $message['text'];
    $idchat = $message['chat']['id'];
    $namamu = $message['from']['first_name'];
    $iduser = $message['from']['id'];


    //untuk memisahkan antara format dan inputan
    $pecah = explode(' ', $pesan, 3);
    $katapertama = strtolower($pecah[0]);


    switch ($katapertama) 
    {
        case 'nilai':
            sendApiAction($idchat);
            if(isset($pecah[1])) 
            {
                $inputKode = $pecah[1];
                // this funtion for show data nilai by code
                $text = lihatNilai($iduser,$inputKode);
            } 
            else 
            {
                $text = "Gagal menampilkan nilai.\n";
                $text .= "Format Nilai 👉 Nilai (Kode Matkul)";
            }

            // sendMessageReply($idpesan, $idchat, $text);
            sendApiKeyboard($idchat, $text, $keyboard_fungsi);  
            break;

        case 'id':
            sendApiAction($idchat);
            $text = "ID User Anda adalah ".$iduser;
            sendMessage($idchat, $text);
            break;

        default:
            # code...
            break;
    }

}

我希望有一個人可以幫助我 :)

您必須保存用戶的“狀態”,並在每條消息上進行檢查。 例如偽代碼:

on message {
    if ($states[user_id] === 'expect nilai code') {
        sendMessage(user_id, ' show object data for code'.$text);
        $states[user_id] = null;
    } else {
        if ($msg_text === '/nilai') {
            $states[user_id] = 'expect nilai code';
            sendMessage(user_id, 'please input the nilai code for example : IT601');
        }
    }
}

您可以看到$states為每個用戶存儲一個狀態。 根據狀態,您可以知道用戶在回答問題的過程中所處的位置。
如果您將機器人設置為使用Webhook,請確保在腳本末尾將此數組保存到文件系統中,並在腳本開始時讀取它。 (例如,使用( file_get_contents()file_put_contents() )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM