您需要手动创建分页系统。这是我的方法:
例如创建一个 SlashCommand 并使用包含按钮的 Embed 进行响应,并且这些按钮具有特定的 ID,例如 page_1 或 page_2。该数字会告诉您此按钮切换到的页码。然后,您需要拆分 ButtonClickEvent 中的字符串以获取您要切换到的页码。然后只需运行某种开关盒并使用嵌入的正确页面编辑消息。下面是一些示例代码:
PageCommand.java
public void onSlashCommand(SlashCommandEvent e) {
e.deferReply().queue();
EmbedBuilder msg = new EmbedBuilder();
msg.setTitle("Pagination");
msg.setDescription("Hello World! This is the first page");
msg.setFooter("Page 1/4");
msg.setColor(0x33cc33);
List<Button> buttons = new ArrayList<Button>();
buttons.add(Button.primary("page_1", Emoji.fromUnicode("⏪")));
buttons.add(Button.primary("page_1", Emoji.fromUnicode("◀")));
buttons.add(Button.danger("page_cancel", Emoji.fromUnicode("❌")));
buttons.add(Button.primary("page_2", Emoji.fromUnicode("▶")));
buttons.add(Button.primary("page_4", Emoji.fromUnicode("⏩")));
e.replyEmbeds(msg.build()).addActionRow(buttons).queue();
}
ButtonClickEvent.java
public void onButtonClick(ButtonClickEvent e) {
// Split the ID to 2 Strings
// page_1 = page | 1
String[] args = e.getButton().getId().split("_");
// Check if button is a page button
if (args[0].equalsIgnoreCase("page")) {
// Check if user pressed the cancel button and delete the message
if (args[1].equalsIgnoreCase("cancel")) {
e.getMessage().delete().queue();
return;
}
// Convert Pagenumber String to Integer
int pageNum = Integer.valueOf(args[1]);
EmbedBuilder msg = new EmbedBuilder();
List<Button> buttons = new ArrayList<Button>();
//Check which page number is used
switch (pageNum) {
case 1:
msg.setTitle("Pagination");
msg.setDescription("Hello World! This is the first page");
msg.setFooter("Page 1/4");
msg.setColor(0x33cc33);
buttons.add(Button.primary("page_1", Emoji.fromUnicode("⏪")));
buttons.add(Button.primary("page_1", Emoji.fromUnicode("◀")));
buttons.add(Button.danger("page_cancel", Emoji.fromUnicode("❌")));
buttons.add(Button.primary("page_2", Emoji.fromUnicode("▶")));
buttons.add(Button.primary("page_4", Emoji.fromUnicode("⏩")));
break;
case 2:
msg.setTitle("Pagination");
msg.setDescription("Hello World! This is the second page");
msg.setFooter("Page 2/4");
msg.setColor(0x33cc33);
buttons.add(Button.primary("page_1", Emoji.fromUnicode("⏪")));
buttons.add(Button.primary("page_1", Emoji.fromUnicode("◀")));
buttons.add(Button.danger("page_cancel", Emoji.fromUnicode("❌")));
buttons.add(Button.primary("page_3", Emoji.fromUnicode("▶")));
buttons.add(Button.primary("page_4", Emoji.fromUnicode("⏩")));
break;
case 3:
msg.setTitle("Pagination");
msg.setDescription("Hello World! This is the third page");
msg.setFooter("Page 3/4");
msg.setColor(0x33cc33);
buttons.add(Button.primary("page_1", Emoji.fromUnicode("⏪")));
buttons.add(Button.primary("page_2", Emoji.fromUnicode("◀")));
buttons.add(Button.danger("page_cancel", Emoji.fromUnicode("❌")));
buttons.add(Button.primary("page_4", Emoji.fromUnicode("▶")));
buttons.add(Button.primary("page_4", Emoji.fromUnicode("⏩")));
break;
case 4:
msg.setTitle("Pagination");
msg.setDescription("Hello World! This is the last page");
msg.setFooter("Page 4/4");
msg.setColor(0x33cc33);
buttons.add(Button.primary("page_1", Emoji.fromUnicode("⏪")));
buttons.add(Button.primary("page_3", Emoji.fromUnicode("◀")));
buttons.add(Button.danger("page_cancel", Emoji.fromUnicode("❌")));
buttons.add(Button.primary("page_4", Emoji.fromUnicode("▶")));
buttons.add(Button.primary("page_4", Emoji.fromUnicode("⏩")));
break;
}
// Edit the Message
e.getMessage().editMessageEmbeds(msg.build()).setActionRow(buttons).queue();
}
}
这绝对不是最有效的,它可以通过在 ButtonClickListener 的 switch-case 中使用动态 pagenumber 变量来优化。对于这样的分页系统,这应该只是一个简单的例子。希望对你有帮助:D