use of com.freya02.botcommands.api.pagination.paginator.Paginator in project BotCommands by freya022.
the class PaginatorCommand method run.
@JDASlashCommand(name = "paginator")
public void run(GuildSlashEvent event) {
final List<EmbedBuilder> embedBuilders = new ArrayList<>();
// Let's suppose you generated embeds like in JDA-U, so you'd have a collection of embeds to present
for (int i = 0; i < 5; i++) {
embedBuilders.add(new EmbedBuilder().setTitle("Page #" + (i + 1)));
}
final Paginator paginator = new PaginatorBuilder().setConstraints(InteractionConstraints.ofUsers(event.getUser())).useDeleteButton(false).setMaxPages(5).setPaginatorSupplier((instance, messageBuilder, components, page) -> embedBuilders.get(page).build()).build();
// You must send the paginator as a message
event.reply(paginator.get()).setEphemeral(true).queue();
}
use of com.freya02.botcommands.api.pagination.paginator.Paginator in project BotCommands by freya022.
the class BasicPagination method cleanup.
/**
* Cleans up the button IDs used in this paginator
* <br>This will remove every stored button IDs, even then buttons you included yourself
*
* @param context The {@link BContext} of this bot
*/
public void cleanup(BContext context) {
final ComponentManager manager = Utils.getComponentManager(context);
final int deletedIds = manager.deleteIds(usedIds);
LOGGER.trace("Cleaned up {} component IDs out of {}", deletedIds, usedIds.size());
usedIds.clear();
}
use of com.freya02.botcommands.api.pagination.paginator.Paginator in project BotCommands by freya022.
the class SlashPaginator method replyPaginator.
private void replyPaginator(GuildSlashEvent event, BContext context, InteractionConstraints constraints) {
final PaginatorBuilder builder = new PaginatorBuilder().setConstraints(constraints).useDeleteButton(true).setTimeout(5, TimeUnit.SECONDS, (paginator, message) -> {
paginator.cleanup(context);
// Remove components on timeout
event.getHook().editOriginalComponents().queue();
// Disable all components on timeout, more expensive
// event.getHook()
// .retrieveOriginal()
// .flatMap(m -> m.editMessageComponents(m.getActionRows().stream().map(ActionRow::asDisabled).toList()))
// .queue();
}).setMaxPages(5).setFirstContent(ButtonContent.withString("←")).setPaginatorSupplier((paginator, messageBuilder, components, page) -> {
components.addComponents(1, Components.primaryButton(btnEvt -> {
// Pages starts at 0
paginator.setPage(2);
btnEvt.editMessage(paginator.get()).queue();
}).build(ButtonContent.withEmoji("Go to page 3", EmojiUtils.resolveJDAEmoji("page_facing_up"))));
components.addComponents(1, Components.primaryButton(btnEvt -> {
// Pages starts at 0
paginator.setPage(4);
btnEvt.editMessage(paginator.get()).queue();
}).build(ButtonContent.withEmoji("Go to page 5", EmojiUtils.resolveJDAEmoji("page_facing_up"))));
return new EmbedBuilder().setTitle(// Pages starts at 0
"Page #" + (page + 1)).build();
});
final Paginator paginator = builder.build();
event.reply(paginator.get()).setEphemeral(false).queue();
}
Aggregations