probably broken sync

Signed-off-by: deepCurse <leverplays@gmail.com>
This commit is contained in:
lever1209 2022-02-15 21:59:18 -04:00
commit 3669fc617e
No known key found for this signature in database
GPG key ID: EEBCBB60C9DFC782
25 changed files with 1472 additions and 914 deletions

View file

@ -1,17 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="/libs-java/db/mysql-connector-java-8.0.27.jar" sourcepath="/libs-java/db/mysql-connector-java-8.0.27-sources.jar"/>
<classpathentry kind="lib" path="/libs-java/discord/JDA-4.4.0_350-withDependencies.jar" sourcepath="/libs-java/discord/JDA-4.4.0_350-sources.jar"/>
<classpathentry kind="lib" path="/libs-java/logging/slf4j-api-1.7.9.jar" sourcepath="/libs-java/logging/slf4j-api-1.7.9-sources.jar"/>
<classpathentry kind="lib" path="/libs-java/logging/slf4j-simple-1.7.9.jar" sourcepath="/libs-java/logging/slf4j-simple-1.7.9-sources.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/bontebok"/>
<classpathentry combineaccessrules="false" kind="src" path="/phoenix-runtime"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Nopalmo"/>
<classpathentry combineaccessrules="false" kind="src" path="/libs-java"/>
<classpathentry combineaccessrules="false" kind="src" path="/phoenix-runtime"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -2,4 +2,9 @@
finish loop
// DONE add socket server for better management / integration
// DONE implement pheonix in a smarter way than last time
add better security to the socket server
add better security to the socket server
add argument alias usage support
add on join actions and configs
// DONE clean up database accessor for a more modular setup

View file

