java - java - 如何从Java中的电报机器人获取用户的输入?
问题描述
我已经创建了一个电报机器人,现在我需要问用户一些事情,并将输入的答案保存在一个字符串中。在这里我写了一个代码:如果第一个命令是“/mytext”,我想显示这个“请输入您的文本”。之后,用户键入的任何内容都将保存在字符串中。一切都很好,但最后一部分,理解第二个输入,没有发生!这是我这部分的代码:
public void onUpdateReceived(Update update) {
String command = update.getMessage().getText() ;
long chatId = update.getMessage().getChatId();
SendMessage message = new SendMessage() ;
if (command.equals("/mytext")){
message.setText("please enter your text");
String command2 = update.getMessage().getText() ;
if (command2.equals("hello")){
message.setText("right");
}else {
message.setText("wrong");
}
}
message.setChatId(chatId) ;
try {
execute(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
请帮我解决这个问题。多谢 !
解决方案
根据您的代码,我假设您正试图从用户发送的同一个 Update 实例中捕获多个输入/命令,这是错误的。因为,每个更新实例都会附带用户发送的每个输入/消息。例如,第一个命令将作为更新发送,然后您将读取该命令并使用它做任何您想做的事情(即将它临时存储在全局变量或 hashmap 中,以便为用户接下来的第二个命令取回它)。之后,对于第二个命令,您应该要求用户像这样发送它:
message.setText("please enter your text");
message.setChatId(chatId) ;
try {
execute(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
发送您对第二个命令的请求后,用户将通过发送第二个命令进行响应,您现在已准备好处理这两个命令。第一个命令可以从临时全局变量中检索,第二个命令可以从最后收到的更新中检索。
推荐阅读
- python - 进程以退出代码 0 结束 - 怎么了?
- python - 从数据结构中返回多行
- python - Pandas 转移到非 NaN 值并检查是否重复输入
- typescript - VSCode 和 Typescript:“没有找到...的类型定义”
- python - 如何清除未解决的导入'cv2'错误?
- wordpress - Wordpress 翻译搜索查询并链接到外部 url
- c++ - 管道第二次卡住
- ios - 在来自 Cloud Firestore 的颤振应用程序上显示图标
- javascript - 为什么我的 express Router 中间件会执行多次?
- javascript - React Native:AWS 放大要求我点击两次“federatedSignIn”才能让谷歌成功