我想编码电报机器人,因此,当我要从用户那里收到消息时,我应该知道他/她发送给我的最后一条消息,以及他/她所在的步骤。因此,我应该存储用户的会话(我在搜索时理解了),但是我不知道该怎么办?
我知道我需要一个存储用户ID的DB中的表格,但我不知道这些:
-
如何将步骤扎根并将其存储在DB中(我的意思是我如何了解用户现在的位置)
-
我需要存储哪些其他列?
-
我应该在数据库中存储多少条消息?我是否需要每行?
如果您只需要在数据库中存储会话,则无需存储消息即可。也许您还需要存储消息,但不一定是相关的。
让我们假设您的机器人中有一个"首选项"菜单,用户可以在其中写入他的输入。您要求名称,年龄,性别等。您如何知道用户写入其名称或性别等的输入?
您将会话保存在DB中。当机器人收到消息时,您会在用户在哪个会话中检查正确的函数。
一个简单的解决方案可能是SQL数据库。主键列是Telegram用户ID(如果打算在私有和组聊天中同时工作,则可以添加聊天ID列)和您记录用户步骤的"会话"列文本。默认情况下,会话列可以为null。如果机器人期望性别(因为用户发行/性别命令)可以更新带有"性别"一词的列"会话",因此当消息到达时,您知道如何处理该列,请检查该用户ID的性别列和AS运行正确的函数后,您将再次更新到null列" session"。
您可以使用这些列创建DB。
用户,chatid,状态,名称,年龄,性别...
在每个传入更新中,您将检查您是否存在DB上的用户,然后检查用户的状态并适当响应并在最后更新状态。