2016-08-01 31 views
5

Używam Node.js telegram-bot-api.Jak ukryć ReplyKeyboardMarkup po kliknięciu przez użytkownika w telegramie Bot API

Idea:

  1. Pokaż niestandardową klawiaturę za pomocą jednego przycisku - "Udostępnij mój numer telefonu".
  2. Po kliknięciu tego przycisku kontakt powinien zostać wysłany, a przycisk powinien zostać usunięty z ekranu.

Oto kod używam teraz:

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 
    }) 
}); 

Problemy:

  • Kiedy użytkownik kliknie przycisk „Udostępnij mój numer telefonu” przycisk, podziela jego kontaktu ale przycisk jest widoczny nawet po tym.
  • Gdy nie używam flagi request_contact, one_time_keyboard działa poprawnie (ukrywa przycisk po jej użyciu), ale nawet w tym przypadku po prostu ukrywa przycisk, więc użytkownik może kliknąć ikonę, aby przywrócić go do ekranu, który nie jest dobrze w ogóle.

Proszę mi powiedzieć, czy robię coś nie tak. Dzięki

Odpowiedz

9

Znaleziono.

Oto rozwiązanie:

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

Powinieneś użyć editMessageReplyMarkup i zaktualizować komunikat replyMarkup z pustym łańcuchem ('') po otrzymaniu kliknięcia klienta klienckiego.

AKTUALIZACJA dotyczy to klawiatur wbudowanych.

+0

tutaj jest to, co otrzymuję teraz: '{OK: false, kod_błędu: 400, opis: 'Bad Request: Komunikat może \' t być edytowane”} ' – Nazar

+0

powinieneś również podać identyfikator wiadomości. Last Message Id, który wysłałeś i zawierał znaczniki klawiatury –