1

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

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

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

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

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

4

2 回答 2

4

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

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

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

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

于 2017-09-02T09:48:26.447 回答
0

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

UserID、ChatID、状态、姓名、年龄、性别...

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

于 2017-09-02T15:36:38.617 回答