【问题标题】:PHP - Telegram Bot interactive queryPHP - Telegram Bot 交互式查询
【发布时间】:2021-11-08 18:49:56
【问题描述】:
我正在尝试从我的数据库中查询一些数据。从数据库中搜索数据有三个选项
- 用户名
- 电话号码。
- 电子邮件
我通过从上面的列表中选择一个搜索选项创建了一个内联键盘
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);