Telegram bot:如何使用内联键盘发送消息并同时隐藏自定义键盘?

Ale*_*nok 11 telegram-bot

  • 第1步:向用户发送ReplyKeyboardMarkup包含少量按钮的消息(例如 ["Yes", "No"])
  • 步骤2:如果用户单击其中一个按钮(例如 " Yes")",我想显示带内联键盘的消息并隐藏在步骤1发送的按钮.

有可能吗?该消息只有一个reply_markup属性,可以是InlinkeKeyboardMarkupReplyKeyboardHide.我看到的唯一方法是发送2条消息(首先隐藏键盘,第二条用内联键盘),但从用户体验的角度来看,这不是最好的解决方案.我可以做几个请求,但希望用户只能看到一条消息.

有什么想法吗?

小智 9

现在不可能.Telegram Bot API目前只允许发送一种类型的键盘:内联或简单(包括KeyboardHide和其他).


May*_*zer 5

我猜你希望按钮在按下后消失:

ReplyKeyboardMarkup MyButton = new ReplyKeyboardMarkup();
MyButton.OneTimeKeyboard = true;
Run Code Online (Sandbox Code Playgroud)

您甚至可以通过添加以下内容来使其响应更快:

MyButton.ResizeKeyboard = true;
Run Code Online (Sandbox Code Playgroud)


Ema*_*oun 5

没有任何合乎逻辑的解决方案。但有一个技巧。您可以发送消息以删除前一个键盘,然后删除此消息,最后使用键盘发送下一条消息。

// 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));
Run Code Online (Sandbox Code Playgroud)