From 65143eb003db176c7b82ab2e42d4395f21c893ef Mon Sep 17 00:00:00 2001 From: anthorob Date: Sun, 7 Nov 2021 00:27:01 -0400 Subject: [PATCH] Optimized command arguments parsing --- .../command/AbstractCommand.java | 25 -------- .../java/netneutrality/command/ICommand.java | 2 +- .../command/basic/HelpCommand.java | 2 +- .../command/basic/PingCommand.java | 4 +- .../command/bot/ConfigureCommand.java | 2 +- .../command/crypto/BitcoinPriceCommand.java | 10 ++-- .../command/crypto/EthereumPriceCommand.java | 8 +-- .../command/crypto/LitecoinPriceCommand.java | 8 +-- .../command/message/BlacklistCommand.java | 8 +-- .../command/message/PruneCommand.java | 6 +- .../command/music/BitconnectCommand.java | 2 +- .../command/music/DeleteQueueCommand.java | 2 +- .../command/music/JoinCommand.java | 2 +- .../command/music/LeaveCommand.java | 2 +- .../command/music/PlayCommand.java | 6 +- .../command/music/SkipCommand.java | 2 +- .../command/music/StopCommand.java | 2 +- .../command/music/VolumeCommand.java | 4 +- .../command/music/VoteSkipCommand.java | 58 +++++++++++++++++++ .../command/specific/DatabaseCommand.java | 14 ++--- .../command/specific/EvalMethod.java | 2 +- .../command/specific/LoggingCommand.java | 2 +- .../command/specific/SellyCommand.java | 8 +-- .../command/specific/ShutdownCommand.java | 2 +- .../command/specific/TestCommand.java | 6 +- 25 files changed, 109 insertions(+), 80 deletions(-) create mode 100644 src/main/java/netneutrality/command/music/VoteSkipCommand.java diff --git a/src/main/java/netneutrality/command/AbstractCommand.java b/src/main/java/netneutrality/command/AbstractCommand.java index 6e048da..76c1eec 100644 --- a/src/main/java/netneutrality/command/AbstractCommand.java +++ b/src/main/java/netneutrality/command/AbstractCommand.java @@ -1,14 +1,7 @@ package netneutrality.command; -import java.util.Arrays; -import java.util.List; - public abstract class AbstractCommand implements ICommand { - public AbstractCommand() { - - } - /** * @return if the command needs administrator privilege */ @@ -39,22 +32,4 @@ public abstract class AbstractCommand implements ICommand { public abstract CommandType getType(); - - public int countArgs(String command) { - if (command.isEmpty()) - return 0; - - List args = Arrays.asList(command.split(" ")); - return args.size(); - } - - public String parseArgs(String command, int arg) { - if (command.isEmpty()) - return ""; - - List args = Arrays.asList(command.split(" ")); - return args.get(arg); - } - - } diff --git a/src/main/java/netneutrality/command/ICommand.java b/src/main/java/netneutrality/command/ICommand.java index 6439c06..21b7013 100644 --- a/src/main/java/netneutrality/command/ICommand.java +++ b/src/main/java/netneutrality/command/ICommand.java @@ -12,5 +12,5 @@ public interface ICommand { /** * @param args the arguments to the command */ - String execute(MessageReceivedEvent event, String args); + String execute(MessageReceivedEvent event, String[] args); } diff --git a/src/main/java/netneutrality/command/basic/HelpCommand.java b/src/main/java/netneutrality/command/basic/HelpCommand.java index 792a9b2..098ede5 100644 --- a/src/main/java/netneutrality/command/basic/HelpCommand.java +++ b/src/main/java/netneutrality/command/basic/HelpCommand.java @@ -20,7 +20,7 @@ public class HelpCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { sendHelp(CommandManager.commands, CommandManager.commandsAlias, event.getAuthor(), event.getChannel()); return null; diff --git a/src/main/java/netneutrality/command/basic/PingCommand.java b/src/main/java/netneutrality/command/basic/PingCommand.java index 5c91b8a..1ded4c0 100644 --- a/src/main/java/netneutrality/command/basic/PingCommand.java +++ b/src/main/java/netneutrality/command/basic/PingCommand.java @@ -9,8 +9,8 @@ import netneutrality.command.Visibility; public class PingCommand extends AbstractCommand { @Override - public String execute(MessageReceivedEvent event, String args) { - if (countArgs(args) == 0) + public String execute(MessageReceivedEvent event, String[] args) { + if (args.length == 0) event.getChannel().sendMessage("Pong! [" + MusicBot.getJDA().getGatewayPing() + " ms]").queue(); return null; diff --git a/src/main/java/netneutrality/command/bot/ConfigureCommand.java b/src/main/java/netneutrality/command/bot/ConfigureCommand.java index 9918add..1ddaafe 100644 --- a/src/main/java/netneutrality/command/bot/ConfigureCommand.java +++ b/src/main/java/netneutrality/command/bot/ConfigureCommand.java @@ -54,7 +54,7 @@ public class ConfigureCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { return null; } } diff --git a/src/main/java/netneutrality/command/crypto/BitcoinPriceCommand.java b/src/main/java/netneutrality/command/crypto/BitcoinPriceCommand.java index ddc51ac..c71b70f 100644 --- a/src/main/java/netneutrality/command/crypto/BitcoinPriceCommand.java +++ b/src/main/java/netneutrality/command/crypto/BitcoinPriceCommand.java @@ -30,11 +30,11 @@ public class BitcoinPriceCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) throws JSONException, ArrayIndexOutOfBoundsException { - - if (countArgs(args) == 1) { - if (Currency.isCurrency(args.toUpperCase())) - this.currency = args.toUpperCase(); + public String execute(MessageReceivedEvent event, String[] args) throws JSONException, ArrayIndexOutOfBoundsException { + + if (args.length == 1) { + if (Currency.isCurrency(args[0].toUpperCase())) + this.currency = args[0].toUpperCase(); else { event.getTextChannel().sendMessage("Please enter a valid currency").queue(); return null; diff --git a/src/main/java/netneutrality/command/crypto/EthereumPriceCommand.java b/src/main/java/netneutrality/command/crypto/EthereumPriceCommand.java index ef24518..2f43a3d 100644 --- a/src/main/java/netneutrality/command/crypto/EthereumPriceCommand.java +++ b/src/main/java/netneutrality/command/crypto/EthereumPriceCommand.java @@ -27,11 +27,11 @@ public class EthereumPriceCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) throws JSONException, ArrayIndexOutOfBoundsException { + public String execute(MessageReceivedEvent event, String[] args) throws JSONException, ArrayIndexOutOfBoundsException { - if (countArgs(args) == 1) { - if (Currency.isCurrency(args.toUpperCase())) - this.currency = args.toUpperCase(); + if (args.length == 1) { + if (Currency.isCurrency(args[0].toUpperCase())) + this.currency = args[0].toUpperCase(); else { event.getTextChannel().sendMessage("Please enter a valid currency").queue(); return null; diff --git a/src/main/java/netneutrality/command/crypto/LitecoinPriceCommand.java b/src/main/java/netneutrality/command/crypto/LitecoinPriceCommand.java index 8b9086e..3a7efb1 100644 --- a/src/main/java/netneutrality/command/crypto/LitecoinPriceCommand.java +++ b/src/main/java/netneutrality/command/crypto/LitecoinPriceCommand.java @@ -27,11 +27,11 @@ public class LitecoinPriceCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) throws ArrayIndexOutOfBoundsException, JSONException { + public String execute(MessageReceivedEvent event, String[] args) throws ArrayIndexOutOfBoundsException, JSONException { - if (countArgs(args) == 1) { - if (Currency.isCurrency(args.toUpperCase())) - this.currency = args; + if (args.length == 1) { + if (Currency.isCurrency(args[0].toUpperCase())) + this.currency = args[0].toUpperCase(); else { event.getTextChannel().sendMessage("Please enter a valid currency").queue(); return null; diff --git a/src/main/java/netneutrality/command/message/BlacklistCommand.java b/src/main/java/netneutrality/command/message/BlacklistCommand.java index 3618cba..b1a6ce3 100644 --- a/src/main/java/netneutrality/command/message/BlacklistCommand.java +++ b/src/main/java/netneutrality/command/message/BlacklistCommand.java @@ -51,12 +51,12 @@ public class BlacklistCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { - if (countArgs(args) > 0 && countArgs(args) < 3) { - String word = (countArgs(args) == 2 ? parseArgs(args, 1) : ""); + if (args.length > 0 && args.length < 3) { + String word = (args.length == 2 ? args[1] : ""); - switch (parseArgs(args, 0)) { + switch (args[0]) { case "get": event.getTextChannel().sendMessage("Retrieving list, please wait...").queue(t -> { diff --git a/src/main/java/netneutrality/command/message/PruneCommand.java b/src/main/java/netneutrality/command/message/PruneCommand.java index 6fda00e..f8645a6 100644 --- a/src/main/java/netneutrality/command/message/PruneCommand.java +++ b/src/main/java/netneutrality/command/message/PruneCommand.java @@ -49,9 +49,9 @@ public class PruneCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { - if (countArgs(args) == 1) - ChannelFunction.bulkDeleteMessage(event.getTextChannel(), Integer.parseInt(args)); + public String execute(MessageReceivedEvent event, String[] args) { + if (args.length == 1) + ChannelFunction.bulkDeleteMessage(event.getTextChannel(), Integer.parseInt(args[0])); else event.getTextChannel().sendMessage("Failed to delete messages!").queue(); diff --git a/src/main/java/netneutrality/command/music/BitconnectCommand.java b/src/main/java/netneutrality/command/music/BitconnectCommand.java index 896c31b..969ddd7 100644 --- a/src/main/java/netneutrality/command/music/BitconnectCommand.java +++ b/src/main/java/netneutrality/command/music/BitconnectCommand.java @@ -56,7 +56,7 @@ public class BitconnectCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { Member member = event.getMember(); MusicManager player = MusicManager.get(event.getGuild()); diff --git a/src/main/java/netneutrality/command/music/DeleteQueueCommand.java b/src/main/java/netneutrality/command/music/DeleteQueueCommand.java index 2b20368..ce8f8a2 100644 --- a/src/main/java/netneutrality/command/music/DeleteQueueCommand.java +++ b/src/main/java/netneutrality/command/music/DeleteQueueCommand.java @@ -56,7 +56,7 @@ public class DeleteQueueCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { Member member = event.getMember(); MusicManager player = MusicManager.get(event.getGuild()); diff --git a/src/main/java/netneutrality/command/music/JoinCommand.java b/src/main/java/netneutrality/command/music/JoinCommand.java index 3667fbe..9a64153 100644 --- a/src/main/java/netneutrality/command/music/JoinCommand.java +++ b/src/main/java/netneutrality/command/music/JoinCommand.java @@ -56,7 +56,7 @@ public class JoinCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { Member member = event.getMember(); MusicManager player = MusicManager.get(event.getGuild()); if (member.getVoiceState().inVoiceChannel()) { diff --git a/src/main/java/netneutrality/command/music/LeaveCommand.java b/src/main/java/netneutrality/command/music/LeaveCommand.java index 3bb094d..10786c2 100644 --- a/src/main/java/netneutrality/command/music/LeaveCommand.java +++ b/src/main/java/netneutrality/command/music/LeaveCommand.java @@ -56,7 +56,7 @@ public class LeaveCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { Member member = event.getMember(); MusicManager player = MusicManager.get(event.getGuild()); VoiceChannel vChannel = member.getVoiceState().getChannel(); diff --git a/src/main/java/netneutrality/command/music/PlayCommand.java b/src/main/java/netneutrality/command/music/PlayCommand.java index f8c87e2..7d85dd0 100644 --- a/src/main/java/netneutrality/command/music/PlayCommand.java +++ b/src/main/java/netneutrality/command/music/PlayCommand.java @@ -56,7 +56,7 @@ public class PlayCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { Member member = event.getMember(); MusicManager player = MusicManager.get(event.getGuild()); @@ -67,14 +67,14 @@ public class PlayCommand extends AbstractCommand { if (player.isConnectedTo(vChannel)) { event.getMessage().delete().queue(); - player.play(args, event.getTextChannel(), event.getMember(), false); + player.play(args[0], event.getTextChannel(), event.getMember(), false); } else event.getTextChannel().sendMessage("Not in your voice channel").queue(); } else { player.connect(vChannel); event.getMessage().delete().queue(); - player.play(args, event.getTextChannel(), event.getMember(), false); + player.play(args[0], event.getTextChannel(), event.getMember(), false); } } else event.getTextChannel().sendMessage("You are not in a voice channel").queue(); diff --git a/src/main/java/netneutrality/command/music/SkipCommand.java b/src/main/java/netneutrality/command/music/SkipCommand.java index cf031ab..8c48bdf 100644 --- a/src/main/java/netneutrality/command/music/SkipCommand.java +++ b/src/main/java/netneutrality/command/music/SkipCommand.java @@ -56,7 +56,7 @@ public class SkipCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { Member member = event.getMember(); MusicManager player = MusicManager.get(event.getGuild()); diff --git a/src/main/java/netneutrality/command/music/StopCommand.java b/src/main/java/netneutrality/command/music/StopCommand.java index 027b34b..2fea9b3 100644 --- a/src/main/java/netneutrality/command/music/StopCommand.java +++ b/src/main/java/netneutrality/command/music/StopCommand.java @@ -56,7 +56,7 @@ public class StopCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { Member member = event.getMember(); MusicManager player = MusicManager.get(event.getGuild()); diff --git a/src/main/java/netneutrality/command/music/VolumeCommand.java b/src/main/java/netneutrality/command/music/VolumeCommand.java index fec6c46..aa6daa8 100644 --- a/src/main/java/netneutrality/command/music/VolumeCommand.java +++ b/src/main/java/netneutrality/command/music/VolumeCommand.java @@ -56,7 +56,7 @@ public class VolumeCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { Member member = event.getMember(); MusicManager player = MusicManager.get(event.getGuild()); @@ -67,7 +67,7 @@ public class VolumeCommand extends AbstractCommand { if (player.isConnectedTo(vChannel)) { try { - int volume = Integer.parseInt(args.split(" ")[0]); + int volume = Integer.parseInt(args[0]); player.setVolume(volume); } catch (NumberFormatException e) { e.printStackTrace(); diff --git a/src/main/java/netneutrality/command/music/VoteSkipCommand.java b/src/main/java/netneutrality/command/music/VoteSkipCommand.java new file mode 100644 index 0000000..ca36281 --- /dev/null +++ b/src/main/java/netneutrality/command/music/VoteSkipCommand.java @@ -0,0 +1,58 @@ +package netneutrality.command.music;/* + * Copyright (c) anthorob + * + * https://xtremcommunity.com/ + * https://discord.gg/CdFcyQ + */ + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import netneutrality.command.AbstractCommand; +import netneutrality.command.CommandType; +import netneutrality.command.Visibility; + +public class VoteSkipCommand extends AbstractCommand { + @Override + public boolean needAdmin() { + return false; + } + + @Override + public boolean isEnabled() { + return false; + } + + @Override + public String getCommand() { + return null; + } + + @Override + public String[] getAlias() { + return new String[0]; + } + + @Override + public String getUsage() { + return null; + } + + @Override + public String getDescription() { + return null; + } + + @Override + public Visibility getVisibility() { + return null; + } + + @Override + public CommandType getType() { + return null; + } + + @Override + public String execute(MessageReceivedEvent event, String[] args) { + return null; + } +} diff --git a/src/main/java/netneutrality/command/specific/DatabaseCommand.java b/src/main/java/netneutrality/command/specific/DatabaseCommand.java index 575658c..cf92c7f 100644 --- a/src/main/java/netneutrality/command/specific/DatabaseCommand.java +++ b/src/main/java/netneutrality/command/specific/DatabaseCommand.java @@ -61,7 +61,7 @@ public class DatabaseCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { //TODO: Clean up the mess event.getMessage().delete().queue(); @@ -69,26 +69,26 @@ public class DatabaseCommand extends AbstractCommand { if (!event.getAuthor().getDiscriminator().equals(Settings.getInstance().getCreator().getDiscriminator())) return null; - if (countArgs(args) > 0) { - switch (parseArgs(args, 0)) { + if (args.length > 0) { + switch (args[0]) { case "message": - if (countArgs(args) > 1) { + if (args.length > 1) { - MMessage message = ((DBMessage) DBController.get("message")).getMessage(parseArgs(args, 1)); + MMessage message = ((DBMessage) DBController.get("message")).getMessage(args[1]); if (message != null) { EmbedBuilder embed = new EmbedBuilder(); embed.setColor(Color.BLUE); embed.setTimestamp( DateTimeFormatter.ofPattern(Settings.getInstance().DATETIMEFORMAT).parse(message.getDateSent())); - embed.setFooter("Guild : " + message.getServerName() + " | ID : " + message.getMessageId(), null); + embed.setFooter("Guild : " + message.getServerId() + " | ID : " + message.getMessageId(), null); embed.setDescription( "Message from " + message.getSender() + " on the channel " + message.getChannelName()); embed.addField("Message: ", "" + message.getMessage(), false); event.getTextChannel().sendMessage(embed.build()).queue(); } else { - User user = event.getJDA().getUserById(parseArgs(args, 1)); + User user = event.getJDA().getUserById(args[1]); if (user != null) { ArrayList messages = ((DBMessage) DBController.get("message")) .getMessagesFromUser(user.getName(), event.getGuild().getName(), 10); diff --git a/src/main/java/netneutrality/command/specific/EvalMethod.java b/src/main/java/netneutrality/command/specific/EvalMethod.java index 9b9677a..26ff480 100644 --- a/src/main/java/netneutrality/command/specific/EvalMethod.java +++ b/src/main/java/netneutrality/command/specific/EvalMethod.java @@ -60,7 +60,7 @@ public class EvalMethod extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { if (event.getAuthor().getId().equals(Settings.getInstance().getCreator().getId())) { ScriptEngine se = new ScriptEngineManager().getEngineByName("Nashorn"); diff --git a/src/main/java/netneutrality/command/specific/LoggingCommand.java b/src/main/java/netneutrality/command/specific/LoggingCommand.java index 3ea3b70..19d7455 100644 --- a/src/main/java/netneutrality/command/specific/LoggingCommand.java +++ b/src/main/java/netneutrality/command/specific/LoggingCommand.java @@ -52,7 +52,7 @@ public class LoggingCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { return null; diff --git a/src/main/java/netneutrality/command/specific/SellyCommand.java b/src/main/java/netneutrality/command/specific/SellyCommand.java index cd30092..5432075 100644 --- a/src/main/java/netneutrality/command/specific/SellyCommand.java +++ b/src/main/java/netneutrality/command/specific/SellyCommand.java @@ -60,7 +60,7 @@ public class SellyCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { String sellyEmail = ((DBSettings) DBController.get("settings")).getSettingsByKey("selly_email"); String sellyKey = ((DBSettings) DBController.get("settings")).getSettingsByKey(""); @@ -70,9 +70,9 @@ public class SellyCommand extends AbstractCommand { System.out.println(selly.getProducts().toString()); - if (countArgs(args) > 1) { - String email = parseArgs(args, 0); - String id = parseArgs(args, 1); + if (args.length > 1) { + String email = args[0]; + String id = args[1]; if (orders.containsKey(id)) { MSellyOrder order = orders.get(id); diff --git a/src/main/java/netneutrality/command/specific/ShutdownCommand.java b/src/main/java/netneutrality/command/specific/ShutdownCommand.java index 1c6432a..d053765 100644 --- a/src/main/java/netneutrality/command/specific/ShutdownCommand.java +++ b/src/main/java/netneutrality/command/specific/ShutdownCommand.java @@ -48,7 +48,7 @@ public class ShutdownCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { event.getJDA().shutdown(); System.exit(0); return null; diff --git a/src/main/java/netneutrality/command/specific/TestCommand.java b/src/main/java/netneutrality/command/specific/TestCommand.java index 076b24c..fffee93 100644 --- a/src/main/java/netneutrality/command/specific/TestCommand.java +++ b/src/main/java/netneutrality/command/specific/TestCommand.java @@ -15,10 +15,6 @@ import netneutrality.utils.Settings; public class TestCommand extends AbstractCommand { - public TestCommand() { - - } - @Override public boolean needAdmin() { return true; @@ -60,7 +56,7 @@ public class TestCommand extends AbstractCommand { } @Override - public String execute(MessageReceivedEvent event, String args) { + public String execute(MessageReceivedEvent event, String[] args) { if (event.getAuthor().getDiscriminator().equals(Settings.getInstance().getCreator().getDiscriminator())) { MessageFunction.isStartingWithMention(event.getMessage()); }