diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/commandManager/commands/CommandLink.java b/src/main/java/com/alttd/proxydiscordlink/bot/commandManager/commands/CommandLink.java index 208b57c..3b774da 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/commandManager/commands/CommandLink.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/commandManager/commands/CommandLink.java @@ -11,6 +11,7 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionHook; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; @@ -53,23 +54,25 @@ public class CommandLink extends DiscordCommand { return; } - List discordRoles = Utilities.getDiscordRolesForUser(uuid, member); + event.deferReply(true).queue(interactionHook -> { + List discordRoles = Utilities.getDiscordRolesForUser(uuid, member); - DiscordLinkPlayer discordLinkPlayer = new DiscordLinkPlayer( - member.getIdLong(), - uuid, - getUsername(uuid), - member.getUser().getName(), - false, - true, - discordRoles.stream() - .map(DiscordRole::getInternalName) - .collect(Collectors.toList())); + DiscordLinkPlayer discordLinkPlayer = new DiscordLinkPlayer( + member.getIdLong(), + uuid, + getUsername(uuid), + member.getUser().getName(), + false, + true, + discordRoles.stream() + .map(DiscordRole::getInternalName) + .collect(Collectors.toList())); - linkAccount(discordLinkPlayer, event); + linkAccount(discordLinkPlayer, event, interactionHook); + }); } - private void linkAccount(DiscordLinkPlayer discordLinkPlayer, SlashCommandInteractionEvent event) { + private void linkAccount(DiscordLinkPlayer discordLinkPlayer, SlashCommandInteractionEvent event, InteractionHook interactionHook) { discordLinkPlayer.updateDiscord( DiscordRole.getDiscordRoles().stream() .filter(role -> discordLinkPlayer.getRoles().contains(role.getInternalName())) @@ -87,7 +90,7 @@ public class CommandLink extends DiscordCommand { Guild guild = event.getGuild(); Member member = event.getMember(); if (guild == null || member == null) { - Utilities.commandErrAutoRem("Unable to find guild", event); + Utilities.commandErrAutoRem("Unable to find guild", interactionHook); return; } if (player != null || user != null) { @@ -104,11 +107,10 @@ public class CommandLink extends DiscordCommand { discordLinkPlayer.getUsername()); } - event.replyEmbeds(Utilities.genericSuccessEmbed("Success","You have successfully linked " + + interactionHook.editOriginalEmbeds(Utilities.genericSuccessEmbed("Success","You have successfully linked " + discordLinkPlayer.getUsername() + " with " + discordLinkPlayer.getDiscordUsername() + "!")) - .setEphemeral(true) - .queue(result -> result.deleteOriginal().queueAfter(5, TimeUnit.SECONDS)); + .queue(result -> result.delete().queueAfter(5, TimeUnit.SECONDS)); DiscordLinkPlayer.addDiscordLinkPlayer(discordLinkPlayer); DiscordLink.getPlugin().getDatabase().syncPlayer(discordLinkPlayer); diff --git a/src/main/java/com/alttd/proxydiscordlink/util/Utilities.java b/src/main/java/com/alttd/proxydiscordlink/util/Utilities.java index 1b56f6e..8453988 100644 --- a/src/main/java/com/alttd/proxydiscordlink/util/Utilities.java +++ b/src/main/java/com/alttd/proxydiscordlink/util/Utilities.java @@ -15,6 +15,7 @@ import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.interactions.InteractionHook; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.requests.RestAction; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -218,6 +219,11 @@ public class Utilities { .queue(res -> res.deleteOriginal().queueAfter(5, TimeUnit.SECONDS)); } + public static void commandErrAutoRem(String text, InteractionHook event) { + event.editOriginalEmbeds(Utilities.genericErrorEmbed("Error", text)) + .queue(res -> res.delete().queueAfter(5, TimeUnit.SECONDS)); + } + public static boolean removeRole(UUID uuid, String group) { User user = getLuckPerms().getUserManager().getUser(uuid);