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混合)
我在上述场景中添加了步骤3和步骤4来编辑问题。类似的问题也有。基本上,除了保存历史记录(或者在您的情况下,每个用户只保存最后一个命令)之外,没有其他方法。您可以使用一个简单的哈希表,以chat_id作为键来检索与每个用户的交互 这正是ForceReply按钮的用途 1) Bot接收
MyPhoto
命令,并使用ForceReply键盘将此消息发送回用户
2) Bot接收到新消息,其中包含包含用户以前的消息和照片的对象回复消息问题1:
确保用户发送的照片正确的最佳方法是什么
发送/MyPhoto a_参数命令后
我认为最好的解决方案是为每个用户存储/MyPhotoupdate\u id
,并将其与上传的照片update\u id
进行比较
见电报文件:
更新的唯一标识符。更新标识符从
一定的正数,然后依次递增。此ID变为
如果您正在使用Webhook,那么它尤其方便,因为它允许您
忽略重复更新或恢复正确的更新顺序,
如果他们出了问题
问题2:
你知道更好的解决办法吗?例如,在
电报bot API将最后执行的命令隐藏在
在用户和bot之间发送/接收消息
将上次执行的命令作为回调数据使用InlineKeyboardMarkup。当用户选择内联按钮时,您可以从其更新获取回调数据