Telegram Bot:如何处理自定义回复消息以及来自键盘的消息?

问题描述 投票:0回答:1

我使用 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
    })
})

我不明白如何处理自定义回复(如何识别和捕获它们、验证、继续处理序列中的下一个问题)?

如果您能提供帮助,我将不胜感激。谢谢你。

javascript event-handling telegram-bot node-telegram-bot-api
1个回答
0
投票

正如您已经预料到的那样,我应该说您可以编写自定义正则表达式来匹配用户短语,从而使用逻辑。也就是说,如果您询问电话号码,您可以创建如下正则表达式:

const phoneExp = /^\+(?:[0-9] ?){6,14}[0-9]$/
bot.onText(phoneExp, msg => {
  // Your logic here
});

同样,您可以为电子邮件设置多个侦听器以及需要从用户收集的所有数据。

提示:我始终更喜欢使用数据库并始终在机器人中跟踪用户的当前状态。

编辑: 另一方面,您还可以利用其他功能,例如键盘按钮中的 request_contact 来请求用户的电话号码等。在此处了解更多信息:https://core.telegram.org/bots/api#keyboardbutton

希望这有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.