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

时间:2017-09-02 07:58:30

标签: session user-input telegram-bot usersession

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

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

  1. 如何为步骤创建根并将其存储在db中(我的意思是如何理解用户现在的位置)

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

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

2 个答案:

答案 0 :(得分:3)

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

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

您可以在数据库中保存会话。当僵尸程序收到消息时,您可以检查用户在哪个会话中运行正确的功能。

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

答案 1 :(得分:0)

您可以使用这些列创建数据库。

UserID,ChatID,州,姓名,年龄,性别......

在每次传入更新时,您将检查用户是否存在于您的数据库,然后检查用户的状态并做出适当的响应并在最后更新状态。