diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 61a9130..fb7f4a8 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 38aedfd..951ba8d 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -21,5 +21,15 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 38167d7..65f8b8e 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,7 +1,7 @@
-
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 6897914..92e6dca 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,13 +10,20 @@ group 'tech.nevets.lunarbot'
version '1.0'
def jdaVer = '4.3.0_298'
-sourceCompatibility = targetCompatibility = 1.8
+sourceCompatibility = targetCompatibility = JavaVersion.VERSION_11
repositories {
mavenCentral()
maven {
url "https://m2.dv8tion.net/releases"
}
+ maven {
+ name 'duncte123-jfrog'
+ url 'https://duncte123.jfrog.io/artifactory/maven'
+ }
+ maven {
+ url 'https://jitpack.io'
+ }
}
dependencies {
@@ -24,6 +31,9 @@ dependencies {
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
implementation("net.dv8tion:JDA:$jdaVer")
compile group: 'org.yaml', name: 'snakeyaml', version: '1.27'
+ implementation group: 'me.duncte123', name: 'botCommons', version: '2.3.8'
+ implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.4'
+ implementation 'me.carleslc.Simple-YAML:Simple-Yaml:1.7.2'
}
compileJava.options.encoding = 'UTF-8'
diff --git a/config.yml b/config.yml
deleted file mode 100644
index 36b7f64..0000000
--- a/config.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-prefix: "!"
-botToken: "BOTTOKEN"
diff --git a/src/main/java/tech/nevets/lunarbot/Bot.java b/src/main/java/tech/nevets/lunarbot/Bot.java
index 90feb5e..bcf8ae3 100644
--- a/src/main/java/tech/nevets/lunarbot/Bot.java
+++ b/src/main/java/tech/nevets/lunarbot/Bot.java
@@ -7,30 +7,16 @@ import tech.nevets.lunarbot.commands.games.CoinCmd;
import tech.nevets.lunarbot.commands.games.DiceCmd;
import tech.nevets.lunarbot.commands.wiki.InfoCmd;
import tech.nevets.lunarbot.commands.games.PingCmd;
-import tech.nevets.lunarbot.config.Config;
-import tech.nevets.lunarbot.config.ConfigHandler;
-import tech.nevets.lunarbot.config.ConfigUtils;
import tech.nevets.lunarbot.webserver.WebAPI;
import tech.nevets.lunarbot.webserver.WebGenerator;
-import java.io.File;
-
public class Bot {
public static void main(String[] args) throws Exception {
- String configPath = ConfigHandler.configPath.toString();
- File file = new File(configPath);
+ Config.loadConfig();
+ String token = Config.getToken();
- if (!file.exists()) {
- ConfigUtils.createConfig();
- }
-
- ConfigHandler handler = ConfigHandler.getInstance();
- Config config = handler.getConfig();
- String prefix = config.getPrefix();
- String botToken = config.getBotToken();
-
- JDA jda = JDABuilder.createDefault(botToken)
+ JDA jda = JDABuilder.createDefault(token)
.setActivity(Activity.competing("being the very best"))
.addEventListeners(new InfoCmd())
.addEventListeners(new PingCmd())
diff --git a/src/main/java/tech/nevets/lunarbot/Config.java b/src/main/java/tech/nevets/lunarbot/Config.java
new file mode 100644
index 0000000..0d6c290
--- /dev/null
+++ b/src/main/java/tech/nevets/lunarbot/Config.java
@@ -0,0 +1,61 @@
+package tech.nevets.lunarbot;
+
+import org.simpleyaml.configuration.file.YamlFile;
+
+import java.io.IOException;
+
+public class Config {
+
+ private static String prefix;
+ private static String token;
+ private static String ownerID;
+ private static boolean verbose;
+
+ public static void loadConfig() {
+ final YamlFile ymlFile = new YamlFile("config.yml");
+ try {
+ if (!ymlFile.exists()) {
+ System.out.println("Configuration file has been created\n");
+ ymlFile.createNewFile(true);
+ } else {
+ System.out.println("config.yml already exists, loading configuration file...\n");
+ }
+ ymlFile.loadWithComments();
+ } catch (final Exception e) {
+ e.printStackTrace();
+ }
+
+ System.out.println("Adding default values...");
+ ymlFile.addDefault("prefix", "!");
+ ymlFile.addDefault("token", "BotToken122333444455555666666777777788888888999999999");
+ ymlFile.addDefault("verbose", false);
+
+ try {
+ ymlFile.save();
+ } catch (
+ IOException e) {
+ e.printStackTrace();
+ }
+
+ prefix = ymlFile.getString("prefix");
+ token = ymlFile.getString("token");
+ ownerID = ymlFile.getString("owner-id");
+ verbose = ymlFile.getBoolean("verbose");
+ }
+
+ public static String getPrefix() {
+ return prefix;
+ }
+
+ public static String getToken() {
+ return token;
+ }
+
+ public static String getOwnerID() {
+ return ownerID;
+ }
+
+ public static boolean getVerbose() {
+ return verbose;
+ }
+}
diff --git a/src/main/java/tech/nevets/lunarbot/Listener.java b/src/main/java/tech/nevets/lunarbot/Listener.java
new file mode 100644
index 0000000..bcdde7a
--- /dev/null
+++ b/src/main/java/tech/nevets/lunarbot/Listener.java
@@ -0,0 +1,18 @@
+package tech.nevets.lunarbot;
+
+import net.dv8tion.jda.api.events.ReadyEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.annotation.Nonnull;
+
+public class Listener extends ListenerAdapter {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(Listener.class);
+
+ @Override
+ public void onReady(@Nonnull ReadyEvent event) {
+ LOGGER.info("{} is ready", event.getJDA().getSelfUser().getAsTag());
+ }
+}
diff --git a/src/main/java/tech/nevets/lunarbot/commands/CommandContext.java b/src/main/java/tech/nevets/lunarbot/commands/CommandContext.java
new file mode 100644
index 0000000..59c3d8b
--- /dev/null
+++ b/src/main/java/tech/nevets/lunarbot/commands/CommandContext.java
@@ -0,0 +1,31 @@
+package tech.nevets.lunarbot.commands;
+
+import me.duncte123.botcommons.commands.ICommandContext;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+
+import java.util.List;
+
+public class CommandContext implements ICommandContext {
+ private final GuildMessageReceivedEvent event;
+ private final List args;
+
+ public CommandContext(GuildMessageReceivedEvent event, List args) {
+ this.event = event;
+ this.args = args;
+ }
+
+ @Override
+ public Guild getGuild() {
+ return null;
+ }
+
+ @Override
+ public GuildMessageReceivedEvent getEvent() {
+ return this.event;
+ }
+
+ public List getArgs() {
+ return this.args;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/tech/nevets/lunarbot/commands/CommandManager.java b/src/main/java/tech/nevets/lunarbot/commands/CommandManager.java
new file mode 100644
index 0000000..2488578
--- /dev/null
+++ b/src/main/java/tech/nevets/lunarbot/commands/CommandManager.java
@@ -0,0 +1,68 @@
+package tech.nevets.lunarbot.commands;
+
+import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
+import tech.nevets.lunarbot.Config;
+import tech.nevets.lunarbot.commands.games.CoinCmd;
+import tech.nevets.lunarbot.commands.games.DiceCmd;
+import tech.nevets.lunarbot.commands.games.PingCmd;
+import tech.nevets.lunarbot.commands.wiki.InfoCmd;
+
+import javax.annotation.Nullable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Pattern;
+
+public class CommandManager {
+ protected final List commands = new ArrayList<>();
+
+ public CommandManager() {
+ addCommand(new CoinCmd());
+ addCommand(new DiceCmd());
+ addCommand(new PingCmd);
+ addCommand(new InfoCmd());
+ }
+
+ private void addCommand(ICommand cmd) {
+ boolean nameFound = this.commands.stream().anyMatch((it) -> it.getName().equalsIgnoreCase(cmd.getName()));
+
+ if (nameFound) {
+ throw new IllegalArgumentException("A command with this name is already present");
+ }
+
+ commands.add(cmd);
+ }
+
+ @Nullable
+ private ICommand getCommand(String search) {
+ String searchLower = search.toLowerCase();
+
+ for (ICommand cmd : this.commands) {
+ if (cmd.getName().equals(searchLower) || cmd.getAliases().contains(searchLower)) {
+ return cmd;
+ }
+ }
+
+ return null;
+ }
+
+ public void handle(GuildMessageReceivedEvent event) {
+ String prefix = Config.getPrefix();
+
+ String[] split = event.getMessage().getContentRaw()
+ .replaceFirst("(?i)" + Pattern.quote(prefix), "")
+ .split("\\s+");
+
+ String invoke = split[0].toLowerCase();
+ ICommand cmd = this.getCommand(invoke);
+
+ if (cmd !=null) {
+ event.getChannel().sendTyping().queue();
+ List args = Arrays.asList(split).subList(1, split.length);
+
+ CommandContext ctx = new CommandContext(event, args);
+
+ cmd.handle(ctx);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/tech/nevets/lunarbot/commands/ICommand.java b/src/main/java/tech/nevets/lunarbot/commands/ICommand.java
new file mode 100644
index 0000000..d96c683
--- /dev/null
+++ b/src/main/java/tech/nevets/lunarbot/commands/ICommand.java
@@ -0,0 +1,13 @@
+package tech.nevets.lunarbot.commands;
+
+import java.util.List;
+
+public interface ICommand {
+ void handle(CommandContext ctx);
+
+ String getName();
+
+ default List getAliases() {
+ return List.of();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/tech/nevets/lunarbot/commands/games/CoinCmd.java b/src/main/java/tech/nevets/lunarbot/commands/games/CoinCmd.java
index cd7746c..685480a 100644
--- a/src/main/java/tech/nevets/lunarbot/commands/games/CoinCmd.java
+++ b/src/main/java/tech/nevets/lunarbot/commands/games/CoinCmd.java
@@ -1,14 +1,43 @@
package tech.nevets.lunarbot.commands.games;
+import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
-import tech.nevets.lunarbot.config.ConfigHandler;
+import tech.nevets.lunarbot.Config;
+import tech.nevets.lunarbot.commands.CommandContext;
+import tech.nevets.lunarbot.commands.ICommand;
-import java.io.FileNotFoundException;
import java.util.Random;
+public class CoindCmd implements ICommand {
+
+ @Override
+ public void handle(CommandContext ctx) {
+ JDA jda = ctx.getJDA();
+
+ Random rand = new Random();
+ int upperbound = 2;
+ MessageChannel channel = jda.getChannel;
+
+ int i = rand.nextInt(upperbound);
+ if (i == 0) {
+ channel.sendTyping().queue();
+ channel.sendMessage("The coin landed on **heads**").queue();
+ } else {
+ channel.sendTyping().queue();
+ channel.sendMessage("The coin landed on **tails**").queue();
+ }
+ }
+
+ @Override
+ public String getName() {
+ return "coinflip";
+ }
+}
+
+/**
public class CoinCmd extends ListenerAdapter {
@Override
public void onMessageReceived(MessageReceivedEvent e) {
@@ -16,8 +45,7 @@ public class CoinCmd extends ListenerAdapter {
Message message = e.getMessage();
String content = message.getContentRaw();
- String prefix = null;
- try { prefix = ConfigHandler.getInstance().getConfig().getPrefix(); } catch (FileNotFoundException fileNotFoundException) { fileNotFoundException.printStackTrace(); }
+ String prefix = Config.getPrefix();
if (content.equalsIgnoreCase(prefix + "coinflip")) {
Random rand = new Random();
@@ -35,4 +63,5 @@ public class CoinCmd extends ListenerAdapter {
System.out.println(i);
}
}
-}
\ No newline at end of file
+}
+**/
\ No newline at end of file
diff --git a/src/main/java/tech/nevets/lunarbot/config/Config.java b/src/main/java/tech/nevets/lunarbot/config/Config.java
deleted file mode 100644
index ecb47a0..0000000
--- a/src/main/java/tech/nevets/lunarbot/config/Config.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package tech.nevets.lunarbot.config;
-
-public class Config {
- private String prefix;
- private String botToken;
-
- public String getPrefix() {
- return prefix;
- }
-
- public void setPrefix(String prefix) {
- this.prefix = prefix;
- }
-
- public String getBotToken() {
- return botToken;
- }
-
- public void setBotToken(String botToken) {
- this.botToken = botToken;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/tech/nevets/lunarbot/config/ConfigHandler.java b/src/main/java/tech/nevets/lunarbot/config/ConfigHandler.java
deleted file mode 100644
index 9f2be06..0000000
--- a/src/main/java/tech/nevets/lunarbot/config/ConfigHandler.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package tech.nevets.lunarbot.config;
-
-import org.yaml.snakeyaml.DumperOptions;
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.constructor.Constructor;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-public class ConfigHandler {
-
- public static final Path configPath = Paths.get("./config.yml");
-
- private static ConfigHandler configHandler;
-
- Config config;
-
- public static ConfigHandler getInstance() throws FileNotFoundException {
- return getInstance(configPath);
- }
-
- public static ConfigHandler getInstance(Path configPath) throws FileNotFoundException {
- if (configHandler == null) {
- configHandler = new ConfigHandler(configPath);
- }
- return configHandler;
- }
-
- private ConfigHandler(Path configPath) throws FileNotFoundException {
- this.config = loadConfig(configPath);
- }
-
- public Config loadConfig(Path configPath) throws FileNotFoundException {
- Constructor constructor = new Constructor(Config.class);
- Yaml yaml = new Yaml(constructor);
- return yaml.load(new FileInputStream(configPath.toFile()));
- }
-
- public void dumpConfig() throws IllegalArgumentException, IllegalAccessException, IOException {
- dumpConfig(this.config, this.configPath);
- }
-
- public void dumpConfig(Config config, Path configPath) throws IllegalArgumentException, IllegalAccessException, IOException {
- DumperOptions options = new DumperOptions();
- options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
- options.setPrettyFlow(true);
- Yaml yml = new Yaml(options);
- yml.dump(config, new FileWriter(configPath.toFile()));
- }
-
- public Config getConfig() {
- return this.config;
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/tech/nevets/lunarbot/config/ConfigUtils.java b/src/main/java/tech/nevets/lunarbot/config/ConfigUtils.java
deleted file mode 100644
index 8b66cca..0000000
--- a/src/main/java/tech/nevets/lunarbot/config/ConfigUtils.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package tech.nevets.lunarbot.config;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-
-public class ConfigUtils {
-
- public static void createConfig() {
-
- System.out.println("Attemption to create file...");
-
- try {
- File config = new File("config.yml");
-
- if (config.createNewFile()) {
- System.out.println(config.getName() + " has been successfully created!");
- } else {
- System.out.println(config.getName() + " already exists!");
- }
- } catch (IOException e) {
- System.out.println("An error has occurred");
- e.printStackTrace();
- }
-
- try {
- FileWriter writer = new FileWriter("config.yml");
- writer.write("prefix: \"!\"\nbotToken: \"BOTTOKEN\"");
- writer.close();
- System.out.println("Successfully wrote to config.yml");
- } catch (IOException e) {
- System.out.println("An error occurred while writing to config.yml");
- e.printStackTrace();
- }
- }
-}
diff --git a/src/main/java/tech/nevets/lunarbot/gui/GUI.java b/src/main/java/tech/nevets/lunarbot/gui/GUI.java
new file mode 100644
index 0000000..33d9d8a
--- /dev/null
+++ b/src/main/java/tech/nevets/lunarbot/gui/GUI.java
@@ -0,0 +1,50 @@
+package tech.nevets.lunarbot.gui;
+
+import tech.nevets.lunarbot.gui.commands.KillBot;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class GUI implements ActionListener {
+
+ public GUI() {
+
+ JFrame frame = new JFrame();
+ JPanel panel = new JPanel();
+ JLabel lb1 = new JLabel("Set Bot token Here");
+ JButton bt1 = new JButton("Kill Bot and close App");
+ JButton bt2 = new JButton("Set Bot Token");
+ JFormattedTextField field1 = new JFormattedTextField("");
+
+ panel.setBorder(BorderFactory.createEmptyBorder(200,830,200,830));
+ panel.setLayout(new GridLayout(0,1));
+ panel.add(lb1);
+ panel.add(field1);
+ panel.add(bt2);
+ panel.add(bt1);
+
+
+ frame.add(panel, BorderLayout.CENTER);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.setTitle("GUI");
+ frame.pack();
+ frame.setVisible(true);
+
+
+ bt1.addActionListener(new KillBot());
+
+ }
+
+
+ public static void GUI(String[] args) {
+
+ new GUI();
+
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ }
+}
diff --git a/src/main/java/tech/nevets/lunarbot/gui/commands/KillBot.java b/src/main/java/tech/nevets/lunarbot/gui/commands/KillBot.java
new file mode 100644
index 0000000..3f88b71
--- /dev/null
+++ b/src/main/java/tech/nevets/lunarbot/gui/commands/KillBot.java
@@ -0,0 +1,12 @@
+package tech.nevets.lunarbot.gui.commands;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class KillBot implements ActionListener {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ System.exit(0);
+ }
+}