如何使用Telegram机器人获取上一条消息的文本?

时间:2018-12-29 11:34:53

标签: java telegram telegram-bot

我正在使用Java构建面向答复键盘的机器人,我需要它以不同的方式对待两种情况,在这种情况下,最新消息的文本与前一条消息的文本相同。如何获取或存储上一条消息的文本作为公共变量?

我的概念模型如下:

我有一个很大的If-Else-If语句,其中每个If块的条件都沿if(update.hasMessage() && messageText.equals("aaa"))行,其中“ aaa”是出现在回复键盘上的一些文本,该文本早先为用户弹出(因为键盘按钮将字符串作为文本发送,并且在Telegram bot的api中没有按钮按下事件的选项)。 messageText定义为update.getMessage()。getText()。

我希望代码根据两种情况来区别对待,在两种情况下,messageText基于之前的消息而相同。 if(update.hasMessage() && messageText.equals("aaa") && previousMessage.equals("bbb")) { } else if(update.hasMessage() && messageText.equals("aaa") && previousMessage.equals("ccc")){}。如何存储上一条消息而又不会在收到新消息时对其进行更新?

1 个答案:

答案 0 :(得分:0)

可以使用许多模式来控制用户状态,但是作为我在电报机器人中所做的一个简单技巧,您可以根据当前消息响应生成下一条消息数据。例如,当用户发送“ aaa”作为第一条消息响应,并且您想要生成下一条消息时,可以向其回调中添加第一条消息数据,例如:“ aaa,bbb”,并且在调用api时您会注意到上一条消息是通过用“,”分隔回调数据来实现“ aaa”。