Interface Modal

All Superinterfaces:
SerializableData

public interface Modal extends SerializableData
Represents a Discord Modal

Replying to an interaction with a modal will open an interactive popout on the User's Discord client. This is similar to the ban modal where you can input a ban reason.

Example


 public void onSlashCommandInteraction(@Nonnull SlashCommandInteractionEvent event)
 {
     if (event.getName().equals("modmail"))
     {
         TextInput subject = TextInput.create("subject", "Subject", TextInputStyle.SHORT)
                 .setPlaceholder("Subject of this ticket")
                 .setMinLength(10)
                 .setMaxLength(100) // or setRequiredRange(10, 100)
                 .build();

         TextInput body = TextInput.create("body", "Body", TextInputStyle.PARAGRAPH)
                 .setPlaceholder("Your concerns go here")
                 .setMinLength(30)
                 .setMaxLength(1000)
                 .build();

         Modal modal = Modal.create("modmail", "Modmail")
                 .addComponents(ActionRow.of(subject), ActionRow.of(body))
                 .build();

         event.replyModal(modal).queue();
     }
 }

Only a maximum of 5 component layouts can be included in a Modal, and only TextInputs are allowed at this time. You can check whether a component is supported via Component.Type.isModalCompatible().

See Also:
  • Field Details

    • MAX_COMPONENTS

      static final int MAX_COMPONENTS
      The maximum amount of components a Modal can have. (5)
      See Also:
    • MAX_ID_LENGTH

      static final int MAX_ID_LENGTH
      The maximum length a modal custom id can have. (100)
      See Also:
    • MAX_TITLE_LENGTH

      static final int MAX_TITLE_LENGTH
      The maximum length a modal title can have. (45)
      See Also:
  • Method Details