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

Telegram Bot: How to handle custom reply messages along with those from the keyboard?

提问人:katrin_melody 提问时间:11/11/2023 更新时间:11/11/2023 访问量:22

问:

我使用 node-telegram-bot-api 为一家花店创建了一个 Telegram 机器人。

我向用户提出的一些问题可以使用回复键盘进行回答(例如,送货的时间和日期,或者是否应该添加卡片),但有些问题需要自定义答案(姓名、电话、送货地址)。

虽然键盘答案可以使用 RegExp 处理,因为我提前知道它们:

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 事件处理 节点电报机器人 API

评论


答:

0赞 Sreelal TS 12/6/2023 #1

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

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

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

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

编辑: 另一方面,您还可以使用其他功能,例如 KeyboardButton 中的request_contact来请求用户的电话号码等。在这里阅读更多: https://core.telegram.org/bots/api#keyboardbutton

希望这对:)有所帮助