C# 如何等待用户答案并将答案保留为select

C# 如何等待用户答案并将答案保留为select,c#,bots,telegram,telegram-bot,C#,Bots,Telegram,Telegram Bot,我想打一个月薪电报。 用户发送用户名,然后发送密码。 bot发送工资信息。 问题是在这里,用户发送工资命令, 我想寄 bot: user name user: tiger bot: password user: 985468 我在等待用户和保留第一条消息(用户名)时遇到问题。在数据库中保留用户操作步骤和用户输入数据。 并在收到的每封邮件中检查用户操作步骤以执行正确的操作。您可以发送Hi Sean,请输入密码,然后阅读.message。回复邮件。文本字段 我认为这是解决这个问题的唯一方法,但我

我想打一个月薪电报。 用户发送用户名,然后发送密码。 bot发送工资信息。 问题是在这里,用户发送工资命令, 我想寄

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

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

在数据库中保留
用户操作步骤和
用户输入数据。

并在收到的每封邮件中检查
用户操作步骤
以执行正确的操作。

您可以发送
Hi Sean,请输入密码
,然后阅读
.message。回复邮件。文本
字段


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

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

  • 您可以使用数据库存储此对话的状态
  • 您可以要求用户回复您的邮件,这样您就可以检查回复的邮件是什么
  • 在可能的情况下,您可以使用内联键盘(可供选择),以便检查回调数据
  • 您可以要求用户以特定关键字开始消息
  • 您可以要求用户在一条消息中写入所有内容,可以用一个字符分割,然后拆分该字符
现在,什么对用户更有利

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

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

  • 我建议在可能的情况下使用内联键盘,因为它们使使用回调数据变得更容易。例如,你向用户询问年龄,你可以用80个按钮回答(100是限制),他可以按正确的年龄。这更好,因为当用户写文本而不是数字时,您不必担心奇怪的情况(例如,他写的是
    10
    而不是
    10
    ),并且您不需要检查数据库上的状态或检查回复。您只需检查回调数据。一个想法是,每个按钮都可以有一个以“age_{age option}”开头的回调_数据,您可以处理以age_u开头的回调_数据,只取最后一部分。您不需要db,不需要检查回复,不需要处理用户发送错误格式时的奇怪情况,您只需要处理回调


将用户数据记录在db、文件或更好的解决方案:redis中。首先,我应该获取用户名,然后获取密码