JavaRush /Java Blog /Random-ID /Bot Kemampuan Telegram: bot yang dapat melakukan dialog: ...
Chundrik
Level 35
Санкт-Петербург

Bot Kemampuan Telegram: bot yang dapat melakukan dialog: Bagian 2

Dipublikasikan di grup Random-ID
BAGIAN 1 Agar nantinya tidak bingung pada bagian-bagian program, saya coba membagi semua logika ke dalam kelas-kelas tersendiri. Frasa sebenarnya yang akan ditanggapi oleh bot akan disimpan di antarmuka Constants. Mari buat garis di sana:
String START_DESCRIPTION = "Hello";
Lalu mari masuk ke kelas TelegramBotdan masukkan kode 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 Kemampuan Telegram : bot yang dapat melakukan dialog : Part 2 - 1Sekarang bot dapat menyapa kliennya sebagai respons terhadap perintah standar /start. Coba jalankan: botnya sudah sedikit hidup! Tapi, seperti monster Frankenstein lainnya, dia kehilangan beberapa anggota tubuhnya.Bot Kemampuan Telegram : bot yang dapat melakukan dialog : Part 2 - 2

Menggunakan keyboard bawaan

Agar bot dapat berdialog dengan kita, kita memerlukan dua kelas lagi: MessageFactorydan KeyboardFactory. Yang pertama akan membaca jawaban orang dan menghasilkan pesan, dan yang kedua akan membuat tombol dengan jawaban.
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 jalan kami akan menambahkan 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!";
Sekarang kita cukup memanggil metode statis pabrik kita untuk menggunakan keyboard bawaan. Bagian terpenting dari kode ini adalah setCallbackData(). Ia mengenali tombol 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 kita ganti kode pada method 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 amandemen di kelas yang sama - mengganti konstruktor:
private TelegramBot(String botToken, String botUsername) {
        super(botToken, botUsername);
        messageFactory = new MessageFactory(sender);
    }
Coba mulai ulang bot Anda. Sekarang ia akan menawarkan keyboard bawaan sebagai respons terhadap tindakan Anda. Bot Kemampuan Telegram: bot yang dapat melakukan dialog: Bagian 2 - 3Peretasan berguna untuk pemula: Jika Anda menggunakan Idea dan ingin melihat dokumentasi suatu kelas, pilih kelas atau metode dan tekan Ctrl+J di Mac atau Ctrl+Q di Windows. Anda juga dapat melakukan klik kanan->Go to->Deklarasi penggunaan. Jadi, misalnya, Anda dapat mengetahui bahwa abilityBot kami sebenarnya mewarisi TelegramLongPollingBot standar. Hanya saja ia menggunakan lambda, yang secara signifikan mengurangi kode. Bagian (terakhir) selanjutnya akan mengembangkan dialog dan penerapan di Heroku.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION