From febd12f2f2b698a8744c99f0fda80252488e55f2 Mon Sep 17 00:00:00 2001 From: anthorob Date: Tue, 17 Dec 2024 12:15:24 -0500 Subject: [PATCH] change package of core command classes so it makes more sense and rename getType() to getCategory() in command interface --- .../command/AbstractAdminCommand.java | 6 +- .../builder/CommandOptionsBuilder.java | 24 --- .../core/command/impl/AbstractCommand.java | 4 + .../core/command/impl/MusicCommand.java | 4 + .../command/options}/CommandOptions.java | 5 +- .../options/CommandOptionsBuilder.java | 185 ++++++++++++++++++ 6 files changed, 199 insertions(+), 29 deletions(-) rename src/main/java/me/bobert/netneutrality/{ => core}/command/AbstractAdminCommand.java (76%) delete mode 100644 src/main/java/me/bobert/netneutrality/core/command/builder/CommandOptionsBuilder.java rename src/main/java/me/bobert/netneutrality/{command => core/command/options}/CommandOptions.java (96%) create mode 100644 src/main/java/me/bobert/netneutrality/core/command/options/CommandOptionsBuilder.java diff --git a/src/main/java/me/bobert/netneutrality/command/AbstractAdminCommand.java b/src/main/java/me/bobert/netneutrality/core/command/AbstractAdminCommand.java similarity index 76% rename from src/main/java/me/bobert/netneutrality/command/AbstractAdminCommand.java rename to src/main/java/me/bobert/netneutrality/core/command/AbstractAdminCommand.java index 4f96d25..89e901c 100644 --- a/src/main/java/me/bobert/netneutrality/command/AbstractAdminCommand.java +++ b/src/main/java/me/bobert/netneutrality/core/command/AbstractAdminCommand.java @@ -1,4 +1,4 @@ -package me.bobert.netneutrality.command; +package me.bobert.netneutrality.core.command; /* * Copyright (c) anthorob * @@ -20,7 +20,7 @@ public abstract class AbstractAdminCommand extends AbstractCommand { } @Override - public CommandType getType() { - return CommandType.ADMINISTRATION; + public CommandCategory getCategory() { + return CommandCategory.ADMINISTRATION; } } diff --git a/src/main/java/me/bobert/netneutrality/core/command/builder/CommandOptionsBuilder.java b/src/main/java/me/bobert/netneutrality/core/command/builder/CommandOptionsBuilder.java deleted file mode 100644 index 801b681..0000000 --- a/src/main/java/me/bobert/netneutrality/core/command/builder/CommandOptionsBuilder.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.bobert.netneutrality.core.command.builder; -/* - * Copyright (c) anthorob - * - * https://discord.gg/qUa6zNFZsd - */ - -import me.bobert.netneutrality.command.Command; -import me.bobert.netneutrality.command.CommandOptions; -import net.dv8tion.jda.internal.interactions.CommandDataImpl; - -public class CommandOptionsBuilder extends CommandDataImpl { - private final Command command; - - public CommandOptionsBuilder(Command command) { - super(command.getCommandName(), command.getDescription()); - this.command = command; - } - - public CommandOptions build() { - //TODO: add more command types (slash, context menu), constructors are not the same so we can't extend CommandDataImpl - return new CommandOptions(command, this); - } -} diff --git a/src/main/java/me/bobert/netneutrality/core/command/impl/AbstractCommand.java b/src/main/java/me/bobert/netneutrality/core/command/impl/AbstractCommand.java index 9eedddd..ed869a7 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/impl/AbstractCommand.java +++ b/src/main/java/me/bobert/netneutrality/core/command/impl/AbstractCommand.java @@ -1,4 +1,8 @@ +<<<<<<<< HEAD:src/main/java/me/bobert/netneutrality/core/command/impl/AbstractCommand.java package me.bobert.netneutrality.core.command.impl; +======== +package me.bobert.netneutrality.core.command; +>>>>>>>> 8479f71 (change package of core command classes so it makes more sense and rename getType() to getCategory() in command interface):src/main/java/me/bobert/netneutrality/core/command/AbstractCommand.java /* * Copyright (c) anthorob diff --git a/src/main/java/me/bobert/netneutrality/core/command/impl/MusicCommand.java b/src/main/java/me/bobert/netneutrality/core/command/impl/MusicCommand.java index 953e678..254295e 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/impl/MusicCommand.java +++ b/src/main/java/me/bobert/netneutrality/core/command/impl/MusicCommand.java @@ -1,4 +1,8 @@ +<<<<<<<< HEAD:src/main/java/me/bobert/netneutrality/core/command/impl/MusicCommand.java package me.bobert.netneutrality.core.command.impl; +======== +package me.bobert.netneutrality.core.command; +>>>>>>>> 8479f71 (change package of core command classes so it makes more sense and rename getType() to getCategory() in command interface):src/main/java/me/bobert/netneutrality/core/command/AbstractMusicCommand.java /* * Copyright (c) anthorob * diff --git a/src/main/java/me/bobert/netneutrality/command/CommandOptions.java b/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptions.java similarity index 96% rename from src/main/java/me/bobert/netneutrality/command/CommandOptions.java rename to src/main/java/me/bobert/netneutrality/core/command/options/CommandOptions.java index 6eb9a59..0d60fd5 100644 --- a/src/main/java/me/bobert/netneutrality/command/CommandOptions.java +++ b/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptions.java @@ -1,10 +1,11 @@ -package me.bobert.netneutrality.command; +package me.bobert.netneutrality.core.command.options; /* * Copyright (c) anthorob * * https://discord.gg/qUa6zNFZsd */ +import me.bobert.netneutrality.core.command.Command; import net.dv8tion.jda.api.interactions.commands.build.OptionData; import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData; import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; @@ -15,7 +16,7 @@ import java.util.List; public class CommandOptions { private final Command command; - private final SlashCommandData commandData; + private final CommandDataImpl commandData; private final List options; private final List subcommands; private final List subcommandGroups; diff --git a/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptionsBuilder.java b/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptionsBuilder.java new file mode 100644 index 0000000..20652d4 --- /dev/null +++ b/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptionsBuilder.java @@ -0,0 +1,185 @@ +package me.bobert.netneutrality.core.command.options; +/* + * Copyright (c) anthorob + * + * https://discord.gg/qUa6zNFZsd + */ + +import me.bobert.netneutrality.core.command.Command; +import net.dv8tion.jda.api.interactions.DiscordLocale; +import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; +import net.dv8tion.jda.api.interactions.commands.build.*; +import net.dv8tion.jda.api.interactions.commands.localization.LocalizationFunction; +import net.dv8tion.jda.api.interactions.commands.localization.LocalizationMap; +import net.dv8tion.jda.api.utils.data.DataObject; +import net.dv8tion.jda.internal.interactions.CommandDataImpl; + +import javax.annotation.Nonnull; +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; + +public class CommandOptionsBuilder implements SlashCommandData { + private final Command command; + private CommandDataImpl commandData; + + public CommandOptionsBuilder(Command.Type type, Command command) { + this.command = command; + + if (type == Command.Type.SLASH) { + commandData = (CommandDataImpl) Commands.slash(command.getCommandName(), command.getDescription()); + } + + if (type == Command.Type.USER) { + commandData = (CommandDataImpl) Commands.user(command.getCommandName()); + } + + if (type == Command.Type.MESSAGE) { + commandData = (CommandDataImpl) Commands.message(command.getCommandName()); + } + } + + public CommandOptions build() { + return new CommandOptions(command, commandData); + } + + @Override + public @Nonnull SlashCommandData setLocalizationFunction(@Nonnull LocalizationFunction localizationFunction) { + return commandData.setLocalizationFunction(localizationFunction); + } + + @Override + public @Nonnull SlashCommandData setName(@Nonnull String name) { + return commandData.setName(name); + } + + @Override + public @Nonnull SlashCommandData setNameLocalization(@Nonnull DiscordLocale locale, @Nonnull String name) { + return commandData.setNameLocalization(locale, name); + } + + @Override + public @Nonnull SlashCommandData setNameLocalizations(@Nonnull Map map) { + return commandData.setNameLocalizations(map); + } + + @Override + public @Nonnull SlashCommandData setDefaultPermissions(@Nonnull DefaultMemberPermissions permission) { + return commandData.setDefaultPermissions(permission); + } + + @Override + public @Nonnull SlashCommandData setGuildOnly(boolean guildOnly) { + return commandData.setGuildOnly(guildOnly); + } + + @Override + public @Nonnull SlashCommandData setNSFW(boolean nsfw) { + return commandData.setNSFW(nsfw); + } + + @Override + public @Nonnull String getName() { + return commandData.getName(); + } + + @Override + public @Nonnull LocalizationMap getNameLocalizations() { + return commandData.getNameLocalizations(); + } + + @Override + public @Nonnull net.dv8tion.jda.api.interactions.commands.Command.Type getType() { + return commandData.getType(); + } + + @Override + public @Nonnull DefaultMemberPermissions getDefaultPermissions() { + return commandData.getDefaultPermissions(); + } + + @Override + public boolean isGuildOnly() { + return commandData.isGuildOnly(); + } + + @Override + public boolean isNSFW() { + return commandData.isNSFW(); + } + + @Override + public @Nonnull SlashCommandData setDescription(@Nonnull String description) { + return commandData.setDescription(description); + } + + @Override + public @Nonnull SlashCommandData setDescriptionLocalization(@Nonnull DiscordLocale locale, @Nonnull String description) { + return commandData.setDescriptionLocalization(locale, description); + } + + @Override + public @Nonnull SlashCommandData setDescriptionLocalizations(@Nonnull Map map) { + return commandData.setDescriptionLocalizations(map); + } + + @Override + public @Nonnull String getDescription() { + return commandData.getDescription(); + } + + @Override + public @Nonnull LocalizationMap getDescriptionLocalizations() { + return commandData.getDescriptionLocalizations(); + } + + @Override + public boolean removeOptions(@Nonnull Predicate condition) { + return commandData.removeOptions(condition); + } + + @Override + public boolean removeSubcommands(@Nonnull Predicate condition) { + return commandData.removeSubcommands(condition); + } + + @Override + public boolean removeSubcommandGroups(@Nonnull Predicate condition) { + return commandData.removeSubcommandGroups(condition); + } + + @Override + public @Nonnull List getSubcommands() { + return commandData.getSubcommands(); + } + + @Override + public @Nonnull List getSubcommandGroups() { + return commandData.getSubcommandGroups(); + } + + @Override + public @Nonnull List getOptions() { + return commandData.getOptions(); + } + + @Override + public @Nonnull SlashCommandData addOptions(@Nonnull OptionData... options) { + return commandData.addOptions(options); + } + + @Override + public @Nonnull SlashCommandData addSubcommands(@Nonnull SubcommandData... subcommands) { + return commandData.addSubcommands(subcommands); + } + + @Override + public @Nonnull SlashCommandData addSubcommandGroups(@Nonnull SubcommandGroupData... groups) { + return commandData.addSubcommandGroups(groups); + } + + @Override + public @Nonnull DataObject toData() { + return commandData.toData(); + } +}