PHP - Telegram Bot 交互式查询

PHP - Telegram Bot interactive query

我正在尝试从我的数据库中查询一些数据。从数据库中搜索数据有三个选项

  1. 用户编号
  2. Phone没有
  3. 电子邮件

我通过从上面的列表中选择一个搜索选项创建了一个内联键盘 Screenshot of bot chat

我正在寻找解决方案,如果我选择 user_id,那么机器人会要求我插入 user_id。并将接受唯一的 user_id 作为输入。否则,它将 return 并显示一条错误消息。

如果那时我从内联键盘中选择电子邮件,那么 bot 将只接受电子邮件。在机器人 return 编辑任何错误或成功之前,不会接受其他机器人命令。

我正在使用 Laravel 作为我的后端。

对于每个 user_id,您应该有一个名为 state 的列。 当您收到任何消息时,您应该在回复之前检查 state

所以,这是伪代码:

$Bot = new TelegramBot(getenv('BOT_TOKEN'));

function MessageHandler($message)
{
    $state = DB::table('users')->row(['user_id' => $message->from->id])->column('state');

    if ($state === false)
    {
        # Create new row for this user..
    }

    switch ($state)
    {
        case 'SEARCHING_BY_ID':
            # Check if message is number
            break;

        case 'SEARCHING_BY_PHONE':
            # Check if message is phone number
            break;


        case 'SEARCHING_BY_MAIL':
            # Check if message is E-mail
            break;

        default:
            # Now you should process by any command
            break;
    }
}

$Bot->OnMessage(MessageHandler);