(电报BOT)有没有一种方法可以在特定的菜单块中收听答案

时间:2019-09-07 18:56:17

标签: node.js telegram telegram-bot

我已经建立了一个简单的电报bot应用程序,但是我在为特定的菜单按钮进行消息拦截方面很挣扎。

bot.start((ctx) => ctx.reply('start handler', {
  reply_markup: JSON.stringify({
    reply_to_message_id: ctx.message.message_id,
    resize_keyboard: true,
    keyboard: [
      [{text: 'ZIP'}, {text: 'birthday'}],
    ]
  })
}));

bot.hears('ZIP', (ctx) => ctx.reply('input your ZIP code', {
  reply_markup: JSON.stringify({
    resize_keyboard: true,
    keyboard: [
      ['Отмена']
    ]
  })
}));

bot.hears('birthday', (ctx) => ctx.reply('input day only', {
    reply_markup: JSON.stringify({
      resize_keyboard: true,
      keyboard: [
        ['Отмена']
      ]
    })
  })
);

例如,我应该使用哪种方法来收听“ ZIP”菜单中的答案。我不希望一般的听众会听这个答案。我怎么能知道答案来自“邮政编码”按钮?

1 个答案:

答案 0 :(得分:0)

您可以选择使用嵌入式键盘(如果您想100%准确地只听菜单中的更新)

话虽如此,如果您想继续使用回复键盘并避免混淆,您可能会考虑一些解决方法。

  1. 第一个方法是在键盘按钮上添加表情符号(使其具有独特性并减少用户对文本消息的意外反应的机会)
  2. 使用Telegraf stages & scenes抽象在特定上下文中注册处理程序。(这样,您的漫游器只会在该场景中做出反应,而不会全局响应)