【问题标题】:How to hide ReplyKeyboardMarkup after user click in Telegram Bot API用户单击 Telegram Bot API 后如何隐藏ReplyKeyboardMarkup
【发布时间】:2016-12-06 09:52:20
【问题描述】:

我正在使用 Node.js telegram-bot-api

想法:

  1. 一键显示自定义键盘 - “分享我的电话号码”。
  2. 当用户单击此按钮时,应发送联系信息并应从屏幕上删除按钮。

这是我现在正在使用的代码:

bot.sendMessage({
    text: 'Please give us your phone number',
    reply_markup: JSON.stringify({
        keyboard: [
            [{
                text: 'Share my phone number',
                request_contact: true
            }]
        ],
        resize_keyboard: true,
        one_time_keyboard: true
    })
});

问题:

  • 当用户点击“分享我的电话号码”按钮时,它会分享他的联系人,但按钮仍然可见。
  • 当我不使用request_contact 标志时,one_time_keyboard 可以正常工作(在使用后隐藏按钮),但即使在这种情况下,它也只是隐藏按钮,因此用户可以单击图标将其返回屏幕, 这一点都不好。

如果我在这里做错了什么,请告诉我。谢谢

【问题讨论】:

    标签: javascript node.js telegram telegram-bot


    【解决方案1】:

    找到了。

    这里有一个解决方案:

    bot.sendMessage({
        chat_id: message.chat.id,
        text: 'Some text...',
        reply_markup: JSON.stringify({
            hide_keyboard: true
        })
    });
    

    【讨论】:

    • hide_keyboard 自 API 2.3 起已重命名为 remove_keyboard。
    • 请注意,如果您发送并清空消息或什至只有 1 个空格,它似乎不起作用。
    【解决方案2】:

    hide_keyboardAPI 2.3 起已重命名为 remove_keyboard

    bot.sendMessage({
        chat_id: message.chat.id,
        text: 'Some text...',
        reply_markup: JSON.stringify({
            remove_keyboard: true
        })
    });
    

    【讨论】:

      【解决方案3】:

      您应该使用editMessageReplyMarkup 并在收到客户端用户的点击后将该消息的replyMarkup 更新为空字符串('')。

      更新这适用于内联键盘。

      【讨论】:

      • 这是我现在得到的:{ ok: false, error_code: 400, description: 'Bad Request: Message can\'t be edited' }
      • 您也应该提供消息 ID。您已发送并包含键盘标记的最后一条消息 ID
      猜你喜欢
      • 2022-10-20
      • 2022-01-26
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2016-02-23
      相关资源
      最近更新 更多