From 92842e12bf3a1af871f353272faa91ecda6ac458 Mon Sep 17 00:00:00 2001 From: deepCurse Date: Thu, 2 Dec 2021 00:38:10 -0400 Subject: [PATCH 1/7] final commit for tonight aaaaaaaaaaaaaaaaaaaaa --- .../nopalmo/command/GuildCommand.java | 5 +- .../nopalmo/command/guildCommand/Ping.java | 43 ++++++- src/pkg/deepCurse/nopalmo/global/Tools.java | 7 ++ .../nopalmo/manager/CommandBlob.java | 34 +++++- .../nopalmo/manager/GuildCommandBlob.java | 17 +++ .../nopalmo/manager/GuildCommandManager.java | 106 ++++++++++++------ .../simpleLoggingGarbage/core/Log.java | 22 +++- src/services/CTimer.java | 22 ++++ src/services/ConsoleOut.java | 72 ++++++++++++ src/services/UptimePing.java | 51 +++++++++ 10 files changed, 334 insertions(+), 45 deletions(-) create mode 100644 src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java create mode 100644 src/services/CTimer.java create mode 100644 src/services/ConsoleOut.java create mode 100644 src/services/UptimePing.java diff --git a/src/pkg/deepCurse/nopalmo/command/GuildCommand.java b/src/pkg/deepCurse/nopalmo/command/GuildCommand.java index 81ec544..45c5801 100644 --- a/src/pkg/deepCurse/nopalmo/command/GuildCommand.java +++ b/src/pkg/deepCurse/nopalmo/command/GuildCommand.java @@ -1,13 +1,12 @@ package pkg.deepCurse.nopalmo.command; import net.dv8tion.jda.api.Permission; -import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; -import pkg.deepCurse.nopalmo.manager.CommandBlob; +import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; import pkg.deepCurse.nopalmo.manager.GuildCommandManager; public abstract class GuildCommand { - public abstract void run(CommandBlob blob, GuildMessageReceivedEvent guildMessage, GuildCommandManager commandManager) throws Exception; + public abstract void run(GuildCommandBlob blob, GuildCommandManager commandManager) throws Exception; public abstract String[] getCommandCalls(); diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java index 79c0b80..e834799 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java @@ -1,19 +1,53 @@ package pkg.deepCurse.nopalmo.command.guildCommand; +import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; import pkg.deepCurse.nopalmo.command.GuildCommand; -import pkg.deepCurse.nopalmo.database.DatabaseTools; -import pkg.deepCurse.nopalmo.manager.CommandBlob; +import pkg.deepCurse.nopalmo.core.Boot; +import pkg.deepCurse.nopalmo.global.Tools; +import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; import pkg.deepCurse.nopalmo.manager.GuildCommandManager; public class Ping extends GuildCommand { @Override - public void run(CommandBlob blob, GuildMessageReceivedEvent guildMessage, GuildCommandManager commandManager) + public void run(GuildCommandBlob blob, GuildCommandManager commandManager) throws Exception { - DatabaseTools.Tools.Guild.Prefix.createPrefix(guildMessage.getGuild().getIdLong(), blob.getArgs().get(0)); + GuildMessageReceivedEvent event = blob.getGuildMessageEvent(); + + TextChannel channel = event.getChannel(); + + channel.sendMessage("You are: " + blob.getUserID()).queue(); + if (blob.getArgs().size() == 0) { + // new Main(); + channel.sendMessage("Pong!\n" + event.getJDA().getGatewayPing() + "ms\n" + // + "Sorry if the ping is too high, im currently hosting on an under powered + // laptop out in the countryside...\n" + // + "This will be fixed in at most 2 days..." + ).queue(); + // long pang = Main.bot.getGatewayPing(); + + } else if (blob.getArgs().get(0).contentEquals("all")) { + + channel.sendMessage("Gathering data...").queue(msg -> { + try { + long timeToProcess = System.currentTimeMillis(); + + String out = "Pong!\n" + "Google: " + services.UptimePing.sendPing("www.google.com") + "ms\n" + + "JDA Gateway: " + event.getJDA().getGatewayPing() + "ms\n" + "www.discord.com: " + + services.UptimePing.sendPing("www.discord.com") + "ms"; + + + msg.editMessage(out + "\nTime to process: " + (timeToProcess - System.currentTimeMillis()) + "ms").queue(); + } catch (Exception e) { + + } + + }); + } else + Tools.wrongUsage(channel, this); } @Override @@ -25,4 +59,5 @@ public class Ping extends GuildCommand { public HelpPage getHelpPage() { return HelpPage.Info; } + } diff --git a/src/pkg/deepCurse/nopalmo/global/Tools.java b/src/pkg/deepCurse/nopalmo/global/Tools.java index 68ec254..6d4f89b 100644 --- a/src/pkg/deepCurse/nopalmo/global/Tools.java +++ b/src/pkg/deepCurse/nopalmo/global/Tools.java @@ -1,5 +1,12 @@ package pkg.deepCurse.nopalmo.global; +import net.dv8tion.jda.api.entities.TextChannel; +import pkg.deepCurse.nopalmo.command.GuildCommand; + public class Tools { + public static void wrongUsage(TextChannel tc, GuildCommand c) { + tc.sendMessage("Wrong Command Usage!\n" + c.getCommandName()).queue(); + } + } diff --git a/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java b/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java index 05752ed..bcad74a 100644 --- a/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java +++ b/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java @@ -2,13 +2,29 @@ package pkg.deepCurse.nopalmo.manager; import java.util.ArrayList; -public class CommandBlob { +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.events.Event; + +public abstract class CommandBlob { private String modifiedRaw = null; private String modified = null; private ArrayList args = null; + protected long userID = 0; + + Event event = null; + + @Deprecated + public CommandBlob(Event event) { + this.event = event; + } + + public Event getEvent() { + return event; + } + public String getModifiedMessageContents() { return this.modified; } @@ -20,5 +36,21 @@ public class CommandBlob { public ArrayList getArgs() { return args; } + + public void setUser(long userID) { + this.userID = userID; + } + + public long getUserID() { + return this.userID; + } + + public void setJDA(JDA bot) { + + } + + public void setArgs(ArrayList newArguments) { + this.args = newArguments; + } } diff --git a/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java b/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java new file mode 100644 index 0000000..a221eec --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java @@ -0,0 +1,17 @@ +package pkg.deepCurse.nopalmo.manager; + +import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; + +public class GuildCommandBlob extends CommandBlob { + + @SuppressWarnings("deprecation") + public GuildCommandBlob(GuildMessageReceivedEvent event) { + super(event); + setUser(event.getMessage().getAuthor().getIdLong()); + } + + public GuildMessageReceivedEvent getGuildMessageEvent() { + return (GuildMessageReceivedEvent) this.event; + } + +} diff --git a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java index c8e9cb2..9b958e8 100644 --- a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java +++ b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java @@ -3,8 +3,10 @@ package pkg.deepCurse.nopalmo.manager; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.Executors; @@ -19,7 +21,7 @@ import pkg.deepCurse.nopalmo.database.DatabaseTools; public class GuildCommandManager { private final Map guildCommandMap = new HashMap<>(); - Executor executor = null; + private static Executor executor = null; public GuildCommandManager() { init(); @@ -58,42 +60,80 @@ public class GuildCommandManager { .split("\\s+"); final String command = split[0].toLowerCase(); - executor.execute(() -> { - long commandStartTime = System.currentTimeMillis(); + if (guildCommandMap.containsKey(command)) { + final List args = Arrays.asList(split).subList(1, split.length); - try { - - ArrayList newArguments = new ArrayList(); - - ArrayList extractedFlags = new ArrayList(); - - } catch (Exception e) { - if (Boot.isProd) { - guildMessage.getChannel().sendMessage("```\n" + e + "```").queue(); - } else { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - e.printStackTrace(pw); - guildMessage.getChannel().sendMessage("```\n" + sw.toString() + "```").queue(); - System.err.println("Exception caught in: " + e.toString()); - e.printStackTrace(); - } - } catch (Throwable t) { + executor.execute(() -> { + long commandStartTime = System.currentTimeMillis(); + + try { + ArrayList newArguments = new ArrayList(); + // ArrayList commandFlags = new ArrayList(); + // ArrayList extractedFlags = new ArrayList(); // not needed currently, remnant idea of bash-ish + + GuildCommandBlob commandBlob = new GuildCommandBlob(guildMessage); + + boolean printTime = false; + byte argSkipCount = 0; + + for (String x : args) { + switch (x) { + case "\\time": + printTime = true; + break; + case "\\perm": + // commandFlags.add("user:380045419381784576"); + commandBlob.setUser(380045419381784576L); + break; + case "\\del": + guildMessage.getMessage().delete().queue(); + break; + default: + if (argSkipCount<=0) { + newArguments.add(x); + } + } + + } + + commandBlob.setArgs(newArguments); + + guildCommandMap.get(command).run(commandBlob, this); + + if (printTime) { + guildMessage.getChannel() + .sendMessage("Time to run: " + (commandStartTime - System.currentTimeMillis()) + "ms") + .queue(); + } + + } catch (Exception e) { + if (Boot.isProd) { + guildMessage.getChannel().sendMessage("```\n" + e + "```").queue(); + } else { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + e.printStackTrace(pw); + guildMessage.getChannel().sendMessage("```\n" + sw.toString() + "```").queue(); + System.err.println("Exception caught in: " + e.toString()); + e.printStackTrace(); + } + } catch (Throwable t) { + + if (Boot.isProd) { + guildMessage.getChannel().sendMessage("```\n" + t + "```").queue(); + } else { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + t.printStackTrace(pw); + guildMessage.getChannel().sendMessage("```\n" + sw.toString() + "```").queue(); + System.err.println("Error caught in: " + t.toString()); + t.printStackTrace(); + } - if (Boot.isProd) { - guildMessage.getChannel().sendMessage("```\n" + t + "```").queue(); - } else { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - t.printStackTrace(pw); - guildMessage.getChannel().sendMessage("```\n" + sw.toString() + "```").queue(); - System.err.println("Error caught in: " + t.toString()); - t.printStackTrace(); } - } - - }); + }); + } } } diff --git a/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java b/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java index f7224d0..1ca6c37 100644 --- a/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java +++ b/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java @@ -2,6 +2,8 @@ package pkg.deepCurse.simpleLoggingGarbage.core; import javax.security.auth.login.LoginException; +import pkg.deepCurse.nopalmo.core.Boot; + /** * this class exists for the sole reason of im lazy, as far as i know, this is * really bad practice and i will replace it at some point, or at least upgrade @@ -13,17 +15,29 @@ public class Log { public static int loggerLevel = 0; - //@formatter:off public static boolean bootEnabled = true; + public static boolean guildCommandManagerEnabled = true; + public static void boot(String text) { - boot(text,0); + boot(text, 0); } + public static void boot(String text, int level) { if (bootEnabled && level <= loggerLevel) { - System.out.println(text); + System.out.println(Boot.class + ": " + text); } } - //@formatter:on + public static void crash(Exception e) { } + + public static void guildCommandManager(String text) { + guildCommandManager(text); + } + + public static void guildCommandManager(String text, int level) { + if (guildCommandManagerEnabled && level <= loggerLevel) { + System.out.println(Boot.class + ": " + text); + } + } } diff --git a/src/services/CTimer.java b/src/services/CTimer.java new file mode 100644 index 0000000..02de8c5 --- /dev/null +++ b/src/services/CTimer.java @@ -0,0 +1,22 @@ +package services; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.Serializable; + +public class CTimer extends Object implements Serializable { + + private static final long serialVersionUID = 1861304556437295528L; + + int delay = 1000; // milliseconds + int timerResetCount; + ActionListener taskPerformer = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + System.out.print("timer: " + timerResetCount); + timerResetCount += 1; + } + + }; +} diff --git a/src/services/ConsoleOut.java b/src/services/ConsoleOut.java new file mode 100644 index 0000000..664dad0 --- /dev/null +++ b/src/services/ConsoleOut.java @@ -0,0 +1,72 @@ +package services; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; +import java.util.Arrays; +import java.util.List; + +public class ConsoleOut { + private ByteArrayOutputStream baos; + private PrintStream previous; + private boolean capturing; + + public void start() { + if (capturing) { + return; + } + + capturing = true; + previous = System.out; + baos = new ByteArrayOutputStream(); + + OutputStream outputStreamCombiner = new OutputStreamCombiner(Arrays.asList(previous, baos)); + PrintStream custom = new PrintStream(outputStreamCombiner); + + System.setOut(custom); + } + + public String stop() { + if (!capturing) { + return ""; + } + + System.setOut(previous); + + String capturedValue = baos.toString(); + + baos = null; + previous = null; + capturing = false; + + return capturedValue; + } + + private static class OutputStreamCombiner extends OutputStream { + private List outputStreams; + + public OutputStreamCombiner(List outputStreams) { + this.outputStreams = outputStreams; + } + + public void write(int b) throws IOException { + for (OutputStream os : outputStreams) { + os.write(b); + } + } + + public void flush() throws IOException { + for (OutputStream os : outputStreams) { + os.flush(); + } + } + + public void close() throws IOException { + for (OutputStream os : outputStreams) { + os.close(); + } + } + } + +} diff --git a/src/services/UptimePing.java b/src/services/UptimePing.java new file mode 100644 index 0000000..40425ce --- /dev/null +++ b/src/services/UptimePing.java @@ -0,0 +1,51 @@ +package services; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.UnknownHostException; +import java.nio.channels.SocketChannel; +import java.util.Date; + +public class UptimePing { + + public static long sendPing(String IP) throws UnknownHostException, IOException { + /* + * StopWatch stopWatch = new StopWatch(); stopWatch.start(); InetAddress sender + * = InetAddress.getByName(IP); System.out.println("Pinging: " + IP); + * stopWatch.stop(); long timeP = stopWatch.getTime(TimeUnit.MICROSECONDS); + * System.out.println(timeP); if + * (sender.isReachable(5000)){//.isReachable(5000)) { + * System.out.println("Successfully pinged: " + IP); return timeP; } else { + * System.out.println("Failed to ping: " + IP); return -1; } + */ + try { + int port = 80; + long timeToRespond = 0; + + InetAddress inetAddress = InetAddress.getByName(IP); + InetSocketAddress socketAddress = new InetSocketAddress(inetAddress, port); + + SocketChannel sc = SocketChannel.open(); + sc.configureBlocking(true); + + Date start = new Date(); + if (sc.connect(socketAddress)) { + Date stop = new Date(); + timeToRespond = (stop.getTime() - start.getTime()); + + } + + System.out.println("fix me"); + + if (socketAddress.getAddress() == null) { + return -1; + } else { + return timeToRespond; + } + } catch (IOException ex) { + System.out.println(ex.getMessage()); + return -1; + } + } +} From 4e055e554209d0a4f33a6ea9ec12972872bd3e6a Mon Sep 17 00:00:00 2001 From: deepCurse Date: Thu, 2 Dec 2021 10:49:45 -0400 Subject: [PATCH 2/7] testing gpg --- src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java index e834799..ba4aa39 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java @@ -18,7 +18,7 @@ public class Ping extends GuildCommand { TextChannel channel = event.getChannel(); - channel.sendMessage("You are: " + blob.getUserID()).queue(); + // channel.sendMessage("You are: " + blob.getUserID()).queue(); if (blob.getArgs().size() == 0) { // new Main(); From 10a19138d081a9ac77fe834150ff3b16bd6c8c7f Mon Sep 17 00:00:00 2001 From: deepCurse Date: Thu, 2 Dec 2021 10:54:11 -0400 Subject: [PATCH 3/7] hhhhhhh --- src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java index ba4aa39..e834799 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java @@ -18,7 +18,7 @@ public class Ping extends GuildCommand { TextChannel channel = event.getChannel(); - // channel.sendMessage("You are: " + blob.getUserID()).queue(); + channel.sendMessage("You are: " + blob.getUserID()).queue(); if (blob.getArgs().size() == 0) { // new Main(); From 0c90d78b644e8fe70498f1875f6de370b1df13b9 Mon Sep 17 00:00:00 2001 From: deepCurse Date: Thu, 2 Dec 2021 21:45:41 -0400 Subject: [PATCH 4/7] h --- .../command/guildCommand/info/Help.java | 199 ++++++++++++++++++ .../command/guildCommand/{ => info}/Ping.java | 2 +- 2 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java rename src/pkg/deepCurse/nopalmo/command/guildCommand/{ => info}/Ping.java (97%) diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java new file mode 100644 index 0000000..884c0ac --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java @@ -0,0 +1,199 @@ +package pkg.deepCurse.nopalmo.command.guildCommand.info; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +import core.Global; +import core.enums.HelpPage; +import core.listeners.Command; +import core.listeners.CommandManager; +import core.tools.Tools; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; + +public class Help implements Command { + public final CommandManager manager; + + public Help(CommandManager m) { + this.manager = m; + } + + @Override + public void run(List args, GuildMessageReceivedEvent event, ArrayList devList) throws Exception { + // TextChannel channel = event.getChannel(); + // Member user = event.getMember(); + // if (Tools.devIdCheck(null, user.getId(), channel, null)) { + if (args.size() > 1) { + Tools.wrongUsage(event.getChannel(), this); + return; + } + if (args.isEmpty()) { + EmbedBuilder embed = new EmbedBuilder().setTitle("Commands:"); + + for (HelpPage i : HelpPage.values()) { + if (i != HelpPage.DEV) { + StringBuilder pageData = new StringBuilder(); + + for (Command command : manager.getCommands()) { + if (!command.isHidden() & command.getPage() != HelpPage.EGG) { + if (command.getPage() == i) { + + if (!pageData.toString().contains(command.getName())) { + pageData.append("`" + command.getName() + "`\n"); + } + + } + } + } + if (!pageData.toString().isBlank()) { + embed.addField(i.name() + ": ", pageData.toString(), true); + } + // pageData.delete(0, pageData.length()); + } + } + + StringBuilder sB = new StringBuilder(); + + sB.append("`manual`\n"); + sB.append("`ping`\n"); + sB.append("`support`\n"); + // sB.append("`"+Global.Prefix+"\n"); + + embed.addField("Information:", "Commands to take note of:\n" + sB, false); + + // embed.addField("Commands : ", "`"+sB.toString()+"`\n", true); + // desc.append("`").append(sB).append("`\n"); + + // embed.addBlankField(true); + // embed.setFooter("Command list requested by: "+event.getAuthor().getAsTag(), + // event.getAuthor().getEffectiveAvatarUrl()); + + embed.setFooter(event.getMember().getEffectiveName(), event.getMember().getUser().getEffectiveAvatarUrl()); + embed.setTimestamp(Instant.now()); + embed.setColor(Global.embedColor); + if (embed.isValidLength()) { + event.getChannel().sendMessage(embed.build()).queue(); + } else { + event.getChannel() + .sendMessage( + "Critical error!\nEmbed max size exceeded, please report this to the devs immediately") + .queue(); + } + if (new Random().nextLong() == 69420l) { // i wonder who will find this, also, if you read the source to + // find this, shhhhhhhh - deepCurse + event.getChannel().sendMessage("we will rise above you humans") + .queue(msg -> msg.delete().queueAfter(300, TimeUnit.MILLISECONDS)); + } + return; + } + try { + Command command = manager.getCommand(String.join("", args)); + + // event.getChannel().sendMessage("Command help for `" + command.commandName() + + // "`:\n\tUsage: "+ command.usageString() + "\n" + + // command.helpString()).queue(); + if (!command.isHidden() & command.getPage() != HelpPage.EGG) { + EmbedBuilder eB = new EmbedBuilder(); + eB.setTitle("Help results for: " + command.getName()); + if (command.getHelp() != null) { + eB.addField("Help info:", command.getHelp(), false); + } + eB.addField("Usage:", command.getUsage(), false); + eB.setFooter("Page: " + command.getPage().toString()); + String alias = "`"; + for (int i = 1; i < command.getCalls().length; i++) { + + if (i == 1) { + alias += command.getCalls()[i]; + } else { + alias += ", " + command.getCalls()[i]; + } + } + alias += "`"; + + String endAilias = ""; + + if (!alias.contentEquals("``")) { + endAilias = "Aliases: " + alias + "\n"; + } else { + endAilias = "Aliases: none\n"; + } + eB.setColor(Global.embedColor); + StringBuilder sB = new StringBuilder(); + sB.append(endAilias); + try { + sB.append("Required Permission: " + command.getRequiredPermission().getName()+"\n"); + } catch (NullPointerException e) { + }if(command.getTimeout()>0) { + sB.append("Usage Timeout: "+command.getTimeout()+"\n"); + } + sB.append("Premium: "+command.isPremium()+"\n"); + eB.addField("Misc", sB.toString(), false); + event.getChannel().sendMessage(eB.build()).queue(); + } else { + throw new NullPointerException("Invalid input"); + } + + } catch (java.lang.NullPointerException e) { + e.printStackTrace(); + event.getChannel().sendMessage("The command `" + String.join("", args) + "` does not exist!\n" + "Use `" + + Global.Prefix + getCalls()[0] + "` for a list of all my commands!").queue(); + return; + + } + + // } + // https://download.java.net/java/GA/jdk16/7863447f0ab643c585b9bdebf67c69db/36/GPL/openjdk-16_linux-x64_bin.tar.gz + } + + @Override + public boolean isHidden() { + return false; + } + + @Override + public HelpPage getPage() { + return HelpPage.Info; + } + + @Override + public String[] getCalls() { + + return new String[] { "help", "h" }; + } + + @Override + public String getHelp() { + + return "The help command, it seems like you already know how to use it. . ."; + } + + @Override + public Permission getRequiredPermission() { + return Permission.MESSAGE_WRITE; + } + + @Override + public String getName() { + return getCalls()[0]; + } + + @Override + public String getUsage() { + return Global.Prefix + getCalls()[0] + " [Command name]"; + } + + @Override + public boolean isPremium() { + return false; + } + @Override + public int getTimeout() { + // TODO Auto-generated method stub + return 0; + } +} diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java similarity index 97% rename from src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java rename to src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java index e834799..af18d7d 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/Ping.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java @@ -1,4 +1,4 @@ -package pkg.deepCurse.nopalmo.command.guildCommand; +package pkg.deepCurse.nopalmo.command.guildCommand.info; import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; From f71abeb4995e2052c53d483c89ca873868cb9b2d Mon Sep 17 00:00:00 2001 From: deepCurse Date: Thu, 2 Dec 2021 21:57:55 -0400 Subject: [PATCH 5/7] h Signed-off-by: deepCurse --- .../nopalmo/command/GuildCommand.java | 20 ++++ .../command/guildCommand/info/Help.java | 101 ++++++++---------- src/pkg/deepCurse/nopalmo/core/Boot.java | 8 +- .../nopalmo/manager/GuildCommandManager.java | 4 +- src/services/UptimePing.java | 2 +- 5 files changed, 71 insertions(+), 64 deletions(-) diff --git a/src/pkg/deepCurse/nopalmo/command/GuildCommand.java b/src/pkg/deepCurse/nopalmo/command/GuildCommand.java index 45c5801..81a7b0b 100644 --- a/src/pkg/deepCurse/nopalmo/command/GuildCommand.java +++ b/src/pkg/deepCurse/nopalmo/command/GuildCommand.java @@ -36,5 +36,25 @@ public abstract class GuildCommand { public enum HelpPage { General, DEV, EGG, Moderation, Fun, Info } + + public String getHelp() { + // TODO Auto-generated method stub + return null; + } + + public Permission getRequiredPermission() { + // TODO Auto-generated method stub + return null; + } + + public String getUsage() { + // TODO Auto-generated method stub + return null; + } + + public int getTimeout() { + // TODO Auto-generated method stub + return 0; + } } diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java index 884c0ac..3a420d0 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java @@ -1,49 +1,46 @@ package pkg.deepCurse.nopalmo.command.guildCommand.info; import java.time.Instant; -import java.util.ArrayList; -import java.util.List; import java.util.Random; import java.util.concurrent.TimeUnit; -import core.Global; -import core.enums.HelpPage; -import core.listeners.Command; -import core.listeners.CommandManager; -import core.tools.Tools; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.Permission; -import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; +import pkg.deepCurse.nopalmo.command.GuildCommand; +import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; +import pkg.deepCurse.nopalmo.global.Tools; +import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; +import pkg.deepCurse.nopalmo.manager.GuildCommandManager; -public class Help implements Command { - public final CommandManager manager; +public class Help extends GuildCommand { - public Help(CommandManager m) { + public final GuildCommandManager manager; + + public Help(GuildCommandManager m) { this.manager = m; } @Override - public void run(List args, GuildMessageReceivedEvent event, ArrayList devList) throws Exception { + public void run(GuildCommandBlob blob, GuildCommandManager commandManager) throws Exception { // TextChannel channel = event.getChannel(); // Member user = event.getMember(); // if (Tools.devIdCheck(null, user.getId(), channel, null)) { - if (args.size() > 1) { - Tools.wrongUsage(event.getChannel(), this); + if (blob.getArgs().size() > 1) { + Tools.wrongUsage(blob.getGuildMessageEvent().getChannel(), this); return; } - if (args.isEmpty()) { + if (blob.getArgs().isEmpty()) { EmbedBuilder embed = new EmbedBuilder().setTitle("Commands:"); for (HelpPage i : HelpPage.values()) { if (i != HelpPage.DEV) { StringBuilder pageData = new StringBuilder(); - for (Command command : manager.getCommands()) { - if (!command.isHidden() & command.getPage() != HelpPage.EGG) { - if (command.getPage() == i) { + for (GuildCommand command : manager.getGuildCommands()) { + if (!command.isHidden() & command.getHelpPage() != HelpPage.EGG) { + if (command.getHelpPage() == i) { - if (!pageData.toString().contains(command.getName())) { - pageData.append("`" + command.getName() + "`\n"); + if (!pageData.toString().contains(command.getCommandName())) { + pageData.append("`" + command.getCommandName() + "`\n"); } } @@ -72,45 +69,46 @@ public class Help implements Command { // embed.setFooter("Command list requested by: "+event.getAuthor().getAsTag(), // event.getAuthor().getEffectiveAvatarUrl()); - embed.setFooter(event.getMember().getEffectiveName(), event.getMember().getUser().getEffectiveAvatarUrl()); + embed.setFooter(blob.getGuildMessageEvent().getMember().getEffectiveName(), + blob.getGuildMessageEvent().getMember().getUser().getEffectiveAvatarUrl()); embed.setTimestamp(Instant.now()); - embed.setColor(Global.embedColor); + embed.setColor(0); if (embed.isValidLength()) { - event.getChannel().sendMessage(embed.build()).queue(); + blob.getGuildMessageEvent().getChannel().sendMessage(embed.build()).queue(); } else { - event.getChannel() + blob.getGuildMessageEvent().getChannel() .sendMessage( "Critical error!\nEmbed max size exceeded, please report this to the devs immediately") .queue(); } if (new Random().nextLong() == 69420l) { // i wonder who will find this, also, if you read the source to // find this, shhhhhhhh - deepCurse - event.getChannel().sendMessage("we will rise above you humans") + blob.getGuildMessageEvent().getChannel().sendMessage("we will rise above you humans") .queue(msg -> msg.delete().queueAfter(300, TimeUnit.MILLISECONDS)); } return; } try { - Command command = manager.getCommand(String.join("", args)); + GuildCommand command = manager.getCommand(String.join("", blob.getArgs())); // event.getChannel().sendMessage("Command help for `" + command.commandName() + // "`:\n\tUsage: "+ command.usageString() + "\n" + // command.helpString()).queue(); - if (!command.isHidden() & command.getPage() != HelpPage.EGG) { + if (!command.isHidden() & command.getHelpPage() != HelpPage.EGG) { EmbedBuilder eB = new EmbedBuilder(); - eB.setTitle("Help results for: " + command.getName()); + eB.setTitle("Help results for: " + command.getCommandName()); if (command.getHelp() != null) { eB.addField("Help info:", command.getHelp(), false); } eB.addField("Usage:", command.getUsage(), false); - eB.setFooter("Page: " + command.getPage().toString()); + eB.setFooter("Page: " + command.getHelpPage().toString()); String alias = "`"; - for (int i = 1; i < command.getCalls().length; i++) { + for (int i = 1; i < command.getCommandCalls().length; i++) { if (i == 1) { - alias += command.getCalls()[i]; + alias += command.getCommandCalls()[i]; } else { - alias += ", " + command.getCalls()[i]; + alias += ", " + command.getCommandCalls()[i]; } } alias += "`"; @@ -122,26 +120,27 @@ public class Help implements Command { } else { endAilias = "Aliases: none\n"; } - eB.setColor(Global.embedColor); + eB.setColor(0); StringBuilder sB = new StringBuilder(); sB.append(endAilias); try { - sB.append("Required Permission: " + command.getRequiredPermission().getName()+"\n"); + sB.append("Required Permission: " + command.getRequiredPermission().getName() + "\n"); } catch (NullPointerException e) { - }if(command.getTimeout()>0) { - sB.append("Usage Timeout: "+command.getTimeout()+"\n"); } - sB.append("Premium: "+command.isPremium()+"\n"); + if (command.getTimeout() > 0) { + sB.append("Usage Timeout: " + command.getTimeout() + "\n"); + } + sB.append("Premium: " + command.isPremium() + "\n"); eB.addField("Misc", sB.toString(), false); - event.getChannel().sendMessage(eB.build()).queue(); + blob.getGuildMessageEvent().getChannel().sendMessage(eB.build()).queue(); } else { throw new NullPointerException("Invalid input"); } } catch (java.lang.NullPointerException e) { e.printStackTrace(); - event.getChannel().sendMessage("The command `" + String.join("", args) + "` does not exist!\n" + "Use `" - + Global.Prefix + getCalls()[0] + "` for a list of all my commands!").queue(); + blob.getGuildMessageEvent().getChannel().sendMessage("The command `" + String.join("", blob.getArgs()) + "` does not exist!\n" + "Use `" + + Global.prefix + getCommandCalls()[0] + "` for a list of all my commands!").queue(); return; } @@ -156,12 +155,12 @@ public class Help implements Command { } @Override - public HelpPage getPage() { + public HelpPage getHelpPage() { return HelpPage.Info; } @Override - public String[] getCalls() { + public String[] getCommandCalls() { return new String[] { "help", "h" }; } @@ -172,25 +171,11 @@ public class Help implements Command { return "The help command, it seems like you already know how to use it. . ."; } - @Override - public Permission getRequiredPermission() { - return Permission.MESSAGE_WRITE; - } - - @Override - public String getName() { - return getCalls()[0]; - } - @Override public String getUsage() { - return Global.Prefix + getCalls()[0] + " [Command name]"; + return Global.prefix + getCommandCalls()[0] + " [Command name]"; } - @Override - public boolean isPremium() { - return false; - } @Override public int getTimeout() { // TODO Auto-generated method stub diff --git a/src/pkg/deepCurse/nopalmo/core/Boot.java b/src/pkg/deepCurse/nopalmo/core/Boot.java index 293580e..a08f0f8 100644 --- a/src/pkg/deepCurse/nopalmo/core/Boot.java +++ b/src/pkg/deepCurse/nopalmo/core/Boot.java @@ -43,9 +43,9 @@ public class Boot { Log.boot("Init reaction/emote list"); Reactions.init(); Log.boot("Initialized reaction/emote list. . ."); - Log.boot("Init commands list"); + Log.boot("Init guild commands list"); guildCommandManager.init(); - Log.boot("Initialized commands list. . ."); + Log.boot("Initialized guild commands list. . ."); try { bot = JDABuilder.createDefault(args[0]).setChunkingFilter(ChunkingFilter.NONE) @@ -57,7 +57,9 @@ public class Boot { } catch (InterruptedException e) { e.printStackTrace(); } - + + bot.getPresence().setActivity(Activity.listening("Infected Mushroom")); + long bootTime = System.currentTimeMillis() - preBootTime; System.out.println("Taken "+bootTime+"ms to boot"); diff --git a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java index 9b958e8..495eb35 100644 --- a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java +++ b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java @@ -14,7 +14,7 @@ import java.util.regex.Pattern; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; import pkg.deepCurse.nopalmo.command.GuildCommand; -import pkg.deepCurse.nopalmo.command.guildCommand.Ping; +import pkg.deepCurse.nopalmo.command.guildCommand.info.Ping; import pkg.deepCurse.nopalmo.core.Boot; import pkg.deepCurse.nopalmo.database.DatabaseTools; @@ -41,7 +41,7 @@ public class GuildCommandManager { } } - public Collection getguildCommandMap() { + public Collection getGuildCommands() { return guildCommandMap.values(); } diff --git a/src/services/UptimePing.java b/src/services/UptimePing.java index 40425ce..cb2b450 100644 --- a/src/services/UptimePing.java +++ b/src/services/UptimePing.java @@ -36,7 +36,7 @@ public class UptimePing { } - System.out.println("fix me"); + // System.out.println("fix me"); // not sure why this is here if (socketAddress.getAddress() == null) { return -1; From 573443e4b4e083c387b6a4755b68c72c1dbe9092 Mon Sep 17 00:00:00 2001 From: deepCurse Date: Sun, 5 Dec 2021 17:41:07 -0400 Subject: [PATCH 6/7] mass code dump Signed-off-by: deepCurse --- .../deepCurse/nopalmo/command/Command.java | 62 +++++++++ .../nopalmo/command/GuildCommand.java | 49 +------ .../command/guildCommand/info/Help.java | 75 ++++++----- .../command/guildCommand/info/Ping.java | 79 +++++++----- src/pkg/deepCurse/nopalmo/core/Boot.java | 2 +- .../nopalmo/database/DatabaseTools.java | 43 ++---- .../deepCurse/nopalmo/database/SQLCode.java | 33 +++++ src/pkg/deepCurse/nopalmo/global/Tools.java | 2 +- .../GuildMessageReceivedListener.java | 42 +++--- .../deepCurse/nopalmo/manager/Argument.java | 122 ++++++++++++++++++ .../nopalmo/manager/ArgumentList.java | 32 +++++ .../nopalmo/manager/CommandBlob.java | 12 +- .../nopalmo/manager/GuildCommandBlob.java | 5 +- .../nopalmo/manager/GuildCommandManager.java | 73 ++++++++--- .../simpleLoggingGarbage/core/Log.java | 2 - src/services/CTimer.java | 22 ---- src/services/ConsoleOut.java | 72 ----------- 17 files changed, 438 insertions(+), 289 deletions(-) create mode 100644 src/pkg/deepCurse/nopalmo/command/Command.java create mode 100644 src/pkg/deepCurse/nopalmo/database/SQLCode.java create mode 100644 src/pkg/deepCurse/nopalmo/manager/Argument.java create mode 100644 src/pkg/deepCurse/nopalmo/manager/ArgumentList.java delete mode 100644 src/services/CTimer.java delete mode 100644 src/services/ConsoleOut.java diff --git a/src/pkg/deepCurse/nopalmo/command/Command.java b/src/pkg/deepCurse/nopalmo/command/Command.java new file mode 100644 index 0000000..f2e9086 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/command/Command.java @@ -0,0 +1,62 @@ +package pkg.deepCurse.nopalmo.command; + +import java.util.HashMap; + +import org.jetbrains.annotations.Nullable; + +import pkg.deepCurse.nopalmo.manager.Argument; +import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; +import pkg.deepCurse.nopalmo.manager.GuildCommandManager; + +public abstract class Command { + + public abstract void runCommand(GuildCommandBlob blob, GuildCommandManager commandManager, + HashMap argumentList) throws Exception; + + public abstract String[] getCommandCalls(); + + public String getCommandName() { + return getCommandCalls()[0]; + } + + public boolean isHidden() { + return false; + } + + public boolean isNSFW() { + return false; + } + + public boolean isPremium() { // im probably never gonna use this, but ill leave it in for those who want to + // see how i would implement it + return false; + } + + public abstract HelpPage getHelpPage(); + + public enum HelpPage { + General, DEV, EGG, Moderation, Fun, Info + } + + public String getHelp() { + // TODO Auto-generated method stub + return null; + } + + public String getUsage() { + // TODO Auto-generated method stub + return null; + } + + public int getTimeout() { + // TODO Auto-generated method stub + return 0; + } + + @Nullable + public HashMap getArguments() { + return null; + } + + +} diff --git a/src/pkg/deepCurse/nopalmo/command/GuildCommand.java b/src/pkg/deepCurse/nopalmo/command/GuildCommand.java index 81a7b0b..e98db25 100644 --- a/src/pkg/deepCurse/nopalmo/command/GuildCommand.java +++ b/src/pkg/deepCurse/nopalmo/command/GuildCommand.java @@ -1,60 +1,15 @@ package pkg.deepCurse.nopalmo.command; import net.dv8tion.jda.api.Permission; -import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; -import pkg.deepCurse.nopalmo.manager.GuildCommandManager; - -public abstract class GuildCommand { - - public abstract void run(GuildCommandBlob blob, GuildCommandManager commandManager) throws Exception; - - public abstract String[] getCommandCalls(); - - public String getCommandName() { - return getCommandCalls()[0]; - } - - public boolean isHidden() { - return false; - } - - public boolean isNSFW() { - return false; - } +public abstract class GuildCommand extends Command { + public Permission[] getRequiredPermissions() { return null; } - - public boolean isPremium() { // im probably never gonna use this, but ill leave it in for those who want to - // see how i would implement it - return false; - } - public abstract HelpPage getHelpPage(); - - public enum HelpPage { - General, DEV, EGG, Moderation, Fun, Info - } - - public String getHelp() { - // TODO Auto-generated method stub - return null; - } - public Permission getRequiredPermission() { // TODO Auto-generated method stub return null; } - - public String getUsage() { - // TODO Auto-generated method stub - return null; - } - - public int getTimeout() { - // TODO Auto-generated method stub - return 0; - } - } diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java index 3a420d0..f46cb4b 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java @@ -1,13 +1,16 @@ package pkg.deepCurse.nopalmo.command.guildCommand.info; import java.time.Instant; +import java.util.HashMap; import java.util.Random; import java.util.concurrent.TimeUnit; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.interactions.commands.Command; import pkg.deepCurse.nopalmo.command.GuildCommand; import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; import pkg.deepCurse.nopalmo.global.Tools; +import pkg.deepCurse.nopalmo.manager.Argument; import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; import pkg.deepCurse.nopalmo.manager.GuildCommandManager; @@ -20,45 +23,32 @@ public class Help extends GuildCommand { } @Override - public void run(GuildCommandBlob blob, GuildCommandManager commandManager) throws Exception { - // TextChannel channel = event.getChannel(); - // Member user = event.getMember(); - // if (Tools.devIdCheck(null, user.getId(), channel, null)) { - if (blob.getArgs().size() > 1) { - Tools.wrongUsage(blob.getGuildMessageEvent().getChannel(), this); - return; - } - if (blob.getArgs().isEmpty()) { + public void runCommand(GuildCommandBlob blob, GuildCommandManager commandManager, + HashMap argumentMap) throws Exception { + + if (argumentMap.isEmpty()) { EmbedBuilder embed = new EmbedBuilder().setTitle("Commands:"); - for (HelpPage i : HelpPage.values()) { - if (i != HelpPage.DEV) { - StringBuilder pageData = new StringBuilder(); + HashMap commandHash = new HashMap(); - for (GuildCommand command : manager.getGuildCommands()) { - if (!command.isHidden() & command.getHelpPage() != HelpPage.EGG) { - if (command.getHelpPage() == i) { + for (GuildCommand command : manager.getGuildCommands()) { - if (!pageData.toString().contains(command.getCommandName())) { - pageData.append("`" + command.getCommandName() + "`\n"); - } + commandHash.put(command.getHelpPage(), + commandHash.get(command.getHelpPage()) + command.getCommandName()); - } - } - } - if (!pageData.toString().isBlank()) { - embed.addField(i.name() + ": ", pageData.toString(), true); - } - // pageData.delete(0, pageData.length()); - } } StringBuilder sB = new StringBuilder(); - sB.append("`manual`\n"); - sB.append("`ping`\n"); - sB.append("`support`\n"); - // sB.append("`"+Global.Prefix+"\n"); + GuildCommand ping = commandManager.getCommand("ping"); + if (ping != null) { + sB.append("`"+ping.getUsage()+"`\n"); + } + + GuildCommand help = commandManager.getCommand("help"); + if (help != null) { + sB.append("`"+help.getUsage()+"`\n"); + } embed.addField("Information:", "Commands to take note of:\n" + sB, false); @@ -74,7 +64,7 @@ public class Help extends GuildCommand { embed.setTimestamp(Instant.now()); embed.setColor(0); if (embed.isValidLength()) { - blob.getGuildMessageEvent().getChannel().sendMessage(embed.build()).queue(); + blob.getGuildMessageEvent().getChannel().sendMessageEmbeds(embed.build()).queue(); } else { blob.getGuildMessageEvent().getChannel() .sendMessage( @@ -88,6 +78,16 @@ public class Help extends GuildCommand { } return; } + + // ########################################################################################################################## + + // ########################################################################################################################## + + // ########################################################################################################################## + + // ########################################################################################################################## + + // ########################################################################################################################## try { GuildCommand command = manager.getCommand(String.join("", blob.getArgs())); @@ -132,15 +132,17 @@ public class Help extends GuildCommand { } sB.append("Premium: " + command.isPremium() + "\n"); eB.addField("Misc", sB.toString(), false); - blob.getGuildMessageEvent().getChannel().sendMessage(eB.build()).queue(); + blob.getGuildMessageEvent().getChannel().sendMessageEmbeds(eB.build()).queue(); } else { throw new NullPointerException("Invalid input"); } } catch (java.lang.NullPointerException e) { e.printStackTrace(); - blob.getGuildMessageEvent().getChannel().sendMessage("The command `" + String.join("", blob.getArgs()) + "` does not exist!\n" + "Use `" - + Global.prefix + getCommandCalls()[0] + "` for a list of all my commands!").queue(); + blob.getGuildMessageEvent().getChannel() + .sendMessage("The command `" + String.join("", blob.getArgs()) + "` does not exist!\n" + "Use `" + + Global.prefix + getCommandCalls()[0] + "` for a list of all my commands!") + .queue(); return; } @@ -176,9 +178,4 @@ public class Help extends GuildCommand { return Global.prefix + getCommandCalls()[0] + " [Command name]"; } - @Override - public int getTimeout() { - // TODO Auto-generated method stub - return 0; - } } diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java index af18d7d..b00906a 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java @@ -1,58 +1,70 @@ package pkg.deepCurse.nopalmo.command.guildCommand.info; -import net.dv8tion.jda.api.entities.TextChannel; +import java.util.HashMap; + import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; import pkg.deepCurse.nopalmo.command.GuildCommand; -import pkg.deepCurse.nopalmo.core.Boot; -import pkg.deepCurse.nopalmo.global.Tools; +import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; +import pkg.deepCurse.nopalmo.manager.Argument; import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; import pkg.deepCurse.nopalmo.manager.GuildCommandManager; public class Ping extends GuildCommand { @Override - public void run(GuildCommandBlob blob, GuildCommandManager commandManager) - throws Exception { - + public void runCommand(GuildCommandBlob blob, GuildCommandManager commandManager, + HashMap argumentMap) throws Exception { + GuildMessageReceivedEvent event = blob.getGuildMessageEvent(); - TextChannel channel = event.getChannel(); + if (argumentMap.isEmpty()) { + event.getChannel().sendMessage("Pong!\n" + event.getJDA().getGatewayPing() + "ms\n").queue(); + return; + } - channel.sendMessage("You are: " + blob.getUserID()).queue(); - - if (blob.getArgs().size() == 0) { - // new Main(); - channel.sendMessage("Pong!\n" + event.getJDA().getGatewayPing() + "ms\n" - // + "Sorry if the ping is too high, im currently hosting on an under powered - // laptop out in the countryside...\n" - // + "This will be fixed in at most 2 days..." - ).queue(); - // long pang = Main.bot.getGatewayPing(); + if (argumentMap.get("all") != null) { - } else if (blob.getArgs().get(0).contentEquals("all")) { + event.getChannel().sendMessage("Gathering data. . .").queue(msg -> { + long timeToProcess = System.currentTimeMillis(); + + try { // TODO rewrite this block, all tries are not good practice - channel.sendMessage("Gathering data...").queue(msg -> { - try { - long timeToProcess = System.currentTimeMillis(); - String out = "Pong!\n" + "Google: " + services.UptimePing.sendPing("www.google.com") + "ms\n" + "JDA Gateway: " + event.getJDA().getGatewayPing() + "ms\n" + "www.discord.com: " + services.UptimePing.sendPing("www.discord.com") + "ms"; - - msg.editMessage(out + "\nTime to process: " + (timeToProcess - System.currentTimeMillis()) + "ms").queue(); + msg.editMessage(out + "\nTime to process: " + (System.currentTimeMillis() - timeToProcess) + "ms") + .queue(); } catch (Exception e) { - + e.printStackTrace(); } - }); - } else - Tools.wrongUsage(channel, this); + } + +// if (argumentArray == null || argumentArray.isEmpty()) { +// +// return; +// } else { +// +// for (Argument i : argumentArray) { +// if (i.getArgName().contentEquals("all")) { +// +// } else { +// Tools.wrongUsage(event.getChannel(), this); +// } +// } +// return; +// } } @Override public String[] getCommandCalls() { - return new String[] {"ping"}; + return new String[] { "ping" }; + } + + @Override + public String getUsage() { + return Global.prefix+"ping [" + Argument.argumentPrefix + "all]"; } @Override @@ -60,4 +72,13 @@ public class Ping extends GuildCommand { return HelpPage.Info; } + @Override + public HashMap getArguments() { + HashMap args = new HashMap(); + + args.put("all", new Argument("all").setPrefixRequirement(true)); + + return args; + } + } diff --git a/src/pkg/deepCurse/nopalmo/core/Boot.java b/src/pkg/deepCurse/nopalmo/core/Boot.java index a08f0f8..a10de29 100644 --- a/src/pkg/deepCurse/nopalmo/core/Boot.java +++ b/src/pkg/deepCurse/nopalmo/core/Boot.java @@ -62,7 +62,7 @@ public class Boot { long bootTime = System.currentTimeMillis() - preBootTime; - System.out.println("Taken "+bootTime+"ms to boot"); + Log.boot("Taken "+bootTime+"ms to boot"); } } diff --git a/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java b/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java index 3dd18f3..862b5e0 100644 --- a/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java +++ b/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java @@ -24,6 +24,7 @@ public class DatabaseTools { Global.updatePrefix(); } + @SuppressWarnings("deprecation") public static Connection createConnection(String password) throws SQLException { String dbName = Boot.isProd ? "nopalmo" : "chaos"; @@ -40,34 +41,11 @@ public class DatabaseTools { try { return DriverManager.getConnection(url, username, password); } catch (SQLException e) { - sqlTranslate("Generate connection", e); + SQLCode.sqlTranslate("Generate connection", e); throw new SQLException(e); } } - private static void sqlTranslate(String action, int errorCode) { - switch (errorCode) { - case 1062: - System.err.println("Failed to execute; errorCode=" + errorCode + "; ER_DUP_ENTRY; On action " + action); - break; - case 1054: - System.err.println("Failed to execute; errorCode=" + errorCode + "; ER_BAD_FIELD_ERROR; On action " + action); - break; - default: - System.err.println("Failed to execute; errorCode=" + errorCode + "; Unknown code; On action " + action); - break; - } - } - - @Deprecated - private static void sqlTranslate(String action, SQLException e) { - sqlTranslate(action, e.getErrorCode()); - } - - private static void sqlTranslate(PreparedStatement pstmt, SQLException e) { - sqlTranslate(pstmt.toString(), e.getErrorCode()); - } - private static void checkUpdateCounts(PreparedStatement pstmt, int[] updateCounts) { checkUpdateCounts(pstmt.toString(), updateCounts); } @@ -87,8 +65,9 @@ public class DatabaseTools { public class Tools { - // these sub classes will represent tables and the methods therein will be for actions within said table - + // these sub classes will represent tables and the methods therein will be for + // actions within said table + public class Guild { public class Prefix { @@ -110,7 +89,7 @@ public class DatabaseTools { return createPrefix(guildID, Global.prefix); } } catch (SQLException e) { - sqlTranslate(query, e.getErrorCode()); + SQLCode.getMessage(query, e.getErrorCode()); return null; } finally { // @formatter:off try {if (rs != null)rs.close();} catch (Exception e) {} @@ -143,7 +122,7 @@ public class DatabaseTools { // connection.commit(); return prefix; } catch (SQLException e) { - sqlTranslate(pstmt, e); + SQLCode.sqlTranslate(pstmt, e); for (int i : new int[] { 1062 }) { if (i == e.getErrorCode()) { return setPrefix(connection, guildID, prefix); @@ -181,7 +160,7 @@ public class DatabaseTools { conn.commit(); return prefix; } catch (SQLException e) { - sqlTranslate(pstmt, e); + SQLCode.sqlTranslate(pstmt, e); try { conn.rollback(); } catch (Exception e2) { @@ -212,7 +191,7 @@ public class DatabaseTools { } } catch (SQLException e) { - sqlTranslate(query, e.getErrorCode()); + SQLCode.getMessage(query, e.getErrorCode()); // System.out.println("eeeeee"); return false; } finally { @@ -236,7 +215,7 @@ public class DatabaseTools { } public class Global { - + public static String prefix = null; public static void updatePrefix() throws SQLException { @@ -257,7 +236,7 @@ public class DatabaseTools { } } catch (SQLException e) { - sqlTranslate(query, e.getErrorCode()); + SQLCode.getMessage(query, e.getErrorCode()); // System.out.println("eeeeee"); throw new SQLException(e); } finally { diff --git a/src/pkg/deepCurse/nopalmo/database/SQLCode.java b/src/pkg/deepCurse/nopalmo/database/SQLCode.java new file mode 100644 index 0000000..2e03910 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/database/SQLCode.java @@ -0,0 +1,33 @@ +package pkg.deepCurse.nopalmo.database; + +import java.sql.PreparedStatement; +import java.sql.SQLException; + +public class SQLCode { + + + + public static String getMessage(String action, int errorCode) { + switch (errorCode) { + case 1062: + System.err.println("Failed to execute; errorCode=" + errorCode + "; ER_DUP_ENTRY; On action " + action); + return ""; + case 1054: + System.err.println("Failed to execute; errorCode=" + errorCode + "; ER_BAD_FIELD_ERROR; On action " + action); + return ""; + default: + System.err.println("Failed to execute; errorCode=" + errorCode + "; Unknown code; On action " + action); + return ""; + } + } + + @Deprecated + public static void sqlTranslate(String action, SQLException e) { + SQLCode.getMessage(action, e.getErrorCode()); + } + + public static void sqlTranslate(PreparedStatement pstmt, SQLException e) { + SQLCode.getMessage(pstmt.toString(), e.getErrorCode()); + } + +} diff --git a/src/pkg/deepCurse/nopalmo/global/Tools.java b/src/pkg/deepCurse/nopalmo/global/Tools.java index 6d4f89b..efe58f4 100644 --- a/src/pkg/deepCurse/nopalmo/global/Tools.java +++ b/src/pkg/deepCurse/nopalmo/global/Tools.java @@ -6,7 +6,7 @@ import pkg.deepCurse.nopalmo.command.GuildCommand; public class Tools { public static void wrongUsage(TextChannel tc, GuildCommand c) { - tc.sendMessage("Wrong Command Usage!\n" + c.getCommandName()).queue(); + tc.sendMessage("Wrong Command Usage!\n" + c.getUsage()).queue(); } } diff --git a/src/pkg/deepCurse/nopalmo/listener/GuildMessageReceivedListener.java b/src/pkg/deepCurse/nopalmo/listener/GuildMessageReceivedListener.java index 731197b..bdf7271 100644 --- a/src/pkg/deepCurse/nopalmo/listener/GuildMessageReceivedListener.java +++ b/src/pkg/deepCurse/nopalmo/listener/GuildMessageReceivedListener.java @@ -9,11 +9,9 @@ import net.dv8tion.jda.api.hooks.ListenerAdapter; import pkg.deepCurse.nopalmo.core.Boot; import pkg.deepCurse.nopalmo.database.DatabaseTools; import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; -import pkg.deepCurse.nopalmo.global.Reactions; -import pkg.deepCurse.nopalmo.manager.GuildCommandManager; public class GuildMessageReceivedListener extends ListenerAdapter { - + @Override public void onReady(@Nonnull ReadyEvent event) { System.out.println("GuildMessageReceivedListener is now ready\n" + event.getGuildAvailableCount() + "/" @@ -25,38 +23,44 @@ public class GuildMessageReceivedListener extends ListenerAdapter { public void onGuildMessageReceived(@Nonnull GuildMessageReceivedEvent event) { Message message = event.getMessage(); String messageRaw = message.getContentRaw(); + + if (messageRaw.contentEquals(Global.prefix + Global.prefix) + && DatabaseTools.Tools.Developers.canPowerOffBot(event.getAuthor().getIdLong())) { + + // message.addReaction(Reactions.getReaction("galaxyThumb")).complete(); TODO re enable + + message.delete().complete(); + + // pause thread as last resort + + event.getJDA().shutdown(); + System.exit(0); + } + String[] prefixArray = new String[] { DatabaseTools.Tools.Guild.Prefix.getPrefix(event.getGuild().getIdLong()), "<@!" + event.getJDA().getSelfUser().getIdLong() + ">" }; boolean shouldReturn = true; - for (String i : prefixArray) { + for (String i : prefixArray) { // switch to [] to skip for loop? + if (messageRaw.startsWith(i)) { + shouldReturn = false; } } - if (messageRaw.contentEquals(Global.prefix + Global.prefix) - && DatabaseTools.Tools.Developers.canPowerOffBot(event.getAuthor().getIdLong())) { - message.addReaction(Reactions.getReaction("galaxyThumb")).complete(); - - System.out.println("Shutting down; id " + event.getAuthor().getIdLong() + " used"); - - // pause thread as last resort - - event.getJDA().shutdown(); - System.exit(0); - } - // TODO add pre manager commands - + if (shouldReturn) { + return; } - + if (!event.getAuthor().isBot()) { + Boot.guildCommandManager.startCommand(event); } - + } } diff --git a/src/pkg/deepCurse/nopalmo/manager/Argument.java b/src/pkg/deepCurse/nopalmo/manager/Argument.java new file mode 100644 index 0000000..f988828 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/manager/Argument.java @@ -0,0 +1,122 @@ +package pkg.deepCurse.nopalmo.manager; + +public class Argument { + + // README + // + // This tool is used simply for now, but it will be worth while if you get used to it + // + // this allows extra organization and ease of use throughout the creation of commands + // instead of one simple list where if args[1] == "all" do code + // this allows the same functionality, if not more with a little bit of learning + // you can go back to what it was before, but i honestly believe this system is worthwhile + // it just needs polish and reports on usage for optimization + // + //// TL;DR ITS A NEW FEATURE, GIVE IT TIME + + + private int requiredArgs = 0; + private String argName = null; + private Argument[] subArgs = null; + private boolean requiresPrefix = false; + public static final String argumentPrefix = "-"; // This exists for the sole reason of customization and will + // generally not change, ever, its recommended you keep it to + // something other than empty to help ensure that what the user + // entered is an arg and not something else + + /** + * @implNote This is an experimental feature that has potential, but i have no + * use for it currently, imagine it akin to redstone, mojang had no + * idea people would build computers or 9x9 piston doors out of it + * @param requiredArgs + * @param argName + * @param subArgs + */ + public Argument(int requiredArgs, String argName, Argument[] subArgs) { + this.requiredArgs = requiredArgs; + this.argName = argName; + this.subArgs = subArgs; + } + + /** + * @implNote This is an experimental feature that has potential, but i have no + * use for it currently, imagine it akin to redstone, mojang had no + * idea people would build computers or 9x9 piston doors out of it + * @param requiredArgs + * @param argName + * @param subArgs + */ + public Argument(int requiredArgs, String argName, Argument[] subArgs, RunnableArg runnableArg) { + this.requiredArgs = requiredArgs; + this.argName = argName; + this.subArgs = subArgs; + } + + /** + * @implNote This is an experimental feature that has potential, but i have no + * use for it currently, imagine it akin to redstone, mojang had no + * idea people would build computers or 9x9 piston doors out of it + * @param requiredArgs + * @param argName + * @param subArgs + */ + public Argument(String argName) { + this.argName = argName; + } + + /** + * @implNote This is an experimental feature that has potential, but i have no + * use for it currently, imagine it akin to redstone, mojang had no + * idea people would build computers or 9x9 piston doors out of it + * @param requiredArgs + * @param argName + * @param subArgs + */ + public Argument(String argName, RunnableArg runnableArg) { + this.argName = argName; + } + + public int getRequiredArgs() { + return requiredArgs; + } + +// public Argument setRequiredArgs(int requiredArgs) { +// this.requiredArgs = requiredArgs; +// return this; +// } + + public String getArgName() { + return argName; + } + +// public Argument setArgName(String argName) { +// this.argName = argName; +// return this; +// } + + public Argument[] getSubArgs() { + return subArgs; + } + +// public Argument setSubArgs(Argument[] subArgs) { +// this.subArgs = subArgs; +// return this; +// } + + public Argument setPrefixRequirement(Boolean bool) { + this.requiresPrefix = bool; + return this; + } + + public boolean getPrefixRequirement() { + return this.requiresPrefix; + } + + + public interface RunnableArg { + + public void run(); + + } + +} diff --git a/src/pkg/deepCurse/nopalmo/manager/ArgumentList.java b/src/pkg/deepCurse/nopalmo/manager/ArgumentList.java new file mode 100644 index 0000000..238a53b --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/manager/ArgumentList.java @@ -0,0 +1,32 @@ +package pkg.deepCurse.nopalmo.manager; + +public class ArgumentList { // ON HOLD FOR NOW, IT MAY BE USELESS +// +// private HashMap args = new HashMap(); +// private Command command = null; +// +// public ArgumentList(Command command) { +// this.command = command; +// } +// +// public void addArgument(String name) { +// +// +// +// args.put(null, null); +// } +// +// @Nullable +// public ArrayList getArguments() { +// return (ArrayList) args.values(); +// } +// +// public Argument getArgumentFromName(String argumentName) { +// return args.get(argumentName); +// } +// +// @Nullable +// public List getArgumentNames() { +// return (@Nullable List) args.keySet(); +// } +} diff --git a/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java b/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java index bcad74a..7d80d1e 100644 --- a/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java +++ b/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java @@ -33,24 +33,28 @@ public abstract class CommandBlob { return this.modifiedRaw; } + @Deprecated public ArrayList getArgs() { return args; } - public void setUser(long userID) { + public CommandBlob setUser(long userID) { this.userID = userID; + return this; } public long getUserID() { return this.userID; } - public void setJDA(JDA bot) { + public CommandBlob setJDA(JDA bot) { + return this; } - public void setArgs(ArrayList newArguments) { + public CommandBlob setArgs(ArrayList newArguments) { this.args = newArguments; + return this; } - + } diff --git a/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java b/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java index a221eec..d3d357e 100644 --- a/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java +++ b/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java @@ -3,8 +3,9 @@ package pkg.deepCurse.nopalmo.manager; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; public class GuildCommandBlob extends CommandBlob { - - @SuppressWarnings("deprecation") + + String[][] argumentArray = null; + public GuildCommandBlob(GuildMessageReceivedEvent event) { super(event); setUser(event.getMessage().getAuthor().getIdLong()); diff --git a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java index 495eb35..2481253 100644 --- a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java +++ b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java @@ -2,7 +2,6 @@ package pkg.deepCurse.nopalmo.manager; import java.io.PrintWriter; import java.io.StringWriter; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; @@ -14,9 +13,11 @@ import java.util.regex.Pattern; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; import pkg.deepCurse.nopalmo.command.GuildCommand; +import pkg.deepCurse.nopalmo.command.guildCommand.info.Help; import pkg.deepCurse.nopalmo.command.guildCommand.info.Ping; import pkg.deepCurse.nopalmo.core.Boot; import pkg.deepCurse.nopalmo.database.DatabaseTools; +import pkg.deepCurse.nopalmo.global.Tools; public class GuildCommandManager { @@ -29,6 +30,7 @@ public class GuildCommandManager { } public void init() { + // addCommand(new Help(this)); FIXME addCommand(new Ping()); } @@ -67,14 +69,16 @@ public class GuildCommandManager { long commandStartTime = System.currentTimeMillis(); try { - ArrayList newArguments = new ArrayList(); + // ArrayList newArguments = new ArrayList(); // ArrayList commandFlags = new ArrayList(); - // ArrayList extractedFlags = new ArrayList(); // not needed currently, remnant idea of bash-ish GuildCommandBlob commandBlob = new GuildCommandBlob(guildMessage); + GuildCommand guildCommand = guildCommandMap.get(command); + HashMap argumentList = new HashMap(); boolean printTime = false; byte argSkipCount = 0; + boolean remainsValid = true; for (String x : args) { switch (x) { @@ -88,52 +92,83 @@ public class GuildCommandManager { case "\\del": guildMessage.getMessage().delete().queue(); break; - default: - if (argSkipCount<=0) { - newArguments.add(x); + default: // in the rewrite process + if (argSkipCount <= 0) { + + if (guildCommand.getArguments() != null) { + if (x.startsWith(Argument.argumentPrefix)) { + + String pre = x.substring(Argument.argumentPrefix.length()); + + argumentList.put(pre, guildCommand.getArguments().get(pre)); + + } else { + if (guildCommand.getArguments().get(x).getPrefixRequirement()) { + Tools.wrongUsage(guildMessage.getChannel(), guildCommand); + remainsValid = false; + } else { + argumentList.put(x, guildCommand.getArguments().get(x)); + } + } + } +// +// if (guildCommand.getArguments() != null) { +// +// String newArg = x; +// +// if (!newArg.startsWith(Argument.argumentPrefix)) { +// if (guildCommand.getArguments().get(newArg)!=null) { +// +// } +// } +// +// if (guildCommand.getArguments().containsKey(newArg)) { +// +// argumentList.put(guildCommand.getArguments().get(newArg).getArgName(), +// guildCommand.getArguments().get(newArg)); +// } else +// +// argumentList.put(newArg, new Argument(newArg)); +// } } } - } - - commandBlob.setArgs(newArguments); - - guildCommandMap.get(command).run(commandBlob, this); + + if (remainsValid) { + guildCommand.runCommand(commandBlob, this, argumentList); + } if (printTime) { guildMessage.getChannel() - .sendMessage("Time to run: " + (commandStartTime - System.currentTimeMillis()) + "ms") + .sendMessage("Time to run: " + (System.currentTimeMillis() - commandStartTime) + "ms") .queue(); } } catch (Exception e) { if (Boot.isProd) { - guildMessage.getChannel().sendMessage("```\n" + e + "```").queue(); + guildMessage.getChannel().sendMessage("```yaml\n" + e + "```").queue(); } else { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); - guildMessage.getChannel().sendMessage("```\n" + sw.toString() + "```").queue(); + guildMessage.getChannel().sendMessage("```yaml\n" + sw.toString() + "```").queue(); System.err.println("Exception caught in: " + e.toString()); e.printStackTrace(); } } catch (Throwable t) { if (Boot.isProd) { - guildMessage.getChannel().sendMessage("```\n" + t + "```").queue(); + guildMessage.getChannel().sendMessage("```apache\n" + t + "```").queue(); } else { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); t.printStackTrace(pw); - guildMessage.getChannel().sendMessage("```\n" + sw.toString() + "```").queue(); + guildMessage.getChannel().sendMessage("```apache\n" + sw.toString() + "```").queue(); System.err.println("Error caught in: " + t.toString()); t.printStackTrace(); } - } - }); } } - } diff --git a/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java b/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java index 1ca6c37..326ae1e 100644 --- a/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java +++ b/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java @@ -1,7 +1,5 @@ package pkg.deepCurse.simpleLoggingGarbage.core; -import javax.security.auth.login.LoginException; - import pkg.deepCurse.nopalmo.core.Boot; /** diff --git a/src/services/CTimer.java b/src/services/CTimer.java deleted file mode 100644 index 02de8c5..0000000 --- a/src/services/CTimer.java +++ /dev/null @@ -1,22 +0,0 @@ -package services; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.Serializable; - -public class CTimer extends Object implements Serializable { - - private static final long serialVersionUID = 1861304556437295528L; - - int delay = 1000; // milliseconds - int timerResetCount; - ActionListener taskPerformer = new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - System.out.print("timer: " + timerResetCount); - timerResetCount += 1; - } - - }; -} diff --git a/src/services/ConsoleOut.java b/src/services/ConsoleOut.java deleted file mode 100644 index 664dad0..0000000 --- a/src/services/ConsoleOut.java +++ /dev/null @@ -1,72 +0,0 @@ -package services; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintStream; -import java.util.Arrays; -import java.util.List; - -public class ConsoleOut { - private ByteArrayOutputStream baos; - private PrintStream previous; - private boolean capturing; - - public void start() { - if (capturing) { - return; - } - - capturing = true; - previous = System.out; - baos = new ByteArrayOutputStream(); - - OutputStream outputStreamCombiner = new OutputStreamCombiner(Arrays.asList(previous, baos)); - PrintStream custom = new PrintStream(outputStreamCombiner); - - System.setOut(custom); - } - - public String stop() { - if (!capturing) { - return ""; - } - - System.setOut(previous); - - String capturedValue = baos.toString(); - - baos = null; - previous = null; - capturing = false; - - return capturedValue; - } - - private static class OutputStreamCombiner extends OutputStream { - private List outputStreams; - - public OutputStreamCombiner(List outputStreams) { - this.outputStreams = outputStreams; - } - - public void write(int b) throws IOException { - for (OutputStream os : outputStreams) { - os.write(b); - } - } - - public void flush() throws IOException { - for (OutputStream os : outputStreams) { - os.flush(); - } - } - - public void close() throws IOException { - for (OutputStream os : outputStreams) { - os.close(); - } - } - } - -} From 1380bc2a22091229d5b0604e20940a73d212e177 Mon Sep 17 00:00:00 2001 From: deepCurse Date: Mon, 6 Dec 2021 10:58:30 -0400 Subject: [PATCH 7/7] more shit i should mention im doing live tests before upload, and this is pre-maintenance, anything worth noting will be written in comments Signed-off-by: deepCurse --- .../{Command.java => AbstractCommand.java} | 17 +- .../nopalmo/command/DirectCommand.java | 12 ++ .../nopalmo/command/GuildCommand.java | 18 +- .../directCommand/info/DirectMessagePing.java | 84 ++++++++ .../command/guildCommand/info/Git.java | 28 +++ .../command/guildCommand/info/Help.java | 36 ++-- .../command/guildCommand/info/Ping.java | 36 ++-- src/pkg/deepCurse/nopalmo/core/Boot.java | 51 ++--- .../nopalmo/database/DatabaseTools.java | 19 +- .../deepCurse/nopalmo/database/SQLCode.java | 11 +- .../deepCurse/nopalmo/global/Reactions.java | 16 +- src/pkg/deepCurse/nopalmo/global/Tools.java | 6 + .../DirectMessageReceivedListener.java | 64 +++++++ .../GuildMessageReceivedListener.java | 11 +- .../deepCurse/nopalmo/manager/Argument.java | 19 +- .../nopalmo/manager/ArgumentList.java | 32 ---- .../nopalmo/manager/CommandBlob.java | 60 ------ .../nopalmo/manager/DirectCommandBlob.java | 63 ++++++ .../nopalmo/manager/DirectCommandManager.java | 181 ++++++++++++++++++ .../nopalmo/manager/GuildCommandBlob.java | 59 +++++- .../nopalmo/manager/GuildCommandManager.java | 31 +-- .../Log.java => nopalmo/utils/LogHelper.java} | 8 +- .../deepCurse/nopalmo/utils/UptimePing.java | 38 ++++ src/services/UptimePing.java | 51 ----- 24 files changed, 663 insertions(+), 288 deletions(-) rename src/pkg/deepCurse/nopalmo/command/{Command.java => AbstractCommand.java} (64%) create mode 100644 src/pkg/deepCurse/nopalmo/command/DirectCommand.java create mode 100644 src/pkg/deepCurse/nopalmo/command/directCommand/info/DirectMessagePing.java create mode 100644 src/pkg/deepCurse/nopalmo/command/guildCommand/info/Git.java create mode 100644 src/pkg/deepCurse/nopalmo/listener/DirectMessageReceivedListener.java delete mode 100644 src/pkg/deepCurse/nopalmo/manager/ArgumentList.java delete mode 100644 src/pkg/deepCurse/nopalmo/manager/CommandBlob.java create mode 100644 src/pkg/deepCurse/nopalmo/manager/DirectCommandBlob.java create mode 100644 src/pkg/deepCurse/nopalmo/manager/DirectCommandManager.java rename src/pkg/deepCurse/{simpleLoggingGarbage/core/Log.java => nopalmo/utils/LogHelper.java} (89%) create mode 100644 src/pkg/deepCurse/nopalmo/utils/UptimePing.java delete mode 100644 src/services/UptimePing.java diff --git a/src/pkg/deepCurse/nopalmo/command/Command.java b/src/pkg/deepCurse/nopalmo/command/AbstractCommand.java similarity index 64% rename from src/pkg/deepCurse/nopalmo/command/Command.java rename to src/pkg/deepCurse/nopalmo/command/AbstractCommand.java index f2e9086..6ebeacb 100644 --- a/src/pkg/deepCurse/nopalmo/command/Command.java +++ b/src/pkg/deepCurse/nopalmo/command/AbstractCommand.java @@ -5,13 +5,8 @@ import java.util.HashMap; import org.jetbrains.annotations.Nullable; import pkg.deepCurse.nopalmo.manager.Argument; -import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; -import pkg.deepCurse.nopalmo.manager.GuildCommandManager; -public abstract class Command { - - public abstract void runCommand(GuildCommandBlob blob, GuildCommandManager commandManager, - HashMap argumentList) throws Exception; +public abstract class AbstractCommand { // TODO rewrite to implement type args? public abstract String[] getCommandCalls(); @@ -19,10 +14,6 @@ public abstract class Command { return getCommandCalls()[0]; } - public boolean isHidden() { - return false; - } - public boolean isNSFW() { return false; } @@ -39,17 +30,14 @@ public abstract class Command { } public String getHelp() { - // TODO Auto-generated method stub return null; } - + public String getUsage() { - // TODO Auto-generated method stub return null; } public int getTimeout() { - // TODO Auto-generated method stub return 0; } @@ -58,5 +46,4 @@ public abstract class Command { return null; } - } diff --git a/src/pkg/deepCurse/nopalmo/command/DirectCommand.java b/src/pkg/deepCurse/nopalmo/command/DirectCommand.java new file mode 100644 index 0000000..5db690f --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/command/DirectCommand.java @@ -0,0 +1,12 @@ +package pkg.deepCurse.nopalmo.command; + +import java.util.HashMap; + +import pkg.deepCurse.nopalmo.manager.Argument; +import pkg.deepCurse.nopalmo.manager.DirectCommandBlob; + +public abstract class DirectCommand extends AbstractCommand { + + public abstract void runCommand(DirectCommandBlob blob, HashMap argumentList) throws Exception; + +} diff --git a/src/pkg/deepCurse/nopalmo/command/GuildCommand.java b/src/pkg/deepCurse/nopalmo/command/GuildCommand.java index e98db25..5af6b2a 100644 --- a/src/pkg/deepCurse/nopalmo/command/GuildCommand.java +++ b/src/pkg/deepCurse/nopalmo/command/GuildCommand.java @@ -1,15 +1,23 @@ package pkg.deepCurse.nopalmo.command; -import net.dv8tion.jda.api.Permission; +import java.util.HashMap; + +import net.dv8tion.jda.api.Permission; +import pkg.deepCurse.nopalmo.manager.Argument; +import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; + +public abstract class GuildCommand extends AbstractCommand { + + public abstract void runCommand(GuildCommandBlob blob, HashMap argumentList) throws Exception; + + public abstract String[] getCommandCalls(); -public abstract class GuildCommand extends Command { - public Permission[] getRequiredPermissions() { return null; } - + public Permission getRequiredPermission() { - // TODO Auto-generated method stub + return null; } } diff --git a/src/pkg/deepCurse/nopalmo/command/directCommand/info/DirectMessagePing.java b/src/pkg/deepCurse/nopalmo/command/directCommand/info/DirectMessagePing.java new file mode 100644 index 0000000..3d5f2b2 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/command/directCommand/info/DirectMessagePing.java @@ -0,0 +1,84 @@ +package pkg.deepCurse.nopalmo.command.directCommand.info; + +import java.util.HashMap; + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import pkg.deepCurse.nopalmo.command.DirectCommand; +import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; +import pkg.deepCurse.nopalmo.manager.Argument; +import pkg.deepCurse.nopalmo.manager.DirectCommandBlob; +import pkg.deepCurse.nopalmo.utils.UptimePing; + +public class DirectMessagePing extends DirectCommand { + + @Override + public void runCommand(DirectCommandBlob blob, + HashMap argumentMap) throws Exception { + + MessageReceivedEvent event = blob.getEvent(); + + if (argumentMap.isEmpty()) { + event.getChannel().sendMessage("Pong!\n" + event.getJDA().getGatewayPing() + "ms\n").queue(); + return; + } + + if (argumentMap.get("all") != null) { + + event.getChannel().sendMessage("Gathering data. . .").queue(msg -> { + long timeToProcess = System.currentTimeMillis(); + + try { // TODO rewrite this block, all tries are not good practice + + String out = "Pong!\n" + "Google: " + UptimePing.sendPing("www.google.com") + "ms\n" + + "JDA Gateway: " + event.getJDA().getGatewayPing() + "ms\n" + "www.discord.com: " + + UptimePing.sendPing("www.discord.com") + "ms"; + + msg.editMessage(out + "\nTime to process: " + (System.currentTimeMillis() - timeToProcess) + "ms") + .queue(); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + +// if (argumentArray == null || argumentArray.isEmpty()) { +// +// return; +// } else { +// +// for (Argument i : argumentArray) { +// if (i.getArgName().contentEquals("all")) { +// +// } else { +// Tools.wrongUsage(event.getChannel(), this); +// } +// } +// return; +// } + } + + @Override + public String[] getCommandCalls() { + return new String[] { "ping" }; + } + + @Override + public String getUsage() { + return Global.prefix + "ping [" + Argument.argumentPrefix + "all]"; + } + + @Override + public HelpPage getHelpPage() { + return HelpPage.Info; + } + + @Override + public HashMap getArguments() { + HashMap args = new HashMap(); + + args.put("all", new Argument("all").setPrefixRequirement(true)); + + return args; + } + +} diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Git.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Git.java new file mode 100644 index 0000000..29df489 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Git.java @@ -0,0 +1,28 @@ +package pkg.deepCurse.nopalmo.command.guildCommand.info; + +import java.util.HashMap; + +import pkg.deepCurse.nopalmo.command.GuildCommand; +import pkg.deepCurse.nopalmo.manager.Argument; +import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; + +public class Git extends GuildCommand { + + @Override + public void runCommand(GuildCommandBlob blob, HashMap argumentList) throws Exception { + blob.getEvent().getChannel().sendMessage("Heres the link: https://github.com/lever1209/nopalmo").queue(); + } + + @Override + public String[] getCommandCalls() { + // TODO Auto-generated method stub + return new String[] { "git", "source", "github" }; + } + + @Override + public HelpPage getHelpPage() { + // TODO Auto-generated method stub + return HelpPage.Info; + } + +} diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java index f46cb4b..5302fa6 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Help.java @@ -6,10 +6,8 @@ import java.util.Random; import java.util.concurrent.TimeUnit; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.interactions.commands.Command; import pkg.deepCurse.nopalmo.command.GuildCommand; import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; -import pkg.deepCurse.nopalmo.global.Tools; import pkg.deepCurse.nopalmo.manager.Argument; import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; import pkg.deepCurse.nopalmo.manager.GuildCommandManager; @@ -23,8 +21,7 @@ public class Help extends GuildCommand { } @Override - public void runCommand(GuildCommandBlob blob, GuildCommandManager commandManager, - HashMap argumentMap) throws Exception { + public void runCommand(GuildCommandBlob blob, HashMap argumentMap) throws Exception { if (argumentMap.isEmpty()) { EmbedBuilder embed = new EmbedBuilder().setTitle("Commands:"); @@ -40,14 +37,14 @@ public class Help extends GuildCommand { StringBuilder sB = new StringBuilder(); - GuildCommand ping = commandManager.getCommand("ping"); + GuildCommand ping = blob.getCommandManager().getCommand("ping"); if (ping != null) { - sB.append("`"+ping.getUsage()+"`\n"); + sB.append("`" + ping.getUsage() + "`\n"); } - - GuildCommand help = commandManager.getCommand("help"); + + GuildCommand help = blob.getCommandManager().getCommand("help"); if (help != null) { - sB.append("`"+help.getUsage()+"`\n"); + sB.append("`" + help.getUsage() + "`\n"); } embed.addField("Information:", "Commands to take note of:\n" + sB, false); @@ -59,21 +56,21 @@ public class Help extends GuildCommand { // embed.setFooter("Command list requested by: "+event.getAuthor().getAsTag(), // event.getAuthor().getEffectiveAvatarUrl()); - embed.setFooter(blob.getGuildMessageEvent().getMember().getEffectiveName(), - blob.getGuildMessageEvent().getMember().getUser().getEffectiveAvatarUrl()); + embed.setFooter(blob.getEvent().getMember().getEffectiveName(), + blob.getEvent().getMember().getUser().getEffectiveAvatarUrl()); embed.setTimestamp(Instant.now()); embed.setColor(0); if (embed.isValidLength()) { - blob.getGuildMessageEvent().getChannel().sendMessageEmbeds(embed.build()).queue(); + blob.getEvent().getChannel().sendMessageEmbeds(embed.build()).queue(); } else { - blob.getGuildMessageEvent().getChannel() + blob.getEvent().getChannel() .sendMessage( "Critical error!\nEmbed max size exceeded, please report this to the devs immediately") .queue(); } if (new Random().nextLong() == 69420l) { // i wonder who will find this, also, if you read the source to // find this, shhhhhhhh - deepCurse - blob.getGuildMessageEvent().getChannel().sendMessage("we will rise above you humans") + blob.getEvent().getChannel().sendMessage("we will rise above you humans") .queue(msg -> msg.delete().queueAfter(300, TimeUnit.MILLISECONDS)); } return; @@ -94,7 +91,7 @@ public class Help extends GuildCommand { // event.getChannel().sendMessage("Command help for `" + command.commandName() + // "`:\n\tUsage: "+ command.usageString() + "\n" + // command.helpString()).queue(); - if (!command.isHidden() & command.getHelpPage() != HelpPage.EGG) { + if (command.getHelpPage() != HelpPage.EGG) { EmbedBuilder eB = new EmbedBuilder(); eB.setTitle("Help results for: " + command.getCommandName()); if (command.getHelp() != null) { @@ -132,14 +129,14 @@ public class Help extends GuildCommand { } sB.append("Premium: " + command.isPremium() + "\n"); eB.addField("Misc", sB.toString(), false); - blob.getGuildMessageEvent().getChannel().sendMessageEmbeds(eB.build()).queue(); + blob.getEvent().getChannel().sendMessageEmbeds(eB.build()).queue(); } else { throw new NullPointerException("Invalid input"); } } catch (java.lang.NullPointerException e) { e.printStackTrace(); - blob.getGuildMessageEvent().getChannel() + blob.getEvent().getChannel() .sendMessage("The command `" + String.join("", blob.getArgs()) + "` does not exist!\n" + "Use `" + Global.prefix + getCommandCalls()[0] + "` for a list of all my commands!") .queue(); @@ -151,11 +148,6 @@ public class Help extends GuildCommand { // https://download.java.net/java/GA/jdk16/7863447f0ab643c585b9bdebf67c69db/36/GPL/openjdk-16_linux-x64_bin.tar.gz } - @Override - public boolean isHidden() { - return false; - } - @Override public HelpPage getHelpPage() { return HelpPage.Info; diff --git a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java index b00906a..7e07349 100644 --- a/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java +++ b/src/pkg/deepCurse/nopalmo/command/guildCommand/info/Ping.java @@ -7,15 +7,14 @@ import pkg.deepCurse.nopalmo.command.GuildCommand; import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; import pkg.deepCurse.nopalmo.manager.Argument; import pkg.deepCurse.nopalmo.manager.GuildCommandBlob; -import pkg.deepCurse.nopalmo.manager.GuildCommandManager; +import pkg.deepCurse.nopalmo.utils.UptimePing; public class Ping extends GuildCommand { @Override - public void runCommand(GuildCommandBlob blob, GuildCommandManager commandManager, - HashMap argumentMap) throws Exception { + public void runCommand(GuildCommandBlob blob, HashMap argumentMap) throws Exception { - GuildMessageReceivedEvent event = blob.getGuildMessageEvent(); + GuildMessageReceivedEvent event = blob.getEvent(); if (argumentMap.isEmpty()) { event.getChannel().sendMessage("Pong!\n" + event.getJDA().getGatewayPing() + "ms\n").queue(); @@ -27,17 +26,28 @@ public class Ping extends GuildCommand { event.getChannel().sendMessage("Gathering data. . .").queue(msg -> { long timeToProcess = System.currentTimeMillis(); - try { // TODO rewrite this block, all tries are not good practice - - String out = "Pong!\n" + "Google: " + services.UptimePing.sendPing("www.google.com") + "ms\n" - + "JDA Gateway: " + event.getJDA().getGatewayPing() + "ms\n" + "www.discord.com: " - + services.UptimePing.sendPing("www.discord.com") + "ms"; - - msg.editMessage(out + "\nTime to process: " + (System.currentTimeMillis() - timeToProcess) + "ms") - .queue(); + long jdaPing = event.getJDA().getGatewayPing(); + long googlePing = -1; + try { + googlePing = UptimePing.sendPing("www.google.com"); } catch (Exception e) { e.printStackTrace(); } + long discordPing = -1; + try { + discordPing = UptimePing.sendPing("www.discord.com"); + } catch (Exception e) { + e.printStackTrace(); + } + + String out = "Ping:\n" + + (googlePing > 0 ? "Google: " + googlePing + "ms\n" : "Could not connect to www.google.com\n") + + (discordPing > 0 ? "Discord: " + discordPing + "ms\n" + : "Could not connect to www.discord.com\n") + + "JDA-Discord heartbeat: "+jdaPing+"ms"; + + msg.editMessage(out + "\nTime to process: " + (System.currentTimeMillis() - timeToProcess) + "ms") + .queue(); }); } @@ -64,7 +74,7 @@ public class Ping extends GuildCommand { @Override public String getUsage() { - return Global.prefix+"ping [" + Argument.argumentPrefix + "all]"; + return Global.prefix + "ping [" + Argument.argumentPrefix + "all]"; } @Override diff --git a/src/pkg/deepCurse/nopalmo/core/Boot.java b/src/pkg/deepCurse/nopalmo/core/Boot.java index a10de29..5e8765b 100644 --- a/src/pkg/deepCurse/nopalmo/core/Boot.java +++ b/src/pkg/deepCurse/nopalmo/core/Boot.java @@ -2,8 +2,6 @@ package pkg.deepCurse.nopalmo.core; import java.sql.SQLException; -import javax.security.auth.login.LoginException; - import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; import net.dv8tion.jda.api.entities.Activity; @@ -12,57 +10,60 @@ import net.dv8tion.jda.api.utils.ChunkingFilter; import net.dv8tion.jda.api.utils.MemberCachePolicy; import pkg.deepCurse.nopalmo.database.DatabaseTools; import pkg.deepCurse.nopalmo.global.Reactions; +import pkg.deepCurse.nopalmo.listener.DirectMessageReceivedListener; import pkg.deepCurse.nopalmo.listener.GuildMessageReceivedListener; +import pkg.deepCurse.nopalmo.manager.DirectCommandManager; import pkg.deepCurse.nopalmo.manager.GuildCommandManager; -import pkg.deepCurse.simpleLoggingGarbage.core.Log; +import pkg.deepCurse.nopalmo.utils.LogHelper; public class Boot { public static JDA bot; public static DatabaseTools databaseTools = null; public static GuildCommandManager guildCommandManager = new GuildCommandManager(); // move to master manager + public static DirectCommandManager directCommandManager = new DirectCommandManager(); // move to master manager + public static boolean isProd = false; public static void main(String[] args) { - Log.boot("Booting. . ."); + LogHelper.boot("Booting. . ."); long preBootTime = System.currentTimeMillis(); - + isProd = args[2].contentEquals("prod"); - - Log.boot("Connecting to mariadb:nopalmo"); + + LogHelper.boot("Connecting to mariadb:nopalmo"); try { databaseTools = new DatabaseTools(args[1]); - Log.boot("Connected. . ."); - } catch (SQLException e1) { + LogHelper.boot("Connected. . ."); + } catch (SQLException | ClassNotFoundException e1) { e1.printStackTrace(); - Log.boot("Failed to connect. . .\nShutting down. . ."); + LogHelper.boot("Failed to connect. . .\nShutting down. . ."); System.exit(4); } - - Log.boot("Init reaction/emote list"); + + LogHelper.boot("Init reaction/emote list"); Reactions.init(); - Log.boot("Initialized reaction/emote list. . ."); - Log.boot("Init guild commands list"); + LogHelper.boot("Initialized reaction/emote list. . ."); + LogHelper.boot("Init guild commands list"); guildCommandManager.init(); - Log.boot("Initialized guild commands list. . ."); - + LogHelper.boot("Initialized guild commands list. . ."); + try { bot = JDABuilder.createDefault(args[0]).setChunkingFilter(ChunkingFilter.NONE) .setMemberCachePolicy(MemberCachePolicy.NONE).enableIntents(GatewayIntent.GUILD_MEMBERS) .setActivity(Activity.watching("Loading users...")).setIdle(true) - .addEventListeners(new GuildMessageReceivedListener()).build().awaitReady(); - } catch (LoginException e) { - Log.crash(e); - } catch (InterruptedException e) { - e.printStackTrace(); + .addEventListeners(new GuildMessageReceivedListener()).addEventListeners(new DirectMessageReceivedListener()) .build().awaitReady(); + } catch (Exception e) { + LogHelper.crash(e); } - + bot.getPresence().setActivity(Activity.listening("Infected Mushroom")); - + long bootTime = System.currentTimeMillis() - preBootTime; - - Log.boot("Taken "+bootTime+"ms to boot"); + + LogHelper.boot("Taken " + bootTime + "ms to boot"); } + } diff --git a/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java b/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java index 862b5e0..dc5d030 100644 --- a/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java +++ b/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java @@ -13,37 +13,26 @@ import org.jetbrains.annotations.Nullable; import pkg.deepCurse.nopalmo.core.Boot; import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; -import pkg.deepCurse.simpleLoggingGarbage.core.Log; public class DatabaseTools { private static Connection connection = null; - public DatabaseTools(String password) throws SQLException { + public DatabaseTools(String password) throws SQLException, ClassNotFoundException { connection = createConnection(password); Global.updatePrefix(); } - @SuppressWarnings("deprecation") - public static Connection createConnection(String password) throws SQLException { + public static Connection createConnection(String password) throws SQLException, ClassNotFoundException { String dbName = Boot.isProd ? "nopalmo" : "chaos"; String driver = "com.mysql.cj.jdbc.Driver"; String url = "jdbc:mysql://localhost/" + dbName; String username = "nopalmo"; - try { - Class.forName(driver); - } catch (ClassNotFoundException e) { - Log.crash(e); - } - try { - return DriverManager.getConnection(url, username, password); - } catch (SQLException e) { - SQLCode.sqlTranslate("Generate connection", e); - throw new SQLException(e); - } + Class.forName(driver); + return DriverManager.getConnection(url, username, password); } private static void checkUpdateCounts(PreparedStatement pstmt, int[] updateCounts) { diff --git a/src/pkg/deepCurse/nopalmo/database/SQLCode.java b/src/pkg/deepCurse/nopalmo/database/SQLCode.java index 2e03910..68dc8c8 100644 --- a/src/pkg/deepCurse/nopalmo/database/SQLCode.java +++ b/src/pkg/deepCurse/nopalmo/database/SQLCode.java @@ -4,23 +4,22 @@ import java.sql.PreparedStatement; import java.sql.SQLException; public class SQLCode { - - - + public static String getMessage(String action, int errorCode) { switch (errorCode) { case 1062: System.err.println("Failed to execute; errorCode=" + errorCode + "; ER_DUP_ENTRY; On action " + action); return ""; case 1054: - System.err.println("Failed to execute; errorCode=" + errorCode + "; ER_BAD_FIELD_ERROR; On action " + action); + System.err + .println("Failed to execute; errorCode=" + errorCode + "; ER_BAD_FIELD_ERROR; On action " + action); return ""; default: System.err.println("Failed to execute; errorCode=" + errorCode + "; Unknown code; On action " + action); return ""; } } - + @Deprecated public static void sqlTranslate(String action, SQLException e) { SQLCode.getMessage(action, e.getErrorCode()); @@ -29,5 +28,5 @@ public class SQLCode { public static void sqlTranslate(PreparedStatement pstmt, SQLException e) { SQLCode.getMessage(pstmt.toString(), e.getErrorCode()); } - + } diff --git a/src/pkg/deepCurse/nopalmo/global/Reactions.java b/src/pkg/deepCurse/nopalmo/global/Reactions.java index 002a4aa..903484b 100644 --- a/src/pkg/deepCurse/nopalmo/global/Reactions.java +++ b/src/pkg/deepCurse/nopalmo/global/Reactions.java @@ -3,23 +3,23 @@ package pkg.deepCurse.nopalmo.global; import java.util.HashMap; public class Reactions { - + private static HashMap reactionMap = new HashMap(); - + public static void init() { insert("galaxyThumb", 801657838358495232L); } - + public static void insert(String input, long id) { reactionMap.put(input, id); } - + public static String getReaction(String id) { - return ":"+id+":"+reactionMap.get(id); + return ":" + id + ":" + reactionMap.get(id); } - + public static String getEmote(String id) { - return "<:"+id+":"+reactionMap.get(id)+">"; + return "<:" + id + ":" + reactionMap.get(id) + ">"; } - + } diff --git a/src/pkg/deepCurse/nopalmo/global/Tools.java b/src/pkg/deepCurse/nopalmo/global/Tools.java index efe58f4..e8dabb1 100644 --- a/src/pkg/deepCurse/nopalmo/global/Tools.java +++ b/src/pkg/deepCurse/nopalmo/global/Tools.java @@ -1,6 +1,8 @@ package pkg.deepCurse.nopalmo.global; +import net.dv8tion.jda.api.entities.MessageChannel; import net.dv8tion.jda.api.entities.TextChannel; +import pkg.deepCurse.nopalmo.command.DirectCommand; import pkg.deepCurse.nopalmo.command.GuildCommand; public class Tools { @@ -9,4 +11,8 @@ public class Tools { tc.sendMessage("Wrong Command Usage!\n" + c.getUsage()).queue(); } + public static void wrongUsage(MessageChannel tc, DirectCommand c) { + tc.sendMessage("Wrong Command Usage!\n" + c.getUsage()).queue(); + } + } diff --git a/src/pkg/deepCurse/nopalmo/listener/DirectMessageReceivedListener.java b/src/pkg/deepCurse/nopalmo/listener/DirectMessageReceivedListener.java new file mode 100644 index 0000000..0bf4271 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/listener/DirectMessageReceivedListener.java @@ -0,0 +1,64 @@ +package pkg.deepCurse.nopalmo.listener; + +import javax.annotation.Nonnull; + +import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.events.ReadyEvent; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; +import pkg.deepCurse.nopalmo.core.Boot; +import pkg.deepCurse.nopalmo.database.DatabaseTools; +import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; + +public class DirectMessageReceivedListener extends ListenerAdapter { + + @Override + public void onReady(@Nonnull ReadyEvent event) { + System.out.println("DirectMessageReceivedListener is now ready. . ."); + } + + @Override + public void onMessageReceived(@Nonnull MessageReceivedEvent event) { + Message message = event.getMessage(); + String messageRaw = message.getContentRaw(); + System.out.println(messageRaw + "\n<@!" + event.getJDA().getSelfUser().getIdLong() + ">"); + if (messageRaw.contentEquals(Global.prefix + Global.prefix) + && DatabaseTools.Tools.Developers.canPowerOffBot(event.getAuthor().getIdLong())) { + + // message.addReaction(Reactions.getReaction("galaxyThumb")).complete(); TODO re + // enable + + // message.delete().complete(); + + // pause thread as last resort + + event.getJDA().shutdown(); + System.exit(0); + } + + String[] prefixArray = new String[] { Global.prefix, "<@! " + event.getJDA().getSelfUser().getIdLong() + ">" }; + // FIXME BROKEN PING PREFIX + + boolean shouldReturn = true; + for (String i : prefixArray) { // TODO switch to [] to skip for loop? + + if (messageRaw.startsWith(i)) { + // System.out.println("breaking"); + shouldReturn = false; + } + } + + // TODO add pre manager commands + + if (shouldReturn) { + + return; + } + + if (!event.getAuthor().isBot() && !event.isFromGuild()) { + Boot.directCommandManager.startCommand(event); + } + + } + +} diff --git a/src/pkg/deepCurse/nopalmo/listener/GuildMessageReceivedListener.java b/src/pkg/deepCurse/nopalmo/listener/GuildMessageReceivedListener.java index bdf7271..113a710 100644 --- a/src/pkg/deepCurse/nopalmo/listener/GuildMessageReceivedListener.java +++ b/src/pkg/deepCurse/nopalmo/listener/GuildMessageReceivedListener.java @@ -27,8 +27,9 @@ public class GuildMessageReceivedListener extends ListenerAdapter { if (messageRaw.contentEquals(Global.prefix + Global.prefix) && DatabaseTools.Tools.Developers.canPowerOffBot(event.getAuthor().getIdLong())) { - // message.addReaction(Reactions.getReaction("galaxyThumb")).complete(); TODO re enable - + // message.addReaction(Reactions.getReaction("galaxyThumb")).complete(); TODO re + // enable + message.delete().complete(); // pause thread as last resort @@ -38,14 +39,14 @@ public class GuildMessageReceivedListener extends ListenerAdapter { } String[] prefixArray = new String[] { DatabaseTools.Tools.Guild.Prefix.getPrefix(event.getGuild().getIdLong()), - "<@!" + event.getJDA().getSelfUser().getIdLong() + ">" }; + "<@!" + event.getJDA().getSelfUser().getIdLong() + ">" }; // FIXME BROKEN PING PREFIX boolean shouldReturn = true; - for (String i : prefixArray) { // switch to [] to skip for loop? + for (String i : prefixArray) { // TODO switch to [] to skip for loop? if (messageRaw.startsWith(i)) { - shouldReturn = false; + break; } } diff --git a/src/pkg/deepCurse/nopalmo/manager/Argument.java b/src/pkg/deepCurse/nopalmo/manager/Argument.java index f988828..d5edd7f 100644 --- a/src/pkg/deepCurse/nopalmo/manager/Argument.java +++ b/src/pkg/deepCurse/nopalmo/manager/Argument.java @@ -1,20 +1,22 @@ package pkg.deepCurse.nopalmo.manager; public class Argument { - + // README // - // This tool is used simply for now, but it will be worth while if you get used to it + // This tool is used simply for now, but it will be worth while if you get used + // to it // - // this allows extra organization and ease of use throughout the creation of commands + // this allows extra organization and ease of use throughout the creation of + // commands // instead of one simple list where if args[1] == "all" do code // this allows the same functionality, if not more with a little bit of learning - // you can go back to what it was before, but i honestly believe this system is worthwhile + // you can go back to what it was before, but i honestly believe this system is + // worthwhile // it just needs polish and reports on usage for optimization // //// TL;DR ITS A NEW FEATURE, GIVE IT TIME - - + private int requiredArgs = 0; private String argName = null; private Argument[] subArgs = null; @@ -102,16 +104,15 @@ public class Argument { // this.subArgs = subArgs; // return this; // } - + public Argument setPrefixRequirement(Boolean bool) { this.requiresPrefix = bool; return this; } - + public boolean getPrefixRequirement() { return this.requiresPrefix; } - public interface RunnableArg { diff --git a/src/pkg/deepCurse/nopalmo/manager/ArgumentList.java b/src/pkg/deepCurse/nopalmo/manager/ArgumentList.java deleted file mode 100644 index 238a53b..0000000 --- a/src/pkg/deepCurse/nopalmo/manager/ArgumentList.java +++ /dev/null @@ -1,32 +0,0 @@ -package pkg.deepCurse.nopalmo.manager; - -public class ArgumentList { // ON HOLD FOR NOW, IT MAY BE USELESS -// -// private HashMap args = new HashMap(); -// private Command command = null; -// -// public ArgumentList(Command command) { -// this.command = command; -// } -// -// public void addArgument(String name) { -// -// -// -// args.put(null, null); -// } -// -// @Nullable -// public ArrayList getArguments() { -// return (ArrayList) args.values(); -// } -// -// public Argument getArgumentFromName(String argumentName) { -// return args.get(argumentName); -// } -// -// @Nullable -// public List getArgumentNames() { -// return (@Nullable List) args.keySet(); -// } -} diff --git a/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java b/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java deleted file mode 100644 index 7d80d1e..0000000 --- a/src/pkg/deepCurse/nopalmo/manager/CommandBlob.java +++ /dev/null @@ -1,60 +0,0 @@ -package pkg.deepCurse.nopalmo.manager; - -import java.util.ArrayList; - -import net.dv8tion.jda.api.JDA; -import net.dv8tion.jda.api.events.Event; - -public abstract class CommandBlob { - - private String modifiedRaw = null; - private String modified = null; - - private ArrayList args = null; - - protected long userID = 0; - - Event event = null; - - @Deprecated - public CommandBlob(Event event) { - this.event = event; - } - - public Event getEvent() { - return event; - } - - public String getModifiedMessageContents() { - return this.modified; - } - - public String getModifiedRawMessageContents() { - return this.modifiedRaw; - } - - @Deprecated - public ArrayList getArgs() { - return args; - } - - public CommandBlob setUser(long userID) { - this.userID = userID; - return this; - } - - public long getUserID() { - return this.userID; - } - - public CommandBlob setJDA(JDA bot) { - return this; - - } - - public CommandBlob setArgs(ArrayList newArguments) { - this.args = newArguments; - return this; - } - -} diff --git a/src/pkg/deepCurse/nopalmo/manager/DirectCommandBlob.java b/src/pkg/deepCurse/nopalmo/manager/DirectCommandBlob.java new file mode 100644 index 0000000..adb5c01 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/manager/DirectCommandBlob.java @@ -0,0 +1,63 @@ +package pkg.deepCurse.nopalmo.manager; + +import java.util.ArrayList; + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +public class DirectCommandBlob { + + private DirectCommandManager commandManager = null; + private ArrayList args = null; + + private long userID = 0; + private long channelID = 0; + + private MessageReceivedEvent event = null; + + public DirectCommandBlob(MessageReceivedEvent event) { + setUserID(event.getAuthor().getIdLong()); + setChannelID(event.getChannel().getIdLong());this.event = event; + } + + public ArrayList getArgs() { + return args; + } + + public DirectCommandBlob setArgs(ArrayList newArguments) { + this.args = newArguments; + return this; + } + + public DirectCommandBlob setUserID(long userID) { + this.userID = userID; + return this; + } + + public long getUserID() { + return this.userID; + } + + public DirectCommandManager getCommandManager() { + return commandManager; + } + + public void setCommandManager(DirectCommandManager commandManager) { + this.commandManager = commandManager; + } + + public long getChannelID() { + return channelID; + } + + public void setChannelID(long channelID) { + this.channelID = channelID; + } + + public MessageReceivedEvent getEvent() { + return event; + } + + public void setEvent(MessageReceivedEvent event) { + this.event = event; + } +} diff --git a/src/pkg/deepCurse/nopalmo/manager/DirectCommandManager.java b/src/pkg/deepCurse/nopalmo/manager/DirectCommandManager.java new file mode 100644 index 0000000..c54b16c --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/manager/DirectCommandManager.java @@ -0,0 +1,181 @@ +package pkg.deepCurse.nopalmo.manager; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.regex.Pattern; + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import pkg.deepCurse.nopalmo.command.DirectCommand; +import pkg.deepCurse.nopalmo.command.directCommand.info.DirectMessagePing; +import pkg.deepCurse.nopalmo.core.Boot; +import pkg.deepCurse.nopalmo.database.DatabaseTools; +import pkg.deepCurse.nopalmo.global.Tools; + +public class DirectCommandManager { + + private final Map directCommandMap = new HashMap<>(); + private static Executor executor = null; + + public DirectCommandManager() { + init(); + executor = Executors.newSingleThreadExecutor(); + } + + public void init() { + + addCommand(new DirectMessagePing()); + + } + + private void addCommand(DirectCommand c) { + if (!directCommandMap.containsKey(c.getCommandName())) { + directCommandMap.put(c.getCommandName(), c); + } else { + directCommandMap.remove(c.getCommandName()); + directCommandMap.put(c.getCommandName(), c); + } + } + + public Collection getDirectCommands() { + return directCommandMap.values(); + } + + public DirectCommand getCommand(String commandName) { + if (commandName != null) { + return directCommandMap.get(commandName); + } + return null; + } + + public void startCommand(MessageReceivedEvent messageReceivedEvent) { + + final String message = messageReceivedEvent.getMessage().getContentRaw(); + + final String[] split = message.replaceFirst("(?i)" + Pattern.quote(DatabaseTools.Tools.Global.prefix), "") + .split("\\s+"); + final String command = split[0].toLowerCase(); + + if (directCommandMap.containsKey(command)) { + final List args = Arrays.asList(split).subList(1, split.length); + + executor.execute(() -> { + long commandStartTime = System.currentTimeMillis(); + + try { + // ArrayList newArguments = new ArrayList(); + // ArrayList commandFlags = new ArrayList(); + + DirectCommandBlob commandBlob = new DirectCommandBlob(messageReceivedEvent); + DirectCommand directCommand = directCommandMap.get(command); + HashMap argumentList = new HashMap(); + + boolean printTime = false; + byte argSkipCount = 0; + boolean remainsValid = true; + + for (String x : args) { + x = x.toLowerCase(); + switch (x) { + case "\\time": + printTime = true; + break; + case "\\perm": + // commandFlags.add("user:380045419381784576"); + commandBlob.setUserID(380045419381784576L); + break; + case "\\del": + messageReceivedEvent.getMessage().delete().queue(); + break; + default: // in the rewrite process + if (argSkipCount <= 0) { + + if (directCommand.getArguments() != null) { + if (x.startsWith(Argument.argumentPrefix)) { + + String pre = x.substring(Argument.argumentPrefix.length()); + + if (directCommand.getArguments().keySet().contains(pre)) { + argumentList.put(pre, directCommand.getArguments().get(pre)); + } else { + Tools.wrongUsage(messageReceivedEvent.getChannel(), directCommand); + remainsValid = false; + } + } else { + if (directCommand.getArguments().get(x).getPrefixRequirement()) { + Tools.wrongUsage(messageReceivedEvent.getChannel(), directCommand); + remainsValid = false; + } else { + argumentList.put(x, directCommand.getArguments().get(x)); + } + } + } +// +// if (guildCommand.getArguments() != null) { +// +// String newArg = x; +// +// if (!newArg.startsWith(Argument.argumentPrefix)) { +// if (guildCommand.getArguments().get(newArg)!=null) { +// +// } +// } +// +// if (guildCommand.getArguments().containsKey(newArg)) { +// +// argumentList.put(guildCommand.getArguments().get(newArg).getArgName(), +// guildCommand.getArguments().get(newArg)); +// } else +// +// argumentList.put(newArg, new Argument(newArg)); +// } + } + } + } + + commandBlob.setCommandManager(this); + + if (remainsValid) { + directCommand.runCommand(commandBlob, argumentList); + } + + if (printTime) { + messageReceivedEvent.getChannel() + .sendMessage("Time to run: " + (System.currentTimeMillis() - commandStartTime) + "ms") + .queue(); + } + + } catch (Exception e) { + if (Boot.isProd) { + messageReceivedEvent.getChannel().sendMessage("```properties\n" + e + "```").queue(); + } else { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + e.printStackTrace(pw); + messageReceivedEvent.getChannel().sendMessage("```properties\n" + sw.toString() + "```").queue(); + System.err.println("Exception caught in: " + e.toString()); + e.printStackTrace(); + } + } catch (Throwable t) { + + if (Boot.isProd) { + messageReceivedEvent.getChannel().sendMessage("```mathematica\n" + t + "```").queue(); + } else { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + t.printStackTrace(pw); + messageReceivedEvent.getChannel().sendMessage("```mathematica\n" + sw.toString() + "```").queue(); + System.err.println("Error caught in: " + t.toString()); + t.printStackTrace(); + } + } + }); + } + } +} diff --git a/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java b/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java index d3d357e..ccecb72 100644 --- a/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java +++ b/src/pkg/deepCurse/nopalmo/manager/GuildCommandBlob.java @@ -1,18 +1,61 @@ package pkg.deepCurse.nopalmo.manager; +import java.util.ArrayList; + import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; -public class GuildCommandBlob extends CommandBlob { +public class GuildCommandBlob { - String[][] argumentArray = null; + private GuildCommandManager commandManager = null; + private ArrayList args = null; + private long userID = 0; + private long channelID = 0; + + private GuildMessageReceivedEvent event = null; + public GuildCommandBlob(GuildMessageReceivedEvent event) { - super(event); - setUser(event.getMessage().getAuthor().getIdLong()); + this.event = event; + setUserID(event.getAuthor().getIdLong()); + setChannelID(event.getChannel().getIdLong()); } - - public GuildMessageReceivedEvent getGuildMessageEvent() { - return (GuildMessageReceivedEvent) this.event; + + public ArrayList getArgs() { + return args; } - + + public GuildCommandBlob setArgs(ArrayList newArguments) { + this.args = newArguments; + return this; + } + + public GuildCommandBlob setUserID(long userID) { + this.userID = userID; + return this; + } + + public long getUserID() { + return this.userID; + } + + public GuildCommandManager getCommandManager() { + return commandManager; + } + + public void setCommandManager(GuildCommandManager commandManager) { + this.commandManager = commandManager; + } + + public long getChannelID() { + return channelID; + } + + public void setChannelID(long channelID) { + this.channelID = channelID; + } + + public GuildMessageReceivedEvent getEvent() { + return event; + } + } diff --git a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java index 2481253..5120557 100644 --- a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java +++ b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java @@ -13,6 +13,7 @@ import java.util.regex.Pattern; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; import pkg.deepCurse.nopalmo.command.GuildCommand; +import pkg.deepCurse.nopalmo.command.guildCommand.info.Git; import pkg.deepCurse.nopalmo.command.guildCommand.info.Help; import pkg.deepCurse.nopalmo.command.guildCommand.info.Ping; import pkg.deepCurse.nopalmo.core.Boot; @@ -30,8 +31,9 @@ public class GuildCommandManager { } public void init() { - // addCommand(new Help(this)); FIXME + addCommand(new Help(this)); addCommand(new Ping()); + addCommand(new Git()); } private void addCommand(GuildCommand c) { @@ -81,13 +83,14 @@ public class GuildCommandManager { boolean remainsValid = true; for (String x : args) { + x = x.toLowerCase(); switch (x) { case "\\time": printTime = true; break; case "\\perm": // commandFlags.add("user:380045419381784576"); - commandBlob.setUser(380045419381784576L); + commandBlob.setUserID(380045419381784576L); break; case "\\del": guildMessage.getMessage().delete().queue(); @@ -99,9 +102,13 @@ public class GuildCommandManager { if (x.startsWith(Argument.argumentPrefix)) { String pre = x.substring(Argument.argumentPrefix.length()); - - argumentList.put(pre, guildCommand.getArguments().get(pre)); - + + if (guildCommand.getArguments().keySet().contains(pre)) { + argumentList.put(pre, guildCommand.getArguments().get(pre)); + } else { + Tools.wrongUsage(guildMessage.getChannel(), guildCommand); + remainsValid = false; + } } else { if (guildCommand.getArguments().get(x).getPrefixRequirement()) { Tools.wrongUsage(guildMessage.getChannel(), guildCommand); @@ -133,9 +140,11 @@ public class GuildCommandManager { } } } - + + commandBlob.setCommandManager(this); + if (remainsValid) { - guildCommand.runCommand(commandBlob, this, argumentList); + guildCommand.runCommand(commandBlob, argumentList); } if (printTime) { @@ -146,24 +155,24 @@ public class GuildCommandManager { } catch (Exception e) { if (Boot.isProd) { - guildMessage.getChannel().sendMessage("```yaml\n" + e + "```").queue(); + guildMessage.getChannel().sendMessage("```properties\n" + e + "```").queue(); } else { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); - guildMessage.getChannel().sendMessage("```yaml\n" + sw.toString() + "```").queue(); + guildMessage.getChannel().sendMessage("```properties\n" + sw.toString() + "```").queue(); System.err.println("Exception caught in: " + e.toString()); e.printStackTrace(); } } catch (Throwable t) { if (Boot.isProd) { - guildMessage.getChannel().sendMessage("```apache\n" + t + "```").queue(); + guildMessage.getChannel().sendMessage("```mathematica\n" + t + "```").queue(); } else { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); t.printStackTrace(pw); - guildMessage.getChannel().sendMessage("```apache\n" + sw.toString() + "```").queue(); + guildMessage.getChannel().sendMessage("```mathematica\n" + sw.toString() + "```").queue(); System.err.println("Error caught in: " + t.toString()); t.printStackTrace(); } diff --git a/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java b/src/pkg/deepCurse/nopalmo/utils/LogHelper.java similarity index 89% rename from src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java rename to src/pkg/deepCurse/nopalmo/utils/LogHelper.java index 326ae1e..b725e0e 100644 --- a/src/pkg/deepCurse/simpleLoggingGarbage/core/Log.java +++ b/src/pkg/deepCurse/nopalmo/utils/LogHelper.java @@ -1,4 +1,4 @@ -package pkg.deepCurse.simpleLoggingGarbage.core; +package pkg.deepCurse.nopalmo.utils; import pkg.deepCurse.nopalmo.core.Boot; @@ -9,7 +9,7 @@ import pkg.deepCurse.nopalmo.core.Boot; * * @author deepCurse */ -public class Log { +public class LogHelper { public static int loggerLevel = 0; @@ -27,12 +27,14 @@ public class Log { } public static void crash(Exception e) { + e.printStackTrace(); + System.exit(69420); } public static void guildCommandManager(String text) { guildCommandManager(text); } - + public static void guildCommandManager(String text, int level) { if (guildCommandManagerEnabled && level <= loggerLevel) { System.out.println(Boot.class + ": " + text); diff --git a/src/pkg/deepCurse/nopalmo/utils/UptimePing.java b/src/pkg/deepCurse/nopalmo/utils/UptimePing.java new file mode 100644 index 0000000..f95bba3 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/utils/UptimePing.java @@ -0,0 +1,38 @@ +package pkg.deepCurse.nopalmo.utils; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.UnknownHostException; +import java.nio.channels.SocketChannel; +import java.util.Date; + +public class UptimePing { + + public static long sendPing(String IP) throws Exception { + + int port = 80; + long timeToRespond = 0; + + InetAddress inetAddress = InetAddress.getByName(IP); + InetSocketAddress socketAddress = new InetSocketAddress(inetAddress, port); + + SocketChannel sc = SocketChannel.open(); + sc.configureBlocking(true); + + Date start = new Date(); + if (sc.connect(socketAddress)) { + Date stop = new Date(); + timeToRespond = (stop.getTime() - start.getTime()); + + } + + // System.out.println("fix me"); // not sure why this is here + + if (socketAddress.getAddress() == null) { + return -1; + } else { + return timeToRespond; + } + } +} diff --git a/src/services/UptimePing.java b/src/services/UptimePing.java deleted file mode 100644 index cb2b450..0000000 --- a/src/services/UptimePing.java +++ /dev/null @@ -1,51 +0,0 @@ -package services; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.UnknownHostException; -import java.nio.channels.SocketChannel; -import java.util.Date; - -public class UptimePing { - - public static long sendPing(String IP) throws UnknownHostException, IOException { - /* - * StopWatch stopWatch = new StopWatch(); stopWatch.start(); InetAddress sender - * = InetAddress.getByName(IP); System.out.println("Pinging: " + IP); - * stopWatch.stop(); long timeP = stopWatch.getTime(TimeUnit.MICROSECONDS); - * System.out.println(timeP); if - * (sender.isReachable(5000)){//.isReachable(5000)) { - * System.out.println("Successfully pinged: " + IP); return timeP; } else { - * System.out.println("Failed to ping: " + IP); return -1; } - */ - try { - int port = 80; - long timeToRespond = 0; - - InetAddress inetAddress = InetAddress.getByName(IP); - InetSocketAddress socketAddress = new InetSocketAddress(inetAddress, port); - - SocketChannel sc = SocketChannel.open(); - sc.configureBlocking(true); - - Date start = new Date(); - if (sc.connect(socketAddress)) { - Date stop = new Date(); - timeToRespond = (stop.getTime() - start.getTime()); - - } - - // System.out.println("fix me"); // not sure why this is here - - if (socketAddress.getAddress() == null) { - return -1; - } else { - return timeToRespond; - } - } catch (IOException ex) { - System.out.println(ex.getMessage()); - return -1; - } - } -}