JavaRush /Blog Java /Random-MS /Bot Keupayaan Telegram: bot yang boleh menjalankan dialog...
Chundrik
Tahap
Санкт-Петербург

Bot Keupayaan Telegram: bot yang boleh menjalankan dialog: Bahagian 2

Diterbitkan dalam kumpulan
BAHAGIAN 1 Untuk tidak keliru kemudian dalam bahagian program, saya cuba membahagikan semua logik ke dalam kelas yang berasingan. Frasa sebenar yang akan dijawab oleh bot akan disimpan dalam antara muka Constants. Mari buat baris di sana:
String START_DESCRIPTION = "Hello";
Kemudian mari pergi ke kelas TelegramBotdan masukkan kod berikut:
public Ability replyToStart() {
    return Ability
        .builder()
        .name("start")
        .info(Constants.START_DESCRIPTION)
        .locality(ALL)
        .privacy(PUBLIC)
        .action(ctx ->  silent.send("Hello!", ctx.chatId()))
        .build();
}
Bot Keupayaan Telegram: bot yang boleh menjalankan dialog: Bahagian 2 - 1Kini bot boleh menyambut pelanggannya sebagai tindak balas kepada arahan standard /start. Cuba jalankannya: bot sudah hidup sedikit! Tetapi, seperti mana-mana raksasa Frankenstein, dia kehilangan beberapa anggota badan.Bot Keupayaan Telegram: bot yang boleh menjalankan dialog: Bahagian 2 - 2

Menggunakan papan kekunci terbina dalam

Untuk membolehkan bot membina dialog dengan kami, kami memerlukan dua lagi kelas: MessageFactorydan KeyboardFactory. Yang pertama akan membaca jawapan orang dan menjana mesej, dan yang kedua akan membuat butang dengan jawapan.
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>
Sepanjang perjalanan kami akan menambah 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!";
Kini kami boleh memanggil kaedah statik kilang kami untuk menggunakan papan kekunci terbina dalam. Bahagian paling penting dalam kod ialah setCallbackData(). Ia mengenali butang mana yang ditekan oleh pengguna. Mari pergi ke 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();
        }
    }
}
Mari gantikan kod dalam kaedah 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();
    }
Dan satu lagi pindaan dalam kelas yang sama - menggantikan pembina:
private TelegramBot(String botToken, String botUsername) {
        super(botToken, botUsername);
        messageFactory = new MessageFactory(sender);
    }
Cuba mulakan semula bot anda. Ia kini akan menawarkan papan kekunci terbina dalam sebagai tindak balas kepada tindakan anda. Bot Keupayaan Telegram: bot yang boleh menjalankan dialog: Bahagian 2 - 3Penggodaman hayat berguna untuk pemula: Jika anda menggunakan Idea dan ingin melihat dokumentasi untuk kelas, kemudian pilih kelas atau kaedah dan tekan Ctrl+J pada Mac atau Ctrl+Q pada Windows. Anda juga boleh melakukan klik kanan->Pergi ke->Pengisytiharan penggunaan. Oleh itu, sebagai contoh, anda boleh mengetahui bahawa AbilityBot kami sebenarnya mewarisi daripada TelegramLongPollingBot standard. Hanya ia menggunakan lambdas, yang mengurangkan kod dengan ketara. Bahagian seterusnya (akhir) akan membangunkan dialog dan penggunaan pada Heroku.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION