From 50796d00f069062dae6fd9cbd764b760d94bce13 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 4 Jul 2024 11:46:54 +0100 Subject: [PATCH] MAYBE USER INSTALL COMMANDS PLEASE??~!?!?!?!?!?!?!!!?!?!!?!!?!?!?!!!?!??!??!?!?!?!?!?!?!?!?!?!?!?!?! --- pom.xml | 15 +++++++++++++-- .../cc/fascinated/bat/command/BatCommand.java | 8 +++++++- .../cc/fascinated/bat/command/CommandInfo.java | 7 +++++++ .../base/commands/discord/LookupUserCommand.java | 2 +- .../server/channel/SetTopicSubCommand.java | 2 +- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 184c9ef..106b6a4 100644 --- a/pom.xml +++ b/pom.xml @@ -70,6 +70,12 @@ + + + jitpack.io + https://jitpack.io + + @@ -134,10 +140,15 @@ + + + + + - net.dv8tion + io.github.freya022 JDA - 5.0.0-beta.24 + 2ed819ad15 com.google.code.gson diff --git a/src/main/java/cc/fascinated/bat/command/BatCommand.java b/src/main/java/cc/fascinated/bat/command/BatCommand.java index e5842c5..165bb40 100644 --- a/src/main/java/cc/fascinated/bat/command/BatCommand.java +++ b/src/main/java/cc/fascinated/bat/command/BatCommand.java @@ -4,6 +4,8 @@ import cc.fascinated.bat.features.Feature; import lombok.Getter; import lombok.NonNull; import lombok.Setter; +import net.dv8tion.jda.api.interactions.IntegrationType; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.SlashCommandInteraction; @@ -59,8 +61,12 @@ public abstract class BatCommand implements BatCommandExecutor { this.category = this.commandInfo.category(); this.botOwnerOnly = this.commandInfo.botOwnerOnly(); + List integrationTypes = this.commandInfo.userInstall() ? List.of(IntegrationType.GUILD_INSTALL, IntegrationType.USER_INSTALL) : + List.of(IntegrationType.GUILD_INSTALL); this.commandData = new CommandDataImpl(this.commandInfo.name(), this.commandInfo.description()) - .setGuildOnly(this.commandInfo.guildOnly()); + .setGuildOnly(this.commandInfo.guildOnly()) + .setContexts(InteractionContextType.ALL) + .setIntegrationTypes(integrationTypes); } /** diff --git a/src/main/java/cc/fascinated/bat/command/CommandInfo.java b/src/main/java/cc/fascinated/bat/command/CommandInfo.java index 312e8f9..37b87d1 100644 --- a/src/main/java/cc/fascinated/bat/command/CommandInfo.java +++ b/src/main/java/cc/fascinated/bat/command/CommandInfo.java @@ -34,6 +34,13 @@ public @interface CommandInfo { */ boolean guildOnly() default true; + /** + * If the command can be user installed + * + * @return if the command is user installable + */ + boolean userInstall() default false; + /** * The required permissions for the command * diff --git a/src/main/java/cc/fascinated/bat/features/base/commands/discord/LookupUserCommand.java b/src/main/java/cc/fascinated/bat/features/base/commands/discord/LookupUserCommand.java index 1472c28..67d17d6 100644 --- a/src/main/java/cc/fascinated/bat/features/base/commands/discord/LookupUserCommand.java +++ b/src/main/java/cc/fascinated/bat/features/base/commands/discord/LookupUserCommand.java @@ -21,7 +21,7 @@ import org.springframework.stereotype.Component; * @author Fascinated (fascinated7) */ @Component -@CommandInfo(name = "lookupuser", description = "Lookup a user") +@CommandInfo(name = "lookupuser", description = "Lookup a user", userInstall = true) public class LookupUserCommand extends BatCommand { public LookupUserCommand() { super.addOption(OptionType.STRING, "id", "The id of the user", true); diff --git a/src/main/java/cc/fascinated/bat/features/base/commands/server/channel/SetTopicSubCommand.java b/src/main/java/cc/fascinated/bat/features/base/commands/server/channel/SetTopicSubCommand.java index e458b85..ead16eb 100644 --- a/src/main/java/cc/fascinated/bat/features/base/commands/server/channel/SetTopicSubCommand.java +++ b/src/main/java/cc/fascinated/bat/features/base/commands/server/channel/SetTopicSubCommand.java @@ -46,7 +46,7 @@ public class SetTopicSubCommand extends BatSubCommand { .queue(); return; } - event.deferReply().queue(hook -> textChannel.getManager().setTopic(topic).queue((voiddd) -> hook.editOriginalEmbeds(EmbedUtils.successEmbed() + event.deferReply().queue(hook -> textChannel.getManager().setTopic(topic).queue((voidd) -> hook.editOriginalEmbeds(EmbedUtils.successEmbed() .setDescription("Successfully set the topic of <#%s> to: \"%s\"".formatted(textChannel.getId(), topic)) .build()).queue())); }