我想编写一个电报机器人,所以当我要接收来自用户的消息时,我应该知道他/她发送给我的最后一条消息以及他/她在哪个步骤中定位。所以我应该存储用户的会话(我在搜索时明白这一点)但我不知道我到底应该做什么?
我知道我需要一个存储 UserId、ChatId 的数据库中的表,但我不知道这些:
如何为步骤创建根并将它们存储在数据库中(我的意思是我现在如何了解用户所在的位置)
我需要将哪些其他列存储为会话?
我应该在数据库中存储多少条消息?每条消息都需要一行吗?
我想编写一个电报机器人,所以当我要接收来自用户的消息时,我应该知道他/她发送给我的最后一条消息以及他/她在哪个步骤中定位。所以我应该存储用户的会话(我在搜索时明白这一点)但我不知道我到底应该做什么?
我知道我需要一个存储 UserId、ChatId 的数据库中的表,但我不知道这些:
如何为步骤创建根并将它们存储在数据库中(我的意思是我现在如何了解用户所在的位置)
我需要将哪些其他列存储为会话?
我应该在数据库中存储多少条消息?每条消息都需要一行吗?
如果您只需将会话存储在数据库中,则不需要存储消息。也许您也可以存储消息,但不一定相关。
假设您的机器人中有一个“首选项”菜单,用户可以在其中编写他的输入。您询问姓名、年龄、性别等。您如何知道用户何时输入关于姓名或性别等的输入?
您将会话保存在数据库中。当机器人收到消息时,您会检查用户在哪个会话中运行正确的功能。
一个简单的解决方案可能是 sql 数据库。主键列是电报用户 ID(如果它打算在私人和群聊中工作,您还可以添加一个聊天 ID 列)和一个“会话”列 TEXT,您可以在其中记录用户步骤。默认情况下,会话列可以为 NULL。如果机器人需要性别(因为用户发出 /gender 命令),您可以使用“性别”一词更新“会话”列,因此当消息到达时,您知道如何处理它,检查该用户 ID 的性别列并作为一旦你运行了正确的函数,你再次将“会话”列更新为 NULL。
您可以使用这些列创建一个数据库。
UserID、ChatID、状态、姓名、年龄、性别...
在每次传入的更新中,您将检查用户是否存在于您的数据库中,然后检查用户的状态并做出适当的响应并在最后更新状态。