Bots 如何在电报机器人中获取最后执行的命令?

Bots 如何在电报机器人中获取最后执行的命令?,bots,telegram,Bots,Telegram,我有一个像这样的电报机器人: 通过webhook获取更新 语言:C#(我也欢迎用其他语言回答) 我们为用户提供了以下场景: 向bot发送/MyPhoto a_参数命令 将照片发送到bot 将另一张照片发送到bot 将另一张照片发送到bot 基本问题: 发送/MyPhoto a_参数命令后,确保用户发送的照片正确的最佳方法是什么 一些方法: 我可以将每个用户执行的每个命令保存在数据库中,获取当前用户执行的最后一个命令,并将其与/MyPhoto进行比较,如果它们相等,则我确定用户在/MyPh

我有一个像这样的电报机器人

  • 通过
    webhook获取更新
  • 语言:C#(我也欢迎用其他语言回答)
  • 我们为用户提供了以下场景:

  • 向bot发送
    /MyPhoto a_参数
    命令
  • 将照片发送到bot
  • 将另一张照片发送到bot
  • 将另一张照片发送到bot
基本问题:

发送
/MyPhoto a_参数
命令后,确保用户发送的照片正确的最佳方法是什么

一些方法:

  • 我可以将每个用户执行的每个命令保存在数据库中,获取当前用户执行的最后一个命令,并将其与
    /MyPhoto
    进行比较,如果它们相等,则我确定用户在
    /MyPhoto
    命令之后发送照片
  • 创建缓存系统以保存每个用户最后执行的命令(与db混合)
但是如果可能的话,我想获取最后执行的命令 从数据库到提高性能

你知道更好的解决办法吗?例如,使用telegram bot API中的某些东西将最后执行的命令隐藏在用户和bot之间的发送/接收消息中



我在上述场景中添加了步骤3和步骤4来编辑问题。

类似的问题也有。基本上,除了保存历史记录(或者在您的情况下,每个用户只保存最后一个命令)之外,没有其他方法。您可以使用一个简单的哈希表,以chat_id作为键来检索与每个用户的交互

这正是ForceReply按钮的用途

1) Bot接收
MyPhoto
命令,并使用ForceReply键盘将此消息发送回用户

2) Bot接收到新消息,其中包含包含用户以前的消息和照片的对象
回复消息
问题1:

确保用户发送的照片正确的最佳方法是什么 发送/MyPhoto a_参数命令后

我认为最好的解决方案是为每个用户存储/MyPhoto
update\u id
,并将其与上传的照片
update\u id
进行比较

见电报文件:

更新的唯一标识符。更新标识符从 一定的正数,然后依次递增。此ID变为 如果您正在使用Webhook,那么它尤其方便,因为它允许您 忽略重复更新或恢复正确的更新顺序, 如果他们出了问题

问题2:

你知道更好的解决办法吗?例如,在 电报bot API将最后执行的命令隐藏在 在用户和bot之间发送/接收消息

将上次执行的命令作为回调数据使用InlineKeyboardMarkup。当用户选择内联按钮时,您可以从其更新获取回调数据