【问题标题】:How to get previous message's text with a Telegram bot?如何使用 Telegram 机器人获取上一条消息的文本?
【发布时间】:2019-05-26 21:44:33
【问题描述】:

我正在使用 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")){}。如何在收到新消息时存储以前的消息而不更新它?

【问题讨论】:

  • 您好,为什么您不使用标准的现有设计模式来控制用户的状态?比如状态模式?

标签: java telegram telegram-bot


【解决方案1】:

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

【讨论】:

  • 嘿。你能添加一个例子吗?我的意思是你在讨论你已经收到的信息吗?假设,我想知道用户发送的消息是对什么消息的回答
猜你喜欢
  • 2018-02-03
  • 2018-09-24
  • 1970-01-01
  • 2021-03-09
  • 2019-01-31
  • 2018-05-17
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
相关资源
最近更新 更多