bots - 在 Telegram Bot 中使下一个输入消息成为 callback_query 函数的一部分
问题描述
我正在编写一个 Telegram Bot,它向用户显示不同的选项作为内联按钮,其中一个是“搜索”。
一旦在搜索中,我打算下一个发送的消息是用于搜索的字符串。但是,我不知道如何使发送的消息用于搜索查询,而不是用于其他选项/目的。如果每次按下消息或按钮时从头开始再次读取机器人文件,我无法告诉机器人下一条消息是与按下的按钮(搜索)相关的消息或与按下按钮(我不知道我是否对我的疑问足够清楚,或者我让理解变得更加复杂)。
因此代码的相关部分如下所示:
if(isset($request->callback_query->data)){
$data = $request->callback_query->data;
switch($data){
case 'search':
sendMessage($request->callback_query->message->chat->id, "Write what you want to search.");
//(HERE is where the program should "wait" for the user to input something to be used in a DB query)
//DBquery function
break;
}
}else{
keyboard($request->message->chat->id, "Choose one of the following options:", $keyboard);
}
$keyboard = array(
"inline_keyboard" => [
[
["text" => "\xF0\x9F\x94\x8E"." Search item","callback_data" => "search"],
["text" => "\xF0\x9F\x8C\x8F"." Visit web","url" => "https://website.com"]
//more options to be written
]
]
);
解决方案
推荐阅读
- javascript - React - useEffect() 中的错误。dat 是否会使页面上的所有内容陷入无限循环?
- python - 从元组列表中查找匹配项
- python - AttributeError:此 QueryDict 实例对于测试用例是不可变的
- javascript - 对象,对象显示在嵌套的 *ngFor 中,带有动态标题
- apache-camel - 使用简单搜索正文中的单词列表
- jquery - 无法在动态创建的输入类型文本上显示日期选择器
- sql - 为相同的主键列值选择每行之间有 31 天或以上差距的数据?
- arrays - 将 JSON 数组列表转换为 Angular 中的单个对象
- javascript - Rails/JS - 延迟后更新视频源 src
- python - 烧瓶登录管理器和 PyMongo