【问题标题】:PHP - Telegram Bot interactive queryPHP - Telegram Bot 交互式查询
【发布时间】:2021-11-08 18:49:56
【问题描述】:

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

  1. 用户名
  2. 电话号码。
  3. 电子邮件

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

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

如果我当时从内联键盘选择电子邮件,机器人将只接受那个时候的电子邮件。在机器人返回任何错误或成功之前,不会接受其他机器人命令。

我使用 Laravel 作为我的后端。

【问题讨论】:

    标签: php laravel telegram-bot php-telegram-bot telegram-webhook


    【解决方案1】:

    每个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);
    

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 2021-11-26
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 2016-07-15
      相关资源
      最近更新 更多