2016-06-16 2 views
7
  • चरण 1: उपयोगकर्ता (उदाहरण के["Yes", "No"] के लिए ) कुछ बटन के साथ ReplyKeyboardMarkup साथ संदेश भेजें
  • चरण 2: उपयोगकर्ता (उदाहरण के "Yes" के लिए ) बटन पर क्लिक करते हैं तो मैं एक संदेश प्रदर्शित करना चाहते हैं इनलाइन कीबोर्ड के साथ और कदम 1.

पर भेजा बटन को छिपाने यह करने के लिए संभव है? संदेश सिर्फ एक reply_markup संपत्ति है और या तो InlinkeKeyboardMarkup या ReplyKeyboardHide हो सकता है। मुझे लगता है कि करने के लिए है करने के लिए एक ही रास्ता 2 संदेश भेजें (कीबोर्ड को छुपाने के लिए पहले और दूसरा इनलाइन कीबोर्ड के साथ) लेकिन यह उपयोगकर्ता अनुभव बिंदु दृश्य से सबसे अच्छा समाधान नहीं होगा। मैं कुछ अनुरोध करने के लिए ठीक हूं लेकिन उपयोगकर्ता को केवल 1 संदेश दिखाना चाहता हूं।टेलीग्राम बॉट: मैं इनलाइन कीबोर्ड के साथ संदेश कैसे भेजूं और कस्टम कीबोर्ड को एक साथ कैसे छुपाऊं?

कोई विचार?

उत्तर

7

अभी यह असंभव है। टेलीग्राम बॉट एपीआई वर्तमान में केवल एक प्रकार का कीबोर्ड भेजने की अनुमति देता है: इनलाइन या सरल (कीबोर्डहेड और अन्य सहित)।

3

लेकिन तुम दो संदेश भेज सकते हैं, पहले एक ReplyKeyboardHide/ReplyKeyboardRemove और दूसरा भेजना होगा इनलाइन कुंजीपटल

1

आप बेहतर दोनों हाँ/नहीं और पूर्ववर्ती कीबोर्ड है जो आप के बाद से दिखाना चाहते हैं inlinekeyboard का उपयोग भेजना होगा हां या नहीं दबा रहा है। इस तरह, आप हाँ/नहीं इनलाइनकीबोर्ड संदेश संपादित कर सकते हैं और नया कीबोर्ड दिखा सकते हैं।

आप इनलाइन केबोर्ड भेज सकते हैं और इसे कॉल करके देख सकते हैं BackQuery.Data पैरामीटर आप भेजे गए संदेश को फिर से संपादित कर सकते हैं और इसके बजाय अपना नया संदेश दिखा सकते हैं।

{"update_id":14603298, 
    "callback_query": 
    { 
    "id": "479899181065761766", 
    "from": { 
     "id": 111735238, 
     "first_name": "eric", 
     "username": "...." 
    }, 
    "message": { 
     "message_id": 22, 
     "from": { 
     "id": 3576731383, 
     "first_name": "the_bot_name", 
     "username": "mybot_bot" 
     }, 
     "chat": { 
     "id": 111745258, 
     "first_name": "eric", 
     "username": "....", 
     "type": "private" 
     }, 
     "date": 1492113810, 
     "text": "sent message" 
    }, 
    "chat_instance": "5419183837652256438", 
    "data": "yes" 
    }} 

इसलिए, जब उपयोगकर्ता पर हाँ या ना पर क्लिक करता है, तो आप एक अद्यतन संदेश प्राप्त होगा:

नीचे

एक नमूना अद्यतन संदेश json है। इसके बाद के संस्करण अद्यतन संदेश के आधार पर, chatid और MessageId तो ग # Telegram.Bot लाइब्रेरी का उपयोग कर संपादित कोड की तरह है जाना जाता है:

var chatid= 111745258; 
    var messageid=22;   
    TelegramBotClient api = new TelegramBotClient("YOUR_TOKEN"); 

var new_keyboard = new InlineKeyboardMarkup(
       new[] 
        { 
         new[] 
         { 
          new InlineKeyboardButton("step_1","step1") , 
          }, 
         new[] 
          { 
          new InlineKeyboardButton("step_2","step2"), 
          new InlineKeyboardButton("step_3","step3"), 
          }, 
         new[] 
          { 
          new InlineKeyboardButton("step_4","step4"), 
          } 
        }); 
    api.EditMessageReplyMarkupAsync(chatid, messageid, replyMarkup: new_keyboard); 
4

मुझे लगता है कि आप चाहते हैं बटन गायब हो जाना चाहिए एक बार यह दबाया है:

ReplyKeyboardMarkup MyButton = new ReplyKeyboardMarkup(); 
MyButton.OneTimeKeyboard = true; 

तुम भी इस जोड़कर इसे और अधिक उत्तरदायी बना सकते हैं:

MyButton.ResizeKeyboard = true; 
3

कोई तार्किक समाधान नहीं है। लेकिन एक चाल है। आप पिछले कीबोर्ड को हटाने के लिए एक संदेश भेज सकते हैं, फिर इस संदेश को हटा दें, अंत में अगला संदेश इसके कीबोर्ड के साथ भेजें।

// send a fake message 
Message sentMsg = bot.SendTextMessageAsync(chatID, ".", replyKeyboardMarkup: new ReplyKeyboardRemove()).Result; 

// remove the fake message 
bot.DeleteMessageAsync(chatID, sentMsg.MessageId); 

// send the main message with it's keyboard 
bot.SendTextMessageAsync(chatID, "the next message", replyKeyboardMarkup: new ReplyKeyboardMarkup(keyboardData)); 
3

बस, सही करने के लिए OneTimeKeyboard संपत्ति सेट

Button.OneTimeKeyboard = true; 

एक बार बटन यह प्रयोग किया जाता है फिर कभी नहीं दिखा रहा है

संबंधित मुद्दे