From 2c1088ef2e8e7979d45aa32db629f31d5f235ef4 Mon Sep 17 00:00:00 2001 From: akastijn Date: Sat, 8 Nov 2025 19:35:28 +0100 Subject: [PATCH] Update from v5 -> v6 for JDA --- build.gradle.kts | 2 +- src/main/java/com/alttd/AltitudeBot.java | 2 +- .../alttd/buttonManager/ButtonManager.java | 8 +- .../alttd/buttonManager/DiscordButton.java | 2 +- .../buttons/autoReminder/ButtonAccepted.java | 5 +- .../autoReminder/ButtonInProgress.java | 2 +- .../buttons/autoReminder/ButtonRejected.java | 3 +- .../buttons/eventButton/EventButton.java | 2 +- .../buttons/pollButton/PollButton.java | 2 +- .../remindMeConfirm/ButtonRemindMeCancel.java | 5 +- .../ButtonRemindMeConfirm.java | 2 +- .../ButtonSuggestionReviewAccept.java | 2 +- .../ButtonSuggestionReviewDeny.java | 2 +- .../commands/AddCommand/CommandManage.java | 5 +- .../commands/CommandAuction.java | 9 +- .../commands/CommandDataSuggestions.java | 4 +- .../commands/CommandEvidence.java | 5 +- .../commandManager/commands/CommandFlag.java | 3 +- .../commandManager/commands/CommandHelp.java | 3 +- .../commands/CommandHistory.java | 5 +- .../commands/CommandRemindMe.java | 5 +- .../commands/CommandSetOutputChannel.java | 3 +- .../commands/CommandSoftLock.java | 3 +- .../commands/CommandStaffJoinDate.java | 3 +- .../commands/CommandSuggestCrateItem.java | 5 +- .../commands/CommandSuggestion.java | 7 +- .../commands/CommandUpdateCommands.java | 3 +- .../commands/PollCommand/CommandPoll.java | 4 +- .../PollCommand/SubCommandAddButton.java | 17 ++-- .../contextMenus/ContextMenuCreateEvent.java | 5 +- .../ContextMenuForwardToKanboard.java | 3 +- .../ContextMenuRespondSuggestion.java | 5 +- .../queries/QueriesAuctions/Auction.java | 5 +- .../com/alttd/listeners/AppealRepost.java | 13 +-- .../com/alttd/modalManager/DiscordModal.java | 2 +- .../com/alttd/modalManager/ModalManager.java | 6 +- .../modalManager/modals/ModalCrateItem.java | 27 +++--- .../modalManager/modals/ModalCreateEvent.java | 25 ++++-- .../modalManager/modals/ModalEvidence.java | 23 ++--- .../modalManager/modals/ModalRemindMe.java | 23 ++--- .../modals/ModalReplySuggestion.java | 11 +-- .../modalManager/modals/ModalSuggestion.java | 20 +++-- src/main/java/com/alttd/request/Request.java | 44 +++++----- .../com/alttd/request/RequestManager.java | 83 +++++++++++++++---- .../selectMenuManager/DiscordSelectMenu.java | 5 +- .../selectMenuManager/SelectMenuManager.java | 3 +- .../selectMenus/SelectMenuAuction.java | 19 +++-- 47 files changed, 263 insertions(+), 182 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index bbc395c..ee0085d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -60,7 +60,7 @@ tasks { dependencies { // JDA - implementation("net.dv8tion:JDA:5.6.1") { + implementation("net.dv8tion:JDA:6.1.1") { exclude("opus-java") // exclude audio } // MySQL diff --git a/src/main/java/com/alttd/AltitudeBot.java b/src/main/java/com/alttd/AltitudeBot.java index b46811e..ea14eb8 100644 --- a/src/main/java/com/alttd/AltitudeBot.java +++ b/src/main/java/com/alttd/AltitudeBot.java @@ -51,7 +51,7 @@ public class AltitudeBot { jda = JDABuilder.createDefault(SettingsConfig.TOKEN, GatewayIntent.GUILD_MEMBERS, GatewayIntent.GUILD_MODERATION, - GatewayIntent.GUILD_EMOJIS_AND_STICKERS, + GatewayIntent.GUILD_EXPRESSIONS, GatewayIntent.GUILD_WEBHOOKS, GatewayIntent.GUILD_PRESENCES, GatewayIntent.GUILD_MESSAGES, diff --git a/src/main/java/com/alttd/buttonManager/ButtonManager.java b/src/main/java/com/alttd/buttonManager/ButtonManager.java index caf555e..d8896fd 100644 --- a/src/main/java/com/alttd/buttonManager/ButtonManager.java +++ b/src/main/java/com/alttd/buttonManager/ButtonManager.java @@ -8,9 +8,9 @@ import com.alttd.buttonManager.buttons.remindMeConfirm.ButtonRemindMeCancel; import com.alttd.buttonManager.buttons.remindMeConfirm.ButtonRemindMeConfirm; import com.alttd.buttonManager.buttons.suggestionReview.ButtonSuggestionReviewAccept; import com.alttd.buttonManager.buttons.suggestionReview.ButtonSuggestionReviewDeny; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -44,7 +44,7 @@ public class ButtonManager extends ListenerAdapter { @Override public void onButtonInteraction(@NotNull ButtonInteractionEvent event) { - String buttonId = event.getButton().getId(); + String buttonId = event.getButton().getCustomId(); Optional first = buttons.stream() .filter(discordModal -> discordModal.getButtonId().equalsIgnoreCase(buttonId)) .findFirst(); @@ -65,9 +65,7 @@ public class ButtonManager extends ListenerAdapter { Optional first = buttons.stream() .filter(discordButton -> discordButton.getButtonId().equalsIgnoreCase(buttonId)) .findFirst(); - if (first.isEmpty()) - return null; - return first.get().getButton(); + return first.map(DiscordButton::getButton).orElse(null); } } diff --git a/src/main/java/com/alttd/buttonManager/DiscordButton.java b/src/main/java/com/alttd/buttonManager/DiscordButton.java index 3c4a8eb..0db3a5d 100644 --- a/src/main/java/com/alttd/buttonManager/DiscordButton.java +++ b/src/main/java/com/alttd/buttonManager/DiscordButton.java @@ -1,7 +1,7 @@ package com.alttd.buttonManager; +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; public abstract class DiscordButton { diff --git a/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonAccepted.java b/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonAccepted.java index a3e8e76..34aede1 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonAccepted.java +++ b/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonAccepted.java @@ -5,16 +5,15 @@ import com.alttd.schedulers.ReminderScheduler; import com.alttd.util.Logger; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import java.awt.*; import java.util.Collections; -import java.util.Objects; public class ButtonAccepted extends DiscordButton { @Override @@ -28,7 +27,7 @@ public class ButtonAccepted extends DiscordButton { if (!ButtonReminderUtil.shouldExecute(message, event)) return; Logger.altitudeLogs.debug("Accepting reminder"); - MessageEmbed embed = message.getEmbeds().get(0); + MessageEmbed embed = message.getEmbeds().getFirst(); EmbedBuilder embedBuilder = new EmbedBuilder(embed).setColor(Color.GREEN); ReminderScheduler.getInstance(event.getJDA()).removeReminder(message.getIdLong()); message.editMessageEmbeds(embedBuilder.build()).queue(); diff --git a/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonInProgress.java b/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonInProgress.java index 6e84cc8..2ebc09c 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonInProgress.java +++ b/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonInProgress.java @@ -4,10 +4,10 @@ import com.alttd.buttonManager.DiscordButton; import com.alttd.util.Logger; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import java.awt.*; diff --git a/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonRejected.java b/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonRejected.java index fdde37f..d4ef858 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonRejected.java +++ b/src/main/java/com/alttd/buttonManager/buttons/autoReminder/ButtonRejected.java @@ -5,16 +5,15 @@ import com.alttd.schedulers.ReminderScheduler; import com.alttd.util.Logger; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import java.awt.*; import java.util.Collections; -import java.util.Objects; public class ButtonRejected extends DiscordButton { @Override diff --git a/src/main/java/com/alttd/buttonManager/buttons/eventButton/EventButton.java b/src/main/java/com/alttd/buttonManager/buttons/eventButton/EventButton.java index 981102f..212cd6d 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/eventButton/EventButton.java +++ b/src/main/java/com/alttd/buttonManager/buttons/eventButton/EventButton.java @@ -6,9 +6,9 @@ import com.alttd.database.queries.events.Event; import com.alttd.util.Logger; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.entities.*; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import java.time.Instant; import java.util.List; diff --git a/src/main/java/com/alttd/buttonManager/buttons/pollButton/PollButton.java b/src/main/java/com/alttd/buttonManager/buttons/pollButton/PollButton.java index 8eefe33..18612a5 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/pollButton/PollButton.java +++ b/src/main/java/com/alttd/buttonManager/buttons/pollButton/PollButton.java @@ -4,8 +4,8 @@ import com.alttd.buttonManager.DiscordButton; import com.alttd.database.queries.Poll.Poll; import com.alttd.database.queries.Poll.PollButtonClicksQueries; import com.alttd.util.Util; +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 java.util.HashSet; diff --git a/src/main/java/com/alttd/buttonManager/buttons/remindMeConfirm/ButtonRemindMeCancel.java b/src/main/java/com/alttd/buttonManager/buttons/remindMeConfirm/ButtonRemindMeCancel.java index 65351e2..4cf5bc8 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/remindMeConfirm/ButtonRemindMeCancel.java +++ b/src/main/java/com/alttd/buttonManager/buttons/remindMeConfirm/ButtonRemindMeCancel.java @@ -1,13 +1,10 @@ package com.alttd.buttonManager.buttons.remindMeConfirm; import com.alttd.buttonManager.DiscordButton; -import com.alttd.database.queries.QueriesReminders.Reminder; import com.alttd.util.Util; +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 java.util.Arrays; -import java.util.Collections; import java.util.List; public class ButtonRemindMeCancel extends DiscordButton { diff --git a/src/main/java/com/alttd/buttonManager/buttons/remindMeConfirm/ButtonRemindMeConfirm.java b/src/main/java/com/alttd/buttonManager/buttons/remindMeConfirm/ButtonRemindMeConfirm.java index 6dfb438..8ee837d 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/remindMeConfirm/ButtonRemindMeConfirm.java +++ b/src/main/java/com/alttd/buttonManager/buttons/remindMeConfirm/ButtonRemindMeConfirm.java @@ -5,9 +5,9 @@ import com.alttd.database.queries.QueriesReminders.QueriesReminders; import com.alttd.database.queries.QueriesReminders.Reminder; import com.alttd.schedulers.ReminderScheduler; import com.alttd.util.Util; +import net.dv8tion.jda.api.components.buttons.Button; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; import net.dv8tion.jda.api.interactions.InteractionHook; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import java.util.HashMap; import java.util.List; diff --git a/src/main/java/com/alttd/buttonManager/buttons/suggestionReview/ButtonSuggestionReviewAccept.java b/src/main/java/com/alttd/buttonManager/buttons/suggestionReview/ButtonSuggestionReviewAccept.java index b6e0cf5..11f6c6a 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/suggestionReview/ButtonSuggestionReviewAccept.java +++ b/src/main/java/com/alttd/buttonManager/buttons/suggestionReview/ButtonSuggestionReviewAccept.java @@ -6,6 +6,7 @@ import com.alttd.database.queries.commandOutputChannels.OutputType; import com.alttd.util.Logger; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +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; @@ -16,7 +17,6 @@ import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.entities.emoji.EmojiUnion; 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; import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder; import net.dv8tion.jda.api.utils.messages.MessageCreateData; diff --git a/src/main/java/com/alttd/buttonManager/buttons/suggestionReview/ButtonSuggestionReviewDeny.java b/src/main/java/com/alttd/buttonManager/buttons/suggestionReview/ButtonSuggestionReviewDeny.java index 74dd9d9..840f6c2 100644 --- a/src/main/java/com/alttd/buttonManager/buttons/suggestionReview/ButtonSuggestionReviewDeny.java +++ b/src/main/java/com/alttd/buttonManager/buttons/suggestionReview/ButtonSuggestionReviewDeny.java @@ -5,13 +5,13 @@ import com.alttd.database.queries.commandOutputChannels.CommandOutputChannels; import com.alttd.database.queries.commandOutputChannels.OutputType; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +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; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; 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; import java.awt.*; diff --git a/src/main/java/com/alttd/commandManager/commands/AddCommand/CommandManage.java b/src/main/java/com/alttd/commandManager/commands/AddCommand/CommandManage.java index fa1b0f7..0d7f152 100644 --- a/src/main/java/com/alttd/commandManager/commands/AddCommand/CommandManage.java +++ b/src/main/java/com/alttd/commandManager/commands/AddCommand/CommandManage.java @@ -11,6 +11,7 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.CommandData; @@ -31,9 +32,9 @@ public class CommandManage extends DiscordCommand { .addOption(OptionType.STRING, "command", "Name of the command to enable", true, true), new SubcommandData("disable", "Disable a command") .addOption(OptionType.STRING, "command", "Name of the command to disable", true, true) - ) + ) .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerSubOptions(subOptionsMap, new SubCommandEnable(commandManager, contextMenuManager, null, this), new SubCommandDisable(commandManager, null, this) diff --git a/src/main/java/com/alttd/commandManager/commands/CommandAuction.java b/src/main/java/com/alttd/commandManager/commands/CommandAuction.java index db2cb73..f3dd723 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandAuction.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandAuction.java @@ -10,8 +10,11 @@ import com.alttd.schedulers.AuctionScheduler; import com.alttd.selectMenuManager.SelectMenuManager; import com.alttd.util.Logger; import com.alttd.util.Util; +import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.components.actionrow.ActionRow; +import net.dv8tion.jda.api.components.selections.SelectMenu; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; @@ -25,7 +28,6 @@ import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; -import net.dv8tion.jda.api.interactions.components.selections.SelectMenu; import net.dv8tion.jda.api.requests.RestAction; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction; import net.dv8tion.jda.api.utils.AttachedFile; @@ -36,6 +38,7 @@ import java.time.Instant; import java.util.UUID; import java.util.concurrent.TimeUnit; +@Slf4j public class CommandAuction extends DiscordCommand { private final CommandData commandData; @@ -127,7 +130,7 @@ public class CommandAuction extends DiscordCommand { return; } - message.editMessageComponents().setActionRow(selectMenu).queue(); + message.editMessageComponents(ActionRow.of(selectMenu)).queue(); AuctionScheduler auctionScheduler = AuctionScheduler.getInstance(); if (auctionScheduler == null) { @@ -149,7 +152,7 @@ public class CommandAuction extends DiscordCommand { file.delete(); })) .exceptionally(e -> { - e.printStackTrace(); + log.error("Failed to add screenshot to auction message", e); return null; }); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandDataSuggestions.java b/src/main/java/com/alttd/commandManager/commands/CommandDataSuggestions.java index 3de2d9c..f7645b4 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandDataSuggestions.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandDataSuggestions.java @@ -7,7 +7,6 @@ import com.alttd.util.Util; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Guild; -import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageReaction; import net.dv8tion.jda.api.entities.channel.concrete.ForumChannel; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; @@ -15,6 +14,7 @@ import net.dv8tion.jda.api.entities.channel.forums.ForumTag; import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.InteractionHook; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.CommandData; @@ -35,7 +35,7 @@ public class CommandDataSuggestions extends DiscordCommand { this.commandManager = commandManager; this.commandData = Commands.slash(getName(), "Get data about suggestions from the forum channel") .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandEvidence.java b/src/main/java/com/alttd/commandManager/commands/CommandEvidence.java index 8b6007b..ea27cf0 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandEvidence.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandEvidence.java @@ -8,10 +8,11 @@ import com.alttd.util.Util; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; -import net.dv8tion.jda.api.interactions.modals.Modal; +import net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; import java.util.Collections; @@ -26,7 +27,7 @@ public class CommandEvidence extends DiscordCommand { commandData = Commands.slash(getName(), "Open suggestion form.") .setDefaultPermissions(DefaultMemberPermissions.DISABLED) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandFlag.java b/src/main/java/com/alttd/commandManager/commands/CommandFlag.java index 034e995..1b79bd1 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandFlag.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandFlag.java @@ -10,6 +10,7 @@ import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; @@ -32,7 +33,7 @@ public class CommandFlag extends DiscordCommand { this.commandData = Commands.slash(getName(), "Show flags for a user") .addOption(OptionType.STRING, "user", "The user to show flags for", true) .setDefaultPermissions(DefaultMemberPermissions.ENABLED) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandHelp.java b/src/main/java/com/alttd/commandManager/commands/CommandHelp.java index 0e2c7ad..0ab913f 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandHelp.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandHelp.java @@ -11,6 +11,7 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.interactions.AutoCompleteQuery; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; @@ -33,7 +34,7 @@ public class CommandHelp extends DiscordCommand { commandData = Commands.slash(getName(), "Show info about all commands or a specific command.") .addOption(OptionType.STRING, "command", "Command to get more info about", true , true) .setDefaultPermissions(DefaultMemberPermissions.ENABLED) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandHistory.java b/src/main/java/com/alttd/commandManager/commands/CommandHistory.java index 7dcf957..e114932 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandHistory.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandHistory.java @@ -12,6 +12,7 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; @@ -20,8 +21,8 @@ import net.dv8tion.jda.api.interactions.commands.build.Commands; import net.dv8tion.jda.api.requests.RestAction; import java.awt.*; -import java.util.List; import java.util.*; +import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -34,7 +35,7 @@ public class CommandHistory extends DiscordCommand { .addOption(OptionType.STRING, "user", "The user to show history for", true) .addOption(OptionType.STRING, "type", "The type of punishment to show", false, true) .setDefaultPermissions(DefaultMemberPermissions.ENABLED) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandRemindMe.java b/src/main/java/com/alttd/commandManager/commands/CommandRemindMe.java index b3e9027..de83fb6 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandRemindMe.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandRemindMe.java @@ -11,12 +11,13 @@ import net.dv8tion.jda.api.entities.channel.unions.GuildChannelUnion; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.interactions.AutoCompleteQuery; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; -import net.dv8tion.jda.api.interactions.modals.Modal; +import net.dv8tion.jda.api.modals.Modal; import java.util.Calendar; import java.util.Collections; @@ -35,7 +36,7 @@ public class CommandRemindMe extends DiscordCommand { .addOption(OptionType.CHANNEL, "channel", "The channel to send the reminder in", true) .addOption(OptionType.STRING, "fromnow", "How long from now the reminder should send", true, true) .setDefaultPermissions(DefaultMemberPermissions.ENABLED) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandSetOutputChannel.java b/src/main/java/com/alttd/commandManager/commands/CommandSetOutputChannel.java index 408869b..d845e67 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandSetOutputChannel.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandSetOutputChannel.java @@ -13,6 +13,7 @@ import net.dv8tion.jda.api.entities.channel.unions.GuildChannelUnion; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.interactions.AutoCompleteQuery; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; @@ -34,7 +35,7 @@ public class CommandSetOutputChannel extends DiscordCommand { .addOption(OptionType.STRING, "type", "The type of output channel", true, true) .addOption(OptionType.CHANNEL, "channel", "The channel the specified output should go into", true) .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandSoftLock.java b/src/main/java/com/alttd/commandManager/commands/CommandSoftLock.java index 2b36c1b..65cb5a2 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandSoftLock.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandSoftLock.java @@ -10,6 +10,7 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.channel.unions.GuildChannelUnion; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; @@ -31,7 +32,7 @@ public class CommandSoftLock extends DiscordCommand { .addOption(OptionType.STRING, "state", "Set the soft lock \"on\" or \"off\"", true, true) .addOption(OptionType.CHANNEL, "channel", "Channel to change soft lock state for", true) .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandStaffJoinDate.java b/src/main/java/com/alttd/commandManager/commands/CommandStaffJoinDate.java index 68f0983..1fe90f6 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandStaffJoinDate.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandStaffJoinDate.java @@ -12,6 +12,7 @@ import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.InteractionHook; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionMapping; @@ -33,7 +34,7 @@ public class CommandStaffJoinDate extends DiscordCommand { .addOption(OptionType.MENTIONABLE, "staff", "The staff member to set/check the join date for", false, false) .addOption(OptionType.INTEGER, "join-time", "The join date to set", false, false) .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandSuggestCrateItem.java b/src/main/java/com/alttd/commandManager/commands/CommandSuggestCrateItem.java index 5ac3677..723e1b3 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandSuggestCrateItem.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandSuggestCrateItem.java @@ -7,10 +7,11 @@ import com.alttd.util.Util; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; -import net.dv8tion.jda.api.interactions.modals.Modal; +import net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; import java.util.Collections; @@ -24,7 +25,7 @@ public class CommandSuggestCrateItem extends DiscordCommand { this.modalManager = modalManager; commandData = Commands.slash(getName(), "Open crate item suggestion form.") - .setGuildOnly(true) + .setContexts(InteractionContextType.GUILD) .setDefaultPermissions(DefaultMemberPermissions.ENABLED); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandSuggestion.java b/src/main/java/com/alttd/commandManager/commands/CommandSuggestion.java index 971a94e..9b5ba4f 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandSuggestion.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandSuggestion.java @@ -8,26 +8,25 @@ import com.alttd.util.Util; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; -import net.dv8tion.jda.api.interactions.modals.Modal; +import net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; import java.util.Collections; public class CommandSuggestion extends DiscordCommand { - private final CommandManager commandManager; private final CommandData commandData; private final ModalManager modalManager; public CommandSuggestion(JDA jda, ModalManager modalManager, CommandManager commandManager) { - this.commandManager = commandManager; this.modalManager = modalManager; commandData = Commands.slash(getName(), "Open suggestion form.") - .setGuildOnly(true) + .setContexts(InteractionContextType.GUILD) .setDefaultPermissions(DefaultMemberPermissions.ENABLED); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/CommandUpdateCommands.java b/src/main/java/com/alttd/commandManager/commands/CommandUpdateCommands.java index cad39c0..3146499 100644 --- a/src/main/java/com/alttd/commandManager/commands/CommandUpdateCommands.java +++ b/src/main/java/com/alttd/commandManager/commands/CommandUpdateCommands.java @@ -8,6 +8,7 @@ import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; @@ -27,7 +28,7 @@ public class CommandUpdateCommands extends DiscordCommand { this.commandManager = commandManager; this.commandData = Commands.slash(getName(), "Updates all commands for this bot in this guild") .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerCommand(commandManager, jda, commandData, getName()); } diff --git a/src/main/java/com/alttd/commandManager/commands/PollCommand/CommandPoll.java b/src/main/java/com/alttd/commandManager/commands/PollCommand/CommandPoll.java index 7bf42ff..8905aff 100644 --- a/src/main/java/com/alttd/commandManager/commands/PollCommand/CommandPoll.java +++ b/src/main/java/com/alttd/commandManager/commands/PollCommand/CommandPoll.java @@ -4,13 +4,13 @@ import com.alttd.buttonManager.ButtonManager; import com.alttd.commandManager.CommandManager; import com.alttd.commandManager.DiscordCommand; import com.alttd.commandManager.SubOption; -import com.alttd.schedulers.PollTimerTask; import com.alttd.util.Logger; import com.alttd.util.Util; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.CommandData; @@ -52,7 +52,7 @@ public class CommandPoll extends DiscordCommand { new SubcommandData("update_total_votes", "Update the total vote count incase it's out of sync") .addOption(OptionType.STRING, "message_id", "Id of the poll you want to update the total vote count for", true)) .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)) - .setGuildOnly(true); + .setContexts(InteractionContextType.GUILD); Util.registerSubOptions(subOptionsMap, new SubCommandAdd(null,this), new SubCommandAddButton(null, this, buttonManager), diff --git a/src/main/java/com/alttd/commandManager/commands/PollCommand/SubCommandAddButton.java b/src/main/java/com/alttd/commandManager/commands/PollCommand/SubCommandAddButton.java index 7b2d7ea..0a51360 100644 --- a/src/main/java/com/alttd/commandManager/commands/PollCommand/SubCommandAddButton.java +++ b/src/main/java/com/alttd/commandManager/commands/PollCommand/SubCommandAddButton.java @@ -12,12 +12,12 @@ import com.alttd.templates.Template; import com.alttd.util.Logger; import com.alttd.util.OptionMappingParsing; import com.alttd.util.Util; +import net.dv8tion.jda.api.components.actionrow.ActionRow; +import net.dv8tion.jda.api.components.actionrow.ActionRowChildComponent; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.interactions.InteractionHook; -import net.dv8tion.jda.api.interactions.components.ActionRow; -import net.dv8tion.jda.api.interactions.components.ItemComponent; import java.util.ArrayList; import java.util.List; @@ -102,7 +102,9 @@ public class SubCommandAddButton extends SubCommand { } PollButton pollButton = any.get(); - List actionRows = message.getActionRows(); + List actionRows = message.getComponents().stream() + .filter(component -> component instanceof ActionRow) + .map(a -> (ActionRow) a).toList(); if (rowId > 1) {//todo fix if needed in the future hook.editOriginalEmbeds(Util.genericErrorEmbed("Error", "Polls have only been set up to handle 1 row if you need more than one row update the code.")) @@ -110,14 +112,15 @@ public class SubCommandAddButton extends SubCommand { return; } - List components; + List components; if (!actionRows.isEmpty()) { - components = actionRows.get(0).getComponents(); - } else + components = new ArrayList<>(actionRows.getFirst().getComponents()); + } else { components = new ArrayList<>(); + } components.add(pollButton.getButton()); - message.editMessageComponents().setActionRow(components).queue(); + message.editMessageComponents(ActionRow.of(components)).queue(); hook.editOriginalEmbeds(Util.genericSuccessEmbed("Success", "Added a button")).queue(); } diff --git a/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuCreateEvent.java b/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuCreateEvent.java index 90fc379..657e766 100644 --- a/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuCreateEvent.java +++ b/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuCreateEvent.java @@ -8,10 +8,11 @@ import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.UserContextInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; -import net.dv8tion.jda.api.interactions.modals.Modal; +import net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; public class ContextMenuCreateEvent extends DiscordContextMenu { @@ -62,7 +63,7 @@ public class ContextMenuCreateEvent extends DiscordContextMenu { @Override public CommandData getUserContextInteraction() { return Commands.message(getContextMenuId()) - .setGuildOnly(true) + .setContexts(InteractionContextType.GUILD) .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.MESSAGE_SEND)); } } diff --git a/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuForwardToKanboard.java b/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuForwardToKanboard.java index 57d6e18..e0b9345 100644 --- a/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuForwardToKanboard.java +++ b/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuForwardToKanboard.java @@ -7,6 +7,7 @@ import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.UserContextInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; @@ -46,7 +47,7 @@ public class ContextMenuForwardToKanboard extends DiscordContextMenu { @Override public CommandData getUserContextInteraction() { return Commands.message(getContextMenuId()) - .setGuildOnly(true) + .setContexts(InteractionContextType.GUILD) .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)); } } diff --git a/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuRespondSuggestion.java b/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuRespondSuggestion.java index 0a3ac92..86c63df 100644 --- a/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuRespondSuggestion.java +++ b/src/main/java/com/alttd/contextMenuManager/contextMenus/ContextMenuRespondSuggestion.java @@ -15,10 +15,11 @@ import net.dv8tion.jda.api.entities.channel.unions.IThreadContainerUnion; import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion; import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.UserContextInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.Commands; -import net.dv8tion.jda.api.interactions.modals.Modal; +import net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; public class ContextMenuRespondSuggestion extends DiscordContextMenu { @@ -63,7 +64,7 @@ public class ContextMenuRespondSuggestion extends DiscordContextMenu { @Override public CommandData getUserContextInteraction() { return Commands.message(getContextMenuId()) - .setGuildOnly(true) + .setContexts(InteractionContextType.GUILD) .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.ADMINISTRATOR)); } diff --git a/src/main/java/com/alttd/database/queries/QueriesAuctions/Auction.java b/src/main/java/com/alttd/database/queries/QueriesAuctions/Auction.java index 3d47e6b..356fc98 100644 --- a/src/main/java/com/alttd/database/queries/QueriesAuctions/Auction.java +++ b/src/main/java/com/alttd/database/queries/QueriesAuctions/Auction.java @@ -6,15 +6,14 @@ import com.alttd.database.queries.QueriesAuctionActions.QueriesAuctionAction; import com.alttd.selectMenuManager.DiscordSelectMenu; import com.alttd.selectMenuManager.SelectMenuManager; import com.alttd.util.Util; +import net.dv8tion.jda.api.components.selections.SelectMenu; +import net.dv8tion.jda.api.components.selections.SelectOption; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; -import net.dv8tion.jda.api.interactions.components.selections.SelectMenu; -import net.dv8tion.jda.api.interactions.components.selections.SelectOption; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import java.time.Instant; import java.util.ArrayList; import java.util.LinkedList; diff --git a/src/main/java/com/alttd/listeners/AppealRepost.java b/src/main/java/com/alttd/listeners/AppealRepost.java index 85f5691..42be11b 100644 --- a/src/main/java/com/alttd/listeners/AppealRepost.java +++ b/src/main/java/com/alttd/listeners/AppealRepost.java @@ -8,6 +8,8 @@ import com.alttd.database.queries.QueriesReminders.ReminderType; import com.alttd.schedulers.ReminderScheduler; import com.alttd.util.Logger; 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.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; @@ -15,7 +17,6 @@ import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; 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.NonNls; import org.jetbrains.annotations.Nullable; @@ -47,15 +48,15 @@ public class AppealRepost extends ListenerAdapter { } Message message = event.getMessage(); List embeds = message.getEmbeds(); - if (embeds.size() == 0) { + if (embeds.isEmpty()) { return; } - MessageEmbed messageEmbed = embeds.get(0); + MessageEmbed messageEmbed = embeds.getFirst(); List fields = messageEmbed.getFields(); - if (fields.size() == 0) { + if (fields.isEmpty()) { return; } - String name = fields.get(0).getName(); + String name = fields.getFirst().getName(); if (name == null || !name.equals("Punishment info")) { return; } @@ -89,7 +90,7 @@ public class AppealRepost extends ListenerAdapter { return; } message.getChannel().sendMessageEmbeds(embed).queue(res -> { - res.editMessageComponents().setActionRow(reminderAccepted, reminderInProgress, reminderDenied).queue(); + res.editMessageComponents(ActionRow.of(reminderAccepted, reminderInProgress, reminderDenied)).queue(); res.createThreadChannel("Appeal").queue(( threadChannel -> { scheduleReminder(res, member, threadChannel); diff --git a/src/main/java/com/alttd/modalManager/DiscordModal.java b/src/main/java/com/alttd/modalManager/DiscordModal.java index 9073f58..2028dad 100644 --- a/src/main/java/com/alttd/modalManager/DiscordModal.java +++ b/src/main/java/com/alttd/modalManager/DiscordModal.java @@ -1,7 +1,7 @@ package com.alttd.modalManager; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; -import net.dv8tion.jda.api.interactions.modals.Modal; +import net.dv8tion.jda.api.modals.Modal; public abstract class DiscordModal { diff --git a/src/main/java/com/alttd/modalManager/ModalManager.java b/src/main/java/com/alttd/modalManager/ModalManager.java index 619d4be..0a8f1b9 100644 --- a/src/main/java/com/alttd/modalManager/ModalManager.java +++ b/src/main/java/com/alttd/modalManager/ModalManager.java @@ -4,7 +4,7 @@ import com.alttd.buttonManager.ButtonManager; import com.alttd.modalManager.modals.*; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; -import net.dv8tion.jda.api.interactions.modals.Modal; +import net.dv8tion.jda.api.modals.Modal; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,8 +48,6 @@ public class ModalManager extends ListenerAdapter { Optional first = modals.stream() .filter(discordModal -> discordModal.getModalId().equalsIgnoreCase(modalId)) .findFirst(); - if (first.isEmpty()) - return null; - return first.get().getModal(); + return first.map(DiscordModal::getModal).orElse(null); } } diff --git a/src/main/java/com/alttd/modalManager/modals/ModalCrateItem.java b/src/main/java/com/alttd/modalManager/modals/ModalCrateItem.java index f479ec5..2132a07 100644 --- a/src/main/java/com/alttd/modalManager/modals/ModalCrateItem.java +++ b/src/main/java/com/alttd/modalManager/modals/ModalCrateItem.java @@ -5,16 +5,17 @@ import com.alttd.database.queries.commandOutputChannels.OutputType; import com.alttd.modalManager.DiscordModal; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +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.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; -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 net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; import java.awt.*; @@ -87,42 +88,42 @@ public class ModalCrateItem extends DiscordModal { @Override public Modal getModal() { - TextInput item = TextInput.create("item", "Item", TextInputStyle.SHORT) + TextInput item = TextInput.create("item", TextInputStyle.SHORT) .setPlaceholder("Bone") .setRequiredRange(1, 32) .setRequired(true) .build(); - TextInput itemName = TextInput.create("item_name", "Item Name", TextInputStyle.SHORT) + TextInput itemName = TextInput.create("item_name", TextInputStyle.SHORT) .setPlaceholder("Scruff's Bone") .setRequiredRange(1, 32) .setRequired(true) .build(); - TextInput lore = TextInput.create("lore", "Lore", TextInputStyle.PARAGRAPH) + TextInput lore = TextInput.create("lore", TextInputStyle.PARAGRAPH) .setPlaceholder("A bone owned by the Altitude Mascot") .setRequiredRange(1, 256) .setRequired(true) .build(); - TextInput enchants = TextInput.create("enchants", "Enchants", TextInputStyle.PARAGRAPH) + TextInput enchants = TextInput.create("enchants", TextInputStyle.PARAGRAPH) .setPlaceholder("Unbreaking 1") .setRequiredRange(1, 256) .setRequired(false) .build(); - TextInput explanation = TextInput.create("explanation", "The explanation behind your item", TextInputStyle.PARAGRAPH) + TextInput explanation = TextInput.create("explanation", TextInputStyle.PARAGRAPH) .setPlaceholder("Scruff loves strong bones") .setRequiredRange(1, 2000) .setRequired(false) .build(); return Modal.create(getModalId(), "Crate Item Suggestion") - .addActionRow(item) - .addActionRow(itemName) - .addActionRow(lore) - .addActionRow(enchants) - .addActionRow(explanation) + .addComponents(Label.of("Item", item)) + .addComponents(Label.of("Item name", itemName)) + .addComponents(Label.of("Lore", lore)) + .addComponents(Label.of("Enchants", enchants)) + .addComponents(Label.of("The explanation behind your item", explanation)) .build(); } diff --git a/src/main/java/com/alttd/modalManager/modals/ModalCreateEvent.java b/src/main/java/com/alttd/modalManager/modals/ModalCreateEvent.java index 96c1766..3bb96e5 100644 --- a/src/main/java/com/alttd/modalManager/modals/ModalCreateEvent.java +++ b/src/main/java/com/alttd/modalManager/modals/ModalCreateEvent.java @@ -7,17 +7,18 @@ import com.alttd.modalManager.DiscordModal; import com.alttd.util.UserToMessageTracker; import com.alttd.util.Util; 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.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.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; -import net.dv8tion.jda.api.interactions.components.ActionRow; -import net.dv8tion.jda.api.interactions.components.buttons.Button; -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; import net.dv8tion.jda.api.requests.restaction.RoleAction; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction; @@ -93,10 +94,15 @@ public class ModalCreateEvent extends DiscordModal { .build(); Button eventButton = buttonManager.getButtonFor("event_button"); + if (eventButton == null) { + event.replyEmbeds(Util.genericErrorEmbed("Error", "Unable to find event button")) + .setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure); + return; + } try (MessageCreateData build = new MessageCreateBuilder() .setEmbeds(messageEmbed) - .setActionRow(eventButton) + .setComponents(ActionRow.of(eventButton)) .build()) { Guild guild = message.getGuild(); @@ -129,14 +135,15 @@ public class ModalCreateEvent extends DiscordModal { @Override public Modal getModal() { String currentTimestamp = String.valueOf(Instant.now().getEpochSecond()); - TextInput time = TextInput.create("time", "Epoch time, see https://epochconverter.com/", TextInputStyle.SHORT) + TextInput time = TextInput.create("time", TextInputStyle.SHORT) + .setValue("Epoch time, see https://epochconverter.com/") .setPlaceholder(currentTimestamp) .setMinLength(currentTimestamp.length()) .setMaxLength(currentTimestamp.length() + 1) .setRequired(true) .build(); - TextInput title = TextInput.create("title", "Event title", TextInputStyle.SHORT) + TextInput title = TextInput.create("title", TextInputStyle.SHORT) .setPlaceholder("The title for your event") .setMinLength(5) .setMaxLength(128) @@ -144,7 +151,7 @@ public class ModalCreateEvent extends DiscordModal { .build(); return Modal.create(getModalId(), "Create an event") - .addComponents(ActionRow.of(title), ActionRow.of(time)) + .addComponents(Label.of("Event title", title), Label.of("time", time)) .build(); } } diff --git a/src/main/java/com/alttd/modalManager/modals/ModalEvidence.java b/src/main/java/com/alttd/modalManager/modals/ModalEvidence.java index ba86223..2cd0803 100644 --- a/src/main/java/com/alttd/modalManager/modals/ModalEvidence.java +++ b/src/main/java/com/alttd/modalManager/modals/ModalEvidence.java @@ -5,16 +5,17 @@ import com.alttd.database.queries.commandOutputChannels.OutputType; import com.alttd.modalManager.DiscordModal; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +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.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; -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 net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction; @@ -85,35 +86,35 @@ public class ModalEvidence extends DiscordModal { @Override public Modal getModal() { - TextInput user = TextInput.create("user", "User", TextInputStyle.SHORT) + TextInput user = TextInput.create("user", TextInputStyle.SHORT) .setPlaceholder("username/id") .setRequiredRange(1, 256) .setRequired(true) .build(); - TextInput punishmentType = TextInput.create("punishment-type", "Punishment Type", TextInputStyle.SHORT) + TextInput punishmentType = TextInput.create("punishment-type", TextInputStyle.SHORT) .setPlaceholder("punishment type") .setRequiredRange(3, 256) .setRequired(true) .build(); - TextInput reason = TextInput.create("reason", "Reason", TextInputStyle.SHORT) + TextInput reason = TextInput.create("reason", TextInputStyle.SHORT) .setPlaceholder("punishment reason") .setRequiredRange(10, 256) .setRequired(true) .build(); - TextInput evidence = TextInput.create("evidence", "Evidence", TextInputStyle.PARAGRAPH) + TextInput evidence = TextInput.create("evidence", TextInputStyle.PARAGRAPH) .setPlaceholder("evidence") .setRequiredRange(10, 1024) .setRequired(true) .build(); return Modal.create(getModalId(), "Evidence") - .addActionRow(user) - .addActionRow(punishmentType) - .addActionRow(reason) - .addActionRow(evidence) + .addComponents(Label.of("User", user)) + .addComponents(Label.of("Punishment Type", punishmentType)) + .addComponents(Label.of("Reason", reason)) + .addComponents(Label.of("Evidence", evidence)) .build(); } } diff --git a/src/main/java/com/alttd/modalManager/modals/ModalRemindMe.java b/src/main/java/com/alttd/modalManager/modals/ModalRemindMe.java index 4accb11..d5acb32 100644 --- a/src/main/java/com/alttd/modalManager/modals/ModalRemindMe.java +++ b/src/main/java/com/alttd/modalManager/modals/ModalRemindMe.java @@ -7,17 +7,17 @@ import com.alttd.database.queries.QueriesReminders.ReminderType; import com.alttd.modalManager.DiscordModal; import com.alttd.util.Util; 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.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.MessageEmbed; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; -import net.dv8tion.jda.api.interactions.components.ActionRow; -import net.dv8tion.jda.api.interactions.modals.Modal; -import net.dv8tion.jda.api.interactions.components.buttons.Button; -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 net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; -import net.dv8tion.jda.api.utils.TimeUtil; import java.util.Date; import java.util.HashMap; @@ -94,7 +94,7 @@ public class ModalRemindMe extends DiscordModal { event.deferReply().setEphemeral(true).queue(defer -> { ButtonRemindMeConfirm.putReminder(userId, defer, reminder); defer.editOriginalEmbeds(messageEmbed).queue(message -> - defer.editOriginalComponents().setActionRow(remindMeConfirm, remindMeCancel) + defer.editOriginalComponents(ActionRow.of(remindMeConfirm, remindMeCancel)) .queue(RestAction.getDefaultSuccess(), Util::handleFailure)); }); } @@ -119,21 +119,22 @@ public class ModalRemindMe extends DiscordModal { @Override public Modal getModal() { - TextInput title = TextInput.create("title", "Title", TextInputStyle.SHORT) + TextInput title = TextInput.create("title", TextInputStyle.SHORT) + .setValue("Title") .setPlaceholder("reminder title") .setRequiredRange(1, 256) .setRequired(true) .build(); - TextInput desc = TextInput.create("description", "Description", TextInputStyle.PARAGRAPH) + TextInput desc = TextInput.create("description", TextInputStyle.PARAGRAPH) .setPlaceholder("optional reminder description") .setRequiredRange(1, 4000) .setRequired(false) .build(); return Modal.create(getModalId(), "Remind Me") - .addActionRow(title) - .addActionRow(desc) + .addComponents(Label.of("Title", title)) + .addComponents(Label.of("Description", desc)) .build(); } diff --git a/src/main/java/com/alttd/modalManager/modals/ModalReplySuggestion.java b/src/main/java/com/alttd/modalManager/modals/ModalReplySuggestion.java index 3b30042..069e6b9 100644 --- a/src/main/java/com/alttd/modalManager/modals/ModalReplySuggestion.java +++ b/src/main/java/com/alttd/modalManager/modals/ModalReplySuggestion.java @@ -3,13 +3,14 @@ package com.alttd.modalManager.modals; import com.alttd.modalManager.DiscordModal; import com.alttd.util.UserToMessageTracker; import com.alttd.util.Util; +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.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; -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 net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; public class ModalReplySuggestion extends DiscordModal { @@ -67,14 +68,14 @@ public class ModalReplySuggestion extends DiscordModal { @Override public Modal getModal() { - TextInput body = TextInput.create("response", "Response", TextInputStyle.PARAGRAPH) + TextInput body = TextInput.create("response", TextInputStyle.PARAGRAPH) .setPlaceholder("Response...") .setRequiredRange(10, 1024) .setRequired(true) .build(); return Modal.create(getModalId(), "Suggestion Response") - .addActionRow(body) + .addComponents(Label.of("Response", body)) .build(); } } diff --git a/src/main/java/com/alttd/modalManager/modals/ModalSuggestion.java b/src/main/java/com/alttd/modalManager/modals/ModalSuggestion.java index 5139eff..f9dff85 100644 --- a/src/main/java/com/alttd/modalManager/modals/ModalSuggestion.java +++ b/src/main/java/com/alttd/modalManager/modals/ModalSuggestion.java @@ -6,6 +6,11 @@ import com.alttd.database.queries.commandOutputChannels.OutputType; import com.alttd.modalManager.DiscordModal; import com.alttd.util.Util; 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.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.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; @@ -13,11 +18,8 @@ import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; -import net.dv8tion.jda.api.interactions.modals.Modal; -import net.dv8tion.jda.api.interactions.components.buttons.Button; -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 net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.RestAction; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction; @@ -97,7 +99,7 @@ public class ModalSuggestion extends DiscordModal { .setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure); return; } - message.editMessageComponents().setActionRow(suggestionReviewAccept, suggestionReviewDeny).queue( + message.editMessageComponents(ActionRow.of(suggestionReviewAccept, suggestionReviewDeny)).queue( success -> replyCallbackAction.setEmbeds(Util.genericSuccessEmbed("Success", "Your suggestion was submitted for review!"), suggestionToPlayer) .setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure), failure -> replyCallbackAction.setEmbeds(Util.genericErrorEmbed("Error", "Couldn't prepare your suggestion for review."), suggestionToPlayer) @@ -106,21 +108,21 @@ public class ModalSuggestion extends DiscordModal { @Override public Modal getModal() { - TextInput title = TextInput.create("title", "Title", TextInputStyle.SHORT) + TextInput title = TextInput.create("title", TextInputStyle.SHORT) .setPlaceholder("Your suggestion in one sentence") .setRequiredRange(10, 100) .setRequired(true) .build(); - TextInput body = TextInput.create("body", "Body", TextInputStyle.PARAGRAPH) + TextInput body = TextInput.create("body", TextInputStyle.PARAGRAPH) .setPlaceholder("Suggestion...") .setRequiredRange(30, 1024) .setRequired(true) .build(); return Modal.create(getModalId(), "Suggestion Form") - .addActionRow(title) - .addActionRow(body) + .addComponents(Label.of("Title", title)) + .addComponents(Label.of("Body", body)) .build(); } } diff --git a/src/main/java/com/alttd/request/Request.java b/src/main/java/com/alttd/request/Request.java index dc74845..f7ce16e 100644 --- a/src/main/java/com/alttd/request/Request.java +++ b/src/main/java/com/alttd/request/Request.java @@ -5,14 +5,15 @@ import com.alttd.util.Pair; import lombok.AllArgsConstructor; import lombok.Getter; 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.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.Member; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; -import net.dv8tion.jda.api.interactions.components.ActionRow; -import net.dv8tion.jda.api.interactions.modals.Modal; -import net.dv8tion.jda.api.interactions.components.buttons.Button; -import net.dv8tion.jda.api.interactions.components.text.TextInput; -import net.dv8tion.jda.api.interactions.components.text.TextInputStyle; +import net.dv8tion.jda.api.modals.Modal; import net.dv8tion.jda.api.requests.restaction.ThreadChannelAction; import java.awt.*; @@ -25,24 +26,26 @@ public class Request { public Modal modal(Member member) { TextInput requestTitle = TextInput - .create("title", title, TextInputStyle.SHORT) + .create("title", TextInputStyle.SHORT) .setPlaceholder(id) .setRequired(false) .build(); TextInput requestMessage = TextInput - .create("request", message, TextInputStyle.PARAGRAPH) + .create("request", TextInputStyle.PARAGRAPH) .build(); return Modal.create("request:" + id, name) - .addActionRow(requestTitle) - .addActionRow(requestMessage) + .addComponents(Label.of(title, requestTitle)) + .addComponents(Label.of(message, requestMessage)) .build(); } public void createThread(Member member, String title, String request) { TextChannel channel = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID).getTextChannelById(getChannel()); - if (title == null || title.isEmpty()) title = id; + if (title == null || title.isEmpty()) { + title = id; + } String finalTitle = title; ThreadChannelAction threadChannelAction = channel.createThreadChannel(finalTitle); threadChannelAction.queue(threadChannel -> { @@ -54,20 +57,21 @@ public class Request { } public void sendEmbed(ThreadChannel channel, String title, String request) { -// Pair pair = getRequestEmbed(channel.getId(), title, request); + // Pair pair = getRequestEmbed(channel.getId(), title, request); // pairs are not really possible here :( EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.setTitle(title) .addField(getName(), request, false) .setColor(new Color(41, 43, 47)); - channel.sendMessageEmbeds(embedBuilder.build()).queue(message1 -> - channel.editMessageEmbedsById(message1.getId(), embedBuilder.build()) - .setActionRow( - Button.primary("request:" + getId() + ":" + channel.getId() + ":" + message1.getId() + ":progress", "in progress"), - Button.success("request:" + getId() + ":" + channel.getId() + ":" + message1.getId() + ":complete", "complete"), - Button.danger("request:" + getId() + ":" + channel.getId() + ":" + message1.getId() + ":denied", "denied") - ).queue() - ); + channel.sendMessageEmbeds(embedBuilder.build()) + .queue(message1 -> + channel.editMessageEmbedsById(message1.getId(), embedBuilder.build()) + .queue(message2 -> channel.editMessageComponentsById(message1.getId(), ActionRow.of( + Button.primary("request:" + getId() + ":" + channel.getId() + ":" + message1.getId() + ":progress", "in progress"), + Button.success("request:" + getId() + ":" + channel.getId() + ":" + message1.getId() + ":complete", "complete"), + Button.danger("request:" + getId() + ":" + channel.getId() + ":" + message1.getId() + ":denied", "denied") + )).queue()) + ); } public Pair getRequestEmbed(String channellId, String title, String request) { @@ -80,7 +84,7 @@ public class Request { Button.primary("request:" + getId() + ":" + channellId + ":progress", "in progress"), Button.success("request:" + getId() + ":" + channellId + ":complete", "complete"), Button.danger("request:" + getId() + ":" + channellId + ":denied", "denied") - ); + ); return new Pair<>(embedBuilder, actionRow); } diff --git a/src/main/java/com/alttd/request/RequestManager.java b/src/main/java/com/alttd/request/RequestManager.java index b17fbb3..f7123af 100644 --- a/src/main/java/com/alttd/request/RequestManager.java +++ b/src/main/java/com/alttd/request/RequestManager.java @@ -2,22 +2,28 @@ package com.alttd.request; import com.alttd.AltitudeBot; import com.alttd.util.Pair; +import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.actionrow.ActionRow; +import net.dv8tion.jda.api.components.selections.StringSelectMenu; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; import net.dv8tion.jda.api.events.interaction.component.StringSelectInteractionEvent; -import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu; import java.awt.*; +@Slf4j public class RequestManager { public static void init() { RequestConfig.reload(); - if (RequestConfig.REQUEST_MESSAGE == null || RequestConfig.REQUEST_MESSAGE.isEmpty()) + if (RequestConfig.REQUEST_MESSAGE == null || RequestConfig.REQUEST_MESSAGE.isEmpty()) { sendRequestMessage(); + } } public static Pair getRequestEmbed() { @@ -36,20 +42,39 @@ public class RequestManager { } public static void sendRequestMessage() { - TextChannel channel = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID).getTextChannelById(RequestConfig.REQUEST_CHANNEL); + Guild guildById = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID); + if (guildById == null) { + log.error("Unable to find guild with id {} for sendRequestMessage", RequestConfig.REQUEST_GUILD_ID); + return; + } + TextChannel channel = guildById + .getTextChannelById(RequestConfig.REQUEST_CHANNEL); + if (channel == null) { + log.error("Unable to find channel with id {} for sendRequestMessage", RequestConfig.REQUEST_CHANNEL); + return; + } Pair pair = getRequestEmbed(); - channel.sendMessageEmbeds(pair.getValue0().build()).setActionRow( - pair.getValue1().build() - ).queue(m -> RequestConfig.setRequestMessage(m.getId())); + channel.sendMessageEmbeds(pair.getValue0().build()) + .queue(message -> message.editMessageComponents(ActionRow.of(pair.getValue1().build())) + .queue(m -> RequestConfig.setRequestMessage(m.getId()))); } public static void updateRequestMessage() { - TextChannel channel = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID).getTextChannelById(RequestConfig.REQUEST_CHANNEL); + Guild guildById = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID); + if (guildById == null) { + log.error("Unable to find guild with id for updateRequestMessage {}", RequestConfig.REQUEST_GUILD_ID); + return; + } + TextChannel channel = guildById + .getTextChannelById(RequestConfig.REQUEST_CHANNEL); + if (channel == null) { + log.error("Unable to find channel with id {} for updateRequestMessage", RequestConfig.REQUEST_CHANNEL); + return; + } Pair pair = getRequestEmbed(); channel.editMessageEmbedsById(RequestConfig.REQUEST_MESSAGE, pair.getValue0().build()) - .setActionRow( - pair.getValue1().build() - ).queue(m -> RequestConfig.setRequestMessage(m.getId())); + .queue(m -> m.editMessageComponents(ActionRow.of(pair.getValue1().build())) + .queue(m2 -> RequestConfig.setRequestMessage(m2.getId()))); } public static Request getRequestById(String id) { @@ -59,7 +84,7 @@ public class RequestManager { public static void onStringSelectInteraction(StringSelectInteractionEvent event) { String[] actions = event.getComponentId().split(":"); if (actions[1].equals("create")) { - String[] selection = event.getSelectedOptions().get(0).getValue().split(":"); + String[] selection = event.getSelectedOptions().getFirst().getValue().split(":"); if (selection[0].equals("request") && selection[1].equals("open")) { String id = selection[2]; event.replyModal(getRequestById(id).modal(event.getMember())).queue(); @@ -88,15 +113,43 @@ public class RequestManager { case "denied" -> { // TODO open a new modal to input a reason? // could also do this by command? - event.reply("This request has been denied by " + event.getMember().getAsMention()).queue(); - ThreadChannel threadChannel = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID).getThreadChannelById(threadId); + Member member = event.getMember(); + if (member == null) { + event.reply("This request has been denied by an unknown member").queue(); + } else { + event.reply("This request has been denied by " + member.getAsMention()).queue(); + } + Guild guildById = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID); + if (guildById == null) { + log.error("Unable to find guild with id {} for denied", RequestConfig.REQUEST_GUILD_ID); + return; + } + ThreadChannel threadChannel = guildById.getThreadChannelById(threadId); + if (threadChannel == null) { + log.error("Unable to find thread channel with id {} for denied", threadId); + return; + } threadChannel.getManager().setArchived(true).setLocked(true).queue(); } case "complete" -> { // TODO open a new modal to input a reason? // could also do this by command? - event.reply("This request has been completed by " + event.getMember().getAsMention()).queue(); - ThreadChannel threadChannel = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID).getThreadChannelById(threadId); + Member member = event.getMember(); + if (member == null) { + event.reply("This request has been completed by an unknown member").queue(); + } else { + event.reply("This request has been completed by " + member.getAsMention()).queue(); + } + Guild guildById = AltitudeBot.getInstance().getJDA().getGuildById(RequestConfig.REQUEST_GUILD_ID); + if (guildById == null) { + log.error("Unable to find guild with id {} for complete", RequestConfig.REQUEST_GUILD_ID); + return; + } + ThreadChannel threadChannel = guildById.getThreadChannelById(threadId); + if (threadChannel == null) { + log.error("Unable to find thread channel with id {} for complete", threadId); + return; + } threadChannel.getManager().setArchived(true).setLocked(true).queue(); } case "progress" -> { diff --git a/src/main/java/com/alttd/selectMenuManager/DiscordSelectMenu.java b/src/main/java/com/alttd/selectMenuManager/DiscordSelectMenu.java index a3c12f6..ba640de 100644 --- a/src/main/java/com/alttd/selectMenuManager/DiscordSelectMenu.java +++ b/src/main/java/com/alttd/selectMenuManager/DiscordSelectMenu.java @@ -1,9 +1,8 @@ package com.alttd.selectMenuManager; -import net.dv8tion.jda.api.events.interaction.component.GenericSelectMenuInteractionEvent; +import net.dv8tion.jda.api.components.selections.SelectMenu; +import net.dv8tion.jda.api.components.selections.SelectOption; import net.dv8tion.jda.api.events.interaction.component.StringSelectInteractionEvent; -import net.dv8tion.jda.api.interactions.components.selections.SelectMenu; -import net.dv8tion.jda.api.interactions.components.selections.SelectOption; import java.util.List; diff --git a/src/main/java/com/alttd/selectMenuManager/SelectMenuManager.java b/src/main/java/com/alttd/selectMenuManager/SelectMenuManager.java index 64d9240..fdb4a61 100644 --- a/src/main/java/com/alttd/selectMenuManager/SelectMenuManager.java +++ b/src/main/java/com/alttd/selectMenuManager/SelectMenuManager.java @@ -1,7 +1,6 @@ package com.alttd.selectMenuManager; import com.alttd.selectMenuManager.selectMenus.SelectMenuAuction; -import net.dv8tion.jda.api.events.interaction.component.GenericSelectMenuInteractionEvent; import net.dv8tion.jda.api.events.interaction.component.StringSelectInteractionEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.jetbrains.annotations.NotNull; @@ -20,7 +19,7 @@ public class SelectMenuManager extends ListenerAdapter { @Override public void onStringSelectInteraction(@NotNull StringSelectInteractionEvent event) { - String selectMenuId = event.getSelectMenu().getId(); + String selectMenuId = event.getSelectMenu().getCustomId(); Optional first = buttons.stream() .filter(discordModal -> discordModal.getSelectMenuId().equalsIgnoreCase(selectMenuId)) .findFirst(); diff --git a/src/main/java/com/alttd/selectMenuManager/selectMenus/SelectMenuAuction.java b/src/main/java/com/alttd/selectMenuManager/selectMenus/SelectMenuAuction.java index bd8799c..e47e11c 100644 --- a/src/main/java/com/alttd/selectMenuManager/selectMenus/SelectMenuAuction.java +++ b/src/main/java/com/alttd/selectMenuManager/selectMenus/SelectMenuAuction.java @@ -8,18 +8,18 @@ import com.alttd.selectMenuManager.DiscordSelectMenu; import com.alttd.selectMenuManager.SelectMenuManager; import com.alttd.util.Util; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.components.actionrow.ActionRow; +import net.dv8tion.jda.api.components.selections.SelectMenu; +import net.dv8tion.jda.api.components.selections.SelectOption; +import net.dv8tion.jda.api.components.selections.StringSelectMenu; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.interaction.component.StringSelectInteractionEvent; -import net.dv8tion.jda.api.interactions.components.selections.SelectMenu; -import net.dv8tion.jda.api.interactions.components.selections.SelectOption; -import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction; import java.time.Instant; import java.util.List; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; public class SelectMenuAuction extends DiscordSelectMenu { @@ -55,7 +55,9 @@ public class SelectMenuAuction extends DiscordSelectMenu { return; } - List collect = event.getInteraction().getSelectedOptions().stream().filter(opt -> !opt.isDefault()).collect(Collectors.toList()); + List collect = event.getInteraction().getSelectedOptions().stream() + .filter(opt -> !opt.isDefault()) + .toList(); if (collect.isEmpty()) { event.replyEmbeds(Util.genericErrorEmbed("Error", "Received default input")) .setEphemeral(true).queue(); @@ -67,7 +69,7 @@ public class SelectMenuAuction extends DiscordSelectMenu { return; } - SelectOption selectOption = collect.get(0); + SelectOption selectOption = collect.getFirst(); String value = selectOption.getValue(); int bid; try { @@ -132,7 +134,8 @@ public class SelectMenuAuction extends DiscordSelectMenu { } replyCallbackAction.setEmbeds(Util.genericSuccessEmbed("Success", "You successfully made the first bid on this item ($" + Util.formatNumber(currentBid) + ")!")) .queue(); - success.editMessageComponents().setActionRow(auction.getSelectMenu(selectMenuManager, true)).queue(); + success.editMessageComponents(ActionRow.of(auction.getSelectMenu(selectMenuManager, true))) + .queue(); }, error -> replyCallbackAction.setEmbeds(Util.genericErrorEmbed("Error", "Unable to finish your bid")).queue()) ); @@ -144,7 +147,7 @@ public class SelectMenuAuction extends DiscordSelectMenu { .setEphemeral(true).queue(); return null; } - return embeds.get(0); + return embeds.getFirst(); } @Override