Optimized command arguments parsing

This commit is contained in:
anthorob committed 2021-11-07 00:27:01 -04:00
1 parent 98d2f5d411
commit 65143eb003
25 files changed
+109 -80

No files matched your search

@@ -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<String> args = Arrays.asList(command.split(" "));
return args.size();
}
public String parseArgs(String command, int arg) {
if (command.isEmpty())
return "";
List<String> args = Arrays.asList(command.split(" "));
return args.get(arg);
}
}
@@ -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);
}
@@ -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;
@@ -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;
@@ -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;
}
}
@@ -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;
@@ -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;
@@ -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;
@@ -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 -> {
@@ -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();
@@ -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());
@@ -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());
@@ -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()) {
@@ -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();
@@ -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();
@@ -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());
@@ -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());
@@ -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();
@@ -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;
}
}
@@ -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<MMessage> messages = ((DBMessage) DBController.get("message"))
.getMessagesFromUser(user.getName(), event.getGuild().getName(), 10);
@@ -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");
@@ -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;
@@ -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);
@@ -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;
@@ -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());
}