如何等待用户回答并保留 select 的答案

How to wait for the user answer and keep the answer for select

我想做一个telegram Bot,拿月薪。 用户发送用户名,然后发送密码。 机器人发送工资信息。 问题就在这里,用户发送salary的命令, 我要发

bot:  user name
user: tiger
bot: password
user: 985468

我在等待用户时遇到问题并保留第一条消息(用户名)。

User Action StepUser Input Data 保存在数据库中。 并在收到的每条消息中检查 User Action Step 以完成正确的工作。

您可以发送 Hi Sean, please enter your passwordForceReply,并读取 .message.reply_to_message.text 字段。

我认为这是解决这个问题的唯一方法,但我建议你像其他答案一样使用自己的数据库。

电报 API 不允许您这样做。 不过,您可以使用多种方法来做到这一点。

  • 您可以使用您的数据库来存储此对话的状态
  • 您可以要求用户回复您的消息,这样您就可以查看回复的是什么消息
  • 您可以在可能的情况下使用内联键盘(select 的一个选择),这样您就可以查看 callback_data
  • 您可以要求用户以特定关键字开始消息
  • 您可以要求用户将所有内容写在一条消息中,也许用一个字符分隔,然后拆分该字符

现在什么对用户更好?

  • 对于用户来说,第一个选项更好,因此您将对话的状态存储在数据库中,在机器人收到消息后,您检查对话的状态并获得所引用的内容

什么对你更好?

  • 我想说的是,您最好使用回复 hack,这样您就不需要数据库来存储每个用户的聊天状态。您可以使用 force_reply 参数让用户更清楚。

  • 我建议尽可能使用内嵌键盘,因为使用 callback_data 可以让事情变得更容易。例如,您要向用户询问年龄,您可以用 80 个按钮(100 个是上限)进行回复,他可以按正确的年龄。这样更好,因为您不必担心用户输入文本而不是数字的奇怪情况(例如,他写 ten 而不是 10)并且您不需要检查状态db 或查看回复。您只需检查 callback_data。一个想法是每个按钮都可以有一个以 "age_{age option}" 开头的 callback_data 并且你处理以 age_ 开头的 callback_data 只采取最后一部分。你不需要数据库,你不需要检查回复,你不需要处理用户发送错误格式的奇怪情况,你只需要处理回调