diff --git a/pom.xml b/pom.xml
index a782ff7..6d75ca6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -151,11 +151,11 @@
3.1.1
-
+
com.github.TBMCPlugins.ChromaCore
Chroma-Core
diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java
index 776a711..08bd40f 100644
--- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java
+++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java
@@ -5,9 +5,9 @@ import buttondevteam.discordplugin.DiscordPlugin;
import buttondevteam.discordplugin.commands.Command2DCSender;
import buttondevteam.discordplugin.util.Timings;
import buttondevteam.lib.TBMCCoreAPI;
+import discord4j.common.util.Snowflake;
import discord4j.core.object.entity.Message;
import discord4j.core.object.entity.Role;
-import discord4j.core.object.entity.channel.MessageChannel;
import discord4j.core.object.entity.channel.PrivateChannel;
import lombok.val;
import reactor.core.publisher.Mono;
@@ -22,7 +22,7 @@ public class CommandListener {
* @param mentionedonly Only run the command if ChromaBot is mentioned at the start of the message
* @return Whether it did not run the command
*/
- public static Mono runCommand(Message message, MessageChannel commandChannel, boolean mentionedonly) {
+ public static Mono runCommand(Message message, Snowflake commandChannelID, boolean mentionedonly) {
Timings timings = CommonListeners.timings;
Mono ret = Mono.just(true);
if (message.getContent().length() == 0)
@@ -35,7 +35,7 @@ public class CommandListener {
timings.printElapsed("B");
if (!(channel instanceof PrivateChannel)
&& !(content.charAt(0) == DiscordPlugin.getPrefix()
- && channel.getId().asLong() == commandChannel.getId().asLong())) //
+ && channel.getId().asLong() == commandChannelID.asLong())) //
return ret;
timings.printElapsed("C");
tmp = ret.then(channel.type()).thenReturn(true); // Fun (this true is ignored - x)
@@ -62,7 +62,7 @@ public class CommandListener {
try {
timings.printElapsed("F");
if (!DiscordPlugin.plugin.getManager().handleCommand(new Command2DCSender(message), cmdwithargsString))
- return DPUtils.reply(message, channel, "unknown command. Do " + DiscordPlugin.getPrefix() + "help for help.\n" + cmdwithargsString)
+ return DPUtils.reply(message, channel, "unknown command. Do " + DiscordPlugin.getPrefix() + "help for help.")
.map(m -> false);
} catch (Exception e) {
TBMCCoreAPI.SendException("Failed to process Discord command: " + cmdwithargsString, e, DiscordPlugin.plugin);
diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommonListeners.java b/src/main/java/buttondevteam/discordplugin/listeners/CommonListeners.java
index c206864..57985aa 100755
--- a/src/main/java/buttondevteam/discordplugin/listeners/CommonListeners.java
+++ b/src/main/java/buttondevteam/discordplugin/listeners/CommonListeners.java
@@ -43,8 +43,7 @@ public class CommonListeners {
if (FunModule.executeMemes(event.getMessage()))
return def;
val commandChannel = DiscordPlugin.plugin.commandChannel.get();
- val commandCh = DPUtils.getMessageChannel(DiscordPlugin.plugin.commandChannel);
- return commandCh.filterWhen(ch -> event.getMessage().getChannel().map(mch ->
+ return event.getMessage().getChannel().map(mch ->
(commandChannel != null && mch.getId().asLong() == commandChannel.asLong()) //If mentioned, that's higher than chat
|| mch instanceof PrivateChannel
|| event.getMessage().getContent().contains("channelcon")) //Only 'channelcon' is allowed in other channels
@@ -52,17 +51,17 @@ public class CommonListeners {
if (!shouldRun)
return Mono.just(true); //The condition is only for the first command execution, not mcchat
timings.printElapsed("Run command 1");
- return CommandListener.runCommand(event.getMessage(), ch, true); //#bot is handled here
- })).filterWhen(ch -> {
- timings.printElapsed("mcchat");
- val mcchat = Component.getComponents().get(MinecraftChatModule.class);
- if (mcchat != null && mcchat.isEnabled()) //ComponentManager.isEnabled() searches the component again
- return ((MinecraftChatModule) mcchat).getListener().handleDiscord(event); //Also runs Discord commands in chat channels
- return Mono.empty(); //Wasn't handled, continue
- }).filterWhen(ch -> {
- timings.printElapsed("Run command 2");
- return CommandListener.runCommand(event.getMessage(), ch, false);
- });
+ return CommandListener.runCommand(event.getMessage(), commandChannel, true); //#bot is handled here
+ }).filterWhen(ch -> {
+ timings.printElapsed("mcchat");
+ val mcchat = Component.getComponents().get(MinecraftChatModule.class);
+ if (mcchat != null && mcchat.isEnabled()) //ComponentManager.isEnabled() searches the component again
+ return ((MinecraftChatModule) mcchat).getListener().handleDiscord(event); //Also runs Discord commands in chat channels
+ return Mono.just(true); //Wasn't handled, continue
+ }).filterWhen(ch -> {
+ timings.printElapsed("Run command 2");
+ return CommandListener.runCommand(event.getMessage(), commandChannel, false);
+ });
}).onErrorContinue((err, obj) -> TBMCCoreAPI.SendException("An error occured while handling a message!", err, DiscordPlugin.plugin))
.subscribe();
dispatcher.on(PresenceUpdateEvent.class).subscribe(event -> {
diff --git a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java
index 38c159d..007b90c 100755
--- a/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java
+++ b/src/main/java/buttondevteam/discordplugin/mcchat/MCChatListener.java
@@ -228,9 +228,6 @@ public class MCChatListener implements Listener {
// Discord
public Mono handleDiscord(MessageCreateEvent ev) {
- val ret = Mono.just(true);
- if (!ComponentManager.isEnabled(MinecraftChatModule.class))
- return ret;
Timings timings = CommonListeners.timings;
timings.printElapsed("Chat event");
val author = ev.getMessage().getAuthor();
@@ -249,7 +246,7 @@ public class MCChatListener implements Listener {
&& ev.getMessage().getContent().replace(prefix + "", "")
.equalsIgnoreCase("mcchat")); //Either mcchat or /mcchat
//Allow disabling the chat if needed
- }).filterWhen(channel -> CommandListener.runCommand(ev.getMessage(), channel, true))
+ }).filterWhen(channel -> CommandListener.runCommand(ev.getMessage(), DiscordPlugin.plugin.commandChannel.get(), true))
//Allow running commands in chat channels
.filter(channel -> {
MCChatUtils.resetLastMessage(channel);
@@ -373,7 +370,7 @@ public class MCChatListener implements Listener {
return true;
}
module.log(dsender.getName() + " ran from DC: /" + cmd);
- if (runCustomCommand(dsender, cmdlowercased)) return true;
+ if (dsender instanceof DiscordSender && runCustomCommand(dsender, cmdlowercased)) return true;
val channel = clmd == null ? user.channel.get() : clmd.mcchannel;
val ev = new TBMCCommandPreprocessEvent(dsender, channel, dmessage, clmd == null ? dsender : clmd.dcp);
Bukkit.getScheduler().runTask(DiscordPlugin.plugin, //Commands need to be run sync
diff --git a/src/main/java/buttondevteam/discordplugin/mcchat/MinecraftChatModule.java b/src/main/java/buttondevteam/discordplugin/mcchat/MinecraftChatModule.java
index 80619cc..a162a9f 100644
--- a/src/main/java/buttondevteam/discordplugin/mcchat/MinecraftChatModule.java
+++ b/src/main/java/buttondevteam/discordplugin/mcchat/MinecraftChatModule.java
@@ -114,6 +114,9 @@ public class MinecraftChatModule extends Component {
*/
private final ConfigData serverUp = getConfig().getData("serverUp", false);
+ private final MCChatCommand mcChatCommand = new MCChatCommand(this);
+ private final ChannelconCommand channelconCommand = new ChannelconCommand(this);
+
@Override
protected void enable() {
if (DPUtils.disableIfConfigErrorRes(this, chatChannel, chatChannelMono()))
@@ -121,8 +124,8 @@ public class MinecraftChatModule extends Component {
listener = new MCChatListener(this);
TBMCCoreAPI.RegisterEventsForExceptions(listener, getPlugin());
TBMCCoreAPI.RegisterEventsForExceptions(new MCListener(this), getPlugin());//These get undone if restarting/resetting - it will ignore events if disabled
- getPlugin().getManager().registerCommand(new MCChatCommand(this));
- getPlugin().getManager().registerCommand(new ChannelconCommand(this));
+ getPlugin().getManager().registerCommand(mcChatCommand);
+ getPlugin().getManager().registerCommand(channelconCommand);
val chcons = getConfig().getConfig().getConfigurationSection("chcons");
if (chcons == null) //Fallback to old place
@@ -234,6 +237,8 @@ public class MinecraftChatModule extends Component {
chconc.set("brtoggles", chcon.brtoggles.stream().map(TBMCSystemChatEvent.BroadcastTarget::getName).collect(Collectors.toList()));
}
listener.stop(true);
+ getPlugin().getManager().unregisterCommand(mcChatCommand);
+ getPlugin().getManager().unregisterCommand(channelconCommand);
disabling = false;
}
diff --git a/src/main/java/buttondevteam/discordplugin/role/GameRoleModule.java b/src/main/java/buttondevteam/discordplugin/role/GameRoleModule.java
index cb2dd8b..c1a4079 100644
--- a/src/main/java/buttondevteam/discordplugin/role/GameRoleModule.java
+++ b/src/main/java/buttondevteam/discordplugin/role/GameRoleModule.java
@@ -30,15 +30,17 @@ import java.util.stream.Collectors;
public class GameRoleModule extends Component {
public List GameRoles;
+ private final RoleCommand command = new RoleCommand(this);
+
@Override
protected void enable() {
- getPlugin().getManager().registerCommand(new RoleCommand(this));
+ getPlugin().getManager().registerCommand(command);
GameRoles = DiscordPlugin.mainServer.getRoles().filterWhen(this::isGameRole).map(Role::getName).collect(Collectors.toList()).block();
}
@Override
protected void disable() {
-
+ getPlugin().getManager().unregisterCommand(command);
}
/**