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 TelegramBot
lan 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();
}
Saiki 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.
Nggunakake keyboard sing dibangun
Supaya bot bisa mbangun dialog karo kita, kita butuh rong kelas liyane:MessageFactory
lan 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. Hacks 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.
GO TO FULL VERSION