我使用 node-telegram-bot-api 为一家花店创建了一个 Telegram 机器人。
我向用户提出的一些问题可以使用回复键盘进行回复(例如,交货时间和日期,或者是否应添加卡片),但有些问题需要自定义答案(姓名、电话、送货地址)。
虽然键盘答案可以使用正则表达式来处理,因为我提前知道它们:
bot.onText(new RegExp('Add a card'), msg => {
bot.sendMessage(msg.chat.id, messages.askDeliveryDate, //here I send the next question of the sequence
,{
reply_markup: keyboard.dateMenu // here I send the keyboard to answer the next question
})
})
我不明白如何处理自定义回复(如何识别和捕获它们、验证、继续处理序列中的下一个问题)?
如果您能提供帮助,我将不胜感激。谢谢你。
正如您已经预料到的那样,我应该说您可以编写自定义正则表达式来匹配用户短语,从而使用逻辑。也就是说,如果您询问电话号码,您可以创建如下正则表达式:
const phoneExp = /^\+(?:[0-9] ?){6,14}[0-9]$/
bot.onText(phoneExp, msg => {
// Your logic here
});
同样,您可以为电子邮件设置多个侦听器以及需要从用户收集的所有数据。
提示:我始终更喜欢使用数据库并始终在机器人中跟踪用户的当前状态。
编辑: 另一方面,您还可以利用其他功能,例如键盘按钮中的 request_contact 来请求用户的电话号码等。在此处了解更多信息:https://core.telegram.org/bots/api#keyboardbutton
希望这有帮助:)