Menus - GlaubeKeinemDev/JDA-Utilities GitHub Wiki

This library has implemented two different menus. The PagedMenu you have different sites with text input, perfect solution to make long text shorter. The OrderedMenu where you can add choices and a user can select one choice by reacting with an emote.

NOTE: It is recommended to use the Menu Builder. Call "YourMenu.Builder()" to have access to the builder class e.g. PagedMenu.Builder(). If you didn't enable the menus errors get thrown. Please reed Getting started to figure out how to enable the menus

  • PagedMenu

You can create a PagedMenu by creating a instance of the PagedMenu class. The Builder is called in the example below.

You only need to provide at least 1 item. Thats everything

    final PagedMenu pagedMenu = new PagedMenu.Builder()
            .addUser(member.getUser())
            .setItemsPerPage(5)
            .setColor(Color.RED)
            .setTimeOut(System.currentTimeMillis() + 20000)
            .setText("Test PagedMenu")
            .addItems("Text1", "Text2", "Text3", "Text4", "Text5", "Text6", "Text7", "Text8", "Text9", "Text10",
                    "Text11", "Text12", "Text13", "Text14", "Text15", "Text16")
            .build();

    pagedMenu.sendMessage(textChannel);

Result (sorry for bad quality):

Loading Result...

  • OrderedMenu

You can create a OrderedMenu by creating a instance of the OrderedMenu class. The Builder is called in the example below.

You need to provide at least 1 choice and handle the "action" function which returns a Consumer. Thats everything

    final OrderedMenu.Builder builder = new OrderedMenu.Builder()
            .addUser(member.getUser())
            .addChoices("Choice1", "Choice2", "Choice3")
            .useCancelButton()
            .useNumbers()
            .setText("Select your choice")
            .setColor(Color.RED)
            .setDescription("Hello i am a OrderedMenu")
            .setTimeOut(System.currentTimeMillis() + 20000);

    builder.setAction((orderedMenu, integer) -> {
        textChannel.sendMessage("You selected Choice " + integer).queue();
    });

    builder.build().sendMessage(textChannel);

If you want to remove the menu after one choice by a member then use code like this:

    final OrderedMenu.Builder builder = new OrderedMenu.Builder()
            .addUser(member.getUser())
            .addChoices("Choice1", "Choice2", "Choice3")
            .useCancelButton()
            .useNumbers()
            .setText("Select your choice")
            .setColor(Color.RED)
            .setDescription("Hello i am a OrderedMenu")
            .setTimeOut(System.currentTimeMillis() + 20000);

    builder.setAction((orderedMenu, integer) -> {
        orderedMenu.setCancelled(true);
        orderedMenu.getEffectiveMessage().delete().queue();

        textChannel.sendMessage("You selected Choice " + integer).queue();
    });
    
    builder.build().sendMessage(textChannel);

Result (sorry for bad quality):

  • Example 1:

Loading Result...

  • Example 2:

Loading Result...