如何等待用户回答并保留 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 Step
和 User Input Data
保存在数据库中。
并在收到的每条消息中检查 User Action Step
以完成正确的工作。
您可以发送 Hi Sean, please enter your password
和 ForceReply,并读取 .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 只采取最后一部分。你不需要数据库,你不需要检查回复,你不需要处理用户发送错误格式的奇怪情况,你只需要处理回调
我想做一个telegram Bot,拿月薪。 用户发送用户名,然后发送密码。 机器人发送工资信息。 问题就在这里,用户发送salary的命令, 我要发
bot: user name
user: tiger
bot: password
user: 985468
我在等待用户时遇到问题并保留第一条消息(用户名)。
将 User Action Step
和 User Input Data
保存在数据库中。
并在收到的每条消息中检查 User Action Step
以完成正确的工作。
您可以发送 Hi Sean, please enter your password
和 ForceReply,并读取 .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 只采取最后一部分。你不需要数据库,你不需要检查回复,你不需要处理用户发送错误格式的奇怪情况,你只需要处理回调