irazasyed/telegram-bot-sdk как сделать ввод данных пользователем после нажатия определнной кнопки

Рейтинг: 0Ответов: 1Опубликовано: 22.03.2023

Проблема заключается в том, что не понимаю как реализовать CallbackQuery, а надо чтобы после нажатия кнопки API Token оно давало пользователю возможность ввести данные чтобы после ввода осуществлялась запись в бд

<?php
include ('debug.php');
include_once ('settings.php');
include "bot_lib.php";
include 'vendor/autoload.php';
use Telegram\Bot\Api;
use Telegram\Bot\Keyboard\Keyboard;

$menu1 = [["Create account"],["API Token"],["Back"]];
$menu2 = [["Enter imei of device"], ["Go Back"]];

$telegram = new Api($api);
$result = $telegram->getWebhookUpdate();

$text = $result->message->text;
$chat_id = $result->message->chat->id;
$name = $result->message->chat->username;
$first_name = $result->message->chat->firstName;
$last_name = $result->message->chat->lastName;
$get_user = get_user($connect, $chat_id);
$old_id = $get_user['chat_id'];
$username = $first_name . ' ' . $last_name;

if ($text == '/start'){
    $replyMarkup = Keyboard::make([
        'keyboard' => $menu1,
        'resize_keyboard' => true,
        'one_time_keyboard' => false

    ]);

    $telegram->sendMessage([
        'chat_id' => $chat_id,
        'text' => 'Please select an option:',
        'reply_markup' => $replyMarkup
    ]);
}elseif ($text == 'Create account'){

    $reply = "Hi";
    $replyMarkup = Keyboard::make([
        'keyboard' => $menu1,
        'resize_keyboard' => true,
        'one_time_keyboard' => false

    ]);
    $telegram->sendMessage([
        'chat_id' => $chat_id,
        'text' => $reply,
        'reply_markup' => $replyMarkup
    ]);

}elseif ($text == 'Create account'){

    $reply = "https://imeidb.xyz/registration";
    $replyMarkup = Keyboard::make([
        'keyboard' => $menu1,
        'resize_keyboard' => true,
        'one_time_keyboard' => false

    ]);

    // Send the message with the button menu
    $telegram->sendMessage([
        'chat_id' => $chat_id,
        'text' => $reply,
        'reply_markup' => $replyMarkup
    ]);

}elseif ($text == 'API Token'){

}

//add_user($connect, $username, $chat_id, $nickname, $old_id);
//getToken($connect,$chat_id,$text);

function get_user($connect, $chat_id){
    $query = sprintf("SELECT * FROM users WHERE chat_id=%d", (int)$chat_id);
    $result = mysqli_query($connect, $query);
    if(!$result)
        die(mysqli_error($connect));
    $get_user = mysqli_fetch_assoc($result);
    return $get_user;
}

function getToken($connect, $chat_id, $text){
    if($chat_id == '')
        return false;
    $t = "INSERT INTO getToken (chat_id, token) VALUES ('%s', '%s')";
    $query = sprintf($t, mysqli_real_escape_string($connect, $chat_id),
        mysqli_real_escape_string($connect, $text));
    $result = mysqli_query($connect, $query);

    if(!$result)
        die(mysqli_error($connect));
    return true;
}





Ответы

▲ 1

В библиотеке westacks/telebot, реализован такой функционал: https://westacks.github.io/telebot/#/updates?id=requesting-user-input

Библиотека irazasyed/telegram-bot-sdk не поддерживается уже несколько лет, не рекомендую использовать её.