From f2b86e183134de7f59299fd669e5d5b70088a059 Mon Sep 17 00:00:00 2001 From: destro174 <40720638+destro174@users.noreply.github.com> Date: Wed, 13 Apr 2022 10:16:44 +0200 Subject: [PATCH] Rework how commands are handled --- .../proxydiscordlink/bot/DiscordCommand.java | 1 + .../bot/commands/DiscordBroadCast.java | 5 +++++ .../bot/commands/DiscordLinkCommand.java | 7 +++++++ .../bot/commands/DiscordNick.java | 5 +++++ .../bot/commands/DiscordServerList.java | 5 +++++ .../bot/commands/DiscordStaffList.java | 5 +++++ .../bot/commands/DiscordUnlink.java | 6 ++++++ .../bot/listeners/DiscordMessageListener.java | 19 +++++++++++++++++++ .../proxydiscordlink/config/BotConfig.java | 1 + 9 files changed, 54 insertions(+) diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/DiscordCommand.java b/src/main/java/com/alttd/proxydiscordlink/bot/DiscordCommand.java index 96fdbe9..e26d055 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/DiscordCommand.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/DiscordCommand.java @@ -15,6 +15,7 @@ public abstract class DiscordCommand { public abstract String getPermission();// TODO discord and LP permissions public abstract String getDescription(); public abstract String getSyntax(); + public abstract long getChannel(); public abstract void handleCommand(Message message, String sender, String command, String[] args); diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordBroadCast.java b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordBroadCast.java index df32c33..80268e1 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordBroadCast.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordBroadCast.java @@ -37,6 +37,11 @@ public class DiscordBroadCast extends DiscordCommand { return "broadcast"; } + @Override + public long getChannel() { + return 0; + } + @Override public void handleCommand(Message message, String sender, String command, String[] args) { //TODO also send this to the bot channel, optional command args for color and decoration? diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordLinkCommand.java b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordLinkCommand.java index a0f7964..aa7793d 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordLinkCommand.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordLinkCommand.java @@ -3,6 +3,8 @@ package com.alttd.proxydiscordlink.bot.commands; import com.alttd.proxydiscordlink.DiscordLink; import com.alttd.proxydiscordlink.bot.DiscordCommand; import com.alttd.proxydiscordlink.bot.objects.DiscordRole; +import com.alttd.proxydiscordlink.config.BotConfig; +import com.alttd.proxydiscordlink.config.Config; import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer; import com.alttd.proxydiscordlink.util.Utilities; import com.velocitypowered.api.proxy.Player; @@ -39,6 +41,11 @@ public class DiscordLinkCommand extends DiscordCommand { return "link "; } + @Override + public long getChannel() { + return BotConfig.LINK_CHANNEL; + } + @Override public void handleCommand(Message message, String sender, String command, String[] args) { Member member = message.getMember(); diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordNick.java b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordNick.java index fcac061..e2e7352 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordNick.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordNick.java @@ -29,6 +29,11 @@ public class DiscordNick extends DiscordCommand { return "nick "; } + @Override + public long getChannel() { + return 0; + } + @Override public void handleCommand(Message message, String sender, String command, String[] args) { MessageChannel channel = message.getChannel(); diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordServerList.java b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordServerList.java index 289c464..64f9ea6 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordServerList.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordServerList.java @@ -50,6 +50,11 @@ public class DiscordServerList extends DiscordCommand { return "serverlist"; } + @Override + public long getChannel() { + return BotConfig.STAFF_COMMAND_CHANNEL; + } + @Override public void handleCommand(Message message, String sender, String command, String[] args) { String serverName = "Altitude"; diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordStaffList.java b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordStaffList.java index f1166d9..00bda27 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordStaffList.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordStaffList.java @@ -44,6 +44,11 @@ public class DiscordStaffList extends DiscordCommand { return "staffList"; } + @Override + public long getChannel() { + return BotConfig.STAFF_COMMAND_CHANNEL; + } + @Override public void handleCommand(Message message, String sender, String command, String[] args) { LuckPerms luckPerms = Utilities.getLuckPerms(); diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordUnlink.java b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordUnlink.java index 5e1a3ab..2adf311 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordUnlink.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/commands/DiscordUnlink.java @@ -1,6 +1,7 @@ package com.alttd.proxydiscordlink.bot.commands; import com.alttd.proxydiscordlink.bot.DiscordCommand; +import com.alttd.proxydiscordlink.config.BotConfig; import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; @@ -26,6 +27,11 @@ public class DiscordUnlink extends DiscordCommand { return "unlink"; } + @Override + public long getChannel() { + return BotConfig.LINK_CHANNEL; + } + @Override public void handleCommand(Message message, String sender, String command, String[] args) { Member member = message.getMember(); diff --git a/src/main/java/com/alttd/proxydiscordlink/bot/listeners/DiscordMessageListener.java b/src/main/java/com/alttd/proxydiscordlink/bot/listeners/DiscordMessageListener.java index 4d9a5b9..2cf550b 100644 --- a/src/main/java/com/alttd/proxydiscordlink/bot/listeners/DiscordMessageListener.java +++ b/src/main/java/com/alttd/proxydiscordlink/bot/listeners/DiscordMessageListener.java @@ -27,6 +27,7 @@ public class DiscordMessageListener extends ListenerAdapter { return; if (event.isWebhookMessage()) return; + /* if (event.getMessage().getChannel().getIdLong() == BotConfig.COMMAND_CHANNEL) { String content = event.getMessage().getContentRaw(); if (content.startsWith(BotConfig.prefixMap.get(event.getGuild().getIdLong())) && content.length() > 1) { @@ -53,6 +54,24 @@ public class DiscordMessageListener extends ListenerAdapter { .findFirst() .ifPresent(discordCommand -> discordCommand.handleCommand(event.getMessage(), event.getAuthor().getName(), cmd, args)); } + */ + String content = event.getMessage().getContentRaw(); + if (!BotConfig.prefixMap.containsKey(event.getGuild().getIdLong())) return; // early return + if (content.startsWith(BotConfig.prefixMap.get(event.getGuild().getIdLong())) && content.length() > 1) { + String[] split = content.split(" "); + String cmd = split[0].substring(1).toLowerCase(); + String[] args = Arrays.copyOfRange(split, 1, split.length); + for (DiscordCommand command : DiscordCommand.getCommands()) { + if (!command.getCommand().equalsIgnoreCase(cmd)) + continue; + if (!(event.getMessage().getChannel().getIdLong() == command.getChannel())) + continue; + if (command.getPermission() != null) { + // TODO permission check? do we need this? + } + command.handleCommand(event.getMessage(), event.getAuthor().getName(), cmd, args); + } + } } } diff --git a/src/main/java/com/alttd/proxydiscordlink/config/BotConfig.java b/src/main/java/com/alttd/proxydiscordlink/config/BotConfig.java index dc3b4a6..52ad324 100644 --- a/src/main/java/com/alttd/proxydiscordlink/config/BotConfig.java +++ b/src/main/java/com/alttd/proxydiscordlink/config/BotConfig.java @@ -168,6 +168,7 @@ public class BotConfig { public static String BOT_TOKEN = "unconfigured"; public static long COMMAND_CHANNEL = -1; + public static long STAFF_COMMAND_CHANNEL = -1; public static long LINK_CHANNEL = -1; public static long GUILD_ID = -1; public static long EVIDENCE_CHANNEL_ID = -1;