From 4c2246cfc3d17bf998a51dd3d85fff3645124c30 Mon Sep 17 00:00:00 2001 From: Austin Keener Date: Sun, 23 Feb 2025 00:19:59 -0500 Subject: [PATCH 001/308] Initial pass on new component system --- src/examples/java/SlashBotExample.java | 12 +- .../net/dv8tion/jda/api/entities/Message.java | 74 ++-- .../jda/api/entities/WebhookClient.java | 44 +- .../channel/middleman/MessageChannel.java | 54 +-- .../entities/messages/MessageSnapshot.java | 10 +- .../EntitySelectInteractionEvent.java | 4 +- .../GenericSelectMenuInteractionEvent.java | 4 +- .../StringSelectInteractionEvent.java | 4 +- ...EntityInteractionPermissionsException.java | 2 +- .../jda/api/interactions/InteractionHook.java | 8 +- .../callbacks/IMessageEditCallback.java | 18 +- .../callbacks/IReplyCallback.java | 20 +- .../components/ActionComponent.java | 12 +- .../interactions/components/ActionRow.java | 325 -------------- .../interactions/components/Component.java | 50 ++- .../components/ComponentIterator.java | 93 ++++ .../components/ComponentPathIterator.java | 128 ++++++ .../components/ComponentUnion.java | 25 ++ .../components/ItemComponent.java | 2 + .../components/LayoutComponent.java | 406 ++++++++---------- .../components/MessageTopLevelComponent.java | 40 ++ .../MessageTopLevelComponentUnion.java | 93 ++++ .../components/UnknownComponent.java | 39 ++ .../components/action_row/ActionRow.java | 244 +++++++++++ .../action_row/ActionRowChildComponent.java | 35 ++ .../ActionRowChildComponentUnion.java | 46 ++ .../components/buttons/Button.java | 15 +- .../components/buttons/ButtonInteraction.java | 23 +- .../components/container/Container.java | 52 +++ .../container/ContainerChildComponent.java | 40 ++ .../ContainerChildComponentUnion.java | 61 +++ .../interactions/components/file/File.java | 10 + .../media_gallery/MediaGallery.java | 29 ++ .../media_gallery/MediaGalleryItem.java | 21 + .../components/section/Section.java | 32 ++ .../section/SectionAccessoryComponent.java | 32 ++ .../SectionAccessoryComponentUnion.java | 41 ++ .../section/SectionContentComponent.java | 30 ++ .../section/SectionContentComponentUnion.java | 23 + .../EntitySelectInteraction.java | 2 +- .../EntitySelectMenu.java | 7 +- .../{selections => selects}/SelectMenu.java | 10 +- .../SelectMenuInteraction.java | 22 +- .../{selections => selects}/SelectOption.java | 2 +- .../StringSelectInteraction.java | 2 +- .../StringSelectMenu.java | 7 +- .../{selections => selects}/package-info.java | 2 +- .../components/separator/Separator.java | 74 ++++ .../components/text_display/TextDisplay.java | 33 ++ .../{text => text_input}/TextInput.java | 7 +- .../{text => text_input}/TextInputStyle.java | 2 +- .../{text => text_input}/package-info.java | 2 +- .../components/thumbnail/Thumbnail.java | 25 ++ .../jda/api/interactions/modals/Modal.java | 84 ++-- .../modals/ModalTopLevelComponent.java | 31 ++ .../modals/ModalTopLevelComponentUnion.java | 66 +++ .../messages/AbstractMessageBuilder.java | 23 +- .../utils/messages/MessageCreateBuilder.java | 23 +- .../api/utils/messages/MessageCreateData.java | 8 +- .../utils/messages/MessageCreateRequest.java | 60 ++- .../jda/api/utils/messages/MessageData.java | 4 +- .../utils/messages/MessageEditBuilder.java | 13 +- .../api/utils/messages/MessageEditData.java | 8 +- .../utils/messages/MessageEditRequest.java | 9 +- .../api/utils/messages/MessageRequest.java | 55 ++- .../entities/AbstractWebhookClient.java | 8 +- .../jda/internal/entities/EntityBuilder.java | 33 +- .../internal/entities/ReceivedMessage.java | 14 +- .../mixin/middleman/MessageChannelMixin.java | 8 +- .../handle/InteractionCreateHandler.java | 6 +- .../component/AbstractComponentImpl.java | 99 +++++ .../component/UnknownComponentImpl.java | 45 ++ .../component/concrete/ActionRowImpl.java | 207 +++++++++ .../component/{ => concrete}/ButtonImpl.java | 6 +- .../{ => concrete}/EntitySelectMenuImpl.java | 5 +- .../{ => concrete}/StringSelectMenuImpl.java | 7 +- .../{ => concrete}/TextInputImpl.java | 10 +- .../ButtonInteractionImpl.java | 2 +- .../ComponentInteractionImpl.java | 3 +- .../EntitySelectInteractionImpl.java | 7 +- .../StringSelectInteractionImpl.java | 7 +- .../{ => middleman}/SelectMenuImpl.java | 8 +- .../SelectMenuInteractionImpl.java | 7 +- .../interactions/modal/ModalImpl.java | 18 +- .../interactions/ReplyCallbackActionImpl.java | 2 + .../jda/internal/utils/ChannelUtil.java | 6 +- .../dv8tion/jda/internal/utils/Checks.java | 42 +- .../message/AbstractMessageBuilderMixin.java | 7 +- .../message/MessageCreateBuilderMixin.java | 4 +- .../jda/test/interactions/ButtonTests.java | 2 +- .../test/interactions/SelectMenuTests.java | 8 +- .../restaction/MessageCreateActionTest.java | 2 +- 92 files changed, 2400 insertions(+), 955 deletions(-) delete mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/ActionRow.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/ComponentIterator.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/ComponentPathIterator.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/ComponentUnion.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/MessageTopLevelComponent.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/MessageTopLevelComponentUnion.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/UnknownComponent.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/action_row/ActionRow.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/action_row/ActionRowChildComponent.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/action_row/ActionRowChildComponentUnion.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/container/Container.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/container/ContainerChildComponent.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/container/ContainerChildComponentUnion.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/file/File.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/media_gallery/MediaGallery.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/media_gallery/MediaGalleryItem.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/section/Section.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/section/SectionAccessoryComponent.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/section/SectionAccessoryComponentUnion.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/section/SectionContentComponent.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/section/SectionContentComponentUnion.java rename src/main/java/net/dv8tion/jda/api/interactions/components/{selections => selects}/EntitySelectInteraction.java (95%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{selections => selects}/EntitySelectMenu.java (98%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{selections => selects}/SelectMenu.java (95%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{selections => selects}/SelectMenuInteraction.java (74%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{selections => selects}/SelectOption.java (99%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{selections => selects}/StringSelectInteraction.java (96%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{selections => selects}/StringSelectMenu.java (98%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{selections => selects}/package-info.java (91%) create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/separator/Separator.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/text_display/TextDisplay.java rename src/main/java/net/dv8tion/jda/api/interactions/components/{text => text_input}/TextInput.java (98%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{text => text_input}/TextInputStyle.java (96%) rename src/main/java/net/dv8tion/jda/api/interactions/components/{text => text_input}/package-info.java (91%) create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/components/thumbnail/Thumbnail.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/modals/ModalTopLevelComponent.java create mode 100644 src/main/java/net/dv8tion/jda/api/interactions/modals/ModalTopLevelComponentUnion.java create mode 100644 src/main/java/net/dv8tion/jda/internal/interactions/component/AbstractComponentImpl.java create mode 100644 src/main/java/net/dv8tion/jda/internal/interactions/component/UnknownComponentImpl.java create mode 100644 src/main/java/net/dv8tion/jda/internal/interactions/component/concrete/ActionRowImpl.java rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => concrete}/ButtonImpl.java (94%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => concrete}/EntitySelectMenuImpl.java (95%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => concrete}/StringSelectMenuImpl.java (90%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => concrete}/TextInputImpl.java (88%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => interaction}/ButtonInteractionImpl.java (95%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => interaction}/ComponentInteractionImpl.java (97%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => interaction}/EntitySelectInteractionImpl.java (85%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => interaction}/StringSelectInteractionImpl.java (83%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => middleman}/SelectMenuImpl.java (86%) rename src/main/java/net/dv8tion/jda/internal/interactions/component/{ => middleman}/SelectMenuInteractionImpl.java (85%) diff --git a/src/examples/java/SlashBotExample.java b/src/examples/java/SlashBotExample.java index aa13fa0055..e43e78050d 100644 --- a/src/examples/java/SlashBotExample.java +++ b/src/examples/java/SlashBotExample.java @@ -30,6 +30,7 @@ import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.build.Commands; import net.dv8tion.jda.api.interactions.commands.build.OptionData; +import net.dv8tion.jda.api.interactions.components.action_row.ActionRow; import net.dv8tion.jda.api.interactions.components.buttons.Button; import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction; @@ -208,9 +209,12 @@ public void prune(SlashCommandInteractionEvent event) : (int) Math.min(200, Math.max(2, amountOption.getAsLong())); // enforcement: must be between 2-200 String userId = event.getUser().getId(); event.reply("This will delete " + amount + " messages.\nAre you sure?") // prompt the user with a button menu - .addActionRow(// this means "