@ -5,7 +5,7 @@ import java.util.HashMap;
import org.jetbrains.annotations.Nullable;
import net.dv8tion.jda.api.Permission;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GlobalDB;
import pkg.deepCurse.nopalmo.manager.Argument;
import pkg.deepCurse.nopalmo.manager.CommandBlob;
@ -61,10 +61,10 @@ public interface CommandInterface { // TODO rewrite to implement type args?
}
}
}
return Global.prefix + getCommandName() + " " + sB.toString().trim();
return GlobalDB.prefix + getCommandName() + " " + sB.toString().trim();
}
return Global.prefix + getCommandName();
return GlobalDB.prefix + getCommandName();
}
public default int getTimeout() {

View file

@ -3,9 +3,9 @@ package pkg.deepCurse.nopalmo.command.commands.general;
import java.util.HashMap;
import pkg.deepCurse.nopalmo.command.CommandInterface.GuildCommandInterface;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Guild;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Users;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GlobalDB;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GuildDB;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.UserDB;
import pkg.deepCurse.nopalmo.manager.Argument;
import pkg.deepCurse.nopalmo.manager.CommandBlob;
@ -25,15 +25,20 @@ public class Prefix implements GuildCommandInterface {
public void runGuildCommand(CommandBlob blob, HashMap<String, Argument> argumentList) throws Exception {
if (argumentList.get("prefix") != null) {
Guild.Prefix.setPrefix(blob.getGuildID(), argumentList.get("prefix").getWildCardString());
GuildDB.setPrefix(blob.getGuildID(), argumentList.get("prefix").getWildCardString());
blob.getChannel().sendMessage("Set prefix to " + argumentList.get("prefix").getWildCardString()).queue();
if (!Users.isAdvancedUser(blob.getAuthorID()))
if (!UserDB.isAdvancedUser(blob.getAuthorID()))
blob.getChannel()
.sendMessage(
"Remember: you can always ping me to use any command in case you forget the prefix")
.queue();
// if () {
//
// }
} else {
Guild.Prefix.setPrefix(blob.getGuildID(), Global.prefix);
GuildDB.setPrefix(blob.getGuildID(), GlobalDB.prefix);
blob.getChannel().sendMessage("Reset prefix to default").queue();
}

View file

@ -9,7 +9,7 @@ import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.TextChannel;
import pkg.deepCurse.nopalmo.command.CommandInterface;
import pkg.deepCurse.nopalmo.command.CommandInterface.GuildCommandInterface;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GlobalDB;
import pkg.deepCurse.nopalmo.manager.Argument;
import pkg.deepCurse.nopalmo.manager.CommandBlob;
import pkg.deepCurse.nopalmo.manager.CommandManager;
@ -33,8 +33,7 @@ public class Help implements GuildCommandInterface {
// boolean blob.isDeveloper() = argumentMap.get("dev") != null;
if (argumentMap.get("commandName") == null) {
EmbedBuilder embed = new EmbedBuilder().setTitle(
blob.isDeveloper() ? "^Commands:" + blob.isDeveloper() : "Commands:" + blob.isDeveloper());
EmbedBuilder embed = new EmbedBuilder().setTitle(blob.isDeveloper() ? "^Commands:" : "Commands:");
HashMap<HelpPage, ArrayList<String>> commandHash = new HashMap<HelpPage, ArrayList<String>>();
@ -127,7 +126,7 @@ public class Help implements GuildCommandInterface {
embed.setFooter(blob.getMember().getEffectiveName(), blob.getAuthor().getEffectiveAvatarUrl());
embed.setTimestamp(Instant.now());
embed.setColor(Global.getEmbedColor());
embed.setColor(Integer.parseInt(GlobalDB.getGlobalValue("embedcolor")));
blob.getChannel().sendMessageEmbeds(embed.build()).queue();
@ -141,7 +140,7 @@ public class Help implements GuildCommandInterface {
if (!blob.isFromGuild() ? true : !(command.isNSFW() && !((TextChannel) blob.getChannel()).isNSFW())) {
EmbedBuilder eB = new EmbedBuilder();
eB.setColor(Global.getEmbedColor());
eB.setColor(Integer.parseInt(GlobalDB.getGlobalValue("embedcolor")));
StringBuilder sB = new StringBuilder();
eB.setTitle("Help results for: " + command.getCommandName());

View file

@ -6,7 +6,7 @@ import org.jetbrains.annotations.Nullable;
import pkg.deepCurse.nopalmo.command.CommandInterface.GuildCommandInterface;
import pkg.deepCurse.nopalmo.command.CommandInterface.PrivateCommandInterface;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Users;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.UserDB;
import pkg.deepCurse.nopalmo.manager.Argument;
import pkg.deepCurse.nopalmo.manager.CommandBlob;
@ -32,8 +32,11 @@ public class Info implements GuildCommandInterface, PrivateCommandInterface {
HashMap<String, Argument> args = new HashMap<String, Argument>();
args.put("userdump", new Argument("userdump", (CommandBlob blob) -> {
blob.getChannel().sendMessage(!Users.dump(blob.getAuthorID()).isEmpty() ? Users.dump(blob.getAuthorID())
: "Sorry, but this user does not exist in the database").queue();
blob.getChannel()
.sendMessage(
!UserDB.generateDump(blob.getAuthorID()).isEmpty() ? UserDB.generateDump(blob.getAuthorID())
: "Sorry, but this user does not exist in the database")
.queue();
}).setPrefixRequirement(true).setAutoStartRunnable(true).setSkipOriginalTaskOnRunnable(true).addAliases("u"));
return args;

View file

@ -5,11 +5,9 @@ import java.util.HashMap;
import org.jetbrains.annotations.Nullable;
import pkg.deepCurse.nopalmo.command.CommandInterface.DualCommandInterface;
import pkg.deepCurse.nopalmo.global.Reactions;
import pkg.deepCurse.nopalmo.core.Loader;
import pkg.deepCurse.nopalmo.manager.Argument;
import pkg.deepCurse.nopalmo.manager.CommandBlob;
import pkg.deepCurse.nopalmo.manager.StatusManager;
import pkg.deepCurse.nopalmo.utils.LogHelper;
public class Reload implements DualCommandInterface {
@ -35,43 +33,8 @@ public class Reload implements DualCommandInterface {
@Override
public void runDualCommand(CommandBlob blob, HashMap<String, Argument> argumentMap) throws Exception {
StringBuilder sB = new StringBuilder();
LogHelper.log("Init reaction/emote list", getClass());
sB.append("Init reaction/emote list\n");
try {
Reactions.init();
LogHelper.log("Initialized reaction/emote list. . .", getClass());
sB.append("Initialized reaction/emote list. . .\n");
} catch (Exception e) {
LogHelper.log("Failed to initialize reaction/emote list. . .\n" + e + "\n", getClass());
sB.append("Failed to initialize reaction/emote list. . .\n" + e + "\n");
}
LogHelper.log("Init command list", getClass());
sB.append("Init command list\n");
try {
blob.getCommandManager().init();
LogHelper.log("Initialized command list. . .", getClass());
sB.append("Initialized command list. . .\n");
} catch (Exception e) {
LogHelper.log("Failed to initialize command list. . .\n" + e + "\n", getClass());
sB.append("Failed to initialize command list. . .\n" + e + "\n");
}
LogHelper.log("Init status list", getClass());
sB.append("Init status list\n");
try {
StatusManager.init();
LogHelper.log("Initialized status list. . .", getClass());
sB.append("Initialized status list. . .\n");
} catch (Exception e) {
LogHelper.log("Failed to initialize status list. . .\n" + e + "\n", getClass());
sB.append("Failed to initialize status list. . .\n" + e + "\n");
}
blob.getChannel().sendMessage(sB.toString()).queue();
// blob.getChannel().sendMessage("Refreshing caches. . .").queue();
blob.getChannel().sendMessage(Loader.init()).queue();
}
}

View file

@ -1,52 +1,53 @@
package pkg.deepCurse.nopalmo.command.commands.testing;
import java.util.HashMap;
import org.jetbrains.annotations.Nullable;
import pkg.deepCurse.bontebok.core.BontebokInterpreter;
import pkg.deepCurse.nopalmo.command.CommandInterface.DualCommandInterface;
import pkg.deepCurse.nopalmo.manager.Argument;
import pkg.deepCurse.nopalmo.manager.CommandBlob;
public class BontebokInterpret implements DualCommandInterface {
@Override
public String[] getCommandCalls() {
return new String[] { "bontebok", "interpret", "int", "bo" };
}
@Override
public HelpPage getHelpPage() {
return HelpPage.TESTING;
}
@Override
public String getHelp() {
return "This command will interpret a string using the bontebok interpreter";
}
@Override
public @Nullable HashMap<String, Argument> getArguments() {
return null;
}
@Override
public void runDualCommand(CommandBlob blob, HashMap<String, Argument> argumentMap) throws Exception {
blob.getChannel().sendMessage("Interpreting. . .").queue();
String returnValue = BontebokInterpreter.InterpretString(argumentMap.get("null").getWildCardString(), null);
switch (returnValue.substring(0, 1)) {
//package pkg.deepCurse.nopalmo.command.commands.testing;
//
//import java.util.HashMap;
//
//import org.jetbrains.annotations.Nullable;
//
//import pkg.deepCurse.nopalmo.command.CommandInterface.DualCommandInterface;
//import pkg.deepCurse.nopalmo.core.Boot;
//import pkg.deepCurse.nopalmo.manager.Argument;
//import pkg.deepCurse.nopalmo.manager.CommandBlob;
//
//public class BontebokInterpret implements DualCommandInterface {
//
// @Override
// public String[] getCommandCalls() {
// return new String[] { "bontebok", "interpret", "int", "bo" };
// }
//
// @Override
// public HelpPage getHelpPage() {
// return HelpPage.TESTING;
// }
//
// @Override
// public String getHelp() {
// return "This command will interpret a string using the bontebok interpreter";
// }
//
// @Override
// public @Nullable HashMap<String, Argument> getArguments() {
// return null;
// }
//
// @Override
// public void runDualCommand(CommandBlob blob, HashMap<String, Argument> argumentMap) throws Exception {
//
// blob.getChannel().sendMessage("Interpreting. . .").queue();
//
// String returnValue = Boot.bontebokManager.getBontebokInterpreter()
// .InterpretString(argumentMap.get("null").getWildCardString());
//
// switch (returnValue.substring(0, 1)) {
// case "0":
// blob.getChannel().sendMessage("Operation completed with return value 0").queue();
// break;
case "1":
blob.getChannel().sendMessage("Operation failed with return value 1"
+ (returnValue.substring(1).isBlank() ? "" : ": " + returnValue.substring(1))).queue();
break;
}
}
}
// case "1":
// blob.getChannel().sendMessage("Operation failed with return value 1"
// + (returnValue.substring(1).isBlank() ? "" : ": " + returnValue.substring(1))).queue();
// break;
// }
// }
//
//}

View file

@ -0,0 +1,127 @@
package pkg.deepCurse.nopalmo.command.commands.testing;
import java.util.HashMap;
import org.jetbrains.annotations.Nullable;
import pkg.deepCurse.nopalmo.command.CommandInterface.GuildCommandInterface;
import pkg.deepCurse.nopalmo.manager.Argument;
import pkg.deepCurse.nopalmo.manager.CommandBlob;
public class Purge implements GuildCommandInterface {
@Override
public String[] getCommandCalls() {
return new String[] { "p" };
}
@Override
public HelpPage getHelpPage() {
return HelpPage.TESTING;
}
@Override
public String getHelp() {
return "Purges the channel of messages using many useful arguments to control the mode";
}
@Override
public @Nullable HashMap<String, Argument> getArguments() {
return null;
}
@Override
public void runGuildCommand(CommandBlob blob, HashMap<String, Argument> argumentList) throws Exception {
}
// @Override
// public void runGuildCommand(CommandBlob blob, HashMap<String, Argument> argumentList) throws Exception {
//
// if (args.size() == 1) {
// if (!blob.getMember().hasPermission(Permission.MESSAGE_MANAGE)) {
// blob.getChannel().sendMessage("You don't have the **MESSAGE_MANAGE** permission!").queue();
// return;
// }
// int num = 0;
// try {
// num = Integer.parseInt(args.get(0));
// } catch (NumberFormatException nfe) {
// throw new NumberFormatException("Enter a number dumbass");
// }
// blob.getMessage().delete().complete();
// int currentNum = num / 100;
// if (currentNum == 0) {
// List<Message> msg = event.getChannel().getHistory().retrievePast(num).complete();
// event.getChannel().purgeMessages(msg);
// // event.getChannel().sendMessage("Successfully purged `" + num + "`
// // messages.").queue();
// return;
// }
// try {
// for (int i = 0; i <= currentNum; i++) {
// if (i == num) {
// List<Message> msg = event.getChannel().getHistory().retrievePast(num).complete();
// event.getChannel().purgeMessages(msg);
// // event.getChannel().sendMessage("Successfully purged `" + num + "`
// // messages.").queue();
// } else {
// List<Message> msg = event.getChannel().getHistory().retrievePast(100).complete();
// event.getChannel().purgeMessages(msg);
// num -= 100;
// }
// }
// } catch (Exception e) {
// if (Main.mode == BotMode.DEV) {
// StringWriter sw = new StringWriter();
// PrintWriter pw = new PrintWriter(sw);
// e.printStackTrace(pw);
// event.getChannel().sendMessage("```\n" + sw.toString() + "```").queue();
// System.out.println("Error caught in: " + e.toString());
// e.printStackTrace();
// } else {
// event.getChannel().sendMessage("```\n" + e + "```").queue(); // sends limited message
// e.printStackTrace();
// }
// return;
// }
// } else if (args.size() == 2) {
//
// if (args.get(0).contentEquals("-id") | args.get(0).contentEquals("-i")) {
// long msgID = Long.parseLong(args.get(1));
// blob.getChannel().retrieveMessageById(msgID).complete();
//
// for (Message i : blob.getChannel().getIterableHistory()) {
// if (i.getIdLong() == msgID) {
// break;
// } else {
// i.delete().queue();
// Thread.sleep(1000);
// }
// }
// // i need a better way to get args, flags, and args of flags
// } else if (args.get(0).contentEquals("-u") | args.get(0).contentEquals("-user")) {
//
// long userID = Long.parseLong(args.get(1).replaceAll("[^0-9]", ""));
// if (blob.getJDA().getUserById(userID) == null) {
// throw new NullPointerException("Null user id");
// }
//
// for (Message i : blob.getChannel().getIterableHistory()) {
// if (i.getAuthor().getIdLong() == userID) {
// i.delete().complete();
// Thread.sleep(1000);
// }
//
// }
//
// } else {
// pkg.deepCurse.nopalmo.global.Tools.wrongUsage(blob.getChannel(), this);
// }
//
// } else {
// pkg.deepCurse.nopalmo.global.Tools.wrongUsage(blob.getChannel(), this);
// }
//
// }
}

View file

@ -3,9 +3,11 @@ package pkg.deepCurse.nopalmo.core;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.sql.SQLException;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.impl.SimpleLoggerFactory;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.OnlineStatus;
@ -15,9 +17,8 @@ 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.core.database.NopalmoDBTools;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GlobalDB;
import pkg.deepCurse.nopalmo.listener.MessageReceivedListener;
import pkg.deepCurse.nopalmo.manager.CommandManager;
import pkg.deepCurse.nopalmo.manager.StatusManager;
@ -31,13 +32,13 @@ import pkg.deepCurse.phoenixRuntime.core.PhoenixSettings;
public class Boot {
public static JDA bot; // TODO create sharding handler
public static DatabaseTools databaseTools = null;
private static Logger logger = new SimpleLoggerFactory().getLogger(Boot.class.getSimpleName());
public static final CommandManager commandManager = new CommandManager();
// public static BontebokManager bontebokManager = null;
public static boolean isProd = false;
public static final long pid = ProcessHandle.current().pid();
public static boolean running = true;
public static final CommandManager commandManager = new CommandManager();
public static void main(String[] args) {
@ -48,11 +49,11 @@ public class Boot {
// proceed as a failure
settings.commandManager.addCommand("phoenix-update", (PhoenixRuntime runtime, List<String> commandArgs) -> {
LogHelper.log("Received <phoenix-update>", Boot.class);
logger.info("Received <phoenix-update>");
Socks.sendStringSock(settings.address, settings.commonPort, "phoenix-update-confirm");
LogHelper.log("Sent <phoenix-update-confirm>", Boot.class);
logger.info("Sent <phoenix-update-confirm>");
if (bot != null) {
bot.shutdown();
@ -69,28 +70,21 @@ public class Boot {
@Override
public void boot() {
LogHelper.log("Booting: <" + pid + ">", Boot.class);
logger.info("Booting: <" + pid + ">");
long preBootTime = System.currentTimeMillis();
isProd = args[2].contentEquals("prod");
LogHelper.log("Connecting to mariadb:nopalmo", Boot.class);
try {
databaseTools = new DatabaseTools(args[1]);
LogHelper.log("Connected. . .", Boot.class);
} catch (SQLException | ClassNotFoundException e1) {
e1.printStackTrace();
LogHelper.log("Failed to connect\nShutting down. . .", Boot.class);
logger.info("Connecting to mariadb:nopalmo");
NopalmoDBTools.init(isProd ? "nopalmo" : "chaos", "nopalmo", args[1]);
} catch (Exception e) {
e.printStackTrace();
logger.info("Failed to connect\nShutting down. . .");
System.exit(4);
}
LogHelper.log("Init reaction/emote list", Boot.class);
Reactions.init();
LogHelper.log("Initialized reaction/emote list. . .", Boot.class);
LogHelper.log("Init commands list", Boot.class);
commandManager.init();
LogHelper.log("Initialized commands list. . .", Boot.class);
logger.info("Connected. . .");
try {
// bot = JDABuilder.createDefault(args[0]).setChunkingFilter(ChunkingFilter.ALL)
@ -107,25 +101,16 @@ public class Boot {
.setChunkingFilter(ChunkingFilter.ALL).setMemberCachePolicy(MemberCachePolicy.ALL)
.enableIntents(GatewayIntent.DIRECT_MESSAGE_REACTIONS,
.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.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
)
.enableCache(CacheFlag.EMOTE, CacheFlag.MEMBER_OVERRIDES)
// .setIdle(true)
.setAutoReconnect(true)
// .addEventListeners(new GuildMessageReceivedListener())
// .addEventListeners(new DirectMessageReceivedListener())
.addEventListeners(new MessageReceivedListener())
.setEnableShutdownHook(true)
@ -136,20 +121,18 @@ public class Boot {
LogHelper.crash(e);
}
LogHelper.log("Using account: " + bot.getSelfUser().getName(), Boot.class);
Loader.init();
logger.info("Using account: " + bot.getSelfUser().getName());
bot.getPresence().setStatus(OnlineStatus.ONLINE);
bot.getPresence().setActivity(Activity.listening("Infected Mushroom"));
LogHelper.log("Init status list", Boot.class);
StatusManager.init();
LogHelper.log("Initialized status list. . .", Boot.class);
long bootTime = System.currentTimeMillis() - preBootTime;
LogHelper.log("Taken " + bootTime + "ms to boot", Boot.class);
logger.info("Taken " + bootTime + "ms to boot");
LogHelper.log("Starting loop", Boot.class);
logger.info("Starting loop");
loop();
}
@ -162,7 +145,7 @@ public class Boot {
long lastTimeUpdateStatus = lastTime;
long lastTimeCheckUpdate = lastTime;
long dynamicWait = Global.getDynamicWait();
long dynamicWait = Long.parseLong(GlobalDB.getGlobalValue("dynamicwait"));
while (running) {
@ -181,7 +164,8 @@ public class Boot {
lastTimeCheckUpdate = now;
}
if (now > lastTimeUpdateStatus + dynamicWait && Global.isShuffleStatusEnabled()) {
if (now > lastTimeUpdateStatus + dynamicWait
&& GlobalDB.getGlobalValue("isshufflestatusenabled").contentEquals("true")) {
lastTimeUpdateStatus = now;
StatusManager.shuffle(bot);
@ -206,7 +190,7 @@ public class Boot {
});
runtime.setLockedRunnable(() -> {
LogHelper.log("System is locked\nSending <phoenix-update> instead. . . ", Boot.class);
logger.info("System is locked\nSending <phoenix-update> instead. . . ");
try {
Socket cSocket = new Socket("127.0.0.1", settings.commonPort);

View file

@ -0,0 +1,73 @@
package pkg.deepCurse.nopalmo.core;
import org.slf4j.Logger;
import org.slf4j.impl.SimpleLoggerFactory;
import pkg.deepCurse.nopalmo.global.Reactions;
import pkg.deepCurse.nopalmo.manager.StatusManager;
public class Loader {
private static Logger logger = new SimpleLoggerFactory().getLogger(Loader.class.getSimpleName());
public static String init() {
StringBuilder sB = new StringBuilder();
logger.info("Init reaction/emote list");
sB.append("Init reaction/emote list\n");
try {
Reactions.init();
logger.info("Initialized reaction/emote list. . .");
sB.append("Initialized reaction/emote list. . .\n");
} catch (Exception e) {
logger.info("Failed to initialize reaction/emote list. . .\n" + e + "\n");
sB.append("Failed to initialize reaction/emote list. . .```properties\n" + e + "```\n");
}
logger.info("Init command list");
sB.append("Init command list\n");
try {
Boot.commandManager.init();
logger.info("Initialized command list. . .");
sB.append("Initialized command list. . .\n");
} catch (Exception e) {
logger.info("Failed to initialize command list. . .\n" + e + "\n");
sB.append("Failed to initialize command list. . .```properties\n" + e + "```\n");
}
logger.info("Init status list");
sB.append("Init status list\n");
try {
StatusManager.init();
logger.info("Initialized status list. . .");
sB.append("Initialized status list. . .\n");
} catch (Exception e) {
logger.info("Failed to initialize status list. . .\n" + e + "\n");
sB.append("Failed to initialize status list. . .```properties\n" + e + "```\n");
}
// logger.info("Init bontedok settings");
// sB.append("Init bontedok settings\n");
// BontebokSettings settings = null;
// try {
// settings = new BontebokSettings();
// logger.info("Initialized bontedok settings. . .");
// sB.append("Initilaized bontedok settings\n");
// } catch (Exception e) {
// logger.info("Failed to initialize bontebok settings. . .\n" + e + "\n");
// sB.append("Failed to initialize bontebok settings. . .```properties\n" + e + "```\n");
// }
// logger.info("Init bontedok functions");
// sB.append("Init bontedok functions\n");
// try {
// Boot.bontebokManager = new BontebokManager(settings);
// Boot.bontebokManager.init();
// logger.info("Initialized bontedok functions. . .");
// sB.append("Initilaized bontedok functions\n");
// } catch (Exception e) {
// logger.info("Failed to initialize bontebok functions. . .\n" + e + "\n");
// sB.append("Failed to initialize bontebok functions. . .```properties\n" + e + "```\n");
// }
return sB.toString();
}
}

View file

@ -0,0 +1,805 @@
package pkg.deepCurse.nopalmo.core.database;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Optional;
import java.util.Random;
import org.fluentjdbc.DbContext;
import org.fluentjdbc.DbContextConnection;
import org.fluentjdbc.DbContextTable;
import org.slf4j.Logger;
import org.slf4j.impl.SimpleLoggerFactory;
import com.mysql.cj.jdbc.MysqlDataSource;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GlobalDB;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.InfractionDB;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.UserDB;
public class NopalmoDBTools {
private static Logger logger = new SimpleLoggerFactory().getLogger(NopalmoDBTools.class.getSimpleName());
private static DbContext context = null;
private static DbContextTable users = null;
private static DbContextTable guilds = null;
private static DbContextTable developers = null;
private static DbContextTable global = null;
@SuppressWarnings("unused") // it will remain un implemented for a little bit
private static DbContextTable actions = null;
private static DbContextTable infractions = null;
private static MysqlDataSource dataSource = null;
public static void init(String dbName, String username, String pass) {
// logger.info("Connecting. . .");
context = new DbContext();
dataSource = new MysqlDataSource();
dataSource.setDatabaseName(dbName);
dataSource.setUser(username);
dataSource.setPassword(pass);
users = context.table("users");
guilds = context.table("guilds");
developers = context.table("developers");
global = context.table("global");
actions = context.table("actions");
infractions = context.table("infractions");
GlobalDB.prefix = GlobalDB.getGlobalValue("prefix");
// logger.info("Connected");
}
public static void close() throws SQLException {
dataSource.getConnection().close();
}
public class Tools {
public class UserDB {
public static boolean getUserBoolean(long userID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<String> out = users.query().where("userid", userID).singleString(value);
return out.isPresent() ? out.get().contentEquals("1") : null;
}
}
public static String getUserString(long userID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<String> out = users.query().where("userid", userID).singleString(value);
return out.isPresent() ? out.get() : null;
}
}
public static long getUserLong(long userID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<Number> out = users.query().where("userid", userID).singleLong(value);
return out.isPresent() ? out.get().longValue() : null;
}
}
public static boolean userExists(long userID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
return users.query().where("userid", userID).singleLong("userid").isPresent();
}
}
public static void setUserBoolean(long userID, String columnName, boolean value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
users.insert().setPrimaryKey("userid", userID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
users.query().where("userid", userID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setUserString(long userID, String columnName, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
users.insert().setPrimaryKey("userid", userID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
users.query().where("userid", userID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setUserLong(long userID, String columnName, long value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
users.insert().setPrimaryKey("userid", userID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
users.query().where("userid", userID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void addUser(long userID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
users.insert().setPrimaryKey("userid", userID).execute();
} catch (Exception e) {
}
}
}
public static void removeUser(long userID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
users.query().where("userid", userID).executeDelete();
}
}
public static boolean isDirectMessagingEnabled(long userID) {
return getUserBoolean(userID, "allowdms");
}
public static boolean isAdvancedUser(long userID) {
return getUserBoolean(userID, "advanceduser");
}
public static long getPremiumLevel(long userID) {
return getUserLong(userID, "premiumlevel");
}
public static void setDirectMessagingBoolean(long userID, boolean value) {
setUserBoolean(userID, "allowdms", value);
}
public static void setAdvancedUserBoolean(long userID, boolean value) {
setUserBoolean(userID, "advanceduser", value);
}
public static void setPremiumLevel(long userID, int value) {
setUserLong(userID, "premiumlevel", value);
}
/**
* this exists because the lib i tried swapping to doesnt have shit to do with
* columns, and since its only input is long, it should be fine
*/
public static String generateDump(long userID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Statement st = null;
ResultSet rs = null;
String query = "select * from users where userid = " + userID;
try {
st = users.getConnection().createStatement();
rs = st.executeQuery(query);
ResultSetMetaData rsMeta = rs.getMetaData();
int columnCount = rsMeta.getColumnCount();
StringBuilder sB = new StringBuilder();
while (rs.next()) {
// Object[] values = new Object[columnCount];
for (int i = 1; i <= columnCount; i++) {
// values[i - 1] = resultSet.getObject(i);
sB.append(rsMeta.getColumnLabel(i) + ": " + rs.getString(i) + "\n");
}
}
return sB.toString().isEmpty() ? "No data here" : sB.toString();
} catch (SQLException e) {
return null;
} finally { // @formatter:off
try {if (rs != null)rs.close();} catch (Exception e) {}
try {if (st != null)st.close();} catch (Exception e) {}
// @formatter:on
}
}
}
}
public class GuildDB {
public static boolean getGuildBoolean(long guildID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<String> out = guilds.query().where("guildid", guildID).singleString(value);
return out.isPresent() ? out.get().contentEquals("1") : null;
}
}
public static String getGuildString(long guildID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<String> out = guilds.query().where("guildid", guildID).singleString(value);
return out.isPresent() ? out.get() : null;
}
}
public static long getGuildLong(long guildID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<Number> out = guilds.query().where("guildid", guildID).singleLong(value);
return out.isPresent() ? out.get().longValue() : null;
}
}
public static boolean guildExists(long guildID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
return guilds.query().where("guildid", guildID).singleLong("guildid").isPresent();
}
}
public static void setGuildBoolean(long guildID, String columnName, boolean value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
guilds.insert().setPrimaryKey("guildid", guildID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
guilds.query().where("guildid", guildID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setGuildString(long guildID, String columnName, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
guilds.insert().setPrimaryKey("guildid", guildID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
guilds.query().where("guildid", guildID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setGuildLong(long guildID, String columnName, long value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
guilds.insert().setPrimaryKey("guildid", guildID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
guilds.query().where("guildid", guildID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void addGuild(long guildID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
guilds.insert().setPrimaryKey("guildid", guildID).execute();
} catch (Exception e) {
}
}
}
public static void removeGuild(long guildID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
guilds.query().where("guildid", guildID).executeDelete();
}
}
public static void setJoinMessage(long guildID, String value) {
setGuildString(guildID, "joinmessage", value);
}
public static void setLeaveMessage(long guildID, String value) {
setGuildString(guildID, "leavemessage", value);
}
public static String getJoinMessage(long guildID) {
return getGuildString(guildID, "joinmessage");
}
public static String getLeaveMessage(long guildID) {
return getGuildString(guildID, "leavemessage");
}
public static String getPrefix(long guildID) {
return getGuildString(guildID, "prefix");
}
public static void setPrefix(long guildID, String value) {
setGuildString(guildID, "prefix", value);
}
public static String getDateObjectFormat(long guildID) {
return getGuildString(guildID, "dateobjectformat");
}
public static void setDateObjectFormat(long guildID, String value) {
setGuildString(guildID, "dateobjectformat", value);
}
public static boolean getUpdateOwnNameWithPrefix(long guildID) {
return getGuildBoolean(guildID, "updatesownnamewithprefix");
}
public static void setUpdateOwnNameWithPrefix(long guildID, boolean value) {
setGuildBoolean(guildID, "updatesownnamewithprefix", value);
}
}
public class DeveloperDB {
public static boolean getDeveloperBoolean(long userID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<String> out = developers.query().where("developerid", userID).singleString(value);
return out.isPresent() ? out.get().contentEquals("1") : null;
}
}
public static String getDeveloperString(long userID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<String> out = developers.query().where("developerid", userID).singleString(value);
return out.isPresent() ? out.get() : null;
}
}
public static long getDeveloperLong(long userID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<Number> out = developers.query().where("developerid", userID).singleLong(value);
return out.isPresent() ? out.get().longValue() : null;
}
}
public static boolean developerExists(long userID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
return developers.query().where("developerid", userID).singleLong("developerid").isPresent();
}
}
public static void setDeveloperBoolean(long developerID, String columnName, boolean value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
developers.insert().setPrimaryKey("developerid", developerID).setField(columnName, value)
.execute();
} catch (Exception e) {
// e.printStackTrace();
try {
developers.query().where("developerid", developerID).update().setField(columnName, value)
.execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setDeveloperString(long developerID, String columnName, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
developers.insert().setPrimaryKey("developerid", developerID).setField(columnName, value)
.execute();
} catch (Exception e) {
// e.printStackTrace();
try {
developers.query().where("developerid", developerID).update().setField(columnName, value)
.execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setDeveloperLong(long developerID, String columnName, long value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
developers.insert().setPrimaryKey("developerid", developerID).setField(columnName, value)
.execute();
} catch (Exception e) {
// e.printStackTrace();
try {
developers.query().where("developerid", developerID).update().setField(columnName, value)
.execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void addDeveloper(long developerID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
developers.insert().setPrimaryKey("developerid", developerID).execute();
} catch (Exception e) {
}
}
}
public static void removeDeveloper(long developerID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
developers.query().where("developerid", developerID).executeDelete();
}
}
public static boolean hasPermission(long userID, String permission) {
return getDeveloperBoolean(userID, permission);
}
public static void setPermission(long userID, String permission, boolean value) {
setDeveloperBoolean(userID, permission, value);
}
}
public class GlobalDB {
public static String prefix = null;
public static String getGlobalValue(String id) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
return global.query().where("id", id).singleString("value").isPresent()
? global.query().where("id", id).singleString("value").get()
: null;
}
}
// public static void setGlobalValue(long id, String columnName, String value) {
// try (DbContextConnection idk = context.startConnection(dataSource)) {
// try {
// global.insert().setPrimaryKey("id", id).setField(columnName, value).execute();
// } catch (Exception e) {
//// e.printStackTrace();
// try {
// global.query().where("id", id).update().setField(columnName, value).execute();
// } catch (Exception e2) {
// e2.printStackTrace();
// e.printStackTrace();
// }
// }
// }
// }
public static boolean globalValueExists(long id) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
return global.query().where("id", id).singleLong("id").isPresent();
}
}
}
public class ActionDB {
// TODO postponed until a later date
}
public class InfractionDB {
public static long createInfraction(long userID, String reason, long expiryDate) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
long time = System.currentTimeMillis();
infractions.insert().setPrimaryKey("userid", userID).setField("reason", reason)
.setField("epochdate", time).setField("expirydate", expiryDate).execute();
return infractions.query().where("epochdate", time).singleLong("epochdate").isPresent()
? infractions.query().where("epochdate", time).singleLong("epochdate").get().longValue()
: null;
}
}
/**
* do not use unless for bulk testing in the first 10000 ids
*
* @param userID
* @param reason
* @param expiryDate
* @param infractionID
*/
public static void createInfraction(long userID, String reason, long expiryDate, long infractionID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
infractions.insert().setPrimaryKey("infractionid", infractionID).setField("reason", reason)
.setField("epochdate", System.currentTimeMillis()).setField("expirydate", expiryDate)
.setField("userid", userID).execute();
}
}
public static void deleteInfraction(long infractionID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
infractions.query().where("infractionid", infractionID).executeDelete();
}
}
public static void setInfractionBoolean(long infractionID, String columnName, boolean value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
infractions.insert().setPrimaryKey("infractionid", infractionID).setField(columnName, value)
.execute();
} catch (Exception e) {
try {
infractions.query().where("infractionid", infractionID).update().setField(columnName, value)
.execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setInfractionString(long infractionID, String columnName, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
infractions.insert().setPrimaryKey("infractionid", infractionID).setField(columnName, value)
.execute();
} catch (Exception e) {
try {
infractions.query().where("infractionid", infractionID).update().setField(columnName, value)
.execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setInfractionLong(long infractionID, String columnName, long value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
infractions.insert().setPrimaryKey("infractionid", infractionID).setField(columnName, value)
.execute();
} catch (Exception e) {
try {
infractions.query().where("infractionid", infractionID).update().setField(columnName, value)
.execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static HashMap<String, String> getInfractionFromID(long infractionID) {
if (infractionExists(infractionID)) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
HashMap<String, String> map = new HashMap<String, String>();
Statement st = null;
ResultSet rs = null;
String query = "select * from infractions where infractionid = " + infractionID;
try {
st = infractions.getConnection().createStatement();
rs = st.executeQuery(query);
ResultSetMetaData rsMeta = rs.getMetaData();
int columnCount = rsMeta.getColumnCount();
if (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
map.put(rsMeta.getColumnLabel(i), rs.getString(i));
}
}
return map.isEmpty() ? null : map;
} catch (SQLException e) {
return null;
} finally { // @formatter:off
try {if (rs != null)rs.close();} catch (Exception e) {}
try {if (st != null)st.close();} catch (Exception e) {}
// @formatter:on
}
}
} else {
return null;
}
}
public static boolean infractionExists(long infractionID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
return infractions.query().where("infractionID", infractionID).singleLong("infractionID")
.isPresent();
}
}
public static ArrayList<HashMap<String, String>> getUserInfractions(long userID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Statement st = null;
ResultSet rs = null;
String query = "select * from infractions where userid = " + userID;
try {
st = infractions.getConnection().createStatement();
rs = st.executeQuery(query);
ResultSetMetaData rsMeta = rs.getMetaData();
int columnCount = rsMeta.getColumnCount();
ArrayList<HashMap<String, String>> hashList = new ArrayList<HashMap<String, String>>();
while (rs.next()) {
HashMap<String, String> infractionHash = new HashMap<String, String>();
for (int i = 1; i <= columnCount; i++) {
infractionHash.put(rsMeta.getColumnLabel(i), rs.getString(i));
}
hashList.add(infractionHash);
}
return hashList.isEmpty() ? null : hashList;
} catch (SQLException e) {
return null;
} finally { // @formatter:off
try {if (rs != null)rs.close();} catch (Exception e) {}
try {if (st != null)st.close();} catch (Exception e) {}
// @formatter:on
}
}
}
}
}
private static ArrayList<String> eLL = null;
private static ArrayList<Throwable> eL = null;
public static void main(String... args) {
init("chaos", "nopalmo", args[0]);
// }
//
// public static void test(Runnable runnable) {
long userID = 99;
long guildID = 99;
Random random = new Random();
long minutes = 0;
long seconds = 20;
eL = new ArrayList<Throwable>();
eLL = new ArrayList<String>();
ArrayList<Long> times = new ArrayList<Long>();
for (int i = 0; i < 10; i++) {
times.add(Tests.userLoop((minutes > 0) ? (minutes * 60) : 1 * ((seconds > 0) ? (seconds * 1000) : 1000),
1000000000, random));
// runnable.run();
}
for (int i = 0; i < 10; i++) {
times.add(
Tests.infractionLoop((minutes > 0) ? (minutes * 60) : 1 * ((seconds > 0) ? (seconds * 1000) : 1000),
1000000000, userID, random));
}
if (!eL.isEmpty() && !eLL.isEmpty()) {
for (int i = 0; i < eL.size(); i++) {
System.err.println('\n' + eLL.get(i));
eL.get(i).printStackTrace();
}
}
long total = 0;
for (long i : times) {
total += i;
}
logger.info("Average of {} tests, with length of {} minutes, {} seconds, is {} : {}", times.size(), minutes,
seconds, total / times.size(), total);
}
private class Tests {
public static long infractionLoop(long time, long count, long userID, Random random) {
long userStartTime = System.currentTimeMillis();
long currentTime = System.currentTimeMillis();
long targetTime = System.currentTimeMillis() + time;
long currentCount = 0;
long targetCount = count;
for (long i = 1L; true; i++) {
if (currentTime >= targetTime) {
logger.info("Breaking: Exceeding target time frame");
break;
} else if (currentCount >= targetCount) {
logger.info("Breaking: Exceeding target count");
break;
}
try {
InfractionDB.createInfraction(userID, String.valueOf(random.nextInt()), 0, i);
} catch (Throwable e) {
eLL.add("onCreate");
eL.add(e);
}
InfractionDB.getInfractionFromID(i);
InfractionDB.setInfractionLong(i, "expirydate", userStartTime);
InfractionDB.getInfractionFromID(i);
try {
InfractionDB.deleteInfraction(i);
} catch (Throwable e) {
eLL.add("onRemove");
eL.add(e);
}
currentTime = System.currentTimeMillis();
currentCount++;
}
logger.info("Time taken: {}", (System.currentTimeMillis() - userStartTime));
logger.info("Total completed count: {}", currentCount);
// return System.currentTimeMillis() - userStartTime;
return currentCount;
}
public static long userLoop(long time, long count, Random random) {
long userStartTime = System.currentTimeMillis();
long currentTime = System.currentTimeMillis();
long targetTime = System.currentTimeMillis() + time;
long currentCount = 0;
long targetCount = count;
for (long i = 1L; true; i++) {
if (currentTime >= targetTime) {
logger.info("Breaking: Exceeding target time frame");
break;
} else if (currentCount >= targetCount) {
logger.info("Breaking: Exceeding target count");
break;
}
try {
UserDB.addUser(i);
} catch (Throwable e) {
eLL.add("onCreate");
eL.add(e);
}
UserDB.setAdvancedUserBoolean(i, true);
UserDB.setDirectMessagingBoolean(i, false);
UserDB.setPremiumLevel(i, 2);
UserDB.getPremiumLevel(i);
UserDB.isAdvancedUser(i);
UserDB.isDirectMessagingEnabled(i);
try {
UserDB.removeUser(i);
} catch (Throwable e) {
eLL.add("onRemove");
eL.add(e);
}
currentTime = System.currentTimeMillis();
currentCount++;
}
logger.info("Time taken: {}", (System.currentTimeMillis() - userStartTime));
logger.info("Total completed count: {}", currentCount);
// return System.currentTimeMillis() - userStartTime;
return currentCount;
}
}
}

View file

@ -0,0 +1,111 @@
public static boolean getGuildBoolean(long guildID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<String> out = guilds.query().where("guildid", guildID).singleString(value);
return out.isPresent() ? out.get().contentEquals("1") : null;
}
}
public static String getGuildString(long guildID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<String> out = guilds.query().where("guildid", guildID).singleString(value);
return out.isPresent() ? out.get() : null;
}
}
public static long getGuildLong(long guildID, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
Optional<Number> out = guilds.query().where("guildid", guildID).singleLong(value);
return out.isPresent() ? out.get().longValue() : null;
}
}
public static void setGuildBoolean(long guildID, String columnName, boolean value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
guilds.insert().setPrimaryKey("guildid", guildID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
guilds.query().where("guildid", guildID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setGuildString(long guildID, String columnName, String value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
guilds.insert().setPrimaryKey("guildid", guildID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
guilds.query().where("guildid", guildID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static void setGuildLong(long guildID, String columnName, long value) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
guilds.insert().setPrimaryKey("guildid", guildID).setField(columnName, value).execute();
} catch (Exception e) {
// e.printStackTrace();
try {
guilds.query().where("guildid", guildID).update().setField(columnName, value).execute();
} catch (Exception e2) {
e2.printStackTrace();
e.printStackTrace();
}
}
}
}
public static boolean guildExists(long guildID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
return guilds.query().where("guildid", guildID).singleLong("guildid").isPresent();
}
}
public static void addGuild(long guildID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
try {
guilds.insert().setPrimaryKey("guildid", guildID).execute();
} catch (Exception e) {
}
}
}
public static void removeGuild(long guildID) {
try (DbContextConnection idk = context.startConnection(dataSource)) {
guilds.query().where("guildid", guildID).executeDelete();
}
}
TYPE
add
remove
exists
set(long string boolean)
get(long string boolean)
misc interactions...

View file

@ -1,545 +0,0 @@
package pkg.deepCurse.nopalmo.database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.Nonnull;
import org.jetbrains.annotations.Nullable;
import pkg.deepCurse.nopalmo.core.Boot;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global;
import pkg.deepCurse.nopalmo.utils.LogHelper;
public class DatabaseTools {
private static Connection connection = null;
public DatabaseTools(String password) throws SQLException, ClassNotFoundException {
connection = createConnection(password);
Global.updatePrefix();
}
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";
Class.forName(driver);
return DriverManager.getConnection(url, username, password);
}
private static void checkUpdateCounts(PreparedStatement pstmt, int[] updateCounts) {
checkUpdateCounts(pstmt.toString(), updateCounts);
}
@Deprecated
public static void checkUpdateCounts(String action, int[] updateCounts) {
for (int i = 0; i < updateCounts.length; i++) {
if (updateCounts[i] >= 0) {
LogHelper.log("Successfully executed; updateCount=" + updateCounts[i] + "; On action " + action,
DatabaseTools.class);
} else if (updateCounts[i] == Statement.SUCCESS_NO_INFO) {
LogHelper.log("Successfully executed; updateCount=Statement.SUCCESS_NO_INFO; On action " + action,
DatabaseTools.class);
} else if (updateCounts[i] == Statement.EXECUTE_FAILED) {
LogHelper.log("Failed to execute; updateCount=Statement.EXECUTE_FAILED; On action " + action,
DatabaseTools.class);
}
}
}
public class Tools {
// these sub classes will represent tables and the methods therein will be for
// actions within said table
public class Users {
public static int getPremiumLevel(long userID) {
Statement st = null;
ResultSet rs = null;
String query = "select * from users where userid = " + userID;
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
return rs.getInt("premiumlevel");
} else {
// throw new SQLException(null, null, 33); // we need a real catcher here
System.err
.println("Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
return 0;
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
return 0;
} finally { // @formatter:off
try {if (rs != null)rs.close();} catch (Exception e) {}
try {if (st != null)st.close();} catch (Exception e) {}
// @formatter:on
}
}
public static boolean isAdvancedUser(long userID) {
Statement st = null;
ResultSet rs = null;
String query = "select * from users where userid = " + userID;
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
return rs.getBoolean("advanceduser");
} else {
// throw new SQLException(null, null, 33); // we need a real catcher here
System.err
.println("Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
return false;
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
return false;
} finally { // @formatter:off
try {if (rs != null)rs.close();} catch (Exception e) {}
try {if (st != null)st.close();} catch (Exception e) {}
// @formatter:on
}
}
public static String dump(long userID) {
Statement st = null;
ResultSet rs = null;
String query = "select * from users where userid = " + userID;
try {
st = connection.createStatement();
rs = st.executeQuery(query);
ResultSetMetaData rsMeta = rs.getMetaData();
int columnCount = rsMeta.getColumnCount();
StringBuilder sB = new StringBuilder();
while (rs.next()) {
// Object[] values = new Object[columnCount];
for (int i = 1; i <= columnCount; i++) {
// values[i - 1] = resultSet.getObject(i);
sB.append(rsMeta.getColumnLabel(i) + ": " + rs.getString(i) + "\n");
}
}
return sB.toString();
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
return null;
} finally { // @formatter:off
try {if (rs != null)rs.close();} catch (Exception e) {}
try {if (st != null)st.close();} catch (Exception e) {}
// @formatter:on
}
}
public static void addUser(long idLong) {
}
}
public class Guild {
public class Prefix {
@Nullable
public static String getPrefix(@Nonnull long guildID) {
Statement st = null;
ResultSet rs = null;
String query = "select * from guilds where guildid = " + guildID;
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
return rs.getString("prefix");
} else {
// throw new SQLException(null, null, 33); // we need a real catcher here
System.err.println(
"Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
return createPrefix(guildID, Global.prefix);
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
return null;
} finally { // @formatter:off
try {if (rs != null)rs.close();} catch (Exception e) {}
try {if (st != null)st.close();} catch (Exception e) {}
// @formatter:on
}
}
public static String createPrefix(@Nonnull long guildID, @Nullable String prefix)
throws IllegalArgumentException {
if (prefix == null || prefix.isEmpty()) {
// throw new IllegalArgumentException("Input cannot be empty");
prefix = Global.prefix;
}
PreparedStatement pstmt = null;
String query = "insert into guilds(guildid, prefix) values(?, ?);";
try {
pstmt = connection.prepareStatement(query);
pstmt.setLong(1, guildID);
pstmt.setString(2, prefix);
pstmt.addBatch();
int[] updateCounts = pstmt.executeBatch();
checkUpdateCounts(pstmt, updateCounts);
pstmt.close();
// connection.commit();
return prefix;
} catch (SQLException e) {
SQLCode.sqlTranslate(pstmt, e);
for (int i : new int[] { 1062 }) {
if (i == e.getErrorCode()) {
return setPrefix(guildID, prefix);
}
}
try {
connection.rollback();
} catch (Exception e2) {
e.printStackTrace();
}
return null;
}
}
public static String setPrefix(long guildID, String prefix) throws IllegalArgumentException {
if (prefix.isEmpty()) {
throw new IllegalArgumentException("Input cannot be empty");
}
PreparedStatement pstmt = null;
String query = "update guilds set prefix = ? where guildid = ?;";
try {
pstmt = connection.prepareStatement(query);
pstmt.setLong(2, guildID);
pstmt.setString(1, prefix);
pstmt.addBatch();
int[] updateCounts = pstmt.executeBatch();
checkUpdateCounts(pstmt, updateCounts);
pstmt.close();
// conn.commit();
return prefix;
} catch (SQLException e) {
SQLCode.sqlTranslate(pstmt, e);
try {
connection.rollback();
} catch (Exception e2) {
e.printStackTrace();
}
return null;
}
}
}
}
public class Developers {
public static boolean getDeveloperBoolean(long userID, String key) {
Statement st = null;
ResultSet rs = null;
String query = "select * from developers where userid = " + userID;
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
return rs.getBoolean(key);
} else {
// throw new SQLException(null, null, 33); // we need a real catcher here
System.err
.println("Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
return false;
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
// LogHelper.log("eeeeee");
return false;
} finally {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (st != null)
st.close();
} catch (Exception e) {
}
// try { if (conn != null) conn.close(); } catch (Exception e) {};
}
// return null;
}
public static String getDeveloperString(long userID, String key) {
Statement st = null;
ResultSet rs = null;
String query = "select * from developers where userid = " + userID;
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
return rs.getString(key);
} else {
// throw new SQLException(null, null, 33); // we need a real catcher here
System.err
.println("Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
return null;
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
// LogHelper.log("eeeeee");
return null;
} finally {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (st != null)
st.close();
} catch (Exception e) {
}
// try { if (conn != null) conn.close(); } catch (Exception e) {};
}
// return null;
}
public static boolean canPowerOffBot(long userID) {
return getDeveloperBoolean(userID, "canPowerOffBot");
}
public static boolean canUseInformationCommands(long userID) {
return getDeveloperBoolean(userID, "canuseinformationcommands");
}
public static boolean hasPermission(long userID, String permission) {
return getDeveloperBoolean(userID, permission);
}
}
public class Global {
public static String prefix = null;
public static void updatePrefix() throws SQLException {
Statement st = null;
ResultSet rs = null;
String query = "select * from global where id = 'prefix'";
String msg = "Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query;
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
prefix = rs.getString("value");
} else {
// throw new SQLException(null, null, 33); // we need a real catcher here
System.err.println(msg);
throw new NullPointerException(msg);
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
// LogHelper.log("eeeeee");
throw new SQLException(e);
} finally {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (st != null)
st.close();
} catch (Exception e) {
}
// try { if (conn != null) conn.close(); } catch (Exception e) {};
}
// return null;
}
public static boolean isShuffleStatusEnabled() {
Statement st = null;
ResultSet rs = null;
String query = "select * from global where id = 'isshufflestatusenabled'";
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
return rs.getString("value").contentEquals("true");
} else {
System.err
.println("Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
return false;
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
// LogHelper.log("eeeeee");
return false;
} finally {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (st != null)
st.close();
} catch (Exception e) {
}
// try { if (conn != null) conn.close(); } catch (Exception e) {};
}
// return null;
}
public static int getDynamicWait() {
Statement st = null;
ResultSet rs = null;
String query = "select * from global where id = 'dynamicwait'";
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
return rs.getInt("value");
} else {
System.err
.println("Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
return 45000;
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
// LogHelper.log("eeeeee");
return 45000;
} finally {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (st != null)
st.close();
} catch (Exception e) {
}
// try { if (conn != null) conn.close(); } catch (Exception e) {};
}
// return null;
}
public static int getEmbedColor() {
Statement st = null;
ResultSet rs = null;
String query = "select * from global where id = 'embedcolor'";
try {
st = connection.createStatement();
rs = st.executeQuery(query);
if (rs.next()) {
return rs.getInt("value");
} else {
System.err
.println("Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
return 0;
}
} catch (SQLException e) {
SQLCode.getMessage(query, e.getErrorCode());
// LogHelper.log("eeeeee");
return 0;
} finally {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (st != null)
st.close();
} catch (Exception e) {
}
// try { if (conn != null) conn.close(); } catch (Exception e) {};
}
// return null;
}
}
// public class Reaction { // started off as a good idea but it sucks
// public static String getReaction(long reactionID) {
// Statement st = null;
// ResultSet rs = null;
// String query = "select * from reactions where id = '"+reactionID+"'";
// try {
// st = connection.createStatement();
// rs = st.executeQuery(query);
// if (rs.next()) {
// return rs.getString("val");
// } else {
// // throw new SQLException(null, null, 33); // we need a real catcher here
// System.err
// .println("Failed to execute; errorCode=NO_ROW_FOUND; No row found; On action " + query);
// return null;
// }
//
// } catch (SQLException e) {
// sqlTranslate(query, e.getErrorCode());
// // LogHelper.log("eeeeee");
// return null;
// } finally {
// try {
// if (rs != null)
// rs.close();
// } catch (Exception e) {
// }
//
// try {
// if (st != null)
// st.close();
// } catch (Exception e) {
// }
//
// // try { if (conn != null) conn.close(); } catch (Exception e) {};
// }
// // return null;
// }
// }
}
}

View file

@ -1,14 +0,0 @@
package pkg.deepCurse.nopalmo.database;
import java.util.HashMap;
public class RamDisk {
public static HashMap<String, Boolean> bools = new HashMap<String, Boolean>();
// public static
public static void init() {
bools.put("shouldRun", true);
}
}

View file

@ -1,32 +0,0 @@
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());
}
}

View file

@ -1,10 +1,14 @@
package pkg.deepCurse.nopalmo.global;
import java.util.Random;
import net.dv8tion.jda.api.entities.MessageChannel;
import pkg.deepCurse.nopalmo.command.CommandInterface;
public class Tools {
public static Random random = new Random();
public static void wrongUsage(MessageChannel messageChannel, CommandInterface command) {
messageChannel.sendMessage("Wrong Command Usage!\n" + command.getUsage(false)).queue();
}

View file

@ -2,41 +2,50 @@ package pkg.deepCurse.nopalmo.listener;
import javax.annotation.Nonnull;
import org.slf4j.Logger;
import org.slf4j.impl.SimpleLoggerFactory;
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;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.DeveloperDB;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GlobalDB;
import pkg.deepCurse.nopalmo.global.Reactions;
import pkg.deepCurse.nopalmo.utils.LogHelper;
public class MessageReceivedListener extends ListenerAdapter {
private Logger logger = new SimpleLoggerFactory().getLogger(this.getClass().getSimpleName());
@Override
public void onReady(@Nonnull ReadyEvent event) {
LogHelper.log("MessageReceivedListener is now ready\n" + event.getGuildAvailableCount() + "/"
logger.info("MessageReceivedListener is now ready " + event.getGuildAvailableCount() + "/"
+ event.getGuildTotalCount() + " : " + event.getGuildUnavailableCount() + " <"
+ event.getResponseNumber() + ">", getClass());
+ event.getResponseNumber() + ">");
}
@Override
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
Message message = event.getMessage();
String messageRaw = message.getContentRaw();
try {
Message message = event.getMessage();
String messageRaw = message.getContentRaw();
if (messageRaw.contentEquals(Global.prefix + Global.prefix)
&& DatabaseTools.Tools.Developers.canPowerOffBot(event.getAuthor().getIdLong())) {
if (messageRaw.contentEquals(GlobalDB.prefix + GlobalDB.prefix)
&& DeveloperDB.hasPermission(event.getAuthor().getIdLong(), "canpoweroffbot")) {
message.addReaction(Reactions.getReaction(":eggplant")).complete();
message.addReaction(Reactions.getReaction(":eggplant")).complete();
event.getJDA().shutdown();
System.exit(7);
}
event.getJDA().shutdown();
System.exit(7);
}
if (!event.getAuthor().isBot()) {
Boot.commandManager.startCommand(event);
if (!event.getAuthor().isBot()) {
Boot.commandManager.startCommand(event);
}
} catch (Throwable e) {
event.getChannel().sendMessage(e.toString()).queue();
e.printStackTrace();
}
}
}

View file

@ -106,11 +106,6 @@ public class Argument {
// return this;
// }
public Argument setPrefixRequirement(Boolean bool) {
this.requiresPrefix = bool;
return this;
}
public Argument setIsWildcard(Boolean bool) {
if (this.position <= -1) {
@ -129,6 +124,11 @@ public class Argument {
return this.requiresPrefix;
}
public Argument setPrefixRequirement(Boolean bool) {
this.requiresPrefix = bool;
return this;
}
public int getPosition() {
return position;
}

View file

@ -1,59 +1,77 @@
package pkg.deepCurse.nopalmo.manager;
import java.util.List;
import pkg.deepCurse.bontebok.core.BontebokFunctionInterface;
import pkg.deepCurse.bontebok.core.BontebokInterpreter;
import pkg.deepCurse.nopalmo.global.Reactions;
public class BontebokManager {
public static void init() {
BontebokInterpreter.functionMap.put("reply", new BontebokNopalmoFunctionInterface() {
@Override
public void run(List<String> args, CommandBlob blob) {
StringBuilder sB = new StringBuilder();
for (String i : args) {
sB.append(i);
}
blob.getMessage().reply(sB.toString()).queue();
}
@Override
public int getRequiredArgs() {
return -1;
}
});
BontebokInterpreter.functionMap.put("react", new BontebokNopalmoFunctionInterface() {
@Override
public void run(List<String> args, CommandBlob blob) {
try {
blob.getMessage().addReaction(Reactions.getReaction(args.get(0))).queue();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public int getRequiredArgs() {
return 1;
}
});
}
public interface BontebokNopalmoFunctionInterface extends BontebokFunctionInterface {
@Override
public default void run(List<String> args) {
}
void run(List<String> args, CommandBlob blob);
}
}
//package pkg.deepCurse.nopalmo.manager;
//
//import java.util.List;
//
//import pkg.deepCurse.bontebok.core.BontebokFunctionInterface;
//import pkg.deepCurse.bontebok.core.BontebokInterpreter;
//import pkg.deepCurse.bontebok.core.BontebokSettings;
//import pkg.deepCurse.nopalmo.global.Reactions;
//
//public class BontebokManager {
//
// private BontebokInterpreter interpreter = null;
// private BontebokSettings settings = null;
//
// public BontebokManager(BontebokSettings settings) {
// interpreter = new BontebokInterpreter(settings);
// this.settings = settings;
// }
//
// public BontebokManager init() {
// interpreter.clearFunctionMap();
// interpreter.addFunction("reply", new BontebokNopalmoFunctionInterface() {
//
// @Override
// public void run(List<String> args, CommandBlob blob) {
// StringBuilder sB = new StringBuilder();
// for (String i : args) {
// sB.append(i);
// }
// blob.getMessage().reply(sB.toString()).queue();
// }
//
// @Override
// public int getRequiredArgs() {
// return -1;
// }
//
// });
//
// interpreter.addFunction("react", new BontebokNopalmoFunctionInterface() {
//
// @Override
// public void run(List<String> args, CommandBlob blob) {
// try {
// blob.getMessage().addReaction(Reactions.getReaction(args.get(0))).queue();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
//
// @Override
// public int getRequiredArgs() {
// return 1;
// }
// });
// return this;
// }
//
// public BontebokInterpreter getBontebokInterpreter() {
// return interpreter;
// }
//
// public BontebokSettings getBontebokSettings() {
// return settings;
// }
//
// public interface BontebokNopalmoFunctionInterface extends BontebokFunctionInterface {
//
// @Override
// public default void run(List<String> args) {
//
// }
//
// void run(List<String> args, CommandBlob blob);
// }
//
//}

View file

@ -28,6 +28,7 @@ public class CommandBlob {
private Guild guild = null;
private Member member = null;
private Message message = null;
// private BontebokInterpreter interpreter = null;
private boolean isDeveloper = false;
private boolean isWebhookMessage = false;
@ -172,4 +173,13 @@ public class CommandBlob {
public void setDeveloper(boolean isDeveloper) {
this.isDeveloper = isDeveloper;
}
// public BontebokInterpreter getInterpreter() {
// return interpreter;
// }
//
// public CommandBlob setInterpreter(BontebokInterpreter interpreter) {
// this.interpreter = interpreter;
// return this;
// }
}

View file

@ -0,0 +1,9 @@
package pkg.deepCurse.nopalmo.manager;
public class CommandLoop {
public static add() {
}
}

View file

@ -26,14 +26,13 @@ import pkg.deepCurse.nopalmo.command.commands.info.Help;
import pkg.deepCurse.nopalmo.command.commands.info.Info;
import pkg.deepCurse.nopalmo.command.commands.info.Ping;
import pkg.deepCurse.nopalmo.command.commands.info.Reload;
import pkg.deepCurse.nopalmo.command.commands.testing.BontebokInterpret;
import pkg.deepCurse.nopalmo.command.commands.testing.GuildCommand;
import pkg.deepCurse.nopalmo.command.commands.testing.PrivateCommand;
import pkg.deepCurse.nopalmo.core.Boot;
import pkg.deepCurse.nopalmo.database.DatabaseTools;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Developers;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Users;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.DeveloperDB;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GlobalDB;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GuildDB;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.UserDB;
import pkg.deepCurse.nopalmo.global.Tools;
public class CommandManager {
@ -59,7 +58,7 @@ public class CommandManager {
addCommand(new GuildCommand()); // guild
addCommand(new PrivateCommand()); // private
addCommand(new Reload()); // dual
addCommand(new BontebokInterpret()); // dual
// addCommand(new BontebokInterpret()); // dual
addCommand(new Stupid()); // guild
}
@ -83,47 +82,51 @@ public class CommandManager {
public void startCommand(MessageReceivedEvent event) { // TODO split up more
final String message = event.getMessage().getContentRaw();
String prefix = null;
if (event.isFromGuild()) {
prefix = DatabaseTools.Tools.Guild.Prefix.getPrefix(event.getGuild().getIdLong());
} else {
prefix = Global.prefix;
}
String pingPrefix = "<@!" + event.getJDA().getSelfUser().getIdLong() + ">";
final String prefix = event.isFromGuild() ? (GuildDB.getPrefix(event.getGuild().getIdLong()) != null
? GuildDB.getPrefix(event.getGuild().getIdLong())
: GlobalDB.prefix) : GlobalDB.prefix;
final String pingPrefix = "<@!" + event.getJDA().getSelfUser().getIdLong() + ">";
String splicer = null;
if (message.startsWith(pingPrefix + " ")) {
splicer = pingPrefix + " ";
} else if (message.startsWith(prefix)) {
splicer = prefix;
} else if (message.startsWith(pingPrefix)) {
splicer = pingPrefix;
} else {
return;
}
Users.addUser(event.getAuthor().getIdLong());
if (message.startsWith(pingPrefix + " ")) {
splicer = pingPrefix + " ";
} else if (message.startsWith(prefix)) {
splicer = prefix;
} else if (message.startsWith(pingPrefix)) {
splicer = pingPrefix;
} else {
return;
}
final String[] split = message.replaceFirst("(?i)" + Pattern.quote(splicer), "").split("\\s+");
final String commandCall = split[0].toLowerCase();
if (commandMap.containsKey(commandCall)) {
UserDB.addUser(event.getAuthor().getIdLong());
if (event.isFromGuild()) {
GuildDB.addGuild(event.getGuild().getIdLong());
}
final List<String> args = Arrays.asList(split).subList(1, split.length);
executor.execute(() -> {
long commandStartTime = System.currentTimeMillis();
try {
CommandBlob commandBlob = new CommandBlob(event, this);
CommandInterface command = commandMap.get(commandCall);
// commandBlob.setInterpreter(Boot.bontebokManager.getBontebokInterpreter());
HashMap<String, Argument> argumentMap = new HashMap<String, Argument>();
HashMap<Integer, Argument> positionalArgs = new HashMap<Integer, Argument>();
long commandStartTime = System.currentTimeMillis();
boolean printTime = false;
byte argSkipCount = 0;
boolean remainsValid = true;
HashMap<Integer, Argument> positionalArgs = new HashMap<Integer, Argument>();
if (command.getArguments() != null) {
for (Argument i : command.getArguments().values()) {
if (i.getPosition() >= 0) {
@ -155,24 +158,33 @@ public class CommandManager {
}
commandBlob.setDeveloper(
Developers.getDeveloperBoolean(commandBlob.getAuthorID(), "developercommandpermission"));
// split up so global commands are actually global, and will not be affected by
// neighboring local args
DeveloperDB.getDeveloperBoolean(commandBlob.getAuthorID(), "developercommandpermission"));
for (int i = 0; i < newArgs.size(); i++) {
String x = newArgs.get(i);
x = x.toLowerCase();
if (argSkipCount <= 0) {
if (command.getArguments() != null) {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (x.startsWith(Argument.argumentPrefix)) {
String pre = x.substring(Argument.argumentPrefix.length());
if (!command.getArguments().keySet().contains(pre)) {
for (Argument arg : command.getArguments().values()) {
if (arg.getAliases().contains(pre)) {
// System.out.println("ALIAS FOUND");
pre = arg.getArgName();
}
}
} // TODO RIP ROOT ALIAS PREFIX IN FAVOR OF "--long-name" "-s (shortname)" "wildcard"
if (command.getArguments().keySet().contains(pre)) {
offset++;
if (command.getArguments().get(pre).getPermission() == null
|| DatabaseTools.Tools.Developers.hasPermission(
commandBlob.getAuthorID(),
|| DeveloperDB.hasPermission(commandBlob.getAuthorID(),
command.getArguments().get(pre).getPermission())) {
if (command.getArguments().get(pre).isSkipOriginalTaskOnRunnable()) {
remainsValid = false;
@ -191,11 +203,27 @@ public class CommandManager {
Tools.wrongUsage(event.getChannel(), command);
remainsValid = false;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
} else {
if (!command.getArguments().keySet().contains(x)) {
for (Argument arg : command.getArguments().values()) {
if (arg.getAliases().contains(x)) {
// System.out.println("ALIAS FOUND");
x = arg.getArgName();
}
}
} // TODO RIP ROOT ALIAS PREFIX IN FAVOR OF "--long-name" "-s (shortname)" "wildcard"
if (command.getArguments().get(x) != null) {
if (command.getArguments().get(x).isPrefixRequired()) {
Tools.wrongUsage(event.getChannel(), command);
remainsValid = false;
}
if (command.getArguments().get(x).getPermission() == null
|| DatabaseTools.Tools.Developers.hasPermission(
commandBlob.getAuthorID(),
|| DeveloperDB.hasPermission(commandBlob.getAuthorID(),
command.getArguments().get(x).getPermission())) {
if (command.getArguments().get(x).isSkipOriginalTaskOnRunnable()) {
remainsValid = false;
@ -210,25 +238,39 @@ public class CommandManager {
Tools.invalidPermissions(event.getChannel(), command);
remainsValid = false;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
} else {
if (positionalArgs.get(i - offset) != null) {
if (positionalArgs.get(i - offset).getPermission() == null
|| DatabaseTools.Tools.Developers.hasPermission(
commandBlob.getAuthorID(),
positionalArgs.get(i - offset).getPermission())) {
if (positionalArgs.get(i - offset).isSkipOriginalTaskOnRunnable()) {
Argument posix = positionalArgs.get(i - offset);
// if (!command.getArguments().keySet().contains(x)) {
// for (Argument arg : command.getArguments().values()) {
// if (arg.getAliases().contains(x)) {
//// System.out.println("ALIAS FOUND");
// x = arg.getArgName();
// }
// }
// } // TODO RIP ROOT ALIAS PREFIX IN FAVOR OF "--long-name" "-s (shortname)" "wildcard"
if (posix != null) {
if (posix.getPermission() == null
|| DeveloperDB.hasPermission(commandBlob.getAuthorID(),
posix.getPermission())) {
if (posix.isSkipOriginalTaskOnRunnable()) {
remainsValid = false;
}
if (positionalArgs.get(i - offset).getIsWildcard()) {
argumentMap.put(positionalArgs.get(i - offset).getArgName(),
positionalArgs.get(i - offset).setWildCardString(x));
if (posix.getIsWildcard()) {
argumentMap.put(posix.getArgName(),
posix.setWildCardString(x));
} else {
Tools.wrongUsage(event.getChannel(), command);
remainsValid = false;
}
if (positionalArgs.get(i - offset).isAutoStartRunnable()
&& positionalArgs.get(i - offset).getRunnableArg() != null) {
positionalArgs.get(i - offset).getRunnableArg().run(commandBlob);
if (posix.isAutoStartRunnable()
&& posix.getRunnableArg() != null) {
posix.getRunnableArg().run(commandBlob);
}
} else {
Tools.invalidPermissions(event.getChannel(), command);
@ -237,17 +279,15 @@ public class CommandManager {
} else
event.getChannel().sendMessage("pos is null").queue();
}
}
} else {
// Tools.wrongUsage(event.getChannel(), command);
// remainsValid = false;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
}
}
}
if (command.getPremiumLevel() > Users.getPremiumLevel(commandBlob.getAuthorID())) {
if (command.getPremiumLevel() > UserDB.getPremiumLevel(commandBlob.getAuthorID())) {
commandBlob.getChannel().sendMessage(
"Sorry, but you cannot run this command, it is premium subs only, of at least tier "
+ command.getPremiumLevel())
@ -296,11 +336,9 @@ public class CommandManager {
if (command instanceof GuildCommandInterface && !event.isFromGuild()
&& !(command instanceof PrivateCommandInterface)) {
event.getChannel()
.sendMessage(
"Sorry, but you need to be in a "
+ (DatabaseTools.Tools.Users.isAdvancedUser(
commandBlob.getAuthorID()) ? "guild" : "server")
+ " to use this command. . .")
.sendMessage("Sorry, but you need to be in a "
+ (UserDB.isAdvancedUser(commandBlob.getAuthorID()) ? "guild" : "server")
+ " to use this command. . .")
.queue();
} else if (command instanceof PrivateCommandInterface && event.isFromGuild()
&& !(command instanceof GuildCommandInterface)) {

View file

@ -2,12 +2,12 @@ package pkg.deepCurse.nopalmo.manager;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Activity;
import pkg.deepCurse.nopalmo.core.Boot;
import pkg.deepCurse.nopalmo.database.DatabaseTools.Tools.Global;
import pkg.deepCurse.nopalmo.core.database.NopalmoDBTools.Tools.GlobalDB;
import pkg.deepCurse.nopalmo.global.Tools;
public class StatusManager {
@ -18,25 +18,19 @@ public class StatusManager {
activityList.add(Activity.watching("my lead developer eat a watermelon whole"));
activityList.add(Activity.watching(
Boot.bot.getUserCache().asList().size() + " users in " + Boot.bot.getGuilds().size() + " servers"));
activityList.add(Activity.watching("for " + Global.prefix + "help"));
activityList.add(Activity.watching("for " + GlobalDB.prefix + "help"));
activityList.add(Activity.listening("Infected Mushroom"));
// activityList.add(EntityBuilder.createActivity("owo", null, ActivityType.CUSTOM_STATUS));
}
public static void shuffle(JDA bot) {
int rand = new Random().nextInt(activityList.size());
int rand = Tools.random.nextInt(activityList.size());
bot.getPresence().setActivity(activityList.get(rand));
selection = rand;
}
public static void set(JDA bot, int interger) {
bot.getPresence().setActivity(activityList.get(interger));
selection = interger;
}
public static void increment(JDA bot) {

View file

@ -9,20 +9,15 @@ package pkg.deepCurse.nopalmo.utils;
*/
public class LogHelper {
public static int loggerLevel = 0;
public static boolean bootEnabled = true;
public static boolean guildCommandManagerEnabled = true;
public static void log(String text, Class<?> clazz) {
log(text, 0, clazz);
}
public static void log(String text, int level, Class<?> clazz) {
if (bootEnabled && level <= loggerLevel) {
System.out.println(clazz + ": " + text);
}
}
// public static void log(String text, Class<?> clazz) {
// log(text, 0, clazz);
// }
//
// public static void log(String text, int level, Class<?> clazz) {
// if (bootEnabled && level <= loggerLevel) {
// System.out.println(clazz + ": " + text);
// }
// }
public static void crash(Exception e) {
e.printStackTrace();