PHP - Telegram Bot 交互式查询
PHP - Telegram Bot interactive query
我正在尝试从我的数据库中查询一些数据。从数据库中搜索数据有三个选项
- 用户编号
- Phone没有
- 电子邮件
我通过从上面的列表中选择一个搜索选项创建了一个内联键盘
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);
我正在尝试从我的数据库中查询一些数据。从数据库中搜索数据有三个选项
- 用户编号
- Phone没有
- 电子邮件
我通过从上面的列表中选择一个搜索选项创建了一个内联键盘 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);