From 7478d030d053a28e6a0484e9e33c287462944761 Mon Sep 17 00:00:00 2001 From: simpleauthority Date: Sat, 2 Jun 2018 07:36:57 -0700 Subject: [PATCH] Reimplement JDAMessageFormatter for Discord (#136) Because Discord does not support coloring messages outside of embeddable fields, it is safe to use a simple message formatter than just returns the message itself. As I was testing my previous PR, I noticed messages coming through with coloring symbols (e.g. ``), and each only went up to `c3` maximum. Finally, I figured out these were colors that needed to be handled in each case. To remove colored messages from Discord, the message formatter is passed three empty strings for each of `c1`, `c2`, and `c3` respectively. Finally, the default formatter is set inside of `JDACommandManager` but can always be overridden by the user. --- jda/src/main/java/co/aikar/commands/JDACommandManager.java | 1 + .../main/java/co/aikar/commands/JDAMessageFormatter.java | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/jda/src/main/java/co/aikar/commands/JDACommandManager.java b/jda/src/main/java/co/aikar/commands/JDACommandManager.java index e280c301..6b366de5 100644 --- a/jda/src/main/java/co/aikar/commands/JDACommandManager.java +++ b/jda/src/main/java/co/aikar/commands/JDACommandManager.java @@ -48,6 +48,7 @@ public class JDACommandManager extends CommandManager< jda.addEventListener(new JDAListener(this)); this.defaultConfig = options.defaultConfig == null ? new JDACommandConfig() : options.defaultConfig; this.configProvider = options.configProvider; + this.defaultFormatter = new JDAMessageFormatter(); this.completions = new JDACommandCompletions(this); this.logger = Logger.getLogger(this.getClass().getSimpleName()); diff --git a/jda/src/main/java/co/aikar/commands/JDAMessageFormatter.java b/jda/src/main/java/co/aikar/commands/JDAMessageFormatter.java index 21d24d79..5509d971 100644 --- a/jda/src/main/java/co/aikar/commands/JDAMessageFormatter.java +++ b/jda/src/main/java/co/aikar/commands/JDAMessageFormatter.java @@ -1,6 +1,12 @@ package co.aikar.commands; public class JDAMessageFormatter extends MessageFormatter { + public JDAMessageFormatter() { + // JDA does not support coloring messages outside of embed fields. + // We pass three empty strings so as to remove color coded messages from appearing. + super("", "", ""); + } + @Override String format(String color, String message) { return message;