From 37f577538d1bd4cb01f033b54468fb1be0c0a57a Mon Sep 17 00:00:00 2001 From: danthe1st Date: Mon, 25 Aug 2025 19:36:02 +0200 Subject: [PATCH 1/2] update dependencies --- build.gradle.kts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 10b6c78d3..723ddfe16 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,9 +4,9 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.* plugins { java id("com.github.johnrengelman.shadow") version "8.1.1" - id("org.springframework.boot") version "3.5.0" + id("org.springframework.boot") version "3.5.5" id("io.spring.dependency-management") version "1.1.7" - id("org.graalvm.buildtools.native") version "0.10.6" + id("org.graalvm.buildtools.native") version "0.11.0" checkstyle } @@ -27,22 +27,23 @@ repositories { dependencies { testImplementation("org.junit.jupiter:junit-jupiter-api") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") compileOnly("com.google.code.findbugs:jsr305:3.0.2") compileOnly("org.jetbrains:annotations:26.0.2") // DIH4JDA (Command Framework) & JDA implementation("com.github.DynxstyGIT:DIH4JDA:a64b5a9dc5") - implementation("net.dv8tion:JDA:5.5.1") { + implementation("net.dv8tion:JDA:5.6.1") { exclude(module = "opus-java") } // Caffeine (Caching Library) - implementation("com.github.ben-manes.caffeine:caffeine:3.2.0") + implementation("com.github.ben-manes.caffeine:caffeine:3.2.2") implementation("com.google.code.gson:gson:2.13.1") implementation("org.yaml:snakeyaml:2.4") implementation("com.google.re2j:re2j:1.8") - implementation("commons-validator:commons-validator:1.9.0") + implementation("commons-validator:commons-validator:1.10.0") implementation("com.mashape.unirest:unirest-java:1.4.9") @@ -60,7 +61,7 @@ dependencies { testAnnotationProcessor("org.projectlombok:lombok:1.18.38") // Sentry - implementation("io.sentry:sentry:8.13.2") + implementation("io.sentry:sentry:8.20.0") // Spring implementation("org.springframework.boot:spring-boot-starter-web") From cef4187fb98323df7599e34dfd5732c119ee79f2 Mon Sep 17 00:00:00 2001 From: danthe1st Date: Mon, 20 Oct 2025 18:09:31 +0200 Subject: [PATCH 2/2] update to JDA 6.1.0 --- build.gradle.kts | 5 ++- gradle/wrapper/gradle-wrapper.properties | 2 +- .../data/h2db/commands/DbAdminCommand.java | 3 +- .../h2db/commands/QuickMigrateSubcommand.java | 14 +++---- .../data/h2db/message_cache/MessageCache.java | 5 ++- .../javabot/listener/GitHubLinkListener.java | 7 ++-- .../JobChannelCloseOldPostsListener.java | 3 +- .../listener/QOTWSubmissionListener.java | 3 +- .../configuration/SetConfigSubcommand.java | 11 ++--- .../custom_vc/CustomVCButtonHandler.java | 4 +- .../systems/custom_vc/CustomVCListener.java | 3 +- .../commands/CustomVCControlCommand.java | 3 +- .../systems/help/AutoCodeFormatter.java | 6 ++- .../systems/help/HelpForumUpdater.java | 5 ++- .../javabot/systems/help/HelpListener.java | 42 ++++++++++++------- .../javabot/systems/help/HelpManager.java | 8 ++-- .../systems/help/commands/CloseCommand.java | 5 ++- .../systems/help/commands/HelpCommand.java | 3 +- .../help/commands/UnreserveCommand.java | 18 ++++---- .../notify/ClearOldHelpNotificationJob.java | 7 +++- .../commands/notify/HelpPingSubcommand.java | 9 ++-- .../CommandModerationPermissions.java | 4 +- .../moderation/report/ReportCommand.java | 3 +- .../moderation/report/ReportManager.java | 26 ++++++------ .../report/ReportMessageContext.java | 3 +- .../moderation/report/ReportUserContext.java | 3 +- .../moderation/warn/WarnsListCommand.java | 3 +- .../moderation/warn/WarnsListContext.java | 3 +- .../qotw/commands/QOTWAdminCommand.java | 3 +- .../AddQuestionSubcommand.java | 14 +++---- .../qotw/jobs/QOTWCloseSubmissionsJob.java | 10 ++--- .../javabot/systems/qotw/jobs/QOTWJob.java | 4 +- .../SubmissionInteractionManager.java | 2 +- .../qotw/submissions/SubmissionManager.java | 6 +-- .../staff_commands/RedeployCommand.java | 3 +- .../RunScheduledTaskCommand.java | 3 +- .../systems/staff_commands/SayCommand.java | 3 +- .../embeds/AddEmbedFieldSubcommand.java | 16 +++---- .../embeds/CreateEmbedSubcommand.java | 23 +++++----- .../embeds/EditEmbedSubcommand.java | 42 +++++++++---------- .../role_emoji/RoleEmojiCommand.java | 3 +- .../ChangeSelfRoleStatusSubcommand.java | 4 +- .../self_roles/CreateSelfRoleSubcommand.java | 11 +++-- .../self_roles/SelfRoleCommand.java | 3 +- .../SelfRoleInteractionManager.java | 32 +++++++------- .../suggestions/SuggestionCommand.java | 3 +- .../suggestions/SuggestionSubcommand.java | 4 +- .../commands/CreateCustomTagSubcommand.java | 18 ++++---- .../commands/EditCustomTagSubcommand.java | 16 +++---- .../tags/commands/TagsCommand.java | 4 +- .../systems/starboard/StarboardManager.java | 5 ++- .../systems/user_commands/AvatarCommand.java | 3 +- .../systems/user_commands/BotInfoCommand.java | 8 ++-- .../user_commands/ChangeMyMindCommand.java | 3 +- .../user_commands/IdCalculatorCommand.java | 3 +- .../MoveConversationCommand.java | 8 ++-- .../systems/user_commands/PingCommand.java | 3 +- .../systems/user_commands/PollCommand.java | 3 +- .../systems/user_commands/ProfileCommand.java | 3 +- .../systems/user_commands/RegexCommand.java | 3 +- .../user_commands/ServerInfoCommand.java | 8 ++-- .../systems/user_commands/UptimeCommand.java | 3 +- .../FormatAndIndentCodeMessageContext.java | 3 +- .../format_code/FormatCodeCommand.java | 7 ++-- .../format_code/FormatCodeMessageContext.java | 3 +- .../ExperienceLeaderboardSubcommand.java | 4 +- .../leaderboard/LeaderboardCommand.java | 3 +- .../search/SearchWebCommand.java | 3 +- .../search/SearchWebMessageContext.java | 3 +- .../commands/PreferencesCommand.java | 3 +- .../javabot/util/InteractionUtils.java | 21 +++++----- .../javabot/util/MessageActionUtils.java | 18 ++++---- 72 files changed, 316 insertions(+), 243 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 723ddfe16..03289e8c9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,8 +32,9 @@ dependencies { compileOnly("org.jetbrains:annotations:26.0.2") // DIH4JDA (Command Framework) & JDA - implementation("com.github.DynxstyGIT:DIH4JDA:a64b5a9dc5") - implementation("net.dv8tion:JDA:5.6.1") { + implementation("com.github.jasonlessenich:DIH4JDA:1.7.0") + //implementation("xyz.dynxsty:dih4jda:1.7.0") + implementation("net.dv8tion:JDA:6.1.0") { exclude(module = "opus-java") } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 002b867c4..2e1113280 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/net/discordjug/javabot/data/h2db/commands/DbAdminCommand.java b/src/main/java/net/discordjug/javabot/data/h2db/commands/DbAdminCommand.java index 75fbdafe6..9f10f19f2 100644 --- a/src/main/java/net/discordjug/javabot/data/h2db/commands/DbAdminCommand.java +++ b/src/main/java/net/discordjug/javabot/data/h2db/commands/DbAdminCommand.java @@ -4,6 +4,7 @@ import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand; import net.discordjug.javabot.data.config.BotConfig; import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.Commands; import net.dv8tion.jda.api.interactions.commands.build.SubcommandGroupData; @@ -27,7 +28,7 @@ public DbAdminCommand(BotConfig botConfig, ExportSchemaSubcommand exportSchemaSu setRegistrationType(RegistrationType.GUILD); setCommandData(Commands.slash("db-admin", "(ADMIN ONLY) Administrative Commands for managing the bot's database.") .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.MANAGE_SERVER)) - .setGuildOnly(true) + .setContexts(InteractionContextType.GUILD) ); addSubcommands(exportSchemaSubcommand, exportTableSubcommand, migrationsListSubcommand, migrateSubcommand, quickMigrateSubcommand); addSubcommandGroups(SubcommandGroup.of( diff --git a/src/main/java/net/discordjug/javabot/data/h2db/commands/QuickMigrateSubcommand.java b/src/main/java/net/discordjug/javabot/data/h2db/commands/QuickMigrateSubcommand.java index 851766622..c6dd89a2d 100644 --- a/src/main/java/net/discordjug/javabot/data/h2db/commands/QuickMigrateSubcommand.java +++ b/src/main/java/net/discordjug/javabot/data/h2db/commands/QuickMigrateSubcommand.java @@ -1,5 +1,6 @@ package net.discordjug.javabot.data.h2db.commands; +import net.dv8tion.jda.api.modals.Modal; import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand; import xyz.dynxsty.dih4jda.interactions.components.ModalHandler; import net.discordjug.javabot.annotations.AutoDetectableComponentHandler; @@ -7,14 +8,13 @@ import net.discordjug.javabot.util.ExceptionLogger; import net.discordjug.javabot.util.Responses; import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.components.label.Label; +import net.dv8tion.jda.api.components.textinput.TextInput; +import net.dv8tion.jda.api.components.textinput.TextInputStyle; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; -import net.dv8tion.jda.api.interactions.components.ActionRow; -import net.dv8tion.jda.api.interactions.modals.Modal; -import net.dv8tion.jda.api.interactions.components.text.TextInput; -import net.dv8tion.jda.api.interactions.components.text.TextInputStyle; import net.dv8tion.jda.api.interactions.modals.ModalMapping; import org.jetbrains.annotations.NotNull; @@ -105,7 +105,7 @@ public void handleModal(@NotNull ModalInteractionEvent event, List } private @NotNull Modal buildQuickMigrateModal() { - TextInput sqlInput = TextInput.create("sql", "SQL-Statement (H2)", TextInputStyle.PARAGRAPH) + TextInput sqlInput = TextInput.create("sql", TextInputStyle.PARAGRAPH) .setPlaceholder(""" CREATE TABLE my_table ( thread_id BIGINT PRIMARY KEY, @@ -114,12 +114,12 @@ CREATE TABLE my_table ( """) .setRequired(true) .build(); - TextInput confirmInput = TextInput.create("confirmation", "Confirmation", TextInputStyle.SHORT) + TextInput confirmInput = TextInput.create("confirmation", TextInputStyle.SHORT) .setPlaceholder("Type 'CONFIRM' to confirm this action") .setRequired(true) .build(); return Modal.create("quick-migrate", "Quick Migrate") - .addComponents(ActionRow.of(sqlInput), ActionRow.of(confirmInput)) + .addComponents(Label.of("SQL-Statement (H2)", sqlInput), Label.of("Confirmation", confirmInput)) .build(); } } diff --git a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java index 606fec2fb..cb3c1524a 100644 --- a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java +++ b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java @@ -12,10 +12,11 @@ import net.discordjug.javabot.util.TimeUtils; import net.discordjug.javabot.util.UserUtils; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.actionrow.ActionRow; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.entities.*; import net.dv8tion.jda.api.entities.Message.Attachment; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import net.dv8tion.jda.api.requests.restaction.MessageCreateAction; import net.dv8tion.jda.api.utils.FileUpload; @@ -120,7 +121,7 @@ public void sendUpdatedMessageToLog(Message updated, CachedMessage before) { if (updated.getContentRaw().trim().equals(before.getMessageContent()) && updated.getAttachments().size() == before.getAttachments().size()) return; MessageCreateAction action = config.getMessageCacheLogChannel() .sendMessageEmbeds(buildMessageEditEmbed(updated.getGuild(), updated.getAuthor(), updated.getChannel(), before, updated)) - .setActionRow(Button.link(updated.getJumpUrl(), "Jump to Message")); + .addComponents(ActionRow.of(Button.link(updated.getJumpUrl(), "Jump to Message"))); if (before.getMessageContent().length() > MessageEmbed.VALUE_MAX_LENGTH || updated.getContentRaw().length() > MessageEmbed.VALUE_MAX_LENGTH) { action.addFiles(FileUpload.fromData(buildEditedMessageFile(updated.getAuthor(), before, updated), before.getMessageId() + ".txt")); } diff --git a/src/main/java/net/discordjug/javabot/listener/GitHubLinkListener.java b/src/main/java/net/discordjug/javabot/listener/GitHubLinkListener.java index 13d200a16..b90c5b89a 100644 --- a/src/main/java/net/discordjug/javabot/listener/GitHubLinkListener.java +++ b/src/main/java/net/discordjug/javabot/listener/GitHubLinkListener.java @@ -4,9 +4,10 @@ import net.discordjug.javabot.util.ExceptionLogger; import net.discordjug.javabot.util.InteractionUtils; import net.discordjug.javabot.util.StringUtils; +import net.dv8tion.jda.api.components.actionrow.ActionRow; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -37,7 +38,7 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) { if (!content.getFirst().isBlank() && !content.getSecond().isBlank()) { event.getMessage().reply(String.format("```%s\n%s\n```", content.getSecond(), StringUtils.standardSanitizer().compute(content.getFirst()))) .setAllowedMentions(List.of()) - .setActionRow(InteractionUtils.createDeleteButton(event.getAuthor().getIdLong()), Button.link(matcher.group(), "View on GitHub")) + .addComponents(ActionRow.of(InteractionUtils.createDeleteButton(event.getAuthor().getIdLong()), Button.link(matcher.group(), "View on GitHub"))) .queue(); } } @@ -56,7 +57,7 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) { String[] segments = Arrays.copyOfRange(arr, 3, arr.length); // The file name, split by "." String[] file = segments[segments.length - 1].split("\\."); - Integer[] lines = Arrays.stream(file[1].split("L")) + Integer[] lines = Arrays.stream(file[file.length-1].split("L")) .map(line -> line.replace("-", "")) .filter(line -> line.matches("-?\\d+")) // check if the given link is a number .map(Integer::valueOf).sorted().toArray(Integer[]::new); diff --git a/src/main/java/net/discordjug/javabot/listener/JobChannelCloseOldPostsListener.java b/src/main/java/net/discordjug/javabot/listener/JobChannelCloseOldPostsListener.java index d61751653..aec7cadaa 100644 --- a/src/main/java/net/discordjug/javabot/listener/JobChannelCloseOldPostsListener.java +++ b/src/main/java/net/discordjug/javabot/listener/JobChannelCloseOldPostsListener.java @@ -9,6 +9,7 @@ import net.discordjug.javabot.data.config.guild.ModerationConfig; import net.discordjug.javabot.util.InteractionUtils; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.actionrow.ActionRow; import net.dv8tion.jda.api.entities.UserSnowflake; import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; @@ -78,7 +79,7 @@ public void onChannelCreate(ChannelCreateEvent event) { .setDescription("Since only one open post is allowed per user, older posts have been closed") .setColor(Color.YELLOW) .build()) - .addActionRow(InteractionUtils.createDeleteButton(post.getOwnerIdLong())) + .addComponents(ActionRow.of(InteractionUtils.createDeleteButton(post.getOwnerIdLong()))) .queue(); } } diff --git a/src/main/java/net/discordjug/javabot/listener/QOTWSubmissionListener.java b/src/main/java/net/discordjug/javabot/listener/QOTWSubmissionListener.java index 717cf4113..73c2a4791 100644 --- a/src/main/java/net/discordjug/javabot/listener/QOTWSubmissionListener.java +++ b/src/main/java/net/discordjug/javabot/listener/QOTWSubmissionListener.java @@ -4,6 +4,7 @@ import net.discordjug.javabot.data.config.BotConfig; import net.discordjug.javabot.data.config.guild.QOTWConfig; import net.discordjug.javabot.util.InteractionUtils; +import net.dv8tion.jda.api.components.actionrow.ActionRow; import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; @@ -35,7 +36,7 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) { Please keep in mind that messages **over 2000 characters** get split in half due to webhook limitations. If you want to make sure that your submission is properly formatted, split your message into smaller chunks instead.""", event.getAuthor().getAsMention()) - .setActionRow(InteractionUtils.createDeleteButton(event.getAuthor().getIdLong())) + .addComponents(ActionRow.of(InteractionUtils.createDeleteButton(event.getAuthor().getIdLong()))) .queue(); } } diff --git a/src/main/java/net/discordjug/javabot/systems/configuration/SetConfigSubcommand.java b/src/main/java/net/discordjug/javabot/systems/configuration/SetConfigSubcommand.java index 6a903fcc5..8cdab6554 100644 --- a/src/main/java/net/discordjug/javabot/systems/configuration/SetConfigSubcommand.java +++ b/src/main/java/net/discordjug/javabot/systems/configuration/SetConfigSubcommand.java @@ -5,6 +5,9 @@ import net.discordjug.javabot.data.config.GuildConfig; import net.discordjug.javabot.data.config.UnknownPropertyException; import net.discordjug.javabot.util.Responses; +import net.dv8tion.jda.api.components.label.Label; +import net.dv8tion.jda.api.components.textinput.TextInput; +import net.dv8tion.jda.api.components.textinput.TextInputStyle; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; @@ -12,10 +15,8 @@ import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; -import net.dv8tion.jda.api.interactions.components.text.TextInput; -import net.dv8tion.jda.api.interactions.components.text.TextInputStyle; -import net.dv8tion.jda.api.interactions.modals.Modal; import net.dv8tion.jda.api.interactions.modals.ModalMapping; +import net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.restaction.interactions.InteractionCallbackAction; import xyz.dynxsty.dih4jda.interactions.AutoCompletable; import xyz.dynxsty.dih4jda.interactions.components.ModalHandler; @@ -58,9 +59,9 @@ public InteractionCallbackAction handleConfigSubcommand(@Nonnull SlashCommand } return event.replyModal( Modal.create(ComponentIdBuilder.build("config-set", property), "Change configuration value") - .addActionRow(TextInput.create("value", "new value", TextInputStyle.PARAGRAPH) + .addComponents(Label.of("new value", TextInput.create("value", TextInputStyle.PARAGRAPH) .setValue(String.valueOf(resolved)) - .build()) + .build())) .build()); } String valueString = valueOption.getAsString().trim(); diff --git a/src/main/java/net/discordjug/javabot/systems/custom_vc/CustomVCButtonHandler.java b/src/main/java/net/discordjug/javabot/systems/custom_vc/CustomVCButtonHandler.java index 541d9136c..4bd960b54 100644 --- a/src/main/java/net/discordjug/javabot/systems/custom_vc/CustomVCButtonHandler.java +++ b/src/main/java/net/discordjug/javabot/systems/custom_vc/CustomVCButtonHandler.java @@ -6,8 +6,8 @@ import net.discordjug.javabot.annotations.AutoDetectableComponentHandler; import net.discordjug.javabot.util.Responses; import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import net.dv8tion.jda.api.requests.restaction.PermissionOverrideAction; import xyz.dynxsty.dih4jda.interactions.components.ButtonHandler; import xyz.dynxsty.dih4jda.util.ComponentIdBuilder; @@ -40,7 +40,7 @@ public void handleButton(ButtonInteractionEvent event, Button button) { Responses.error(event, "Only the VC owner can use this.").queue(); return; } - String[] id = ComponentIdBuilder.split(button.getId()); + String[] id = ComponentIdBuilder.split(button.getCustomId()); switch (id[1]) { case MAKE_PRIVATE_ID -> changeVisibility(event, createMakePublicButton(), "This voice channel is now private.", PermissionOverrideAction::setDenied); diff --git a/src/main/java/net/discordjug/javabot/systems/custom_vc/CustomVCListener.java b/src/main/java/net/discordjug/javabot/systems/custom_vc/CustomVCListener.java index 8ecd66edb..0ae954dcf 100644 --- a/src/main/java/net/discordjug/javabot/systems/custom_vc/CustomVCListener.java +++ b/src/main/java/net/discordjug/javabot/systems/custom_vc/CustomVCListener.java @@ -7,6 +7,7 @@ import net.discordjug.javabot.util.ExceptionLogger; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.components.actionrow.ActionRow; import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel; import net.dv8tion.jda.api.entities.channel.middleman.StandardGuildChannel; import net.dv8tion.jda.api.entities.channel.unions.AudioChannelUnion; @@ -62,7 +63,7 @@ private void createCustomVC(GuildVoiceUpdateEvent event, AudioChannelUnion vcJoi """) .build()) .addContent(event.getMember().getAsMention()) - .addActionRow(buttonHandler.createMakePrivateButton()) + .addComponents(ActionRow.of(buttonHandler.createMakePrivateButton())) .queue(); }); } diff --git a/src/main/java/net/discordjug/javabot/systems/custom_vc/commands/CustomVCControlCommand.java b/src/main/java/net/discordjug/javabot/systems/custom_vc/commands/CustomVCControlCommand.java index aac9ffecf..c3b03b288 100644 --- a/src/main/java/net/discordjug/javabot/systems/custom_vc/commands/CustomVCControlCommand.java +++ b/src/main/java/net/discordjug/javabot/systems/custom_vc/commands/CustomVCControlCommand.java @@ -1,5 +1,6 @@ package net.discordjug.javabot.systems.custom_vc.commands; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.build.Commands; import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand; @@ -14,7 +15,7 @@ public class CustomVCControlCommand extends SlashCommand { */ public CustomVCControlCommand(CustomVCAddMemberSubcommand addMemberSubcommand, CustomVCRemoveMemberSubcommand removeMemberSubcommand) { setCommandData(Commands.slash("vc-control", "Manages custom voice channels") - .setGuildOnly(true) + .setContexts(InteractionContextType.GUILD) ); addSubcommands(addMemberSubcommand, removeMemberSubcommand); } diff --git a/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java b/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java index 64b483ffd..3b2ab37d6 100644 --- a/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java +++ b/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java @@ -9,6 +9,7 @@ import net.discordjug.javabot.util.InteractionUtils; import net.discordjug.javabot.util.WebhookUtil; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.actionrow.ActionRow; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; @@ -19,6 +20,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Nonnull; + import java.util.Objects; /** @@ -126,9 +128,9 @@ void handleMessageEvent(@Nonnull MessageReceivedEvent event, boolean isFirstMess private void sendFormatHint(MessageReceivedEvent event) { event.getMessage() .replyEmbeds(formatHintEmbed(event.getGuild())) - .addActionRow( + .addComponents(ActionRow.of( InteractionUtils.createDeleteButton(event.getAuthor().getIdLong()) - ).queue(); + )).queue(); } diff --git a/src/main/java/net/discordjug/javabot/systems/help/HelpForumUpdater.java b/src/main/java/net/discordjug/javabot/systems/help/HelpForumUpdater.java index eef9d7ef2..fe83c77c2 100644 --- a/src/main/java/net/discordjug/javabot/systems/help/HelpForumUpdater.java +++ b/src/main/java/net/discordjug/javabot/systems/help/HelpForumUpdater.java @@ -8,6 +8,7 @@ import net.discordjug.javabot.systems.user_preferences.model.Preference; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; @@ -104,7 +105,7 @@ private MessageEmbed createDMDormantInfo(ThreadChannel post, HelpConfig config) } private boolean isThanksMessage(@NotNull Message m) { - return m.getAuthor().isBot() && !m.getButtons().isEmpty() && - m.getButtons().stream().allMatch(b -> b.getId() != null && b.getId().contains(HelpManager.HELP_THANKS_IDENTIFIER)); + return m.getAuthor().isBot() && !m.getComponents().isEmpty() && + m.getComponents().stream().allMatch(c -> c instanceof Button b && b.getCustomId() != null && b.getCustomId().contains(HelpManager.HELP_THANKS_IDENTIFIER)); } } diff --git a/src/main/java/net/discordjug/javabot/systems/help/HelpListener.java b/src/main/java/net/discordjug/javabot/systems/help/HelpListener.java index 638e0a2cc..889d820a4 100644 --- a/src/main/java/net/discordjug/javabot/systems/help/HelpListener.java +++ b/src/main/java/net/discordjug/javabot/systems/help/HelpListener.java @@ -11,6 +11,8 @@ import net.discordjug.javabot.util.InteractionUtils; import net.discordjug.javabot.util.Responses; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.actionrow.ActionRow; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.UserSnowflake; import net.dv8tion.jda.api.entities.channel.Channel; @@ -22,14 +24,13 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback; -import net.dv8tion.jda.api.interactions.components.ActionRow; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import org.jetbrains.annotations.NotNull; import xyz.dynxsty.dih4jda.interactions.components.ButtonHandler; import xyz.dynxsty.dih4jda.util.ComponentIdBuilder; import java.util.*; +import java.util.stream.Stream; /** * Listens for all events related to the forum help channel system. @@ -161,10 +162,10 @@ private void replyCloseSuggestionIfPatternMatches(Message msg) { If you are not, please ignore this message. Note that you will not be able to send further messages here after this post have been closed but you will be able to create new posts. """) - .addActionRow( + .addComponents(ActionRow.of( createCloseSuggestionButton(msg.getChannel().asThreadChannel()), InteractionUtils.createDeleteButton(msg.getAuthor().getIdLong()) - ).queue(); + )).queue(); recentlyCloseSuggestedPosts.put( postId, System.currentTimeMillis() + SUGGEST_CLOSE_TIMEOUT @@ -256,16 +257,16 @@ private void handleHelpThanksInteraction(@NotNull ButtonInteractionEvent event, case "done" -> handleThanksCloseButton(event, manager, post, ""); case "cancel" -> event.deferEdit().flatMap(h -> event.getMessage().delete()).queue(); default -> { - List