diff --git a/README.md b/README.md index c78e959..3c6c140 100644 --- a/README.md +++ b/README.md @@ -47,8 +47,9 @@ discord_admin_id = "" ### Discord -- `/add ` - adds a new account. -- `/remove ` - deletes an existing account. +- `/add ` - adds a new account. +- `/remove ` - deletes an existing account. +- `/accounts` - displays a list of accounts. ### Minecraft @@ -56,8 +57,8 @@ discord_admin_id = "" - `/discordauth reload messages` - reloads the plugin messages. - `/discordauth reload all` - reloads the plugin config and messages. -- `/account add ` - adds a new account. -- `/account Remove ` - deletes an existing account. +- `/account add ` - adds a new account. +- `/account Remove ` - deletes an existing account. - `/test` is a temporary command needed for debugging. diff --git a/build.gradle.kts b/build.gradle.kts index 39a0191..9510f18 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "dev.orewaee" -version = "0.3.1" +version = "0.3.2" repositories { mavenCentral() diff --git a/src/main/java/dev/orewaee/Constants.java b/src/main/java/dev/orewaee/Constants.java index c02f080..0cbf631 100644 --- a/src/main/java/dev/orewaee/Constants.java +++ b/src/main/java/dev/orewaee/Constants.java @@ -3,5 +3,5 @@ public class Constants { public static final String ID = "discordauth"; public static final String NAME = "DiscordAuth"; - public static final String VERSION = "0.3.1"; + public static final String VERSION = "0.3.2"; } diff --git a/src/main/java/dev/orewaee/bot/AccountsCommand.java b/src/main/java/dev/orewaee/bot/AccountsCommand.java new file mode 100644 index 0000000..b6c01ef --- /dev/null +++ b/src/main/java/dev/orewaee/bot/AccountsCommand.java @@ -0,0 +1,49 @@ +package dev.orewaee.bot; + +import dev.orewaee.account.Account; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.MessageEmbed; +import org.jetbrains.annotations.NotNull; + +import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; + +import dev.orewaee.account.AccountManager; +import dev.orewaee.account.JsonAccountManager; +import dev.orewaee.config.Config; +import dev.orewaee.config.TomlConfig; + +import java.util.Set; +import java.util.StringJoiner; + +public class AccountsCommand extends ListenerAdapter { + private final AccountManager accountManager = JsonAccountManager.getInstance(); + + private final Config config = TomlConfig.getInstance(); + + @Override + public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event) { + if (!event.getUser().getId().equals(config.adminDiscordId())) return; + + if (!event.getName().equals("accounts")) return; + + Set accounts = accountManager.getAccounts(); + int quantity = accounts.size(); + StringJoiner result = new StringJoiner("\n"); + for (Account account : accounts) + result.add( + String.format("- `%s` ||%s||", account.name(), account.discordId()) + ); + + MessageEmbed embed = new EmbedBuilder() + .setColor(0x5865f2) + .setTitle(":page_with_curl: List of accounts") + .setDescription( + quantity == 0 ? "No accounts found at this time." : + String.format("At the moment, %d accounts have been found.\n\n%s", quantity, result) + ) + .build(); + + event.replyEmbeds(embed).queue(); + } +} diff --git a/src/main/java/dev/orewaee/bot/Bot.java b/src/main/java/dev/orewaee/bot/Bot.java index 664a16c..f82e11f 100644 --- a/src/main/java/dev/orewaee/bot/Bot.java +++ b/src/main/java/dev/orewaee/bot/Bot.java @@ -13,7 +13,8 @@ public Bot(String token) { .enableIntents(GatewayIntent.DIRECT_MESSAGES) .addEventListeners(new EventsListener()) .addEventListeners(new AddCommand()) - .addEventListeners(new RemoveCommand()); + .addEventListeners(new RemoveCommand()) + .addEventListeners(new AccountsCommand()); JDA jda = jdaBuilder.build(); @@ -43,7 +44,8 @@ public Bot(String token) { "discord_id", "Account discord id", true - ) + ), + Commands.slash("accounts", "Displays a list of all accounts") ).queue(); } } diff --git a/src/main/java/dev/orewaee/commands/AccountCommand.java b/src/main/java/dev/orewaee/commands/AccountCommand.java index a838cf2..b2475c4 100644 --- a/src/main/java/dev/orewaee/commands/AccountCommand.java +++ b/src/main/java/dev/orewaee/commands/AccountCommand.java @@ -81,4 +81,9 @@ public void execute(Invocation invocation) { )); } } + + @Override + public boolean hasPermission(Invocation invocation) { + return invocation.source().hasPermission("discordauth.account"); + } } diff --git a/src/main/resources/config.toml b/src/main/resources/config.toml index af974d0..ef7e7fe 100644 --- a/src/main/resources/config.toml +++ b/src/main/resources/config.toml @@ -12,4 +12,4 @@ lobby_server_name = "lobby" bot_token = "" # Discord admin -discord_admin_id = "" +admin_discord_id = ""