如何在我的数据库中存储电报机器人用户的会话

Ima*_*ari 1 session user-input usersession telegram-bot

我想编写一个电报机器人,因此当我要接收来自用户的消息时,我应该知道他/她发送给我的最后一条消息以及他/她位于哪个步骤。所以我应该存储用户的会话(我在搜索时理解了这一点),但我不知道我到底应该做什么?

我知道我需要在数据库中存储 UserId、ChatId 的表,但我不知道这些:

  1. 如何为步骤创建根并将它们存储在数据库中(我的意思是如何了解用户现在所在的位置)

  2. 我还需要将哪些列存储为会话?

  3. 我应该在数据库中存储多少条消息?每条消息都需要一行吗?

91D*_*Dev 5

如果您只需将会话存储在数据库中,则不需要存储消息。也许您可能还想存储消息,但它不一定相关。

假设您的机器人中有一个“首选项”菜单,用户可以在其中编写输入。您询问姓名、年龄、性别等。您如何知道用户何时输入有关姓名或性别等的信息?

您将会话保存在数据库中。当机器人收到消息时,您检查用户所在的会话以运行正确的功能。

一个简单的解决方案可能是 SQL 数据库。主键列是电报用户 ID(如果要在私人聊天和群聊中同时使用,您还可以添加聊天 ID 列)和“会话”列 TEXT(用于记录用户步骤)。默认情况下,会话列可以为 NULL。如果机器人需要性别(因为用户发出了 /gender 命令),您可以用“性别”一词更新“会话”列,这样当消息到达时您就知道如何处理它,检查该用户 ID 的性别列并作为一旦运行了正确的函数,您就会再次将“会话”列更新为 NULL。