Added console commands
This commit is contained in:
parent
c3d2b215d5
commit
aa42ba000c
|
|
@ -59,30 +59,13 @@ tasks {
|
|||
|
||||
dependencies {
|
||||
// JDA
|
||||
implementation("net.dv8tion:JDA:5.0.0-alpha.9") {
|
||||
shadow("net.dv8tion:JDA:5.0.0-alpha.9") {
|
||||
exclude("opus-java") // exclude audio
|
||||
}
|
||||
// MySQL
|
||||
// runtimeOnly("mysql:mysql-connector-java:8.0.23")
|
||||
shadow("net.dv8tion:JDA:5.0.0-alpha.9") {
|
||||
exclude("opus-java") // exclude audio
|
||||
}
|
||||
// MySQL
|
||||
shadow("mysql:mysql-connector-java:8.0.28")
|
||||
// implementation("org.mariadb.jdbc:mariadb-java-client:2.1.2")
|
||||
|
||||
implementation("org.mariadb.jdbc:mariadb-java-client:2.1.2") {
|
||||
shadow("org.mariadb.jdbc:mariadb-java-client:2.1.2")
|
||||
}
|
||||
|
||||
tasks {
|
||||
|
||||
shadowJar {
|
||||
listOf(
|
||||
"net.dv8tion.jda"
|
||||
).forEach { relocate(it, "${rootProject.group}.lib.$it") }
|
||||
}
|
||||
|
||||
build {
|
||||
dependsOn(shadowJar)
|
||||
}
|
||||
}
|
||||
// Configurate
|
||||
shadow("org.spongepowered:configurate-yaml:4.1.2")
|
||||
}
|
||||
|
|
@ -3,10 +3,14 @@ package com.alttd;
|
|||
import com.alttd.commandManager.CommandManager;
|
||||
import com.alttd.config.SettingsConfig;
|
||||
import com.alttd.config.MessagesConfig;
|
||||
import com.alttd.console.ConsoleCommandManager;
|
||||
import com.alttd.permissions.PermissionManager;
|
||||
import com.alttd.util.Logger;
|
||||
import com.mysql.cj.log.Log;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.JDABuilder;
|
||||
import net.dv8tion.jda.api.OnlineStatus;
|
||||
import net.dv8tion.jda.api.entities.Activity;
|
||||
|
||||
import javax.security.auth.login.LoginException;
|
||||
import java.io.File;
|
||||
|
|
@ -38,6 +42,14 @@ public class AltitudeBot {
|
|||
exit(1);
|
||||
Logger.exception(e);
|
||||
}
|
||||
ConsoleCommandManager.startConsoleCommands(jda);
|
||||
try {
|
||||
jda.getPresence().setPresence(
|
||||
OnlineStatus.valueOf(SettingsConfig.STATUS),
|
||||
Activity.listening(SettingsConfig.ACTIVITY));
|
||||
} catch (IllegalArgumentException e) {
|
||||
Logger.exception(e);
|
||||
}
|
||||
initListeners();
|
||||
//TODO init permissionManager
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.alttd.config;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Activity;
|
||||
|
||||
public class SettingsConfig extends AbstractConfig {
|
||||
|
||||
static SettingsConfig settingsConfig;
|
||||
|
|
@ -36,4 +38,22 @@ public class SettingsConfig extends AbstractConfig {
|
|||
DATABASE_PASSWORD = settingsConfig.getString("settings.database_password", DATABASE_PASSWORD);
|
||||
}
|
||||
|
||||
|
||||
public static String STATUS = "ONLINE";
|
||||
public static String ACTIVITY = "Testing";
|
||||
private void loadActivity() {
|
||||
STATUS = settingsConfig.getString("settings.status", STATUS);
|
||||
ACTIVITY = settingsConfig.getString("settings.activity", ACTIVITY);
|
||||
}
|
||||
|
||||
public static void setActivity(String newActivity) {
|
||||
ACTIVITY = newActivity;
|
||||
settingsConfig.set("settings.activity", ACTIVITY);
|
||||
}
|
||||
|
||||
public static void setStatus(String status) {
|
||||
STATUS = status;
|
||||
settingsConfig.set("settings.activity", STATUS);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
43
src/main/java/com/alttd/console/ConsoleActivity.java
Normal file
43
src/main/java/com/alttd/console/ConsoleActivity.java
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
package com.alttd.console;
|
||||
|
||||
import com.alttd.config.SettingsConfig;
|
||||
import com.alttd.util.Logger;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.entities.Activity;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class ConsoleActivity extends ConsoleCommand {
|
||||
private final JDA jda;
|
||||
|
||||
public ConsoleActivity(JDA jda) {
|
||||
super();
|
||||
this.jda = jda;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "activity";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(String command, String[] args) {
|
||||
if (args.length == 1) {
|
||||
Activity activity = jda.getPresence().getActivity();
|
||||
if (activity == null)
|
||||
Logger.info("No activity found.");
|
||||
else
|
||||
Logger.info("Current activity: Listening to " + activity.getName());
|
||||
return;
|
||||
}
|
||||
String newActivity = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
|
||||
SettingsConfig.setActivity(newActivity);
|
||||
jda.getPresence().setActivity(Activity.listening(newActivity));
|
||||
Logger.info("Set activity to: Listening to " + newActivity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHelpMessage() {
|
||||
return "activity [set] [text] Display the current activity or set it.";
|
||||
}
|
||||
}
|
||||
11
src/main/java/com/alttd/console/ConsoleCommand.java
Normal file
11
src/main/java/com/alttd/console/ConsoleCommand.java
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
package com.alttd.console;
|
||||
|
||||
public abstract class ConsoleCommand {
|
||||
|
||||
public abstract String getName();
|
||||
|
||||
public abstract void execute(String command, String[] args);
|
||||
|
||||
public abstract String getHelpMessage();
|
||||
|
||||
}
|
||||
54
src/main/java/com/alttd/console/ConsoleCommandManager.java
Normal file
54
src/main/java/com/alttd/console/ConsoleCommandManager.java
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
package com.alttd.console;
|
||||
|
||||
import com.alttd.util.Logger;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class ConsoleCommandManager {
|
||||
|
||||
private final List<ConsoleCommand> commands = new ArrayList<>();
|
||||
private static ConsoleCommandManager instance = null;
|
||||
|
||||
private ConsoleCommandManager(JDA jda) {
|
||||
commands.addAll(List.of(
|
||||
new ConsoleActivity(jda),
|
||||
new ConsoleHelp(this),
|
||||
new ConsoleReload(),
|
||||
new ConsoleStatus(jda),
|
||||
new ConsoleStop()));
|
||||
new Thread(() -> {
|
||||
while (true)
|
||||
instance.readCommand(new Scanner(System.in));
|
||||
}).start();
|
||||
}
|
||||
|
||||
private void readCommand(Scanner scanner) {
|
||||
System.out.print("command: ");
|
||||
String[] args = scanner.nextLine().toLowerCase().split(" +");
|
||||
if (args.length == 0 || args[0].length() == 0)
|
||||
return;
|
||||
String command = args[0];
|
||||
Optional<ConsoleCommand> first = commands.stream()
|
||||
.filter(consoleCommand -> consoleCommand.getName().equalsIgnoreCase(command))
|
||||
.findFirst();
|
||||
if (first.isEmpty()) {
|
||||
Logger.info("Invalid command, see help for more info.");
|
||||
return;
|
||||
}
|
||||
first.get().execute(command, args);
|
||||
}
|
||||
|
||||
protected List<ConsoleCommand> getCommands() {
|
||||
return commands;
|
||||
}
|
||||
|
||||
public static void startConsoleCommands(JDA jda) {
|
||||
Logger.info("Starting console commands");
|
||||
if (instance == null)
|
||||
instance = new ConsoleCommandManager(jda);
|
||||
}
|
||||
}
|
||||
34
src/main/java/com/alttd/console/ConsoleHelp.java
Normal file
34
src/main/java/com/alttd/console/ConsoleHelp.java
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
package com.alttd.console;
|
||||
|
||||
import com.alttd.templates.Parser;
|
||||
import com.alttd.templates.Template;
|
||||
import com.alttd.util.Logger;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ConsoleHelp extends ConsoleCommand {
|
||||
ConsoleCommandManager commandManager;
|
||||
|
||||
public ConsoleHelp(ConsoleCommandManager instance) {
|
||||
super();
|
||||
commandManager = instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "help";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(String command, String[] args) {
|
||||
Template template = Template.of("commands", commandManager.getCommands().stream()
|
||||
.map(ConsoleCommand::getHelpMessage)
|
||||
.collect(Collectors.joining("\n")));
|
||||
Logger.info(Parser.parse("Commands:\n<commands>", template));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHelpMessage() {
|
||||
return "help - Shows this help menu";
|
||||
}
|
||||
}
|
||||
37
src/main/java/com/alttd/console/ConsoleReload.java
Normal file
37
src/main/java/com/alttd/console/ConsoleReload.java
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
package com.alttd.console;
|
||||
|
||||
import com.alttd.config.MessagesConfig;
|
||||
import com.alttd.config.SettingsConfig;
|
||||
import com.alttd.util.Logger;
|
||||
|
||||
public class ConsoleReload extends ConsoleCommand {
|
||||
@Override
|
||||
public String getName() {
|
||||
return "reload";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(String command, String[] args) {
|
||||
if (args.length != 2) {
|
||||
Logger.info("Invalid argument length: " + getHelpMessage());
|
||||
return;
|
||||
}
|
||||
switch (args[1]) {
|
||||
case "config" -> {
|
||||
MessagesConfig.reload();
|
||||
Logger.info("Reloaded Messages config.");
|
||||
SettingsConfig.reload();
|
||||
Logger.info("Reloaded Settings config.");
|
||||
}
|
||||
case "database" -> {
|
||||
Logger.info("NOT IMPLEMENTED YET");
|
||||
}
|
||||
default -> Logger.info("Invalid argument: " + args[1]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHelpMessage() {
|
||||
return "reload <config/database> - Reload the configs or databases";
|
||||
}
|
||||
}
|
||||
53
src/main/java/com/alttd/console/ConsoleStatus.java
Normal file
53
src/main/java/com/alttd/console/ConsoleStatus.java
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
package com.alttd.console;
|
||||
|
||||
import com.alttd.config.SettingsConfig;
|
||||
import com.alttd.util.Logger;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.OnlineStatus;
|
||||
import net.dv8tion.jda.api.entities.Activity;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ConsoleStatus extends ConsoleCommand{
|
||||
|
||||
private final JDA jda;
|
||||
|
||||
public ConsoleStatus(JDA jda) {
|
||||
this.jda = jda;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "status";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(String command, String[] args) {
|
||||
if (args.length == 1) {
|
||||
OnlineStatus status = jda.getPresence().getStatus();
|
||||
Logger.info("Current status: " + status.getKey());
|
||||
return;
|
||||
}
|
||||
if (args.length != 2) {
|
||||
Logger.info("Invalid argument length.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
OnlineStatus status = OnlineStatus.fromKey(args[1].toLowerCase());
|
||||
SettingsConfig.setStatus(status.getKey());
|
||||
jda.getPresence().setStatus(status);
|
||||
Logger.info("Set status to: " + SettingsConfig.STATUS);
|
||||
} catch (IllegalArgumentException exception) {
|
||||
Logger.info("Invalid status please use any of the following "
|
||||
+ Arrays.stream(OnlineStatus.values())
|
||||
.map(OnlineStatus::getKey)
|
||||
.collect(Collectors.joining(", ")));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHelpMessage() {
|
||||
return "status [set] [status] - Display the current status or set it";
|
||||
}
|
||||
}
|
||||
23
src/main/java/com/alttd/console/ConsoleStop.java
Normal file
23
src/main/java/com/alttd/console/ConsoleStop.java
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
package com.alttd.console;
|
||||
|
||||
import com.alttd.AltitudeBot;
|
||||
import com.alttd.util.Logger;
|
||||
|
||||
public class ConsoleStop extends ConsoleCommand {
|
||||
@Override
|
||||
public String getName() {
|
||||
return "stop";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(String command, String[] args) {
|
||||
Logger.info("Stopping bot...");
|
||||
AltitudeBot.getInstance().getJDA().cancelRequests();
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHelpMessage() {
|
||||
return "stop - Stop the bot";
|
||||
}
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ public class Logger { //TODO make this log to a file
|
|||
if (!logDir.exists())
|
||||
{
|
||||
if (!logDir.mkdir()) {
|
||||
System.out.println("UNABLE TO CREATE LOGGING DIRECTORY");
|
||||
Logger.info("UNABLE TO CREATE LOGGING DIRECTORY");
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user