Java 如何通过单击InlineKeyboardButton打开ReplyKeyboardMarkup?
我需要通过单击Java 如何通过单击InlineKeyboardButton打开ReplyKeyboardMarkup?,java,telegram-bot,Java,Telegram Bot,我需要通过单击InlineKeyboardButton使用打开ReplyKeyboardMarkup 在我的例子中,单击createpost按钮 然后打开这种类型的键盘 因此,我尝试单击InlineKeyboardButton并使用CallbackQuery(处理单击)打开ReplyKeyboardMarkup,如下所示 当我点击我的按钮时,我只看到屏幕上的时钟(但我有CallbackQuery来处理这个按钮): else if(调用_data.equals(“校正后”)){ ReplyK
InlineKeyboardButton
使用打开ReplyKeyboardMarkup
在我的例子中,单击createpost
按钮
然后打开这种类型的键盘
因此,我尝试单击InlineKeyboardButton
并使用CallbackQuery
(处理单击)打开ReplyKeyboardMarkup
,如下所示
当我点击我的按钮时,我只看到屏幕上的时钟(但我有CallbackQuery
来处理这个按钮):
else if(调用_data.equals(“校正后”)){
ReplyKeyboardMarkup keyboardMarkup=新建ReplyKeyboardMarkup();
列表键盘=新建ArrayList();
KeyboardRow=新的KeyboardRow();
第行。添加(“清除”);
添加(“预览”);
键盘。添加(行);
行=新键盘行();
行。添加(“取消”);
第行。添加(“下一行”);
键盘。添加(行);
键盘标记。设置键盘(键盘);
AnswerCallbackQuery a=新的AnswerCallbackQuery()
.setCallbackQueryId(update.getCallbackQuery().getId());
试一试{
执行(a);
}捕获(e){
e、 printStackTrace();
}
}
我需要纠正或补充什么?非常感谢您的帮助。如果我答对了,您希望单击其中一个
InlineKeyboardButton
按钮,然后打开ReplyKeyboardMarkup
。为了做到这一点,您可以使用如下代码:
public class YourClass extends TelegramLongPollingBot {
@Override
public void onUpdateReceived(Update update) {
if (update.hasCallbackQuery()) {
String data = update.getCallbackQuery().getData();
if (data.equals("correcting_post")) {
try {
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
List<KeyboardRow> keyboard = new ArrayList<>();
KeyboardRow row = new KeyboardRow();
row.add("Test button");
keyboard.add(row);
keyboardMarkup.setKeyboard(keyboard);
// Create a message object
SendMessage message = new SendMessage()
.setChatId(update.getCallbackQuery().getMessage().getChatId())
.enableMarkdown(true)
.setText("Message text");
message.setReplyMarkup(keyboardMarkup);
execute(message);
} catch (TelegramApiException e) {
//exception handling
}
}
//Check another options for data
}
}
...
}
public类YourClass扩展了telegramongpollingbot{
@凌驾
收到更新资料时的公共作废(更新){
if(update.hasCallbackQuery()){
字符串数据=update.getCallbackQuery().getData();
if(data.equals(“校正后”)){
试一试{
ReplyKeyboardMarkup keyboardMarkup=新建ReplyKeyboardMarkup();
列表键盘=新建ArrayList();
KeyboardRow=新的KeyboardRow();
行添加(“测试按钮”);
键盘。添加(行);
键盘标记。设置键盘(键盘);
//创建消息对象
SendMessage=新建SendMessage()
.setChatId(更新.getCallbackQuery().getMessage().getChatId())
.enableMarkdown(正确)
.setText(“消息文本”);
message.setReplyMarkup(键盘标记);
执行(消息);
}捕获(e){
//异常处理
}
}
//检查数据的其他选项
}
}
...
}
也许这个库提供了一种更方便的方法,但至少这种代码的和平是有效的
public class YourClass extends TelegramLongPollingBot {
@Override
public void onUpdateReceived(Update update) {
if (update.hasCallbackQuery()) {
String data = update.getCallbackQuery().getData();
if (data.equals("correcting_post")) {
try {
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
List<KeyboardRow> keyboard = new ArrayList<>();
KeyboardRow row = new KeyboardRow();
row.add("Test button");
keyboard.add(row);
keyboardMarkup.setKeyboard(keyboard);
// Create a message object
SendMessage message = new SendMessage()
.setChatId(update.getCallbackQuery().getMessage().getChatId())
.enableMarkdown(true)
.setText("Message text");
message.setReplyMarkup(keyboardMarkup);
execute(message);
} catch (TelegramApiException e) {
//exception handling
}
}
//Check another options for data
}
}
...
}