diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..3153295
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 681fa6a..fe0b0da 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -7,9 +7,4 @@
-
-
-
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 9146015..0cbe586 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,13 +1,14 @@
plugins {
id 'java'
id 'application'
+ id 'maven-publish'
id 'com.github.johnrengelman.shadow' version '5.2.0'
}
mainClassName = 'net.nevet5gi.buzzbot.Bot'
group 'net.nevet5gi'
-version '0.4.1'
+version '0.5.0'
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
@@ -36,4 +37,25 @@ dependencies {
//implementation 'com.github.Kaktushose:jda-commands:v.2.2.0'
}
-compileJava.options.encoding = 'UTF-8'
\ No newline at end of file
+compileJava.options.encoding = 'UTF-8'
+
+apply plugin: 'maven-publish'
+publishing {
+ publications{
+ publish(MavenPublication) {
+ artifact("nexus/BuzzBot-$version" + ".jar") {
+ extension 'jar'
+ }
+ }
+ }
+ repositories {
+ maven {
+ name 'nexus'
+ url "https://repo.nevets.tech/repository/maven-releases/"
+ credentials {
+ username System.getenv('nexusUser')
+ password System.getenv('nexusPass')
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/nevet5gi/buzzbot/Bot.java b/src/main/java/net/nevet5gi/buzzbot/Bot.java
index 58ac84c..43be8ed 100644
--- a/src/main/java/net/nevet5gi/buzzbot/Bot.java
+++ b/src/main/java/net/nevet5gi/buzzbot/Bot.java
@@ -3,32 +3,56 @@ package net.nevet5gi.buzzbot;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Activity;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.utils.cache.CacheFlag;
import net.nevet5gi.buzzbot.commands.utils.CommandManager;
+import net.nevet5gi.buzzbot.modules.BuzzyModule;
+import net.nevet5gi.buzzbot.modules.ModuleLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.security.auth.login.LoginException;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
import java.util.EnumSet;
public class Bot {
+ //TODO Make shutdown sequence
public static JDA jda;
private static final Logger LOGGER = LoggerFactory.getLogger(Bot.class);
+ public static final ArrayList PLUGINS = new ArrayList<>();
+ private static ArrayList modules;
public static void main(String[] args) {
Config.loadConfig();
+ try {
+ modules = ModuleLoader.loadModules();
+ } catch (IOException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
+ System.out.println("Have fun with this stack trace ;)");
+ e.printStackTrace();
+ modules = new ArrayList<>();
+ }
try {
- jda = JDABuilder.createDefault(Config.getConfig().getString("bot.token"))
+ JDABuilder builder = JDABuilder.createDefault(Config.getConfig().getString("bot.token"))
.disableCache(EnumSet.of(
CacheFlag.CLIENT_STATUS,
CacheFlag.ACTIVITY,
CacheFlag.EMOTE
))
- .enableCache(CacheFlag.VOICE_STATE)
- .addEventListeners(new Listener())
- .build();
+ .enableCache(CacheFlag.VOICE_STATE);
+
+ for (ListenerAdapter listener : PLUGINS) {
+ builder.addEventListeners(listener);
+ }
+
+ jda = builder.build();
+
CommandManager.registerSlashCommands();
+ for (BuzzyModule module : modules) {
+ module.onEnable(jda);
+ }
getActivity();
LOGGER.info("BuzzBot finished loading!");
} catch (LoginException e) {
diff --git a/src/main/java/net/nevet5gi/buzzbot/Group.java b/src/main/java/net/nevet5gi/buzzbot/Group.java
deleted file mode 100644
index 8babc49..0000000
--- a/src/main/java/net/nevet5gi/buzzbot/Group.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package net.nevet5gi.buzzbot;
-
-public class Group {
-
-}
diff --git a/src/main/java/net/nevet5gi/buzzbot/Listener.java b/src/main/java/net/nevet5gi/buzzbot/Listener.java
index ee3d65a..ef954c4 100644
--- a/src/main/java/net/nevet5gi/buzzbot/Listener.java
+++ b/src/main/java/net/nevet5gi/buzzbot/Listener.java
@@ -2,6 +2,7 @@ package net.nevet5gi.buzzbot;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.ReadyEvent;
+import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.events.message.guild.GuildMessageUpdateEvent;
@@ -9,6 +10,7 @@ import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.nevet5gi.buzzbot.commands.utils.CommandManager;
import net.nevet5gi.buzzbot.database.SqlDB;
import net.nevet5gi.buzzbot.functions.ProfanityFilter;
+import net.nevet5gi.buzzbot.objects.GuildData;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,6 +31,19 @@ public class Listener extends ListenerAdapter {
LOGGER.info("BuzzBot is ready: " + event.getJDA().getSelfUser().getAsTag());
}
+ @Override
+ public void onGuildJoin(@Nonnull GuildJoinEvent event) {
+ GuildData guild = new GuildData();
+ guild.setName(event.getGuild().getName());
+ guild.setId(event.getGuild().getIdLong());
+ guild.setGroup("master");
+ guild.setProfanityLevel(0);
+
+ SqlDB sql = new SqlDB();
+ sql.addGuild(guild);
+ sql.close();
+ }
+
@Override
public void onGuildMessageReceived(@Nonnull GuildMessageReceivedEvent event) {
User user = event.getAuthor();
@@ -41,17 +56,16 @@ public class Listener extends ListenerAdapter {
if (profanityFilter.containsProfanity(raw, "strong")) {
SqlDB sql = new SqlDB();
int profanityLevel = sql.getGuildData(event.getGuild().getIdLong()).getProfanityLevel();
+ sql.close();
switch (profanityLevel) {
- case 1:
+ case 1 -> {
if (profanityFilter.containsProfanity(raw, "mild")) profanityFilter.handle(event);
- break;
- case 2:
+ }
+ case 2 -> {
if (profanityFilter.containsProfanity(raw, "moderate")) profanityFilter.handle(event);
- break;
- case 3:
- profanityFilter.handle(event);
- break;
+ }
+ case 3 -> profanityFilter.handle(event);
}
}
@@ -67,6 +81,7 @@ public class Listener extends ListenerAdapter {
if (profanityFilter.containsProfanity(raw, "strong")) {
SqlDB sql = new SqlDB();
int profanityLevel = sql.getGuildData(event.getGuild().getIdLong()).getProfanityLevel();
+ sql.close();
switch (profanityLevel) {
case 1:
diff --git a/src/main/java/net/nevet5gi/buzzbot/Test.java b/src/main/java/net/nevet5gi/buzzbot/Test.java
index 0575e80..49a8e97 100644
--- a/src/main/java/net/nevet5gi/buzzbot/Test.java
+++ b/src/main/java/net/nevet5gi/buzzbot/Test.java
@@ -4,6 +4,7 @@ import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.utils.cache.CacheFlag;
import net.nevet5gi.buzzbot.database.SqlDB;
+import net.nevet5gi.buzzbot.modules.ModuleLoader;
import net.nevet5gi.buzzbot.objects.BanData;
import javax.security.auth.login.LoginException;
@@ -18,10 +19,26 @@ public class Test {
public static void main(String[] args) {
Config.loadConfig();
- initJda();
+ //initJda();
- jda.retrieveUserById(712116155388526693L).queue(user -> { System.out.println(Integer.parseInt(user.getDiscriminator())); });
+ ModuleLoader.getModules();
+// String role = "helper_id";
+// String roleId = "234098234";
+// String guildId = "34958735345345345";
+//
+// String sql = "UPDATE guild_settings SET " + role + " = " + roleId + " WHERE guild_id = " + guildId;
+//
+// System.out.println(sql);
+
+ //GuildData guild = new GuildData();
+ //guild.setName("Certified Tater");
+ //guild.setId(948704397569958038L);
+ //guild.setGroup("developer");
+ //guild.setProfanityLevel(0);
+
+ //SqlDB sql = new SqlDB();
+ //sql.addGuild(guild);
//sqlTest();
}
@@ -45,14 +62,15 @@ public class Test {
private static void sqlTest() {
SqlDB db = new SqlDB();
- BanData ban = new BanData(972924565361695745L, "nevetS", Date.valueOf(LocalDate.now()), Time.valueOf(LocalTime.now()), true, 0, "Reason", "test3", 865368792980914186L, "DevHQ", 824071914673668138L);
+ BanData ban = new BanData(972924565361695745L, "nevetS", Date.valueOf(LocalDate.now()), Time.valueOf(LocalTime.now()), "reason", true, 0, "test3", 865368792980914186L, "DevHQ", 824071914673668138L);
db.insertBan(ban, "masterbanlist");
+ db.close();
SqlDB db2 = new SqlDB();
BanData qban = db2.queryBan(972924565361695745L, "masterbanlist");
+ db2.close();
System.out.println(qban.getUserName());
System.out.println(qban.getDate());
- System.out.println(qban.getBanReason());
}
}
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/BanCmd.java b/src/main/java/net/nevet5gi/buzzbot/commands/BanCmd.java
index bbdbe8e..fbc48e2 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/BanCmd.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/BanCmd.java
@@ -61,12 +61,12 @@ public class BanCmd implements ICommand {
sb.append(" ");
}
}
- ban.setBanReason(sb.toString().trim());
+ ban.setReason(sb.toString().trim());
if (ban.getBanLength() == 0) {
- ctx.getChannel().sendMessage("<@" + ctx.getMessage().getAuthor().getId() + "> permanently banned <@" + ban.getUserId() + ">. Reason: " + ban.getBanReason()).queue();
+ ctx.getChannel().sendMessage("<@" + ctx.getMessage().getAuthor().getId() + "> permanently banned <@" + ban.getUserId() + ">. Reason: " + ban.getReason()).queue();
} else {
- ctx.getChannel().sendMessage("<@" + ctx.getMessage().getAuthor().getId() + "> banned <@" + ban.getUserId() + "> for " + ban.getBanLength() + " hours. Reason: " + ban.getBanReason()).queue();
+ ctx.getChannel().sendMessage("<@" + ctx.getMessage().getAuthor().getId() + "> banned <@" + ban.getUserId() + "> for " + ban.getBanLength() + " hours. Reason: " + ban.getReason()).queue();
}
Bot.jda.retrieveUserById(ban.getUserId()).queue(user -> { ban.setUserName(user.getName()); });
@@ -75,8 +75,9 @@ public class BanCmd implements ICommand {
ban.setServerId(ctx.getGuild().getIdLong());
ban.setServerName(ctx.getGuild().getName());
- //SqlDB db = new SqlDB();
- //db.insertBan(ban, "master_ban_record");
+ SqlDB sql = new SqlDB();
+ sql.insertBan(ban, "master_ban_record");
+ sql.close();
//ctx.getEvent().getGuild().ban(cmdf, 1 , "").submit();
//ctx.getMessage().reply("yes ban");
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/BeeCmd.java b/src/main/java/net/nevet5gi/buzzbot/commands/BeeCmd.java
index b9dfc29..2216ec7 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/BeeCmd.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/BeeCmd.java
@@ -62,7 +62,7 @@ public class BeeCmd implements ICommand, ISlashCommand {
try { getHttpConnection(); } catch (IOException | InterruptedException e) { e.printStackTrace(); }
EmbedBuilder eb = new EmbedBuilder();
eb.setImage(url.replace("\"",""));
- ctx.getSlashEvent().getHook().sendMessageEmbeds(eb.build()).queue();
+ ctx.getHook().sendMessageEmbeds(eb.build()).queue();
}
@Override
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/HelpCmd.java b/src/main/java/net/nevet5gi/buzzbot/commands/HelpCmd.java
index c5dea17..2c812e2 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/HelpCmd.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/HelpCmd.java
@@ -2,13 +2,16 @@ package net.nevet5gi.buzzbot.commands;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.TextChannel;
+import net.dv8tion.jda.api.interactions.commands.Command;
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
import net.dv8tion.jda.api.interactions.commands.OptionType;
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
+import net.dv8tion.jda.api.interactions.commands.build.OptionData;
import net.nevet5gi.buzzbot.Config;
import net.nevet5gi.buzzbot.commands.utils.*;
import org.jetbrains.annotations.NotNull;
+import java.util.ArrayList;
import java.util.List;
public class HelpCmd implements ICommand, ISlashCommand {
@@ -106,9 +109,21 @@ public class HelpCmd implements ICommand, ISlashCommand {
@Override
public @NotNull CommandData getCommandData() {
+ List choices = new ArrayList<>();
+
+ for (ICommand cmd : manager.getCommands()) {
+ choices.add(new Command.Choice(cmd.getName(), cmd.getName()));
+ }
+
+ for (ISlashCommand cmd : manager.getSlashCommands()) {
+ choices.add(new Command.Choice(cmd.getName(), cmd.getName()));
+ }
+
+ OptionData option = new OptionData(OptionType.STRING, "command", "Gives info on specified command", false);
+ option.addChoices(choices);
return new CommandData(this.getName(), this.getDescription())
- .addOption(OptionType.STRING, "command", "Gives info on this command", false);
+ .addOptions(option);
}
@Override
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/PingCmd.java b/src/main/java/net/nevet5gi/buzzbot/commands/PingCmd.java
index b06fa7e..0e3c871 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/PingCmd.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/PingCmd.java
@@ -29,7 +29,7 @@ public class PingCmd implements ICommand, ISlashCommand {
@Override
public void handleSlash(CommandContext ctx) {
JDA jda = Bot.jda;
- jda.getRestPing().queue(ping -> ctx.getSlashEvent().getHook().sendMessageFormat("Rest API Ping: %sms\nWebSocket Ping: %sms", ping, jda.getGatewayPing()).queue());
+ jda.getRestPing().queue(ping -> ctx.getHook().sendMessageFormat("Rest API Ping: %sms\nWebSocket Ping: %sms", ping, jda.getGatewayPing()).queue());
}
@Override
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/SetRoleCmd.java b/src/main/java/net/nevet5gi/buzzbot/commands/SetRoleCmd.java
new file mode 100644
index 0000000..8fe6c25
--- /dev/null
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/SetRoleCmd.java
@@ -0,0 +1,60 @@
+package net.nevet5gi.buzzbot.commands;
+
+import net.dv8tion.jda.api.interactions.commands.OptionType;
+import net.dv8tion.jda.api.interactions.commands.build.CommandData;
+import net.dv8tion.jda.api.interactions.commands.build.OptionData;
+import net.nevet5gi.buzzbot.commands.utils.CommandContext;
+import net.nevet5gi.buzzbot.commands.utils.ISlashCommand;
+import net.nevet5gi.buzzbot.database.SqlDB;
+import net.nevet5gi.buzzbot.objects.ModRoles;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SetRoleCmd implements ISlashCommand {
+ @Override
+ public String getName() {
+ return "setrole";
+ }
+
+ @Override
+ public int getPermissionLevel() {
+ return 4;
+ }
+
+ @Override
+ public String getHelp() {
+ return "Sets the role id for the moderation roles";
+ }
+
+ @Override
+ public void handleSlash(CommandContext ctx) {
+ SqlDB sql = new SqlDB();
+ sql.updateGuildRole(ctx.getGuild().getIdLong(), ctx.getSlashEvent().getOption("role").getAsString(), ctx.getSlashEvent().getOption("guild_role").getAsRole().getIdLong());
+ sql.close();
+ ctx.getHook().sendMessage("Assigned role <@&" + ctx.getSlashEvent().getOption("guild_role").getAsRole().getId() + "> to " + ctx.getSlashEvent().getOption("role").getAsString()).queue();
+ }
+
+ @Override
+ public String getDescription() {
+ return this.getHelp();
+ }
+
+ @Override
+ public CommandData getCommandData() {
+ List options = new ArrayList<>();
+
+ OptionData role = new OptionData(OptionType.STRING, "role", "Role assigned to moderation roles", true);
+ role.addChoice("helper", ModRoles.HELPER.getRole());
+ role.addChoice("moderator", ModRoles.MODERATOR.getRole());
+ role.addChoice("administrator", ModRoles.ADMINISTRATOR.getRole());
+ role.addChoice("owner", ModRoles.OWNER.getRole());
+ options.add(role);
+
+ OptionData guildRole = new OptionData(OptionType.ROLE, "guild_role", "Mentioned role to assign", true);
+ options.add(guildRole);
+
+ return new CommandData(this.getName(), this.getDescription())
+ .addOptions(options);
+ }
+}
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/TestCmd.java b/src/main/java/net/nevet5gi/buzzbot/commands/TestCmd.java
index 58a002e..190134f 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/TestCmd.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/TestCmd.java
@@ -18,22 +18,23 @@ public class TestCmd implements ICommand, ISlashCommand {
long number = ctx.getSlashEvent().getOption("number").getAsLong();
IMentionable member = ctx.getSlashEvent().getOption("mention").getAsMentionable();
boolean testBoolean = ctx.getSlashEvent().getOption("boolean").getAsBoolean();
+ String commandString = ctx.getSlashEvent().getCommandString();
- String content = "number: " + number + ", mention: " + member.getAsMention() + ", boolean: " + testBoolean;
+ String content = "number: " + number + ", mention: " + member.getAsMention() + ", boolean: " + testBoolean + ", command string: " + commandString;
- ctx.getSlashEvent().getHook().sendMessage(content).queue();
+ ctx.getHook().sendMessage(content).queue();
}
@Override
public String getDescription() {
- return "Checks the piung between bot and API";
+ return "Checks the ping between bot and API";
}
@Override
public CommandData getCommandData() {
return new CommandData(this.getName(), this.getDescription())
.addOption(OptionType.INTEGER, "number", "test number", true)
- .addOption(OptionType.MENTIONABLE, "mention", "mentioned member or role", true)
+ .addOption(OptionType.USER, "mention", "mentioned member or role", true)
.addOption(OptionType.BOOLEAN, "boolean", "test boolean", true);
}
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/UnbanCmd.java b/src/main/java/net/nevet5gi/buzzbot/commands/UnbanCmd.java
index 0749a9e..dd0ac4c 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/UnbanCmd.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/UnbanCmd.java
@@ -2,6 +2,10 @@ package net.nevet5gi.buzzbot.commands;
import net.nevet5gi.buzzbot.commands.utils.CommandContext;
import net.nevet5gi.buzzbot.commands.utils.ICommand;
+import net.nevet5gi.buzzbot.database.SqlDB;
+import net.nevet5gi.buzzbot.util.GuildUtils;
+
+import java.util.List;
public class UnbanCmd implements ICommand {
@Override
@@ -9,7 +13,20 @@ public class UnbanCmd implements ICommand {
// Somehow keep track of bans
// Make sure a user can only be unbanned from the guild they were banned from
- ctx.getMessage().reply("This command doesn't work yet").queue();
+ List args = ctx.getArgs();
+
+ long userId;
+ if (args.get(0).contains("<@")) {
+ userId = Long.parseLong(args.get(0).replace("<","").replace("@","").replace("&","").replace(">",""));
+ } else {
+ userId = Long.parseLong(args.get(0));
+ }
+
+ SqlDB sql = new SqlDB();
+ sql.queryBan(userId, GuildUtils.getTable(ctx.getGuild()));
+ sql.close();
+
+ ctx.getGuild().getIdLong();
}
@Override
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/WarnCmd.java b/src/main/java/net/nevet5gi/buzzbot/commands/WarnCmd.java
index 5296e22..1362817 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/WarnCmd.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/WarnCmd.java
@@ -1,19 +1,51 @@
package net.nevet5gi.buzzbot.commands;
-import net.dv8tion.jda.api.interactions.commands.build.CommandData;
+import net.nevet5gi.buzzbot.Bot;
import net.nevet5gi.buzzbot.commands.utils.CommandContext;
import net.nevet5gi.buzzbot.commands.utils.ICommand;
-import net.nevet5gi.buzzbot.commands.utils.ISlashCommand;
+import net.nevet5gi.buzzbot.database.SqlDB;
+import net.nevet5gi.buzzbot.objects.WarnData;
-public class WarnCmd implements ICommand, ISlashCommand {
+import java.util.List;
+
+public class WarnCmd implements ICommand {
@Override
public void handle(CommandContext ctx) {
- ctx.getMessage().reply("This command has not been implemented yet").queue();
- }
+ List args = ctx.getArgs();
- @Override
- public void handleSlash(CommandContext ctx) {
- ctx.getSlashEvent().getHook().sendMessage("This command has not been implemented yet").queue();
+ if (args.size() < 2) {
+ ctx.getChannel().sendMessage("Not enough arguments, please try again").queue();
+ return;
+ }
+
+ WarnData warn = new WarnData();
+
+ if (args.get(0).contains("<@")) {
+ warn.setUserId(Long.parseLong(args.get(0).replace("<","").replace("@","").replace("&","").replace(">","")));
+ } else {
+ warn.setUserId(Long.parseLong(args.get(0)));
+ }
+
+ StringBuilder sb = new StringBuilder();
+ if (args.size() >= 1) {
+ for (int i = 1; i < args.size(); i++) {
+ sb.append(args.get(i));
+ sb.append(" ");
+ }
+ }
+ warn.setReason(sb.toString().trim());
+
+ ctx.getChannel().sendMessage("<@" + ctx.getMessage().getAuthor().getId() + "> warned <@" + warn.getUserId() + "> for reason: " + warn.getReason()).queue();
+
+ Bot.jda.retrieveUserById(warn.getUserId()).queue(user -> { warn.setUserName(user.getName()); });
+ warn.setModId(ctx.getMessage().getAuthor().getIdLong());
+ warn.setModName(ctx.getMessage().getAuthor().getName());
+ warn.setServerId(ctx.getGuild().getIdLong());
+ warn.setServerName(ctx.getGuild().getName());
+
+ SqlDB sql = new SqlDB();
+ sql.insertWarn(warn, "master_warn_record");
+ sql.close();
}
@Override
@@ -26,16 +58,6 @@ public class WarnCmd implements ICommand, ISlashCommand {
return 2;
}
- @Override
- public String getDescription() {
- return "Warns specified user";
- }
-
- @Override
- public CommandData getCommandData() {
- return new CommandData(this.getName(), this.getDescription());
- }
-
@Override
public String getHelp() {
return "Warns the specified user";
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/utils/CommandContext.java b/src/main/java/net/nevet5gi/buzzbot/commands/utils/CommandContext.java
index 39d0799..138abe7 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/utils/CommandContext.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/utils/CommandContext.java
@@ -25,6 +25,7 @@ public class CommandContext implements ICommandContext {
return this.event;
}
+ @Override
public SlashCommandEvent getSlashEvent() {
return this.slashEvent;
}
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/utils/CommandManager.java b/src/main/java/net/nevet5gi/buzzbot/commands/utils/CommandManager.java
index 63d4373..56a1466 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/utils/CommandManager.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/utils/CommandManager.java
@@ -1,5 +1,6 @@
package net.nevet5gi.buzzbot.commands.utils;
+import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
@@ -8,6 +9,8 @@ import net.dv8tion.jda.api.interactions.commands.build.CommandData;
import net.nevet5gi.buzzbot.Bot;
import net.nevet5gi.buzzbot.Config;
import net.nevet5gi.buzzbot.commands.*;
+import net.nevet5gi.buzzbot.database.SqlDB;
+import net.nevet5gi.buzzbot.objects.GuildData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,6 +32,7 @@ public class CommandManager {
addCommand(new HelpCmd(this));
addCommand(new MuteCmd());
addCommand(new PingCmd());
+ addCommand(new SetRoleCmd());
addCommand(new TestCmd());
addCommand(new UnbanCmd());
addCommand(new UnmuteCmd());
@@ -66,6 +70,10 @@ public class CommandManager {
return commands;
}
+ public List getSlashCommands() {
+ return slashList;
+ }
+
@Nullable
public ICommand getCommand(String search) {
String searchLower = search.toLowerCase();
@@ -79,10 +87,8 @@ public class CommandManager {
return null;
}
- public boolean hasPermission(Member member, ICmdGeneric cmd) {
- //TODO Make this get roles from db
+ public boolean hasPermission(Member member, ICmdGeneric cmd, GuildData guild) {
List roles = member.getRoles();
-
int permLevel = 0;
for (Role role : roles) {
@@ -99,6 +105,12 @@ public class CommandManager {
case "owner":
if (permLevel < 4) permLevel = 4;
}
+
+ if (role.getIdLong() == guild.getHelperId() && permLevel < 1) permLevel = 1;
+ if (role.getIdLong() == guild.getModeratorId() && permLevel < 2) permLevel = 2;
+ if (role.getIdLong() == guild.getAdministratorId() && permLevel < 3) permLevel = 3;
+ if (role.getIdLong() == guild.getOwnerId() && permLevel < 4) permLevel = 4;
+ if (member.isOwner() && permLevel < 4) permLevel = 4;
}
return permLevel >= cmd.getPermissionLevel();
@@ -125,7 +137,11 @@ public class CommandManager {
String invoke = split[0].toLowerCase();
ICommand cmd = getCommand(invoke);
- if (!hasPermission(event.getMember(), cmd)) {
+ SqlDB sql = new SqlDB();
+ GuildData guild = sql.getGuildData(event.getGuild().getIdLong());
+ sql.close();
+
+ if (!hasPermission(event.getMember(), cmd, guild)) {
event.getMessage().reply("You do not have permission to use this command.").queue();
return;
}
@@ -144,13 +160,18 @@ public class CommandManager {
String invoke = event.getName();
ISlashCommand cmd = getSlashCommand(invoke);
- if (!hasPermission(event.getMember(), cmd)) {
- event.getHook().sendMessage("You do not have permission to use this command.").queue();
- return;
- }
-
if (cmd != null) {
event.deferReply().queue();
+
+ SqlDB sql = new SqlDB();
+ GuildData guild = sql.getGuildData(event.getGuild().getIdLong());
+ sql.close();
+
+ if (!hasPermission(event.getMember(), cmd, guild)) {
+ event.getHook().sendMessage("You do not have permission to use this command.").queue();
+ return;
+ }
+
List args = new ArrayList<>();
CommandContext ctx = new CommandContext(event, args);
diff --git a/src/main/java/net/nevet5gi/buzzbot/commands/utils/ICommandContext.java b/src/main/java/net/nevet5gi/buzzbot/commands/utils/ICommandContext.java
index d5dbb75..d67f3d1 100644
--- a/src/main/java/net/nevet5gi/buzzbot/commands/utils/ICommandContext.java
+++ b/src/main/java/net/nevet5gi/buzzbot/commands/utils/ICommandContext.java
@@ -2,7 +2,9 @@ package net.nevet5gi.buzzbot.commands.utils;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
+import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+import net.dv8tion.jda.api.interactions.InteractionHook;
import net.dv8tion.jda.api.sharding.ShardManager;
public interface ICommandContext {
@@ -13,7 +15,12 @@ public interface ICommandContext {
* @return the {@link net.dv8tion.jda.api.entities.Guild} for this command/event
*/
default Guild getGuild() {
- return this.getEvent().getGuild();
+ if (this.getEvent() == null) {
+ return this.getSlashEvent().getGuild();
+ } else if (this.getSlashEvent() == null) {
+ return this.getEvent().getGuild();
+ }
+ return null;
}
/**
@@ -23,13 +30,25 @@ public interface ICommandContext {
*/
GuildMessageReceivedEvent getEvent();
+ /**
+ * Returns the {@link net.dv8tion.jda.api.events.interaction.SlashCommandEvent interaction event} that was received for this instance
+ *
+ * @returns the {@link net.dv8tion.jda.api.events.interaction.SlashCommandEvent interaction event} that was received for this instance
+ */
+ SlashCommandEvent getSlashEvent();
+
/**
* Returns the {@link net.dv8tion.jda.api.entities.TextChannel channel} that the message for this event was send in
*
* @return the {@link net.dv8tion.jda.api.entities.TextChannel channel} that the message for this event was send in
*/
default TextChannel getChannel() {
- return this.getEvent().getChannel();
+ if (this.getEvent() == null) {
+ return this.getSlashEvent().getTextChannel();
+ } else if (this.getSlashEvent() == null) {
+ return this.getEvent().getChannel();
+ }
+ return null;
}
/**
@@ -38,7 +57,19 @@ public interface ICommandContext {
* @return the {@link net.dv8tion.jda.api.entities.Message message} that triggered this event
*/
default Message getMessage() {
- return this.getEvent().getMessage();
+ if (this.getEvent() == null) {
+ return null;
+ } else if (this.getSlashEvent() == null) {
+ return this.getEvent().getMessage();
+ }
+ return null;
+ }
+
+ default String getCommandString() {
+ if (this.getEvent() == null) {
+ return this.getSlashEvent().getCommandString();
+ }
+ return null;
}
/**
@@ -47,7 +78,12 @@ public interface ICommandContext {
* @return the {@link net.dv8tion.jda.api.entities.User author} of the message as user
*/
default User getAuthor() {
- return this.getEvent().getAuthor();
+ if (this.getEvent() == null) {
+ return this.getSlashEvent().getUser();
+ } else if (this.getSlashEvent() == null) {
+ return this.getEvent().getAuthor();
+ }
+ return null;
}
/**
* Returns the {@link net.dv8tion.jda.api.entities.Member author} of the message as member
@@ -55,7 +91,21 @@ public interface ICommandContext {
* @return the {@link net.dv8tion.jda.api.entities.Member author} of the message as member
*/
default Member getMember() {
- return this.getEvent().getMember();
+ if (this.getEvent() == null) {
+ return this.getSlashEvent().getMember();
+ } else if (this.getSlashEvent() == null) {
+ return this.getEvent().getMember();
+ }
+ return null;
+ }
+
+ /**
+ * Returns the {@link net.dv8tion.jda.api.interactions.InteractionHook interaction hook} of the slash command
+ *
+ * @return the {@link net.dv8tion.jda.api.interactions.InteractionHook interaction hook} of the slash command
+ */
+ default InteractionHook getHook() {
+ return this.getSlashEvent().getHook();
}
/**
@@ -64,7 +114,12 @@ public interface ICommandContext {
* @return the current {@link net.dv8tion.jda.api.JDA jda} instance
*/
default JDA getJDA() {
- return this.getEvent().getJDA();
+ if (this.getEvent() == null) {
+ return this.getSlashEvent().getJDA();
+ } else if (this.getSlashEvent() == null) {
+ return this.getEvent().getJDA();
+ }
+ return null;
}
/**
diff --git a/src/main/java/net/nevet5gi/buzzbot/database/SqlDB.java b/src/main/java/net/nevet5gi/buzzbot/database/SqlDB.java
index 3cf4c21..9ec9230 100644
--- a/src/main/java/net/nevet5gi/buzzbot/database/SqlDB.java
+++ b/src/main/java/net/nevet5gi/buzzbot/database/SqlDB.java
@@ -1,12 +1,10 @@
package net.nevet5gi.buzzbot.database;
import net.nevet5gi.buzzbot.Config;
-import net.nevet5gi.buzzbot.objects.BanData;
-import net.nevet5gi.buzzbot.objects.GuildData;
-import net.nevet5gi.buzzbot.objects.MuteData;
-import net.nevet5gi.buzzbot.objects.WarnData;
+import net.nevet5gi.buzzbot.objects.*;
import java.sql.*;
+import java.util.ArrayList;
public class SqlDB {
private Connection connect;
@@ -25,12 +23,13 @@ public class SqlDB {
public void insertBan(BanData ban, String table) {
try {
- statement.executeUpdate("INSERT INTO " + table + " VALUES (default, " + ban.getUserId() + ", '" + ban.getUserName() + "', '" + ban.getDate() + "', '" + ban.getTime() + "', " + ban.getBanType() + ", " + ban.getBanLength() + ", '" + ban.getBanReason() + "', '" + ban.getModName() + "', " + ban.getModId() + ", '" + ban.getServerName() + "', " + ban.getServerId() + ", 1)");
+ statement.executeUpdate("INSERT INTO master_ban_record VALUES (default, " + ban.getUserId() + ", '" + ban.getUserName() + "', '" + ban.getDate() + "', '" + ban.getTime() + "', " + ban.getBanType() + ", " + ban.getBanLength() + ", '" + ban.getReason() + "', '" + ban.getModName() + "', " + ban.getModId() + ", '" + ban.getServerName() + "', " + ban.getServerId() + ", 1)");
+ if (!table.equalsIgnoreCase("master_ban_record")) {
+ statement.executeUpdate("INSERT INTO " + table + " VALUES (default, " + ban.getUserId() + ", '" + ban.getUserName() + "', '" + ban.getDate() + "', '" + ban.getTime() + "', " + ban.getBanType() + ", " + ban.getBanLength() + ", '" + ban.getReason() + "', '" + ban.getModName() + "', " + ban.getModId() + ", '" + ban.getServerName() + "', " + ban.getServerId() + ", 1)");
+ }
} catch (SQLException e) {
e.printStackTrace();
}
-
- close();
}
public void insertUnban(long userId, String table) {
@@ -39,22 +38,24 @@ public class SqlDB {
public void insertMute(MuteData mute, String table) {
try {
- statement.executeUpdate("INSERT INTO " + table + " VALUES (default, " + mute.getUserId() + ", '" + mute.getUserName() + "', '" + mute.getDate() + "', '" + mute.getTime() + "', " + mute.getMuteLength() + ", '" + mute.getMuteReason() + "', '" + mute.getModName() + "', " + mute.getModId() + ", '" + mute.getServerName() + "', " + mute.getServerId() + ")");
+ statement.executeUpdate("INSERT INTO master_mute_record VALUES (default, " + mute.getUserId() + ", '" + mute.getUserName() + "', '" + mute.getDate() + "', '" + mute.getTime() + "', " + mute.getMuteLength() + ", '" + mute.getReason() + "', '" + mute.getModName() + "', " + mute.getModId() + ", '" + mute.getServerName() + "', " + mute.getServerId() + ")");
+ if (!table.equalsIgnoreCase("master_mute_record")) {
+ statement.executeUpdate("INSERT INTO " + table + " VALUES (default, " + mute.getUserId() + ", '" + mute.getUserName() + "', '" + mute.getDate() + "', '" + mute.getTime() + "', " + mute.getMuteLength() + ", '" + mute.getReason() + "', '" + mute.getModName() + "', " + mute.getModId() + ", '" + mute.getServerName() + "', " + mute.getServerId() + ")");
+ }
} catch (SQLException e) {
e.printStackTrace();
}
-
- close();
}
public void insertWarn(WarnData warn, String table) {
try {
- statement.executeUpdate("INSERT INTO " + table + " VALUES (default, " + warn.getUserId() + ", '" + warn.getUserName() + "', '" + warn.getDate() + "', '" + warn.getTime() + "', " + warn.getBanType() + ", " + warn.getBanLength() + ", '" + warn.getBanReason() + "', '" + warn.getModName() + "', " + warn.getModId() + ", '" + warn.getServerName() + "', " + warn.getServerId() + ")");
+ statement.executeUpdate("INSERT INTO master_warn_record VALUES (default, " + warn.getUserId() + ", '" + warn.getUserName() + "', '" + warn.getDate() + "', '" + warn.getTime() + "', '" + warn.getReason() + "', '" + warn.getModName() + "', " + warn.getModId() + ", '" + warn.getServerName() + "', " + warn.getServerId() + ")");
+ if (!table.equalsIgnoreCase("master_warn_record")){
+ statement.executeUpdate("INSERT INTO " + table + " VALUES (default, " + warn.getUserId() + ", '" + warn.getUserName() + "', '" + warn.getDate() + "', '" + warn.getTime() + "', '" + warn.getReason() + "', '" + warn.getModName() + "', " + warn.getModId() + ", '" + warn.getServerName() + "', " + warn.getServerId() + ")");
+ }
} catch (SQLException e) {
e.printStackTrace();
}
-
- close();
}
public BanData queryBan(long userId, String table) {
@@ -68,9 +69,9 @@ public class SqlDB {
ban.setUserName(resultSet.getString("user_name"));
ban.setDate(resultSet.getDate("ban_date"));
ban.setTime(resultSet.getTime("ban_time"));
+ ban.setReason(resultSet.getString("ban_reason"));
ban.setBanType(resultSet.getBoolean("ban_type"));
ban.setBanLength(resultSet.getInt("ban_length"));
- ban.setBanReason(resultSet.getString("ban_reason"));
ban.setModName(resultSet.getString("mod_name"));
ban.setModId(resultSet.getLong("mod_id"));
ban.setServerName(resultSet.getString("server_name"));
@@ -80,8 +81,6 @@ public class SqlDB {
e.printStackTrace();
return null;
}
-
- close();
return ban;
}
@@ -99,8 +98,6 @@ public class SqlDB {
} catch (SQLException e) {
throw new RuntimeException(e);
}
-
- close();
return mute;
}
@@ -117,19 +114,15 @@ public class SqlDB {
} catch (SQLException e) {
e.printStackTrace();
}
-
- close();
return warn;
}
public void addGuild(GuildData guild) {
try {
- statement.executeUpdate("INSERT INTO guild_settings VALUES ('" + guild.getName() + "', " + guild.getId() + ", '" + guild.getGroup() + "', " + guild.getProfanityLevel() + ")");
+ statement.executeUpdate("INSERT INTO guild_settings VALUES ('" + guild.getName() + "', " + guild.getId() + ", '" + guild.getGroup() + "', " + guild.getProfanityLevel() + ", 0, 0, 0, 0)");
} catch (SQLException e) {
e.printStackTrace();
}
-
- close();
}
public GuildData getGuildData(long guildId) {
@@ -143,16 +136,47 @@ public class SqlDB {
guild.setId(resultSet.getLong("guild_id"));
guild.setGroup(resultSet.getString("guild_group"));
guild.setProfanityLevel(resultSet.getInt("profanity_level"));
+ guild.setHelperId(resultSet.getLong("helper_id"));
+ guild.setModeratorId(resultSet.getLong("moderator_id"));
+ guild.setAdministratorId(resultSet.getLong("administrator_id"));
+ guild.setOwnerId(resultSet.getLong("owner_id"));
}
} catch (SQLException e) {
e.printStackTrace();
}
-
- close();
return guild;
}
- private void close() {
+ public void updateGuildRole(long guildId, String role, long roleId) {
+ String sql = "UPDATE guild_settings SET " + role + " = " + roleId + " WHERE guild_id = " + guildId;
+ try {
+ statement.executeUpdate(sql);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void addGroup(Group group) {
+ //TODO Make this function
+ }
+
+ public ArrayList getGroups() {
+ String sql = "";
+ ArrayList groups = new ArrayList<>();
+
+ try {
+ resultSet = statement.executeQuery(sql);
+
+ while (resultSet.next()) {
+
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return groups;
+ }
+
+ public void close() {
try {
if (resultSet != null) {
resultSet.close();
diff --git a/src/main/java/net/nevet5gi/buzzbot/functions/ProfanityFilter.java b/src/main/java/net/nevet5gi/buzzbot/functions/ProfanityFilter.java
index b298cdf..808d309 100644
--- a/src/main/java/net/nevet5gi/buzzbot/functions/ProfanityFilter.java
+++ b/src/main/java/net/nevet5gi/buzzbot/functions/ProfanityFilter.java
@@ -25,12 +25,12 @@ public class ProfanityFilter {
public void handle(GuildMessageReceivedEvent event) {
event.getMessage().delete().queue();
- event.getChannel().sendMessage("No swearing please :)").queue();
+ event.getChannel().sendMessage("Hey <@" + event.getAuthor().getId() + ">, no swearing!").queue();
}
public void handleEdit(GuildMessageUpdateEvent event) {
event.getMessage().delete().queue();
- event.getChannel().sendMessage("Nice try ;)").queue();
+ event.getChannel().sendMessage("Hey <@" + event.getAuthor().getId() + ">, no swearing!").queue();
}
public void buildDictionaries() {
diff --git a/src/main/java/net/nevet5gi/buzzbot/modules/BuzzyModule.java b/src/main/java/net/nevet5gi/buzzbot/modules/BuzzyModule.java
new file mode 100644
index 0000000..043ffdb
--- /dev/null
+++ b/src/main/java/net/nevet5gi/buzzbot/modules/BuzzyModule.java
@@ -0,0 +1,12 @@
+package net.nevet5gi.buzzbot.modules;
+
+import net.dv8tion.jda.api.JDA;
+
+public interface BuzzyModule {
+
+ default void onPreEnable() {}
+
+ void onEnable(JDA jda);
+
+ void onDisable();
+}
diff --git a/src/main/java/net/nevet5gi/buzzbot/modules/ModuleLoader.java b/src/main/java/net/nevet5gi/buzzbot/modules/ModuleLoader.java
new file mode 100644
index 0000000..c5cd0a7
--- /dev/null
+++ b/src/main/java/net/nevet5gi/buzzbot/modules/ModuleLoader.java
@@ -0,0 +1,71 @@
+package net.nevet5gi.buzzbot.modules;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.*;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.jar.Attributes;
+import java.util.jar.JarInputStream;
+import java.util.jar.Manifest;
+
+public class ModuleLoader {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ModuleLoader.class);
+
+ public static ArrayList getModules() {
+ File modulesPath = new File("./modules/");
+ if (!modulesPath.exists()) {
+ modulesPath.mkdirs();
+ }
+
+ ArrayList modules = new ArrayList<>();
+ try {
+ Files.walk(Paths.get("./modules/"))
+ .filter(Files::isRegularFile)
+ .forEach(modules::add);
+
+ for (Path path : modules) {
+ System.out.println("Module path: " + path.toString());
+ }
+ } catch (IOException e) {
+ System.out.println("Unable to get module list");
+ e.printStackTrace();
+ }
+
+ return modules;
+ }
+
+ public static ArrayList loadModules() throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
+ ArrayList modulePaths = getModules();
+
+ ArrayList modules = new ArrayList<>();
+ for (Path module : modulePaths) {
+ JarInputStream jarStream = new JarInputStream(new FileInputStream(String.valueOf(module)));
+ Manifest mf = jarStream.getManifest();
+ Attributes attributes = mf.getMainAttributes();
+ String mainClassString = attributes.getValue("Main-Class");
+ if (mainClassString == null) {
+ LOGGER.error("Unable to get Main Class from module " + module.toString());
+ }
+ String[] packages = mainClassString.split("\\.");
+ String className = packages[packages.length - 1];
+
+ File file = module.toFile();
+ URL[] urls = {file.toURI().toURL()};
+
+ URLClassLoader urlClassLoader = URLClassLoader.newInstance(urls);
+
+ Class extends BuzzyModule> mainClass = (Class extends BuzzyModule>) Class.forName(className, true, urlClassLoader);
+ BuzzyModule newModule = mainClass.getDeclaredConstructor().newInstance();
+ newModule.onPreEnable();
+ modules.add(newModule);
+ }
+ return modules;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/nevet5gi/buzzbot/objects/BanData.java b/src/main/java/net/nevet5gi/buzzbot/objects/BanData.java
index 4d2cc81..bf66b1e 100644
--- a/src/main/java/net/nevet5gi/buzzbot/objects/BanData.java
+++ b/src/main/java/net/nevet5gi/buzzbot/objects/BanData.java
@@ -3,18 +3,15 @@ package net.nevet5gi.buzzbot.objects;
import java.sql.Date;
import java.sql.Time;
-public class BanData extends UserData {
+public class BanData extends DisciplineData {
private boolean banType;
private int banLength;
- private String banReason;
-
public BanData() {}
- public BanData(long userId, String userName, Date date, Time time, boolean banType, int banLength, String banReason, String modName, long modId, String serverName, long serverId) {
- super(userId, userName, date, time, modName, modId, serverName, serverId);
+ public BanData(long userId, String userName, Date date, Time time, String reason, boolean banType, int banLength, String modName, long modId, String serverName, long serverId) {
+ super(userId, userName, date, time, reason, modName, modId, serverName, serverId);
this.banType = banType;
this.banLength = banLength;
- this.banReason = banReason;
}
public void setBanType(boolean banType) {
@@ -32,12 +29,4 @@ public class BanData extends UserData {
public int getBanLength() {
return banLength;
}
-
- public void setBanReason(String banReason) {
- this.banReason = banReason;
- }
-
- public String getBanReason() {
- return banReason;
- }
}
diff --git a/src/main/java/net/nevet5gi/buzzbot/objects/UserData.java b/src/main/java/net/nevet5gi/buzzbot/objects/DisciplineData.java
similarity index 81%
rename from src/main/java/net/nevet5gi/buzzbot/objects/UserData.java
rename to src/main/java/net/nevet5gi/buzzbot/objects/DisciplineData.java
index 24b9cb9..02565e6 100644
--- a/src/main/java/net/nevet5gi/buzzbot/objects/UserData.java
+++ b/src/main/java/net/nevet5gi/buzzbot/objects/DisciplineData.java
@@ -5,23 +5,25 @@ import java.sql.Time;
import java.time.LocalDate;
import java.time.LocalTime;
-public class UserData {
+public class DisciplineData {
private long userId;
private String userName;
private Date date = Date.valueOf(LocalDate.now());
private Time time = Time.valueOf(LocalTime.now());
+ private String reason;
private String modName;
private long modId;
private String serverName;
private long serverId;
- public UserData() {}
+ public DisciplineData() {}
- public UserData(long userId, String userName, Date date, Time time, String modName, long modId, String serverName, long serverId) {
+ public DisciplineData(long userId, String userName, Date date, Time time, String reason, String modName, long modId, String serverName, long serverId) {
this.setUserId(userId);
this.setUserName(userName);
this.setDate(date);
this.setTime(time);
+ this.setReason(reason);
this.setModName(modName);
this.setModId(modId);
this.setServerName(serverName);
@@ -60,6 +62,14 @@ public class UserData {
return time;
}
+ public void setReason(String reason) {
+ this.reason = reason;
+ }
+
+ public String getReason() {
+ return reason;
+ }
+
public void setModName(String modName) {
this.modName = modName;
}
diff --git a/src/main/java/net/nevet5gi/buzzbot/objects/Group.java b/src/main/java/net/nevet5gi/buzzbot/objects/Group.java
new file mode 100644
index 0000000..5ff6b3c
--- /dev/null
+++ b/src/main/java/net/nevet5gi/buzzbot/objects/Group.java
@@ -0,0 +1,37 @@
+package net.nevet5gi.buzzbot.objects;
+
+import java.util.List;
+
+public class Group {
+ private String name;
+ private String tablePrefix;
+ private List members;
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setTablePrefix(String tablePrefix) {
+ this.tablePrefix = tablePrefix;
+ }
+
+ public String getTablePrefix() {
+ return tablePrefix;
+ }
+
+ public void setMembers(List members) {
+ this.members = members;
+ }
+
+ public void addMember(String member) {
+ this.members.add(member);
+ }
+
+ public List getMembers() {
+ return members;
+ }
+}
diff --git a/src/main/java/net/nevet5gi/buzzbot/objects/GuildData.java b/src/main/java/net/nevet5gi/buzzbot/objects/GuildData.java
index cf80943..33d37f0 100644
--- a/src/main/java/net/nevet5gi/buzzbot/objects/GuildData.java
+++ b/src/main/java/net/nevet5gi/buzzbot/objects/GuildData.java
@@ -5,6 +5,10 @@ public class GuildData {
private long id;
private String group;
private int profanityLevel;
+ private long helperId;
+ private long moderatorId;
+ private long administratorId;
+ private long ownerId;
public void setName(String name) {
this.name = name;
@@ -37,4 +41,36 @@ public class GuildData {
public int getProfanityLevel() {
return profanityLevel;
}
+
+ public void setHelperId(long helperId) {
+ this.helperId = helperId;
+ }
+
+ public long getHelperId() {
+ return helperId;
+ }
+
+ public void setModeratorId(long moderatorId) {
+ this.moderatorId = moderatorId;
+ }
+
+ public long getModeratorId() {
+ return moderatorId;
+ }
+
+ public void setAdministratorId(long administratorId) {
+ this.administratorId = administratorId;
+ }
+
+ public long getAdministratorId() {
+ return administratorId;
+ }
+
+ public void setOwnerId(long ownerId) {
+ this.ownerId = ownerId;
+ }
+
+ public long getOwnerId() {
+ return ownerId;
+ }
}
diff --git a/src/main/java/net/nevet5gi/buzzbot/objects/ModRoles.java b/src/main/java/net/nevet5gi/buzzbot/objects/ModRoles.java
new file mode 100644
index 0000000..e96e905
--- /dev/null
+++ b/src/main/java/net/nevet5gi/buzzbot/objects/ModRoles.java
@@ -0,0 +1,17 @@
+package net.nevet5gi.buzzbot.objects;
+
+public enum ModRoles {
+ HELPER("helper_id"),
+ MODERATOR("moderator_id"),
+ ADMINISTRATOR("administrator_id"),
+ OWNER("owner_id");
+
+ private final String role;
+
+ ModRoles(String role) {
+ this.role = role;
+ }
+ public String getRole() {
+ return this.role;
+ }
+}
diff --git a/src/main/java/net/nevet5gi/buzzbot/objects/MuteData.java b/src/main/java/net/nevet5gi/buzzbot/objects/MuteData.java
index 59e0d8e..9c1b684 100644
--- a/src/main/java/net/nevet5gi/buzzbot/objects/MuteData.java
+++ b/src/main/java/net/nevet5gi/buzzbot/objects/MuteData.java
@@ -3,16 +3,14 @@ package net.nevet5gi.buzzbot.objects;
import java.sql.Date;
import java.sql.Time;
-public class MuteData extends UserData {
+public class MuteData extends DisciplineData {
private int muteLength;
- private String muteReason;
public MuteData() {}
- public MuteData(long userId, String userName, Date date, Time time, int muteLength, String muteReason, String modName, long modId, String serverName, long serverId) {
- super(userId, userName, date, time, modName, modId, serverName, serverId);
+ public MuteData(long userId, String userName, Date date, Time time, String reason, int muteLength, String modName, long modId, String serverName, long serverId) {
+ super(userId, userName, date, time, reason, modName, modId, serverName, serverId);
this.muteLength = muteLength;
- this.muteReason = muteReason;
}
public void setMuteLength(int muteLength) {
@@ -22,12 +20,4 @@ public class MuteData extends UserData {
public int getMuteLength() {
return muteLength;
}
-
- public void setMuteReason(String muteReason) {
- this.muteReason = muteReason;
- }
-
- public String getMuteReason() {
- return muteReason;
- }
}
diff --git a/src/main/java/net/nevet5gi/buzzbot/objects/WarnData.java b/src/main/java/net/nevet5gi/buzzbot/objects/WarnData.java
index be01603..be865c6 100644
--- a/src/main/java/net/nevet5gi/buzzbot/objects/WarnData.java
+++ b/src/main/java/net/nevet5gi/buzzbot/objects/WarnData.java
@@ -3,41 +3,11 @@ package net.nevet5gi.buzzbot.objects;
import java.sql.Date;
import java.sql.Time;
-public class WarnData extends UserData {
- private boolean banType;
- private int banLength;
- private String banReason;
+public class WarnData extends DisciplineData {
public WarnData() {}
- public WarnData(long userId, String userName, Date date, Time time, boolean banType, int banLength, String banReason, String modName, long modId, String serverName, long serverId) {
- super(userId, userName, date, time, modName, modId, serverName, serverId);
- this.banType = banType;
- this.banLength = banLength;
- this.banReason = banReason;
- }
-
- public void setBanType(boolean banType) {
- this.banType = banType;
- }
-
- public boolean getBanType() {
- return banType;
- }
-
- public void setBanLength(int banLength) {
- this.banLength = banLength;
- }
-
- public int getBanLength() {
- return banLength;
- }
-
- public void setBanReason(String banReason) {
- this.banReason = banReason;
- }
-
- public String getBanReason() {
- return banReason;
+ public WarnData(long userId, String userName, Date date, Time time, String reason, String modName, long modId, String serverName, long serverId) {
+ super(userId, userName, date, time, reason, modName, modId, serverName, serverId);
}
}
diff --git a/src/main/java/net/nevet5gi/buzzbot/util/GuildUtils.java b/src/main/java/net/nevet5gi/buzzbot/util/GuildUtils.java
new file mode 100644
index 0000000..554b52b
--- /dev/null
+++ b/src/main/java/net/nevet5gi/buzzbot/util/GuildUtils.java
@@ -0,0 +1,19 @@
+package net.nevet5gi.buzzbot.util;
+
+import net.dv8tion.jda.api.entities.Guild;
+import net.nevet5gi.buzzbot.database.SqlDB;
+
+public class GuildUtils {
+
+ public static void loadGroups() {
+ SqlDB sql = new SqlDB();
+
+ sql.close();
+ }
+
+ public static String getTable(Guild guild) {
+ guild.getIdLong();
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/net/nevet5gi/buzzbot/util/JsonUtils.java b/src/main/java/net/nevet5gi/buzzbot/util/JsonUtils.java
index e97ad3c..0b83f2c 100644
--- a/src/main/java/net/nevet5gi/buzzbot/util/JsonUtils.java
+++ b/src/main/java/net/nevet5gi/buzzbot/util/JsonUtils.java
@@ -1,14 +1,12 @@
package net.nevet5gi.buzzbot.util;
import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import net.nevet5gi.buzzbot.objects.UserData;
+import net.nevet5gi.buzzbot.objects.DisciplineData;
import java.io.*;
import java.lang.reflect.Type;
-import java.util.ArrayList;
-public class JsonUtils {
+public class JsonUtils {
T object;
// public void createJson(T object) {