JavaRush /Blog Jawa /Random-JV /Bot Kemampuan Telegram: bot sing bisa nindakake dialog: B...
Chundrik
tingkat
Санкт-Петербург

Bot Kemampuan Telegram: bot sing bisa nindakake dialog: Bagian 2

Diterbitake ing grup
PART 1 Supaya ora bingung mengko ing bagean saka program, aku nyoba kanggo dibagi kabeh logika menyang kelas kapisah. Frasa nyata sing bakal ditanggapi bot bakal disimpen ing antarmuka Constants. Ayo nggawe garis ing kana:
String START_DESCRIPTION = "Hello";
Banjur ayo menyang kelas TelegramBotlan lebokake kode ing ngisor iki:
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 sing bisa nindakake dialog: Bagian 2 - 1Saiki bot bisa menehi salam marang para klien kanggo nanggepi prentah standar /start. Coba jalanake: bot wis rada urip! Nanging, kaya monster Frankenstein, dheweke ilang sawetara anggota awak.Bot Kemampuan Telegram: bot sing bisa nindakake dialog: Bagian 2 - 2

Nggunakake keyboard sing dibangun

Supaya bot bisa mbangun dialog karo kita, kita butuh rong kelas liyane: MessageFactorylan KeyboardFactory. Sing pisanan bakal maca jawaban wong lan ngasilake pesen, lan sing nomer loro bakal nggawe tombol kanthi 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>
Sadawane dalan kita bakal nambah menyang 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!";
Saiki kita mung bisa nelpon cara statis pabrik kita kanggo nggunakake keyboard dibangun ing. Sisih paling penting saka kode yaiku setCallbackData(). Iku ngenali tombol kang dipencet dening pangguna. Ayo menyang 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();
        }
    }
}
Ayo ngganti kode ing metode 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();
    }
Lan siji amandemen liyane ing kelas sing padha - ngganti konstruktor:
private TelegramBot(String botToken, String botUsername) {
        super(botToken, botUsername);
        messageFactory = new MessageFactory(sender);
    }
Coba miwiti maneh bot sampeyan. Saiki bakal menehi keyboard sing dibangun kanggo nanggepi tumindak sampeyan. Bot Kemampuan Telegram: bot sing bisa nindakake dialog: Bagian 2 - 3Hacks urip migunani kanggo wiwitan: Yen sampeyan nggunakake Idea lan pengin ndeleng dokumentasi kanggo kelas, banjur pilih kelas utawa cara lan penet Ctrl + J ing Mac utawa Ctrl + Q ing Windows. Sampeyan uga bisa nindakake klik-tengen-> Go to-> Pranyatan panggunaan. Mangkono, contone, sampeyan bisa ngerteni manawa AbilityBot kita bener-bener entuk warisan saka TelegramLongPollingBot standar. Mung nggunakake lambdas, sing nyuda kode kasebut. Bagian sabanjure (pungkasan) bakal ngembangake dialog lan penyebaran ing Heroku.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION