JavaRush /Java Blog /Random-TL /Telegram Ability Bot: isang bot na maaaring magsagawa ng ...
Chundrik
Antas
Санкт-Петербург

Telegram Ability Bot: isang bot na maaaring magsagawa ng dialogue: Part 2

Nai-publish sa grupo
BAHAGI 1 Upang hindi malito sa ibang pagkakataon sa mga bahagi ng programa, sinusubukan kong hatiin ang lahat ng lohika sa magkakahiwalay na klase. Ang mga aktwal na parirala kung saan tutugon ang bot ay maiimbak sa interface Constants. Gumawa tayo ng linya doon:
String START_DESCRIPTION = "Hello";
Pagkatapos ay pumunta tayo sa klase TelegramBotat ipasok ang sumusunod na code:
public Ability replyToStart() {
    return Ability
        .builder()
        .name("start")
        .info(Constants.START_DESCRIPTION)
        .locality(ALL)
        .privacy(PUBLIC)
        .action(ctx ->  silent.send("Hello!", ctx.chatId()))
        .build();
}
Telegram Ability Bot: isang bot na maaaring magsagawa ng dialogue: Part 2 - 1Ngayon ay maaari nang batiin ng bot ang mga kliyente nito bilang tugon sa isang karaniwang utos /start. Subukang patakbuhin ito: ang bot ay medyo buhay na! Ngunit, tulad ng anumang halimaw na Frankenstein, nawawala siya ng ilang mga paa.Telegram Ability Bot: isang bot na maaaring magsagawa ng dialogue: Part 2 - 2

Gamit ang built-in na keyboard

Upang makabuo ang bot ng dialogue sa amin, kailangan namin ng dalawa pang klase: MessageFactoryat KeyboardFactory. Ang una ay magbabasa ng mga sagot ng mga tao at bubuo ng mga mensahe, at ang pangalawa ay gagawa ng mga pindutan na may mga sagot.
public class KeyboardFactory {
    public static ReplyKeyboard startButtons() {
        InlineKeyboardMarkup inlineKeyboard = new InlineKeyboardMarkup();
        List<list<inlinekeyboardbutton>> rowsInline = new ArrayList<>();
        List<inlinekeyboardbutton> rowInline = new ArrayList<>();

       rowInline.add(new InlineKeyboardButton().setText("DISCUSSION").setCallbackData(Constants.DISCUSSION));
        rowInline.add(new InlineKeyboardButton().setText("SMALL TALK").setCallbackData(Constants.SMALL_TALK));

        rowsInline.add(rowInline);
        inlineKeyboard.setKeyboard(rowsInline);
        return inlineKeyboard;
    }
}
</inlinekeyboardbutton></list<inlinekeyboardbutton>
Sa daan, idaragdag namin sa Constants:
String START_REPLY = "Start using the telegram bot if you are lonely or bored";
String CHOOSE_OPTION = "Make a choice";
String DISCUSSION = "Let's discuss!";
String SMALL_TALK = "Let's talk!";
Ngayon ay maaari na nating tawagan ang static na pamamaraan ng ating pabrika upang magamit ang built-in na keyboard. Ang pinakamahalagang bahagi ng code ay ang setCallbackData(). Kinikilala nito kung aling button ang pinindot ng user. Pumunta tayo sa MessageFactory:
public class MessageFactory {
    private final MessageSender sender; //используется для отправки сообщений обратно пользователю

    public MessageFactory(MessageSender sender) {
        this.sender = sender;
    }

    public void start (long chatId) {
        try {
            sender.execute(new SendMessage()
                    .setText(Constants.START_REPLY)
                    .setChatId(chatId));

            sender.execute(new SendMessage()
                    .setText(Constants.CHOOSE_OPTION)
                    .setChatId(chatId)
                    .setReplyMarkup(KeyboardFactory.startButtons()));


        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}
Palitan natin ang code sa pamamaraan Telegrambot.replyToStart():
public Ability replyToStart() {
        return Ability
                .builder()
                .name("start")
                .info(Constants.START_DESCRIPTION)
                .locality(ALL)
                .privacy(PUBLIC)
                .action(ctx ->  messageFactory.start(ctx.chatId()))
                .build();
    }
At isa pang susog sa parehong klase - pinapalitan ang constructor:
private TelegramBot(String botToken, String botUsername) {
        super(botToken, botUsername);
        messageFactory = new MessageFactory(sender);
    }
Subukang i-restart ang iyong bot. Mag-aalok na ito ngayon ng built-in na keyboard bilang tugon sa iyong mga aksyon. Telegram Ability Bot: isang bot na maaaring magsagawa ng dialogue: Part 2 - 3Mga kapaki-pakinabang na hack sa buhay para sa mga nagsisimula: Kung gumagamit ka ng Idea at gusto mong makita ang dokumentasyon para sa isang klase, pagkatapos ay piliin ang klase o paraan at pindutin ang Ctrl+J sa Mac o Ctrl+Q sa Windows. Maaari ka ring mag-right click->Go to->Declaration of usages. Kaya, halimbawa, maaari mong malaman na ang aming AbilityBot ay aktwal na nagmamana mula sa karaniwang TelegramLongPollingBot. Gumagamit lamang ito ng mga lambdas, na makabuluhang binabawasan ang code. Ang susunod na (panghuling) bahagi ay bubuo ng diyalogo at pag-deploy sa Heroku.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION