Mr.*_*r.D 7 javascript node.js telegram telegram-bot
我已经开始使用这个模块为电报编写机器人逻辑
我可以像这样创建简单的问答逻辑:
bot.onText(/\/start/, function(msg, match){
bot.sendMessage(msg.chat.id, "Hello this is great bot");
});
Run Code Online (Sandbox Code Playgroud)
当用户输入时,/start
他将收到此消息.
我想创建像bot和用户之间的链式对话.就像用户类型/buy
机器人会显示购买选项一样,在用户输入他想要购买的东西之后,机器人将显示所选产品的类型等等.
如何在用户和机器人之间创建链式对话?如何使机器人记住以前选择的命令并在时间重置它们?我需要保留在自己的数据库中才能这样做吗?
你可以用不同的方式做到这一点.
ForceReply
Bot API好的.因为1.
我会说你有一些好处.实际上,当用户处于正常状态时,您可以引导用户并限制对某些命令的访问.所以,假设他想要购买爆米花,但是他已经在你要求通过检查已保存的用户状态来禁止该命令.
对于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
Run Code Online (Sandbox Code Playgroud)
这是允许的,但用户必须手动编写 /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
Run Code Online (Sandbox Code Playgroud)
我想,这归结为个人偏好.但所有这些都有利有弊,你必须决定是否要在没有先决条件的情况下允许特定命令.
此列表可能不完整.可能还有其他方式,我没有想到.但这三种方式我都知道.
归档时间: |
|
查看次数: |
1938 次 |
最近记录: |