web-dev-qa-db-ja.com

ユーザーがTelegram Bot APIでクリックした後にReplyKeyboardMarkupを非表示にする方法

Node.js telegram-bot-api を使用しています。

考え:

  1. ボタン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は正しく機能します(使用後にボタンを非表示にします)が、その場合でも、ボタンを非表示にするだけなので、ユーザーがアイコンをクリックして、画面、全然良くない。

私がここで何か悪いことをしているかどうか教えてください。ありがとう

8
Nazar

それを見つけた。

これが解決策です:

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

hide_keyboardAPI 2. 以降、remove_keyboardに名前が変更されました。

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

editMessageReplyMarkup を使用し、そのメッセージのreplyMarkupをnull string('')クライアントユーザーのクリックを受信した後。

[〜#〜] update [〜#〜]これはインラインキーボードに適用できます。

0
Seyfi