From 744e678a1e356ad8c72dbdb610a532ebde26e527 Mon Sep 17 00:00:00 2001 From: deepCurse Date: Tue, 7 Dec 2021 19:38:08 -0400 Subject: [PATCH] in the beginging of lyfe, there was mann, and wombat Signed-off-by: deepCurse --- .../command/commands/general/Example.java | 45 +++++++ .../nopalmo/command/commands/info/Help.java | 4 +- src/pkg/deepCurse/nopalmo/core/Boot.java | 113 +++++++++++++++--- .../nopalmo/database/DatabaseTools.java | 5 + .../nopalmo/manager/GuildCommandManager.java | 2 + src/pkg/deepCurse/nopalmo/utils/Locks.java | 26 ++-- 6 files changed, 164 insertions(+), 31 deletions(-) create mode 100644 src/pkg/deepCurse/nopalmo/command/commands/general/Example.java diff --git a/src/pkg/deepCurse/nopalmo/command/commands/general/Example.java b/src/pkg/deepCurse/nopalmo/command/commands/general/Example.java new file mode 100644 index 0000000..6955719 --- /dev/null +++ b/src/pkg/deepCurse/nopalmo/command/commands/general/Example.java @@ -0,0 +1,45 @@ +package pkg.deepCurse.nopalmo.command.commands.general; + +import java.util.HashMap; + +import pkg.deepCurse.nopalmo.command.CommandInterface.DualCommandInterface; +import pkg.deepCurse.nopalmo.manager.Argument; +import pkg.deepCurse.nopalmo.manager.CommandBlob; + +public class Example implements DualCommandInterface{ + + @Override + public String[] getCommandCalls() { + return new String[] {"owo"}; + } + + @Override + public HelpPage getHelpPage() { + return HelpPage.General; + } + + @Override + public String getHelp() { + return "an example command"; + } + + @Override + public void runDualCommand(CommandBlob blob, HashMap argumentMap) throws Exception { + + blob.getChannel().sendMessage("owo").queue(); + + } + + @Override + public HashMap getArguments() { + HashMap args = new HashMap(); + + args.put("k", new Argument("k", (CommandBlob blob) -> { + blob.getChannel().sendMessage("Dr. K").queue(); + }).setPrefixRequirement(true).setAutoStartRunnable(true)); + + return args; + + } + +} diff --git a/src/pkg/deepCurse/nopalmo/command/commands/info/Help.java b/src/pkg/deepCurse/nopalmo/command/commands/info/Help.java index c8f7b86..904e6c6 100644 --- a/src/pkg/deepCurse/nopalmo/command/commands/info/Help.java +++ b/src/pkg/deepCurse/nopalmo/command/commands/info/Help.java @@ -195,9 +195,7 @@ public class Help implements GuildCommandInterface { HashMap args = new HashMap(); args.put("commandName", new Argument("commandName").setPosition(0).setIsWildcard(true)); - args.put("dev", new Argument("dev", (CommandBlob blob) -> { - blob.getChannel().sendMessage("DEV FLAG USED").queue(); - }).setPrefixRequirement(true).setAutoStartRunnable(true).setPermissionLevel("infopermission")); + args.put("dev", new Argument("dev").setPrefixRequirement(true).setPermissionLevel("infopermission")); return args; } diff --git a/src/pkg/deepCurse/nopalmo/core/Boot.java b/src/pkg/deepCurse/nopalmo/core/Boot.java index 7b9f5a2..b8b9196 100644 --- a/src/pkg/deepCurse/nopalmo/core/Boot.java +++ b/src/pkg/deepCurse/nopalmo/core/Boot.java @@ -4,11 +4,15 @@ import java.sql.SQLException; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.OnlineStatus; import net.dv8tion.jda.api.entities.Activity; +import net.dv8tion.jda.api.entities.Activity.ActivityType; import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.ChunkingFilter; import net.dv8tion.jda.api.utils.MemberCachePolicy; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import pkg.deepCurse.nopalmo.database.DatabaseTools; +import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global; import pkg.deepCurse.nopalmo.global.Reactions; import pkg.deepCurse.nopalmo.listener.DirectMessageReceivedListener; import pkg.deepCurse.nopalmo.listener.GuildMessageReceivedListener; @@ -19,14 +23,16 @@ import pkg.deepCurse.nopalmo.utils.LogHelper; public class Boot { - public static JDA bot; + public static JDA bot; // TODO create sharding handler 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 final GuildCommandManager guildCommandManager = new GuildCommandManager(); // move to master manager + public static final DirectCommandManager directCommandManager = new DirectCommandManager(); // move to master + // manager public static boolean isProd = false; - - public static long pid = ProcessHandle.current().pid(); + + public static final long pid = ProcessHandle.current().pid(); + public static boolean running = true; public static void main(String[] args) { LogHelper.boot("Booting: <" + pid + ">"); @@ -64,32 +70,101 @@ public class Boot { LogHelper.boot("Init guild commands list"); guildCommandManager.init(); LogHelper.boot("Initialized guild commands list. . ."); - + try { - LogHelper.boot("Sleeping"); - Thread.sleep(90000); - } catch (InterruptedException e1) { - e1.printStackTrace(); - } - - try { - bot = JDABuilder.createDefault(args[0]).setChunkingFilter(ChunkingFilter.NONE) - .setMemberCachePolicy(MemberCachePolicy.NONE).enableIntents(GatewayIntent.GUILD_MEMBERS) - .setActivity(Activity.watching("Loading users...")).setIdle(true) +// bot = JDABuilder.createDefault(args[0]).setChunkingFilter(ChunkingFilter.ALL) +// .setMemberCachePolicy(MemberCachePolicy.ALL).enableIntents(GatewayIntent.GUILD_MEMBERS) +// .setActivity(Activity.watching("Loading users...")).setIdle(true) +// .addEventListeners(new GuildMessageReceivedListener()) +// .addEventListeners(new DirectMessageReceivedListener()).build().awaitReady(); + + bot = JDABuilder.createDefault(args[0]) + .setActivity(Activity.of(ActivityType.WATCHING, "the loading bar. . .")) + .setStatus(OnlineStatus.DO_NOT_DISTURB) + + .setMaxBufferSize(Integer.MAX_VALUE) + + .setChunkingFilter(ChunkingFilter.ALL).setMemberCachePolicy(MemberCachePolicy.ALL) + + .enableIntents(GatewayIntent.DIRECT_MESSAGE_REACTIONS, + + GatewayIntent.DIRECT_MESSAGES, GatewayIntent.GUILD_BANS, GatewayIntent.GUILD_EMOJIS, + GatewayIntent.GUILD_MEMBERS, GatewayIntent.GUILD_MESSAGE_REACTIONS, + + GatewayIntent.GUILD_MESSAGES // , GatewayIntent.GUILD_VOICE_STATES + ) + + .enableCache(// CacheFlag.CLIENT_STATUS, + CacheFlag.EMOTE, // CacheFlag.ACTIVITY, + CacheFlag.MEMBER_OVERRIDES // , CacheFlag.VOICE_STATE + ) + + // .setIdle(true) + + .setAutoReconnect(true) + .addEventListeners(new GuildMessageReceivedListener()) - .addEventListeners(new DirectMessageReceivedListener()).build().awaitReady(); + .addEventListeners(new DirectMessageReceivedListener()) + + .setEnableShutdownHook(true) + + .build(); + } catch (Exception e) { LogHelper.crash(e); } + bot.getPresence().setStatus(OnlineStatus.ONLINE); bot.getPresence().setActivity(Activity.listening("Infected Mushroom")); long bootTime = System.currentTimeMillis() - preBootTime; LogHelper.boot("Taken " + bootTime + "ms to boot"); - - LogHelper.boot("Starting loop"); + // LogHelper.boot("Starting loop"); + // loop(); + } + + private static void loop() { + + long lastTime = System.currentTimeMillis(); + long fifteenMins = lastTime; + long fiveMins = lastTime; + long threeMins = lastTime; + long lastTimeUpdateStatus = lastTime; + long lastTimeCheckUpdate= lastTime; + + long dynamicWait = 0; + + while (running) { + + long now = System.currentTimeMillis(); + + if (now > lastTime + dynamicWait) { // dynamic wait loop + + } + + if (now > lastTimeCheckUpdate + 900000) { + + } + + if (now > lastTimeUpdateStatus + dynamicWait && Global.isShuffleStatusEnabled()) { + + } + + if (now > fifteenMins + 900000) { + + } + + if (now > fiveMins + 300000) { + + } + + if (now > threeMins + 180000) { + + } + + } } } diff --git a/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java b/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java index 67954e9..7e72842 100644 --- a/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java +++ b/src/pkg/deepCurse/nopalmo/database/DatabaseTools.java @@ -295,6 +295,11 @@ public class DatabaseTools { // return null; } + public static boolean isShuffleStatusEnabled() { + + return false; + } + } // public class Reaction { // started off as a good idea but it sucks diff --git a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java index a639efe..c2915dc 100644 --- a/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java +++ b/src/pkg/deepCurse/nopalmo/manager/GuildCommandManager.java @@ -14,6 +14,7 @@ import java.util.regex.Pattern; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; import pkg.deepCurse.nopalmo.command.CommandInterface.GuildCommandInterface; +import pkg.deepCurse.nopalmo.command.commands.general.Example; import pkg.deepCurse.nopalmo.command.commands.general.Prefix; import pkg.deepCurse.nopalmo.command.commands.general.Test; import pkg.deepCurse.nopalmo.command.commands.info.Git; @@ -39,6 +40,7 @@ public class GuildCommandManager extends CommandManager { addCommand(new Git()); addCommand(new Prefix()); addCommand(new Test()); + addCommand(new Example()); } private void addCommand(GuildCommandInterface c) { diff --git a/src/pkg/deepCurse/nopalmo/utils/Locks.java b/src/pkg/deepCurse/nopalmo/utils/Locks.java index bd6cac0..9990543 100644 --- a/src/pkg/deepCurse/nopalmo/utils/Locks.java +++ b/src/pkg/deepCurse/nopalmo/utils/Locks.java @@ -18,16 +18,26 @@ public class Locks { public static boolean dirLock(String lockName) throws Exception { long pid = 0L; - Scanner pidScanner = new Scanner(new File(System.getProperty("user.dir") + "/" + lockName)); + + File file = new File(System.getProperty("user.dir") + "/" + lockName); + + if (!file.exists()) { + file.createNewFile(); + } + + Scanner pidScanner = new Scanner(file); + StringBuilder pidBuilder = new StringBuilder(); while (pidScanner.hasNext()) { pidBuilder.append(pidScanner.next()); } pidScanner.close(); - pid = Long.parseLong(pidBuilder.toString().replaceAll("[^0-9]", "")); - - - + try { + pid = Long.parseLong(pidBuilder.toString().replaceAll("[^0-9]", "")); + } catch (Exception e) { + + } + Process proc = new ProcessBuilder().command("readlink", "/proc/" + pid + "/cwd").start(); Scanner readlinkScanner = new Scanner(new InputStreamReader(proc.getInputStream())); StringBuilder readlinkBuilder = new StringBuilder(); @@ -35,13 +45,11 @@ public class Locks { readlinkBuilder.append(readlinkScanner.next()); } readlinkScanner.close(); - - - + if (readlinkBuilder.toString().contentEquals(new File(System.getProperty("user.dir")).getPath())) { return true; } else { - FileWriter writer = new FileWriter(new File(System.getProperty("user.dir") + "/" + lockName)); + FileWriter writer = new FileWriter(file); writer.write(String.valueOf(Boot.pid)); writer.close();