Search in sources :

Example 1 with InteractionConstraints

use of com.freya02.botcommands.api.components.InteractionConstraints 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();
}
Also used : Components(com.freya02.botcommands.api.components.Components) InteractionConstraints(com.freya02.botcommands.api.components.InteractionConstraints) ButtonContent(com.freya02.botcommands.api.utils.ButtonContent) Permission(net.dv8tion.jda.api.Permission) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) Paginator(com.freya02.botcommands.api.pagination.paginator.Paginator) TimeUnit(java.util.concurrent.TimeUnit) AppOption(com.freya02.botcommands.api.application.annotations.AppOption) Role(net.dv8tion.jda.api.entities.Role) ApplicationCommand(com.freya02.botcommands.api.application.ApplicationCommand) JDASlashCommand(com.freya02.botcommands.api.application.slash.annotations.JDASlashCommand) GuildSlashEvent(com.freya02.botcommands.api.application.slash.GuildSlashEvent) BContext(com.freya02.botcommands.api.BContext) PaginatorBuilder(com.freya02.botcommands.api.pagination.paginator.PaginatorBuilder) EmojiUtils(com.freya02.botcommands.api.utils.EmojiUtils) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) Paginator(com.freya02.botcommands.api.pagination.paginator.Paginator) PaginatorBuilder(com.freya02.botcommands.api.pagination.paginator.PaginatorBuilder)

Aggregations

BContext (com.freya02.botcommands.api.BContext)1 ApplicationCommand (com.freya02.botcommands.api.application.ApplicationCommand)1 AppOption (com.freya02.botcommands.api.application.annotations.AppOption)1 GuildSlashEvent (com.freya02.botcommands.api.application.slash.GuildSlashEvent)1 JDASlashCommand (com.freya02.botcommands.api.application.slash.annotations.JDASlashCommand)1 Components (com.freya02.botcommands.api.components.Components)1 InteractionConstraints (com.freya02.botcommands.api.components.InteractionConstraints)1 Paginator (com.freya02.botcommands.api.pagination.paginator.Paginator)1 PaginatorBuilder (com.freya02.botcommands.api.pagination.paginator.PaginatorBuilder)1 ButtonContent (com.freya02.botcommands.api.utils.ButtonContent)1 EmojiUtils (com.freya02.botcommands.api.utils.EmojiUtils)1 TimeUnit (java.util.concurrent.TimeUnit)1 EmbedBuilder (net.dv8tion.jda.api.EmbedBuilder)1 Permission (net.dv8tion.jda.api.Permission)1 Role (net.dv8tion.jda.api.entities.Role)1