Вы можете сделать это по-разному.
- Вы можете хранить «состояние» пользователь в себе
- Вы можете использовать несколько команд, которые будут работать сами по себе, но вы просто дать пользователю чувство руководствуясь
- Вы можете использовать
ForceReply
бота API
Alright. Итак, для 1.
Я бы сказал, что у вас есть некоторые преимущества. Вы можете фактически управлять пользователем и ограничивать доступ к некоторым командам, когда он не находится в правильном состоянии. Итак, скажем, он хочет купить Popcorn, но он находится в shoestore, который вы бы запретили команде, проверив сохраненное состояние пользователя.
Для 2.
вы всегда позволяете использовать /buy
и /buy_popcorn
и /buy_shoe
. Но в зависимости от ваших ответов вы просто даете ему определенное количество возможных выборов.
User: /buy
What do you want to buy? /shoes or /food :Bot
User: /food
How about some Popcorn? Use /buy_popcorn :Bot
User: /buy_shoe
Alright. Shoes added to cart :Bot
Это будет разрешено, но пользователю придется вручную написать /buy_shoe
3.
возможный способ использования ForceReply. Пользователь автоматически получит сообщение answer to
. Поэтому, когда он использует /buy_shoe
, он ответит на последнее сообщение, отправленное ботом. Вы также получите сообщение, на которое пользователь ответил, в сообщении от api. Вы можете проверить, является ли сообщение, на которое пользователь ответил, правильное предварительное условие/правильное сообщение для команды, а затем ограничить или разрешить команду.
User: /buy
What do you want to buy? /shoes or /food :Bot
User: [Answer to: What do you...] /food
How about some Popcorn? Use /buy_popcorn :Bot
User: [Answer to: How about some...] /buy_shoe
Sorry, but you're currently in the Food Store :Bot
Это зависит от личных предпочтений, я думаю. Но все это имеет свои плюсы и минусы, и вам нужно решить, хотите ли вы разрешать конкретные команды без предварительного условия.
Этот список может быть неполным. Может быть, есть и другие способы, о которых я не думал. Но эти 3 пути я знаю.
Спасибо за ваши ответы. –