我怎样才能代码Java中的电报机器人键盘的自定义命令集?

问题描述 投票:0回答:1

所以,我看着一个机器人的黑手党团伙对此我的粉丝的这个例子中,他们的自定义键盘让我吃惊:

enter image description here

我发现我必须为了实现它添加这个简单的Java API来电报机器人罐子。我没有添加罐子,但我力知道该怎么去做。我希望创建使用Java自定义键盘。这是源代码:

public class Pizza {
    private static final Logger LOG = Logger.getLogger(Pizza.class.getName());

    public static void main(String... args) throws Exception {
        TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
        telegramBotsApi.registerBot(new TelegramLongPollingBot() {

            @Override
            public void onUpdateReceived(Update update) {
                Message message = update.getMessage();
                Long chatId = message.getChatId();
                String input = message.getText();
                if ("/recommend".equals(input)) {
                    SendMessage request = new SendMessage();
                    request.setChatId(chatId.toString());
                    request.setText("Peperoni");
                    try {
                        sendMessage(request);
                    } catch (TelegramApiException e) {
                        LOG.log(Level.SEVERE, "Could not send message", e);
                    }
                }
            }

            @Override
            public String getBotUsername() {
                return "USERNAME_BOT";
            }

            @Override
            public String getBotToken() {
                return "BOT_TOKEN";
            }
        });
    }
}
java telegram telegram-bot
1个回答
2
投票

有在此https://github.com/rubenlagus/TelegramBotsExample库的使用一些样品。更准确地说,你可以在https://github.com/rubenlagus/TelegramBotsExample/blob/master/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java@weatherbot)检查定制keybaords。

在这个文件中,你可以看到,例如,该设置键盘用以下方法产生:

private static ReplyKeyboardMarkup getSettingsKeyboard(String language) {
    ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
    replyKeyboardMarkup.setSelective(true);
    replyKeyboardMarkup.setResizeKeyboard(true);
    replyKeyboardMarkup.setOneTimeKeyboad(false);

    List<KeyboardRow> keyboard = new ArrayList<>();
    KeyboardRow keyboardFirstRow = new KeyboardRow();
    keyboardFirstRow.add(getLanguagesCommand(language));
    keyboardFirstRow.add(getUnitsCommand(language));
    KeyboardRow keyboardSecondRow = new KeyboardRow();
    keyboardSecondRow.add(getAlertsCommand(language));
    keyboardSecondRow.add(getBackCommand(language));
    keyboard.add(keyboardFirstRow);
    keyboard.add(keyboardSecondRow);
    replyKeyboardMarkup.setKeyboard(keyboard);

    return replyKeyboardMarkup;
}

您可以使用ReplyKeyboardMarkup的SendMessage方法里面一样:

    SendMessage message = new SendMessage();
    message.enableMarkdown(true);
    message.setReplyMarkup(getSettingsKeyboard(language));
    message.setReplyToMessageId(message.getMessageId());
    message.setChatId(message.getChatId().toString());
    message.setText(getSettingsMessage(language));
© www.soinside.com 2019 - 2024. All rights reserved.