JavaRush /จาวาบล็อก /Random-TH /บอทความสามารถโทรเลข: บอทที่สามารถทำการสนทนาได้: ตอนที่ 2
Chundrik
ระดับ
Санкт-Петербург

บอทความสามารถโทรเลข: บอทที่สามารถทำการสนทนาได้: ตอนที่ 2

เผยแพร่ในกลุ่ม
ตอนที่ 1 เพื่อไม่ให้สับสนในส่วนต่างๆ ของโปรแกรมในภายหลัง ฉันพยายามแบ่งตรรกะทั้งหมดออกเป็นคลาสแยกกัน วลีจริงที่บอทจะตอบสนองจะถูกเก็บไว้ในอินเทอร์เฟConstantsซ มาสร้างบรรทัดกัน:
String START_DESCRIPTION = "Hello";
จากนั้นไปที่ชั้นเรียนTelegramBotแล้วใส่โค้ดต่อไปนี้:
public Ability replyToStart() {
    return Ability
        .builder()
        .name("start")
        .info(Constants.START_DESCRIPTION)
        .locality(ALL)
        .privacy(PUBLIC)
        .action(ctx ->  silent.send("Hello!", ctx.chatId()))
        .build();
}
บอทความสามารถโทรเลข: บอทที่สามารถทำการสนทนาได้: ตอนที่ 2 - 1ตอนนี้บอทสามารถทักทายลูกค้าเพื่อตอบสนองต่อคำสั่งมาตรฐาน/startได้ ลองรันดู: บอทยังมีชีวิตอยู่นิดหน่อยแล้ว! แต่เช่นเดียวกับสัตว์ประหลาดแฟรงเกนสไตน์ เขาสูญเสียแขนขาไปสองสามข้างบอทความสามารถโทรเลข: บอทที่สามารถทำการสนทนาได้: ตอนที่ 2 - 2

การใช้แป้นพิมพ์ในตัว

เพื่อให้บอทสร้างบทสนทนากับเรา เราจำเป็นต้องมีคลาสเพิ่มเติมอีกสองคลาส: MessageFactoryและKeyboardFactory. อันแรกจะอ่านคำตอบของผู้คนและสร้างข้อความ และอันที่สองจะสร้างปุ่มพร้อมคำตอบ
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>
ระหว่างทางเราจะเพิ่ม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!";
ตอนนี้เราสามารถเรียกวิธีการแบบคงที่ของโรงงานของเรามาใช้แป้นพิมพ์ในตัวได้ ส่วนที่สำคัญที่สุดของโค้ดคือsetCallbackData(). รับรู้ได้ว่าผู้ใช้กดปุ่มใด ไปกันเถอะ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();
        }
    }
}
มาแทนที่โค้ดในวิธีการ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();
    }
และอีกหนึ่งการแก้ไขในคลาสเดียวกัน - แทนที่ตัวสร้าง:
private TelegramBot(String botToken, String botUsername) {
        super(botToken, botUsername);
        messageFactory = new MessageFactory(sender);
    }
ลองรีสตาร์ทบอทของคุณ ตอนนี้จะมีคีย์บอร์ดในตัวเพื่อตอบสนองต่อการกระทำของคุณ บอทความสามารถโทรเลข: บอทที่สามารถทำการสนทนาได้: ตอนที่ 2 - 3เคล็ดลับที่เป็นประโยชน์สำหรับผู้เริ่มต้น: หากคุณใช้ Idea และต้องการดูเอกสารสำหรับชั้นเรียน ให้เลือกชั้นเรียนหรือวิธีการ แล้วกด Ctrl+J บน Mac หรือ Ctrl+Q บน Windows คุณยังสามารถคลิกขวา -> ไปที่ -> ประกาศการใช้งาน ตัวอย่างเช่น คุณจะพบว่าความสามารถ Bot ของเราสืบทอดมาจาก TelegramLongPollingBot มาตรฐานจริงๆ มีเพียงการใช้แลมบ์ดาซึ่งลดโค้ดลงอย่างมาก ส่วนถัดไป (สุดท้าย) จะพัฒนาบทสนทนาและการปรับใช้บน Heroku
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION