2016-08-01 18 views
5

Ich benutze Node.js telegram-bot-api.Wie ReplyKeyboardMarkup zu verbergen, nachdem Benutzer in Telegram Bot API

Idee:

  1. Zeigen Sie eine benutzerdefinierte Tastatur mit einer Taste - "Meine Telefonnummer teilen".
  2. Wenn der Benutzer auf diese Schaltfläche klickt, sollte der Kontakt gesendet und die Schaltfläche vom Bildschirm entfernt werden.

Hier ist ein Code, den ich jetzt bin mit:

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

Probleme: „Teilen Sie meine Telefonnummer“ Knopf, es teilt seinen Kontakt aber Knopf ist sichtbar

  • Wenn Benutzer klickt auch danach.
  • Wenn ich nicht request_contact Flag verwende, funktioniert one_time_keyboard ordnungsgemäß (verbirgt die Schaltfläche nach ihrer Verwendung), aber selbst in diesem Fall wird nur die Schaltfläche ausgeblendet, so dass Benutzer auf ein Symbol klicken können, um es zurück auf den Bildschirm zu bringen, was nicht ist überhaupt gut.

Bitte sagen Sie mir, wenn ich hier etwas falsch mache. Dank

Antwort

9

Es gefunden. Hier

ist eine Lösung:

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

sollten Sie editMessageReplyMarkup verwenden und aktualisieren, dass replyMarkup die Nachricht mit Null-Zeichenfolge ('') nach Client-Benutzer klicken Sie empfangen.

UPDATE Dies gilt für Inline-Tastaturen.

+0

hier ist das, was ich bekomme jetzt: '{ok: false, error_code: 400, Beschreibung: 'Bad Request: Nachricht kann \' t bearbeitet werden‘} ' – Nazar

+0

sollten Sie auch Nachrichten-ID bereitstellen. Letzte Nachrichten-ID, die Sie gesendet haben und die das Tastatur-Markup enthalten hat –