Search code examples
phptelegramtelegram-botphp-telegram-bot

PHP Telegram Bot Message Handler


I want make input message in telegram bot using php language I want something like :

When bot say "send your code" The user send something like "AC6J7A" How I can get the code I mean how to make message handler .

<?php
$token = 'XXXX';
define('API_KEY',$token);
function bot($method,$datas=[]){
  $url = "https://api.telegram.org/bot".API_KEY."/".$method;
  $datas = http_build_query($datas);
  $res = file_get_contents($url.'?'.$datas);
  return json_decode($res);
}

 bot('sendMessage',[
     'chat_id' => $chat_id,
     'text' => 'Send Your Code : ']);
?>

How can I get the next message of user or can i make message handler ?


Solution

  • Do this:

    <?php
    
    $token = '   TOKEN   ';
    $website = 'https://api.telegram.org/bot'.$token;
    $update = file_get_contents('php://input');
    $update = json_decode($update, TRUE);
    $message = $update['message']['text'];
    $id = $update['message']['from']['id'];
    $name = $update['message']['from']['first_name'];
    $surname = $update['message']['from']['last_name'];
    $username = $update['message']['from']['username'];
    
    function sendMessage($id, $text, $button = null){
        GLOBAL $token;
        switch(isset($button)){
            case true:
                $H = '&reply_markup={"inline_keyboard":['.$button.']}';
                $url = 'https://api.telegram.org/bot'.$token."/sendMessage?chat_id=$id&parse_mode=HTML&text=".urlencode($text).$H;
                break;
            default:
                $url = 'https://api.telegram.org/bot'.$token."/sendMessage?chat_id=$id&parse_mode=HTML&text=".urlencode($text);
                break;
        }
        file_get_contents($url);
    }
    
    switch($message){
        case '/start':
            $botmessage = 'send your code'; ## if you want this to work you MUST define as "$botmessage" every message the bot send to the user
            sendMessage($id, $botmessage);
            break;
    }
    
    $read = file(__DIR__."/$id.txt");
    switch($read[0]){
        case 'send your code':
            $codeoftheuser = $read[0];
            ## Code to be executed when the user gives you the code
            break;
    }
    
    switch($message){
        case false:  ## This has to be done to make it working in case you use callback query too
            break;
        default: ## This is to write down the last message your bot sent
            $myfile = fopen("$id.txt", 'w+');
            fwrite($myfile, $botmessage);
            fclose($myfile);
            break;
    }
    
    ?>