Skip to content
This repository was archived by the owner on Oct 28, 2024. It is now read-only.

Commit a649fc6

Browse files
author
DumFroe
authored
Merge pull request #4 from KajBot/dev
Dev
2 parents 0ce84a2 + 82f70c5 commit a649fc6

29 files changed

+136
-199
lines changed

build.gradle

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
plugins {
2+
id 'maven'
23
id 'java'
34
id 'application'
4-
id 'com.github.johnrengelman.shadow' version '4.0.3'
5+
id 'com.github.johnrengelman.shadow' version '5.0.0'
56
}
67

78
group 'support.kajstech.kajbot'
@@ -12,27 +13,31 @@ sourceCompatibility = 1.8
1213
repositories {
1314
mavenCentral()
1415
jcenter()
16+
maven { url "https://jitpack.io" }
17+
1518
}
1619

1720
dependencies {
18-
compile('org.slf4j:slf4j-log4j12:1.7.25')
21+
compile('org.slf4j:slf4j-log4j12:1.7.26')
1922
compile('org.reflections:reflections:0.9.11')
23+
compile('org.json:json:20180813')
24+
compile('org.mdkt.compiler:InMemoryJavaCompiler:1.3.0')
25+
compile('com.github.KajBot:SimpleCfg:-SNAPSHOT')
2026
compile('net.dv8tion:JDA:3.8.3_463') {
2127
exclude module: 'opus-java'
2228
}
23-
compile('org.json:json:20180813')
24-
compile('org.mdkt.compiler:InMemoryJavaCompiler:1.3.0')
2529
}
2630

