我有一个像这样的电报机器人:
webhook
我们为用户提供了以下方案:
/MyPhoto a_parameter
命令发送到bot 基本问题:
在发送/MyPhoto a_parameter
命令后确保用户发送的照片的最佳方式是什么?
某些方式:
/MyPhoto
进行比较,如果它们相等则我确定用户在/MyPhoto
命令后发送照片。但如果有可能,我希望阻止获取最后执行的命令 从数据库到提高性能。
您知道更好的解决方案吗?例如,使用电报机器人API中的一些东西来保持最后执行的命令隐藏在用户和机器人之间的发送/接收消息中。
我通过添加第3步和第3步编辑了这个问题。 4在上面的场景中。
答案 0 :(得分:1)
这正是ForceReply按钮的制作。 https://core.telegram.org/bots/api#forcereply
1)Bot接收MyPhoto
命令并使用ForceReply键盘将此消息发送回用户。
2)Bot收到包含用户上一条消息的reply_to_message
对象的新消息,photo
答案 1 :(得分:1)
问题1:
确保用户发送的照片是正确的最佳方法是什么 发送/ MyPhoto a_parameter命令后?
我认为最佳解决方案是为每位用户存储/ MyPhoto update_id
,并将其与上传的照片update_id
进行比较。
请参阅电报文档:
更新的唯一标识符。更新标识符从a开始 某些正数并按顺序增加。这个ID变成了 如果你使用Webhooks,特别方便,因为它允许你 忽略重复更新或恢复正确的更新顺序, 如果它们失灵了。
问题2:
您知道更好的解决方案吗?比如使用一些东西 telegram bot API将上次执行的命令保持为隐藏状态 在用户和机器人之间发送/接收消息。
将InlineKeyboardMarkup与上次执行的命令一起用作回调数据。当用户选择内联按钮时,您可以从其更新中获取回调数据。
答案 2 :(得分:0)
关于SO的类似问题,例如one。基本上除了保留历史记录之外没有办法(或者在你的情况下只保留每个用户的最后一个命令)。您可以使用简单的哈希表,使用chat_id作为检索与每个用户交互的密钥。