提问人:katrin_melody 提问时间:11/11/2023 更新时间:11/11/2023 访问量:22
Telegram Bot:如何处理自定义回复消息以及来自键盘的消息?
Telegram Bot: How to handle custom reply messages along with those from the keyboard?
问:
我使用 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
})
})
我不明白如何处理自定义回复(如何识别和捕获它们、验证、继续序列的下一个问题)?
如果您能提供帮助,将不胜感激。谢谢。
答:
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
希望这对:)有所帮助
评论