27-
shadowJar{
28-
mergeServiceFiles('META-INF/spring.*')
31+
shadowJar {
32+
mergeServiceFiles 'META-INF/spring.*'
2933
exclude "META-INF/*.SF"
3034
exclude "META-INF/*.DSA"
3135
exclude "META-INF/*.RSA"
3236
exclude "META-INF/LICENSE"
3337
exclude "META-INF/LICENSE.*"
3438
exclude "META-INF/NOTICE"
3539
exclude "META-INF/NOTICE.*"
36-
exclude ("META-INF/maven/**")
40+
exclude "META-INF/maven/**"
41+
exclude "META-INF/proguard/**"
3742
archiveName = "${baseName}.jar"
3843
}

src/main/java/support/kajstech/kajbot/Bot.java

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import support.kajstech.kajbot.command.Command;
1111
import support.kajstech.kajbot.command.CommandManager;
1212
import support.kajstech.kajbot.command.CustomCommandsHandler;
13-
import support.kajstech.kajbot.handlers.ConfigHandler;
13+
import support.kajstech.kajbot.utils.Config;
1414
import support.kajstech.kajbot.notifications.Checker;
1515

1616
import javax.security.auth.login.LoginException;
@@ -20,70 +20,57 @@
2020
import java.nio.file.Files;
2121
import java.nio.file.Paths;
2222
import java.util.Objects;
23-
import java.util.Set;
24-
import java.util.stream.Stream;
2523

2624
public class Bot {
2725

2826
public static JDA jda;
2927

30-
private static Reflections cmdReflections = new Reflections("support.kajstech.kajbot.command.commands");
31-
public static final Set<Class<? extends Command>> internalCommands = cmdReflections.getSubTypesOf(Command.class);
32-
33-
static void run() throws LoginException, IllegalAccessException, InstantiationException, IOException {
28+
static void run() throws LoginException, IllegalAccessException, InstantiationException, IOException, InterruptedException {
3429

3530
//JDA Builder
3631
JDABuilder builder = new JDABuilder(AccountType.BOT);
3732

3833

39-
builder.setToken(ConfigHandler.getProperty("Bot token"));
40-
builder.setGame(Game.playing(ConfigHandler.getProperty("Bot game")));
34+
builder.setToken(Config.cfg.get("Bot token"));
35+
builder.setGame(Game.playing(Config.cfg.get("Bot game")));
4136

42-
//Adding commands
43-
for (Class<? extends Command> command : internalCommands) {
37+
//Internal commands
38+
for (Class<? extends Command> command : CommandManager.internalCommands) {
4439
CommandManager.addCommand(command.newInstance());
4540
}
4641

4742
//Simple custom commands
4843
CustomCommandsHandler.getCustomCommands().forEach((k, v) -> CommandManager.addCustomCommand(k.toString(), v.toString()));
4944

50-
//External custom commands
45+
//Java custom commands
5146
File dir = new File(System.getProperty("user.dir") + "/commands");
5247
if (!dir.exists()) Files.createDirectory(dir.toPath());
5348
for (File clazz : Objects.requireNonNull(dir.listFiles())) {
5449

5550
String name = clazz.getName();
5651
int lastIndexOf = name.lastIndexOf(".");
57-
if (lastIndexOf == -1) {
58-
continue;
59-
}
60-
if (!name.substring(lastIndexOf).equals(".java")) continue;
52+
if (lastIndexOf == -1 || !name.substring(lastIndexOf).equals(".java")) continue;
53+
6154
try {
6255
StringBuilder classCode = new StringBuilder();
63-
try (Stream<String> stream = Files.lines(Paths.get(clazz.getAbsolutePath()), StandardCharsets.UTF_8)) {
64-
stream.forEach(s -> classCode.append(s).append("\n"));
65-
}
66-
67-
Class<?> command = InMemoryJavaCompiler.newInstance().compile(clazz.getName().replace(".java", ""), classCode.toString());
68-
CommandManager.addCommand((Command) command.newInstance());
56+
Files.readAllLines(Paths.get(clazz.getAbsolutePath()), StandardCharsets.UTF_8).forEach(s -> classCode.append(s).append("\n"));
57+
CommandManager.addCommand((Command) InMemoryJavaCompiler.newInstance().compile(name.replace(".java", ""), classCode.toString()).newInstance());
6958
} catch (Exception e) {
7059
e.printStackTrace();
7160
}
7261
}
7362

74-
//Adding listeners using ListenerAdaper
75-
Reflections listenerReflections = new Reflections("support.kajstech.kajbot.listeners");
76-
Set<Class<? extends ListenerAdapter>> allListeners = listenerReflections.getSubTypesOf(ListenerAdapter.class);
77-
for (Class<? extends ListenerAdapter> listener : allListeners) {
63+
//Add listeners using ListenerAdaper
64+
for (Class<? extends ListenerAdapter> listener : new Reflections("support.kajstech.kajbot.listeners").getSubTypesOf(ListenerAdapter.class)) {
7865
builder.addEventListener(listener.newInstance());
7966
}
8067

8168
//Builder settings
8269
builder.setBulkDeleteSplittingEnabled(false);
8370
builder.setAudioEnabled(false);
8471

85-
//Building JDA
86-
jda = builder.build();
72+
//Build JDA
73+
jda = builder.build().awaitReady();
8774

8875
//NOTIFICATIONS
8976
new Thread(() -> {

src/main/java/support/kajstech/kajbot/Language.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package support.kajstech.kajbot;
22

33

4-
import support.kajstech.kajbot.handlers.ConfigHandler;
4+
import support.kajstech.kajbot.utils.Config;
55

66
import java.io.*;
77
import java.nio.charset.StandardCharsets;
@@ -11,7 +11,7 @@
1111
public class Language {
1212

1313
private static Properties messages = new Properties();
14-
private static File langPath = new File(System.getProperty("user.dir") + "//" + ConfigHandler.getProperty("Language") + ".properties");
14+
private static File langPath = new File(System.getProperty("user.dir") + "//" + Config.cfg.get("Language") + ".properties");
1515

1616
static {
1717
try {

src/main/java/support/kajstech/kajbot/Main.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package support.kajstech.kajbot;
22

33
import support.kajstech.kajbot.command.CustomCommandsHandler;
4-
import support.kajstech.kajbot.handlers.ConfigHandler;
54
import support.kajstech.kajbot.handlers.KeywordHandler;
5+
import support.kajstech.kajbot.utils.Config;
66
import support.kajstech.kajbot.web.Server;
77

88
public class Main {
@@ -31,9 +31,11 @@ public static void main(String[] args) {
3131
}).start();
3232

3333
//SHUTDOWN HOOK
34-
Runtime.getRuntime().addShutdownHook(new Thread(ConfigHandler::saveCfg, "Config-shutdown-thread"));
34+
Runtime.getRuntime().addShutdownHook(new Thread(Config.cfg::save, "Config-shutdown-thread"));
3535
Runtime.getRuntime().addShutdownHook(new Thread(CustomCommandsHandler::saveCustomCommands, "CustomCommands-shutdown-thread"));
3636
Runtime.getRuntime().addShutdownHook(new Thread(KeywordHandler::saveKeywords, "Keyword-shutdown-thread"));
37+
38+
3739
}
3840

3941
}

src/main/java/support/kajstech/kajbot/Setup.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package support.kajstech.kajbot;
22

3-
import support.kajstech.kajbot.handlers.ConfigHandler;
3+
import support.kajstech.kajbot.utils.Config;
44

55
import java.io.BufferedReader;
66
import java.io.IOException;
@@ -11,28 +11,31 @@
1111
class Setup {
1212
static void setUp() {
1313

14-
if (!ConfigHandler.containsProperty("Bot token")) {
14+
if (!Config.cfg.contains("Bot token")) {
1515
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
1616
System.out.print("Bot token: ");
1717
try {
18-
ConfigHandler.setProperty("Bot token", br.readLine());
18+
Config.cfg.set("Bot token", br.readLine());
1919
} catch (IOException e) {
2020
e.printStackTrace();
2121
}
2222
}
2323

24-
if (!ConfigHandler.containsProperty("Bot owner ID")) {
24+
if (!Config.cfg.contains("Bot owner ID")) {
2525
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
2626
System.out.print("Bot owner ID: ");
2727
try {
28-
ConfigHandler.setProperty("Bot owner ID", br.readLine());
28+
Config.cfg.set("Bot owner ID", br.readLine());
2929
} catch (IOException e) {
3030
e.printStackTrace();
3131
}
3232
}
3333

34-
if (!ConfigHandler.containsProperty("API token")) {
35-
ConfigHandler.setProperty("API token", UUID.randomUUID().toString());
34+
if (!Config.cfg.contains("API token")) {
35+
Config.cfg.set("API token", UUID.randomUUID().toString());
36+
}
37+
if (!Config.cfg.contains("API port")) {
38+
Config.cfg.set("API port", "1337");
3639
}
3740

3841
}

src/main/java/support/kajstech/kajbot/command/CommandEvent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import net.dv8tion.jda.core.JDA;
55
import net.dv8tion.jda.core.entities.*;
66
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
7-
import support.kajstech.kajbot.handlers.ConfigHandler;
7+
import support.kajstech.kajbot.utils.Config;
88

99
import java.io.File;
1010
import java.util.List;
@@ -63,7 +63,7 @@ public Member getMember() {
6363
}
6464

6565
boolean isOwner() {
66-
return event.getAuthor().getId().equals(ConfigHandler.getProperty("Bot owner ID"));
66+
return event.getAuthor().getId().equals(Config.cfg.get("Bot owner ID"));
6767
}
6868

6969
public void reply(String message) {

src/main/java/support/kajstech/kajbot/command/CommandManager.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package support.kajstech.kajbot.command;
22

33
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
4-
import support.kajstech.kajbot.Bot;
5-
import support.kajstech.kajbot.handlers.ConfigHandler;
4+
import org.reflections.Reflections;
5+
import support.kajstech.kajbot.utils.Config;
66

7-
import java.util.Arrays;
8-
import java.util.HashMap;
9-
import java.util.List;
10-
import java.util.Map;
7+
import java.util.*;
118
import java.util.regex.Pattern;
129

1310
public class CommandManager {
1411

12+
public static final Set<Class<? extends Command>> internalCommands = new Reflections("support.kajstech.kajbot.command.commands").getSubTypesOf(Command.class);
13+
1514
private static final Map<String, Command> commands = new HashMap<>();
1615

1716

@@ -22,7 +21,7 @@ public static void addCommand(Command command) {
2221
}
2322

2423
public static void addCustomCommand(String key, String value) {
25-
for (Class<? extends Command> command : Bot.internalCommands) {
24+
for (Class<? extends Command> command : internalCommands) {
2625
if (command.getSimpleName().equalsIgnoreCase(key)) return;
2726
}
2827
commands.put(key, new Command() {
@@ -38,15 +37,15 @@ protected void execute(CommandEvent e) {
3837
}
3938

4039
public static void removeCustomCommand(String key) {
41-
for (Class<? extends Command> command : Bot.internalCommands) {
40+
for (Class<? extends Command> command : internalCommands) {
4241
if (command.getSimpleName().equalsIgnoreCase(key)) return;
4342
}
4443
commands.remove(key);
4544
CustomCommandsHandler.getCustomCommands().remove(key);
4645
}
4746

4847
public void handleCommand(MessageReceivedEvent event) {
49-
final String[] split = event.getMessage().getContentRaw().replaceFirst("(?i)" + Pattern.quote(ConfigHandler.getProperty("Command prefix")), "").split("\\s+");
48+
final String[] split = event.getMessage().getContentRaw().replaceFirst("(?i)" + Pattern.quote(Config.cfg.get("Command prefix")), "").split("\\s+");
5049
final String invoke = split[0].toLowerCase();
5150

5251
if (commands.containsKey(invoke)) {

src/main/java/support/kajstech/kajbot/command/commands/Activity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44
import support.kajstech.kajbot.Language;
55
import support.kajstech.kajbot.command.Command;
66
import support.kajstech.kajbot.command.CommandEvent;
7-
import support.kajstech.kajbot.handlers.ConfigHandler;
7+
import support.kajstech.kajbot.utils.Config;
88

99
public class Activity extends Command {
1010
public Activity() {
1111
this.name = "game";
1212
this.guildOnly = false;
13-
this.requiredRole = ConfigHandler.getProperty("Bot admin role");
13+
this.requiredRole = Config.cfg.get("Bot admin role");
1414
}
1515

1616
@Override
1717
public void execute(CommandEvent e) {
1818
if (e.getArgsSplit().get(0).length() < 1) return;
1919

2020
Bot.jda.getPresence().setGame(net.dv8tion.jda.core.entities.Game.playing(e.getArgs()));
21-
ConfigHandler.setProperty("Bot game", e.getArgs());
21+
Config.cfg.set("Bot game", e.getArgs());
2222
e.reply((Language.getMessage("Game.SET")).replace("%GAME%", e.getArgs()));
2323
}
2424
}

src/main/java/support/kajstech/kajbot/command/commands/Ascii.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import support.kajstech.kajbot.Language;
44
import support.kajstech.kajbot.command.Command;
55
import support.kajstech.kajbot.command.CommandEvent;
6-
import support.kajstech.kajbot.handlers.ConfigHandler;
6+
import support.kajstech.kajbot.utils.Config;
77
import support.kajstech.kajbot.utils.LogHelper;
88

99
import java.io.IOException;
@@ -20,7 +20,7 @@ public class Ascii extends Command {
2020
public Ascii() {
2121
this.name = "ascii";
2222
this.guildOnly = false;
23-
this.requiredRole = ConfigHandler.getProperty("Bot admin role");
23+
this.requiredRole = Config.cfg.get("Bot admin role");
2424
}
2525

2626
private int randomNum(int start, int end) {

src/main/java/support/kajstech/kajbot/command/commands/CustomCommands.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package support.kajstech.kajbot.command.commands;
22

33
import net.dv8tion.jda.core.EmbedBuilder;
4-
import support.kajstech.kajbot.Bot;
54
import support.kajstech.kajbot.Language;
65
import support.kajstech.kajbot.command.Command;
76
import support.kajstech.kajbot.command.CommandEvent;
87
import support.kajstech.kajbot.command.CommandManager;
98
import support.kajstech.kajbot.command.CustomCommandsHandler;
10-
import support.kajstech.kajbot.handlers.ConfigHandler;
9+
import support.kajstech.kajbot.utils.Config;
1110
import support.kajstech.kajbot.utils.LogHelper;
1211

1312
import java.awt.*;
@@ -19,7 +18,7 @@ public class CustomCommands extends Command {
1918
public CustomCommands() {
2019
this.name = "command";
2120
this.guildOnly = false;
22-
this.requiredRole = ConfigHandler.getProperty("Bot admin role");
21+
this.requiredRole = Config.cfg.get("Bot admin role");
2322
}
2423

2524
@Override
@@ -43,19 +42,19 @@ public void execute(CommandEvent e) {
4342
case "del":
4443
case "remove":
4544
try {
46-
for (Class<? extends Command> command : Bot.internalCommands) {
45+
for (Class<? extends Command> command : CommandManager.internalCommands) {
4746
if (command.getSimpleName().equalsIgnoreCase(e.getArgsSplit().get(1))) return;
4847
}
49-
CommandManager.removeCustomCommand(e.getArgsSplit().get(1).replace(ConfigHandler.getProperty("Command prefix"), ""));
48+
CommandManager.removeCustomCommand(e.getArgsSplit().get(1).replace(Config.cfg.get("Command prefix"), ""));
5049
e.reply((Language.getMessage("Command.UNREGISTERED")).replace("%CMD%", e.getArgsSplit().get(1).toUpperCase()));
5150
} catch (Exception ex) {
5251
LogHelper.error(this.getClass(), ex, e.getMessage().getContentRaw());
5352
}
5453
break;
5554
case "add":
5655
try {
57-
String cmdName = e.getArgsSplit().get(1).replace(ConfigHandler.getProperty("Command prefix"), "");
58-
for (Class<? extends Command> command : Bot.internalCommands) {
56+
String cmdName = e.getArgsSplit().get(1).replace(Config.cfg.get("Command prefix"), "");
57+
for (Class<? extends Command> command : CommandManager.internalCommands) {
5958
if (command.getSimpleName().equalsIgnoreCase(cmdName)) return;
6059
}
6160
String[] cmdContext = e.getArgs().substring(cmdName.length() + "add ".length() + 1).split("\\s+");

0 commit comments

Comments
 (0)