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