diff --git a/pom.xml b/pom.xml index 52a8c5b..04bb714 100644 --- a/pom.xml +++ b/pom.xml @@ -100,7 +100,7 @@ net.dv8tion JDA - 5.1.2 + 5.3.0 dev.arbjerg diff --git a/src/main/java/me/bobert/netneutrality/command/admin/BlacklistCommand.java b/src/main/java/me/bobert/netneutrality/command/admin/BlacklistCommand.java index 1040340..205ddac 100644 --- a/src/main/java/me/bobert/netneutrality/command/admin/BlacklistCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/admin/BlacklistCommand.java @@ -5,10 +5,10 @@ package me.bobert.netneutrality.command.admin; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractAdminCommand; +import me.bobert.netneutrality.core.command.impl.AdminCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.db.entities.OBlacklist; import me.bobert.netneutrality.db.service.BlacklistService; @@ -18,7 +18,7 @@ import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; import java.util.List; -public class BlacklistCommand extends AbstractAdminCommand { +public class BlacklistCommand extends AdminCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/admin/ReactionCommand.java b/src/main/java/me/bobert/netneutrality/command/admin/ReactionCommand.java index 42f2cd7..0eabce6 100644 --- a/src/main/java/me/bobert/netneutrality/command/admin/ReactionCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/admin/ReactionCommand.java @@ -5,10 +5,10 @@ package me.bobert.netneutrality.command.admin; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractAdminCommand; +import me.bobert.netneutrality.core.command.impl.AdminCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.core.tasks.TaskManager; import me.bobert.netneutrality.tasks.emoji.EmojiReactionRoleTask; @@ -24,7 +24,7 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; -public class ReactionCommand extends AbstractAdminCommand { +public class ReactionCommand extends AdminCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/basic/HelpCommand.java b/src/main/java/me/bobert/netneutrality/command/basic/HelpCommand.java index 5e3280f..794ba99 100644 --- a/src/main/java/me/bobert/netneutrality/command/basic/HelpCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/basic/HelpCommand.java @@ -6,8 +6,9 @@ package me.bobert.netneutrality.command.basic; */ import me.bobert.netneutrality.core.command.*; +import me.bobert.netneutrality.core.command.impl.AbstractCommand; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.core.tasks.BuiltInTask; import me.bobert.netneutrality.tasks.help.BotInfo; diff --git a/src/main/java/me/bobert/netneutrality/command/basic/PingCommand.java b/src/main/java/me/bobert/netneutrality/command/basic/PingCommand.java index 2dc8f22..801f96f 100644 --- a/src/main/java/me/bobert/netneutrality/command/basic/PingCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/basic/PingCommand.java @@ -5,10 +5,10 @@ package me.bobert.netneutrality.command.basic; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractCommand; +import me.bobert.netneutrality.core.command.impl.AbstractCommand; import me.bobert.netneutrality.core.command.CommandCategory; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; public class PingCommand extends AbstractCommand { diff --git a/src/main/java/me/bobert/netneutrality/command/bot/ConfigureCommand.java b/src/main/java/me/bobert/netneutrality/command/bot/ConfigureCommand.java index e9c9652..70891d7 100644 --- a/src/main/java/me/bobert/netneutrality/command/bot/ConfigureCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/bot/ConfigureCommand.java @@ -5,10 +5,10 @@ package me.bobert.netneutrality.command.bot; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractAdminCommand; +import me.bobert.netneutrality.core.command.impl.AdminCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.db.GSettings; import me.bobert.netneutrality.db.service.GuildService; @@ -23,7 +23,7 @@ import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder; import java.util.Map; -public class ConfigureCommand extends AbstractAdminCommand { +public class ConfigureCommand extends AdminCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/crypto/CryptoPriceCommand.java b/src/main/java/me/bobert/netneutrality/command/crypto/CryptoPriceCommand.java index f44fd99..cfb820d 100644 --- a/src/main/java/me/bobert/netneutrality/command/crypto/CryptoPriceCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/crypto/CryptoPriceCommand.java @@ -6,11 +6,11 @@ package me.bobert.netneutrality.command.crypto; */ import me.bobert.netneutrality.core.LogHandler; -import me.bobert.netneutrality.core.command.AbstractCommand; +import me.bobert.netneutrality.core.command.impl.AbstractCommand; import me.bobert.netneutrality.core.command.CommandCategory; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.http.WebModule; import net.dv8tion.jda.api.interactions.commands.OptionType; diff --git a/src/main/java/me/bobert/netneutrality/command/git/ReportIssueCommand.java b/src/main/java/me/bobert/netneutrality/command/git/ReportIssueCommand.java index 94a6670..b9c5322 100644 --- a/src/main/java/me/bobert/netneutrality/command/git/ReportIssueCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/git/ReportIssueCommand.java @@ -5,11 +5,10 @@ package me.bobert.netneutrality.command.git; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.context.command.SlashCommandContext; -import me.bobert.netneutrality.core.command.AbstractCommand; +import me.bobert.netneutrality.core.command.impl.AbstractCommand; import me.bobert.netneutrality.core.command.CommandCategory; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.http.WebModule; import me.bobert.netneutrality.tasks.git.ReportIssueTask; diff --git a/src/main/java/me/bobert/netneutrality/command/music/BitconnectCommand.java b/src/main/java/me/bobert/netneutrality/command/music/BitconnectCommand.java index b0f3065..f899d8f 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/BitconnectCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/BitconnectCommand.java @@ -6,14 +6,14 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandCategory; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; -public class BitconnectCommand extends AbstractMusicCommand { +public class BitconnectCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/ClearQueueCommand.java b/src/main/java/me/bobert/netneutrality/command/music/ClearQueueCommand.java index eb739a8..5397662 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/ClearQueueCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/ClearQueueCommand.java @@ -6,14 +6,14 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MusicUtils; -public class ClearQueueCommand extends AbstractMusicCommand { +public class ClearQueueCommand extends MusicCommand { @Override public boolean needAdmin() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/CurrentlyPlayingCommand.java b/src/main/java/me/bobert/netneutrality/command/music/CurrentlyPlayingCommand.java index 42cc979..63781fc 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/CurrentlyPlayingCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/CurrentlyPlayingCommand.java @@ -6,15 +6,15 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MessageFunction; import me.bobert.netneutrality.utils.MusicUtils; -public class CurrentlyPlayingCommand extends AbstractMusicCommand { +public class CurrentlyPlayingCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/JoinCommand.java b/src/main/java/me/bobert/netneutrality/command/music/JoinCommand.java index 459e4e2..77d36f1 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/JoinCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/JoinCommand.java @@ -6,13 +6,13 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.utils.MusicUtils; -public class JoinCommand extends AbstractMusicCommand { +public class JoinCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/LeaveCommand.java b/src/main/java/me/bobert/netneutrality/command/music/LeaveCommand.java index 6ab67af..8fe6c61 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/LeaveCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/LeaveCommand.java @@ -6,14 +6,14 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MusicUtils; -public class LeaveCommand extends AbstractMusicCommand { +public class LeaveCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/PlayCommand.java b/src/main/java/me/bobert/netneutrality/command/music/PlayCommand.java index b6bd2de..1dd2c58 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/PlayCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/PlayCommand.java @@ -6,15 +6,15 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import net.dv8tion.jda.api.interactions.commands.OptionType; -public class PlayCommand extends AbstractMusicCommand { +public class PlayCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/QueueCommand.java b/src/main/java/me/bobert/netneutrality/command/music/QueueCommand.java index 09a65ca..8280697 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/QueueCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/QueueCommand.java @@ -5,10 +5,10 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MessageFunction; @@ -18,7 +18,7 @@ import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.OptionData; import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; -public class QueueCommand extends AbstractMusicCommand { +public class QueueCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/ResumeCommand.java b/src/main/java/me/bobert/netneutrality/command/music/ResumeCommand.java index da6e9a4..4a80b34 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/ResumeCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/ResumeCommand.java @@ -4,14 +4,14 @@ package me.bobert.netneutrality.command.music;/* * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MusicUtils; -public class ResumeCommand extends AbstractMusicCommand { +public class ResumeCommand extends MusicCommand { @Override public boolean isEnabled() { return true; diff --git a/src/main/java/me/bobert/netneutrality/command/music/ShuffleCommand.java b/src/main/java/me/bobert/netneutrality/command/music/ShuffleCommand.java index a63802c..a004ff0 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/ShuffleCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/ShuffleCommand.java @@ -6,14 +6,14 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MusicUtils; -public class ShuffleCommand extends AbstractMusicCommand { +public class ShuffleCommand extends MusicCommand { @Override public boolean isEnabled() { return true; diff --git a/src/main/java/me/bobert/netneutrality/command/music/SkipCommand.java b/src/main/java/me/bobert/netneutrality/command/music/SkipCommand.java index 9dc2373..59bbba2 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/SkipCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/SkipCommand.java @@ -6,10 +6,10 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MusicUtils; @@ -17,7 +17,7 @@ import me.bobert.netneutrality.utils.UserFunction; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.OptionData; -public class SkipCommand extends AbstractMusicCommand { +public class SkipCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/StopCommand.java b/src/main/java/me/bobert/netneutrality/command/music/StopCommand.java index bc0f727..407126d 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/StopCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/StopCommand.java @@ -6,15 +6,15 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MusicUtils; import me.bobert.netneutrality.utils.UserFunction; -public class StopCommand extends AbstractMusicCommand { +public class StopCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/ViewQueueCommand.java b/src/main/java/me/bobert/netneutrality/command/music/ViewQueueCommand.java index edf78ad..767bbf8 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/ViewQueueCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/ViewQueueCommand.java @@ -5,15 +5,15 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MessageFunction; import me.bobert.netneutrality.utils.MusicUtils; -public class ViewQueueCommand extends AbstractMusicCommand { +public class ViewQueueCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/VolumeCommand.java b/src/main/java/me/bobert/netneutrality/command/music/VolumeCommand.java index 90740d7..1ab6fef 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/VolumeCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/VolumeCommand.java @@ -6,10 +6,10 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.command.options.CommandOption; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MusicUtils; @@ -17,7 +17,7 @@ import me.bobert.netneutrality.utils.UserFunction; import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.build.OptionData; -public class VolumeCommand extends AbstractMusicCommand { +public class VolumeCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/music/VoteSkipCommand.java b/src/main/java/me/bobert/netneutrality/command/music/VoteSkipCommand.java index cb08015..7889578 100644 --- a/src/main/java/me/bobert/netneutrality/command/music/VoteSkipCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/music/VoteSkipCommand.java @@ -5,14 +5,14 @@ package me.bobert.netneutrality.command.music; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMusicCommand; +import me.bobert.netneutrality.core.command.impl.MusicCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.music.MusicManager; import me.bobert.netneutrality.utils.MusicUtils; -public class VoteSkipCommand extends AbstractMusicCommand { +public class VoteSkipCommand extends MusicCommand { @Override public boolean isEnabled() { diff --git a/src/main/java/me/bobert/netneutrality/command/react/CreateEmojiReaction.java b/src/main/java/me/bobert/netneutrality/command/react/CreateEmojiReaction.java index c310c6d..a7710a4 100644 --- a/src/main/java/me/bobert/netneutrality/command/react/CreateEmojiReaction.java +++ b/src/main/java/me/bobert/netneutrality/command/react/CreateEmojiReaction.java @@ -6,7 +6,7 @@ package me.bobert.netneutrality.command.react; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMessageMenuCommand; +import me.bobert.netneutrality.core.command.impl.MessageMenuCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.core.tasks.TaskManager; @@ -14,7 +14,7 @@ import me.bobert.netneutrality.tasks.emoji.EmojiReactionRoleTask; import me.bobert.netneutrality.tasks.reaction.EmojiRoleFirstStep; import net.dv8tion.jda.api.entities.Message; -public class CreateEmojiReaction extends AbstractMessageMenuCommand { +public class CreateEmojiReaction extends MessageMenuCommand { @Override public CommandExecutionResult execute(Message target, CommandContext context) { EmojiReactionRoleTask task = TaskManager.getInstance().findTaskByPartialId(EmojiReactionRoleTask.class, target.getId()).orElse(null); diff --git a/src/main/java/me/bobert/netneutrality/command/react/ModifyEmojiReaction.java b/src/main/java/me/bobert/netneutrality/command/react/ModifyEmojiReaction.java index d1d2c9a..47d4032 100644 --- a/src/main/java/me/bobert/netneutrality/command/react/ModifyEmojiReaction.java +++ b/src/main/java/me/bobert/netneutrality/command/react/ModifyEmojiReaction.java @@ -6,7 +6,7 @@ package me.bobert.netneutrality.command.react; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.AbstractMessageMenuCommand; +import me.bobert.netneutrality.core.command.impl.MessageMenuCommand; import me.bobert.netneutrality.core.command.CommandExecutionResult; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.core.tasks.TaskManager; @@ -14,7 +14,7 @@ import me.bobert.netneutrality.tasks.emoji.EmojiReactionRoleTask; import me.bobert.netneutrality.tasks.reaction.EmojiRoleModify; import net.dv8tion.jda.api.entities.Message; -public class ModifyEmojiReaction extends AbstractMessageMenuCommand { +public class ModifyEmojiReaction extends MessageMenuCommand { @Override public CommandExecutionResult execute(Message target, CommandContext context) { diff --git a/src/main/java/me/bobert/netneutrality/core/command/Command.java b/src/main/java/me/bobert/netneutrality/core/command/Command.java index b6f3f02..08377d6 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/Command.java +++ b/src/main/java/me/bobert/netneutrality/core/command/Command.java @@ -5,7 +5,6 @@ package me.bobert.netneutrality.core.command; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; diff --git a/src/main/java/me/bobert/netneutrality/core/command/CommandContainer.java b/src/main/java/me/bobert/netneutrality/core/command/CommandContainer.java index 37e6ed7..1960f14 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/CommandContainer.java +++ b/src/main/java/me/bobert/netneutrality/core/command/CommandContainer.java @@ -5,35 +5,175 @@ package me.bobert.netneutrality.core.command; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.command.options.CommandOptions; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import net.dv8tion.jda.api.entities.channel.ChannelType; +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; +import net.dv8tion.jda.api.interactions.commands.build.SubcommandGroupData; +import net.dv8tion.jda.internal.interactions.CommandDataImpl; + +import java.util.List; +import java.util.Set; +import java.util.StringJoiner; public class CommandContainer { public static final CommandContainer NULL_COMMAND = new CommandContainer(null); private final Command command; - private CommandOptions commandOptions; + private CommandDataImpl commandData; + private List options; + private List subcommands; + private List subcommandGroups; public CommandContainer(Command command) { this.command = command; + + if (command != null) { + CommandOptionsBuilder commandOptionsBuilder = new CommandOptionsBuilder(command.getType(), command); + command.registerCommandOptions(commandOptionsBuilder); + initContainer(commandOptionsBuilder); + } } public Command getCommand() { return command; } - public CommandOptions getCommandOptions() { - return commandOptions; + public SlashCommandData getSlashCommandData() { + return commandData; } - public void init() { - initOptions(); + public List getOptions() { + return options; } - private void initOptions() { - if (command != null) { - CommandOptionsBuilder commandOptionsBuilder = new CommandOptionsBuilder(command.getType(), command); - command.registerCommandOptions(commandOptionsBuilder); - commandOptions = commandOptionsBuilder.build(); + public List getSubcommands() { + return subcommands; + } + + public List getSubcommandGroups() { + return subcommandGroups; + } + + private void initContainer(CommandOptionsBuilder builder) { + this.commandData = builder.build(); + this.options = commandData.getOptions(); + this.subcommands = commandData.getSubcommands(); + this.subcommandGroups = commandData.getSubcommandGroups(); + } + + public boolean isEmpty() { + return options.isEmpty() && subcommands.isEmpty() && subcommandGroups.isEmpty(); + } + + public String printUsage() { + StringBuilder usage = new StringBuilder(); + if (!options.isEmpty()) { + usage.append("- Usage: /").append(command.getCommandName()); + for (OptionData option : options) { + usage.append(" <").append(option.getName()).append(">"); + } + + usage.append(printOptions(options, null, false)); } + + if (!subcommands.isEmpty()) { + for (SubcommandData subcommand : subcommands) { + usage.append("- Usage: /").append(command.getCommandName()).append(" ").append(subcommand.getName()); + + for (OptionData option : subcommand.getOptions()) { + usage.append(" <").append(option.getName()).append(">"); + } + + usage.append(" (").append(subcommand.getDescription()).append(")"); + usage.append(printOptions(subcommand.getOptions(), null, false)); + + usage.append("\n"); + } + } + + if (!subcommandGroups.isEmpty()) { + for (SubcommandGroupData subcommandGroup : subcommandGroups) { + usage.append("- Subcommand: /").append(command.getCommandName()) + .append(" ").append(subcommandGroup.getName()) + .append(" (").append(subcommandGroup.getDescription()).append(")") + .append("\n"); + + for (SubcommandData subcommand : subcommandGroup.getSubcommands()) { + usage.append(" - Usage: /").append(command.getCommandName()) + .append(" ").append(subcommandGroup.getName()) + .append(" ").append(subcommand.getName()); + + for (OptionData option : subcommand.getOptions()) { + usage.append(" <").append(option.getName()).append(">"); + } + + usage.append(printOptions(subcommand.getOptions(), subcommand.getDescription(), true)); + + usage.append("\n"); + } + } + } + + if (!isEmpty()) { + usage.append("\n\n-# *: required argument"); + } + + return usage.toString(); + } + + private String printOptions(List options, String description, boolean group) { + StringBuilder usage = new StringBuilder(); + + if (description != null) { + usage.append(" (").append(description).append(")"); + } + + for (OptionData option : options) { + usage.append("\n"); + if (group) usage.append(" "); + usage.append(" - "); + if (option.isRequired()) { + usage.append("*"); + } + usage.append(option.getName()).append(": ").append(option.getDescription()); + + if (option.getMinValue() != null) { + usage.append(" [Min value: ").append(option.getMinValue().longValue()).append("]"); + } + + if (option.getMaxValue() != null) { + usage.append(" [Max value: ").append(option.getMaxValue().longValue()).append("]"); + } + + if (option.getMinLength() != null) { + usage.append(" [Min length: ").append(option.getMinLength().longValue()).append("]"); + } + + if (option.getMaxLength() != null) { + usage.append(" [Max length: ").append(option.getMaxLength().longValue()).append("]"); + } + + List choices = option.getChoices(); + if (!choices.isEmpty()) { + StringJoiner joiner = new StringJoiner(", "); + for (net.dv8tion.jda.api.interactions.commands.Command.Choice choice : choices) { + joiner.add(choice.getAsString()); + } + + usage.append(" [Available choices: ").append(joiner).append("]"); + } + + Set requiredChannelTypes = option.getChannelTypes(); + if (!requiredChannelTypes.isEmpty()) { + StringJoiner joiner = new StringJoiner(", "); + for (ChannelType type : requiredChannelTypes) { + joiner.add(type.name()); + } + + usage.append(" [Required channel types: ").append(joiner).append("]"); + } + } + + return usage.toString(); } } diff --git a/src/main/java/me/bobert/netneutrality/core/command/CommandManager.java b/src/main/java/me/bobert/netneutrality/core/command/CommandManager.java index 2d1723d..79c8607 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/CommandManager.java +++ b/src/main/java/me/bobert/netneutrality/core/command/CommandManager.java @@ -6,6 +6,7 @@ package me.bobert.netneutrality.core.command; */ import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.interactions.InteractionContextType; import net.dv8tion.jda.api.interactions.commands.build.CommandData; import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData; import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction; @@ -14,7 +15,10 @@ import org.apache.logging.log4j.Logger; import org.reflections.Reflections; import java.lang.reflect.Modifier; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; public class CommandManager { @@ -30,10 +34,6 @@ public class CommandManager { logger.info("Loaded {} commands!", commands.size()); } - public static Command getCommand(String commandString) { - return getCommandContainer(commandString).getCommand(); - } - public static CommandContainer getCommandContainer(String commandString) { return commands.getOrDefault(commandString, CommandContainer.NULL_COMMAND); } @@ -60,8 +60,6 @@ public class CommandManager { } CommandContainer container = new CommandContainer(command); - container.init(); - if (!commands.containsKey(command.getCommandName())) { commands.put(command.getCommandName(), container); } @@ -83,9 +81,9 @@ public class CommandManager { logger.debug("Registering slash command: {}", command.getCommandName()); try { - SlashCommandData data = container.getCommandOptions().getSlashCommandData(); + SlashCommandData data = container.getSlashCommandData(); data.setDefaultPermissions(command.getSlashCommandPermission()); - data.setGuildOnly(command.isGuildOnly()); + data.setContexts(command.isGuildOnly() ? Set.of(InteractionContextType.GUILD) : Set.of(InteractionContextType.GUILD, InteractionContextType.BOT_DM)); slashCommands.add(data); } catch (Exception e) { diff --git a/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptionsBuilder.java b/src/main/java/me/bobert/netneutrality/core/command/CommandOptionsBuilder.java similarity index 85% rename from src/main/java/me/bobert/netneutrality/core/command/options/CommandOptionsBuilder.java rename to src/main/java/me/bobert/netneutrality/core/command/CommandOptionsBuilder.java index 20652d4..a3ca2dd 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptionsBuilder.java +++ b/src/main/java/me/bobert/netneutrality/core/command/CommandOptionsBuilder.java @@ -1,12 +1,13 @@ -package me.bobert.netneutrality.core.command.options; +package me.bobert.netneutrality.core.command; /* * 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.IntegrationType; +import net.dv8tion.jda.api.interactions.InteractionContextType; 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; @@ -15,16 +16,16 @@ import net.dv8tion.jda.api.utils.data.DataObject; import net.dv8tion.jda.internal.interactions.CommandDataImpl; import javax.annotation.Nonnull; +import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; 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()); @@ -39,8 +40,8 @@ public class CommandOptionsBuilder implements SlashCommandData { } } - public CommandOptions build() { - return new CommandOptions(command, commandData); + public CommandDataImpl build() { + return commandData; } @Override @@ -73,6 +74,16 @@ public class CommandOptionsBuilder implements SlashCommandData { return commandData.setGuildOnly(guildOnly); } + @Override + public @Nonnull SlashCommandData setContexts(@Nonnull Collection contexts) { + return commandData.setContexts(contexts); + } + + @Override + public @Nonnull SlashCommandData setIntegrationTypes(@Nonnull Collection integrationTypes) { + return commandData.setIntegrationTypes(integrationTypes); + } + @Override public @Nonnull SlashCommandData setNSFW(boolean nsfw) { return commandData.setNSFW(nsfw); @@ -103,6 +114,16 @@ public class CommandOptionsBuilder implements SlashCommandData { return commandData.isGuildOnly(); } + @Override + public @Nonnull Set getContexts() { + return commandData.getContexts(); + } + + @Override + public @Nonnull Set getIntegrationTypes() { + return commandData.getIntegrationTypes(); + } + @Override public boolean isNSFW() { return commandData.isNSFW(); diff --git a/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java b/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java index 341c60f..0673248 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java +++ b/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java @@ -8,10 +8,8 @@ package me.bobert.netneutrality.core.command; import io.sentry.Sentry; import me.bobert.netneutrality.context.command.SlashCommandContext; import me.bobert.netneutrality.core.LogHandler; -import me.bobert.netneutrality.core.command.options.CommandOptions; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.core.context.InteractionContext; -import me.bobert.netneutrality.core.tasks.Task; import me.bobert.netneutrality.core.tasks.TaskManager; import me.bobert.netneutrality.exceptions.CommandExecutionException; import me.bobert.netneutrality.exceptions.GracefulContextError; @@ -73,7 +71,7 @@ public class CommandProcessor { return; } - if (command.getType() == Command.Type.SLASH && !checkUsage(container.getCommandOptions())) { + if (command.getType() == Command.Type.SLASH && !checkUsage(container)) { return; } @@ -123,10 +121,10 @@ public class CommandProcessor { } } - private boolean checkUsage(CommandOptions commandOptions) { - List groups = commandOptions.getSubcommandGroups(); - List subcommands = commandOptions.getSubcommands(); - List options = commandOptions.getOptions(); + private boolean checkUsage(CommandContainer container) { + List groups = container.getSubcommandGroups(); + List subcommands = container.getSubcommands(); + List options = container.getOptions(); String[] possibleCommands = Arrays.stream(context.getFullCommand().split(" ")).skip(1).toArray(String[]::new); if (possibleCommands.length == 0) { if (!groups.isEmpty()) { diff --git a/src/main/java/me/bobert/netneutrality/core/command/AbstractCommand.java b/src/main/java/me/bobert/netneutrality/core/command/impl/AbstractCommand.java similarity index 90% rename from src/main/java/me/bobert/netneutrality/core/command/AbstractCommand.java rename to src/main/java/me/bobert/netneutrality/core/command/impl/AbstractCommand.java index 439d57a..9eedddd 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/AbstractCommand.java +++ b/src/main/java/me/bobert/netneutrality/core/command/impl/AbstractCommand.java @@ -1,4 +1,4 @@ -package me.bobert.netneutrality.core.command; +package me.bobert.netneutrality.core.command.impl; /* * Copyright (c) anthorob @@ -6,6 +6,7 @@ package me.bobert.netneutrality.core.command; * https://discord.gg/qUa6zNFZsd */ +import me.bobert.netneutrality.core.command.Command; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions; diff --git a/src/main/java/me/bobert/netneutrality/core/command/AbstractAdminCommand.java b/src/main/java/me/bobert/netneutrality/core/command/impl/AdminCommand.java similarity index 59% rename from src/main/java/me/bobert/netneutrality/core/command/AbstractAdminCommand.java rename to src/main/java/me/bobert/netneutrality/core/command/impl/AdminCommand.java index b98b3e1..fb816ca 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/AbstractAdminCommand.java +++ b/src/main/java/me/bobert/netneutrality/core/command/impl/AdminCommand.java @@ -1,11 +1,13 @@ -package me.bobert.netneutrality.core.command; +package me.bobert.netneutrality.core.command.impl; /* * Copyright (c) anthorob * * https://discord.gg/qUa6zNFZsd */ -public abstract class AbstractAdminCommand extends AbstractCommand { +import me.bobert.netneutrality.core.command.CommandCategory; + +public abstract class AdminCommand extends AbstractCommand { @Override public boolean needAdmin() { diff --git a/src/main/java/me/bobert/netneutrality/core/command/AbstractMessageMenuCommand.java b/src/main/java/me/bobert/netneutrality/core/command/impl/MessageMenuCommand.java similarity index 79% rename from src/main/java/me/bobert/netneutrality/core/command/AbstractMessageMenuCommand.java rename to src/main/java/me/bobert/netneutrality/core/command/impl/MessageMenuCommand.java index 1dfc4cd..536d589 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/AbstractMessageMenuCommand.java +++ b/src/main/java/me/bobert/netneutrality/core/command/impl/MessageMenuCommand.java @@ -1,4 +1,4 @@ -package me.bobert.netneutrality.core.command; +package me.bobert.netneutrality.core.command.impl; /* * Copyright (c) anthorob @@ -7,11 +7,13 @@ package me.bobert.netneutrality.core.command; */ import me.bobert.netneutrality.context.command.MessageMenuContext; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandCategory; +import me.bobert.netneutrality.core.command.CommandExecutionResult; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import net.dv8tion.jda.api.entities.Message; -public abstract class AbstractMessageMenuCommand extends AbstractCommand { +public abstract class MessageMenuCommand extends AbstractCommand { @Override public String getDescription() { return null; diff --git a/src/main/java/me/bobert/netneutrality/core/command/AbstractMusicCommand.java b/src/main/java/me/bobert/netneutrality/core/command/impl/MusicCommand.java similarity index 92% rename from src/main/java/me/bobert/netneutrality/core/command/AbstractMusicCommand.java rename to src/main/java/me/bobert/netneutrality/core/command/impl/MusicCommand.java index a4e9c8d..9fdadec 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/AbstractMusicCommand.java +++ b/src/main/java/me/bobert/netneutrality/core/command/impl/MusicCommand.java @@ -1,10 +1,11 @@ -package me.bobert.netneutrality.core.command; +package me.bobert.netneutrality.core.command.impl; /* * Copyright (c) anthorob * * https://discord.gg/qUa6zNFZsd */ +import me.bobert.netneutrality.core.command.CommandCategory; import me.bobert.netneutrality.db.GSettings; import me.bobert.netneutrality.db.service.GuildService; import me.bobert.netneutrality.utils.UserFunction; @@ -15,7 +16,7 @@ import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; -public abstract class AbstractMusicCommand extends AbstractCommand { +public abstract class MusicCommand extends AbstractCommand { @Override public boolean needAdmin() { diff --git a/src/main/java/me/bobert/netneutrality/core/command/AbstractUserMenuCommand.java b/src/main/java/me/bobert/netneutrality/core/command/impl/UserMenuCommand.java similarity index 80% rename from src/main/java/me/bobert/netneutrality/core/command/AbstractUserMenuCommand.java rename to src/main/java/me/bobert/netneutrality/core/command/impl/UserMenuCommand.java index c9b2625..65d3b3d 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/AbstractUserMenuCommand.java +++ b/src/main/java/me/bobert/netneutrality/core/command/impl/UserMenuCommand.java @@ -1,4 +1,4 @@ -package me.bobert.netneutrality.core.command; +package me.bobert.netneutrality.core.command.impl; /* * Copyright (c) anthorob @@ -7,11 +7,12 @@ package me.bobert.netneutrality.core.command; */ import me.bobert.netneutrality.context.command.UserMenuContext; -import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder; +import me.bobert.netneutrality.core.command.CommandExecutionResult; +import me.bobert.netneutrality.core.command.CommandOptionsBuilder; import me.bobert.netneutrality.core.context.CommandContext; import net.dv8tion.jda.api.entities.User; -public abstract class AbstractUserMenuCommand extends AbstractCommand { +public abstract class UserMenuCommand extends AbstractCommand { @Override public String getDescription() { return null; diff --git a/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptions.java b/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptions.java deleted file mode 100644 index 70d55cd..0000000 --- a/src/main/java/me/bobert/netneutrality/core/command/options/CommandOptions.java +++ /dev/null @@ -1,170 +0,0 @@ -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.entities.channel.ChannelType; -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; -import net.dv8tion.jda.api.interactions.commands.build.SubcommandGroupData; -import net.dv8tion.jda.internal.interactions.CommandDataImpl; - -import java.util.List; -import java.util.Set; -import java.util.StringJoiner; - -public class CommandOptions { - private final Command command; - private final CommandDataImpl commandData; - private final List options; - private final List subcommands; - private final List subcommandGroups; - - public CommandOptions(Command command, CommandDataImpl commandData) { - this.command = command; - this.commandData = commandData; - this.options = commandData.getOptions(); - this.subcommands = commandData.getSubcommands(); - this.subcommandGroups = commandData.getSubcommandGroups(); - } - - public Command getCommand() { - return command; - } - - public SlashCommandData getSlashCommandData() { - return commandData; - } - - public List getOptions() { - return options; - } - - public List getSubcommands() { - return subcommands; - } - - public List getSubcommandGroups() { - return subcommandGroups; - } - - public boolean isEmpty() { - return options.isEmpty() && subcommands.isEmpty() && subcommandGroups.isEmpty(); - } - - public String printUsage() { - StringBuilder usage = new StringBuilder(); - if (!options.isEmpty()) { - usage.append("- Usage: /").append(command.getCommandName()); - for (OptionData option : options) { - usage.append(" <").append(option.getName()).append(">"); - } - - usage.append(printOptions(options, null, false)); - } - - if (!subcommands.isEmpty()) { - for (SubcommandData subcommand : subcommands) { - usage.append("- Usage: /").append(command.getCommandName()).append(" ").append(subcommand.getName()); - - for (OptionData option : subcommand.getOptions()) { - usage.append(" <").append(option.getName()).append(">"); - } - - usage.append(" (").append(subcommand.getDescription()).append(")"); - usage.append(printOptions(subcommand.getOptions(), null, false)); - - usage.append("\n"); - } - } - - if (!subcommandGroups.isEmpty()) { - for (SubcommandGroupData subcommandGroup : subcommandGroups) { - usage.append("- Subcommand: /").append(command.getCommandName()) - .append(" ").append(subcommandGroup.getName()) - .append(" (").append(subcommandGroup.getDescription()).append(")") - .append("\n"); - - for (SubcommandData subcommand : subcommandGroup.getSubcommands()) { - usage.append(" - Usage: /").append(command.getCommandName()) - .append(" ").append(subcommandGroup.getName()) - .append(" ").append(subcommand.getName()); - - for (OptionData option : subcommand.getOptions()) { - usage.append(" <").append(option.getName()).append(">"); - } - - usage.append(printOptions(subcommand.getOptions(), subcommand.getDescription(), true)); - - usage.append("\n"); - } - } - } - - if (!isEmpty()) { - usage.append("\n\n-# *: required argument"); - } - - return usage.toString(); - } - - private String printOptions(List options, String description, boolean group) { - StringBuilder usage = new StringBuilder(); - - if (description != null) { - usage.append(" (").append(description).append(")"); - } - - for (OptionData option : options) { - usage.append("\n"); - if (group) usage.append(" "); - usage.append(" - "); - if (option.isRequired()) { - usage.append("*"); - } - usage.append(option.getName()).append(": ").append(option.getDescription()); - - if (option.getMinValue() != null) { - usage.append(" [Min value: ").append(option.getMinValue().longValue()).append("]"); - } - - if (option.getMaxValue() != null) { - usage.append(" [Max value: ").append(option.getMaxValue().longValue()).append("]"); - } - - if (option.getMinLength() != null) { - usage.append(" [Min length: ").append(option.getMinLength().longValue()).append("]"); - } - - if (option.getMaxLength() != null) { - usage.append(" [Max length: ").append(option.getMaxLength().longValue()).append("]"); - } - - List choices = option.getChoices(); - if (!choices.isEmpty()) { - StringJoiner joiner = new StringJoiner(", "); - for (net.dv8tion.jda.api.interactions.commands.Command.Choice choice : choices) { - joiner.add(choice.getAsString()); - } - - usage.append(" [Available choices: ").append(joiner).append("]"); - } - - Set requiredChannelTypes = option.getChannelTypes(); - if (!requiredChannelTypes.isEmpty()) { - StringJoiner joiner = new StringJoiner(", "); - for (ChannelType type : requiredChannelTypes) { - joiner.add(type.name()); - } - - usage.append(" [Required channel types: ").append(joiner).append("]"); - } - } - - return usage.toString(); - } -} diff --git a/src/main/java/me/bobert/netneutrality/utils/MessageFunction.java b/src/main/java/me/bobert/netneutrality/utils/MessageFunction.java index 0586fd1..7a3a7dd 100644 --- a/src/main/java/me/bobert/netneutrality/utils/MessageFunction.java +++ b/src/main/java/me/bobert/netneutrality/utils/MessageFunction.java @@ -246,7 +246,7 @@ public class MessageFunction { if (container.getCommand().getDescription() != null) { message += "\n- Description: " + container.getCommand().getDescription(); } - message += "\n" + container.getCommandOptions().printUsage(); + message += "\n" + container.printUsage(); return message; }