mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-22 08:25:12 +00:00
Add console regex filter for discord module (#4534)
This commit is contained in:
parent
2ed94f1048
commit
9601687190
4 changed files with 76 additions and 12 deletions
|
@ -12,6 +12,7 @@ import org.bukkit.entity.Player;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -30,10 +31,11 @@ public class DiscordSettings implements IConf {
|
||||||
private OnlineStatus status;
|
private OnlineStatus status;
|
||||||
private Activity statusActivity;
|
private Activity statusActivity;
|
||||||
|
|
||||||
private Pattern discordFilter;
|
private List<Pattern> discordFilter;
|
||||||
|
|
||||||
private MessageFormat consoleFormat;
|
private MessageFormat consoleFormat;
|
||||||
private Level consoleLogLevel;
|
private Level consoleLogLevel;
|
||||||
|
private List<Pattern> consoleFilter;
|
||||||
|
|
||||||
private MessageFormat discordToMcFormat;
|
private MessageFormat discordToMcFormat;
|
||||||
private MessageFormat tempMuteFormat;
|
private MessageFormat tempMuteFormat;
|
||||||
|
@ -109,7 +111,7 @@ public class DiscordSettings implements IConf {
|
||||||
return config.getBoolean("chat.filter-newlines", true);
|
return config.getBoolean("chat.filter-newlines", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Pattern getDiscordFilter() {
|
public List<Pattern> getDiscordFilters() {
|
||||||
return discordFilter;
|
return discordFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,6 +155,10 @@ public class DiscordSettings implements IConf {
|
||||||
return consoleLogLevel;
|
return consoleLogLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Pattern> getConsoleFilters() {
|
||||||
|
return consoleFilter;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isShowAvatar() {
|
public boolean isShowAvatar() {
|
||||||
return config.getBoolean("show-avatar", false);
|
return config.getBoolean("show-avatar", false);
|
||||||
}
|
}
|
||||||
|
@ -388,20 +394,60 @@ public class DiscordSettings implements IConf {
|
||||||
statusActivity = Activity.of(activityType, config.getString("presence.message", "Minecraft"));
|
statusActivity = Activity.of(activityType, config.getString("presence.message", "Minecraft"));
|
||||||
}
|
}
|
||||||
|
|
||||||
final String filter = config.getString("chat.discord-filter", null);
|
if (config.isList("chat.discord-filter")) {
|
||||||
if (filter != null && !filter.trim().isEmpty()) {
|
final List<Pattern> filters = new ArrayList<>();
|
||||||
|
for (final String chatFilterString : config.getList("chat.discord-filter", String.class)) {
|
||||||
|
if (chatFilterString != null && !chatFilterString.trim().isEmpty()) {
|
||||||
|
try {
|
||||||
|
filters.add(Pattern.compile(chatFilterString));
|
||||||
|
} catch (PatternSyntaxException e) {
|
||||||
|
plugin.getLogger().log(java.util.logging.Level.WARNING, "Invalid pattern for \"chat.discord-filter\": " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
discordFilter = Collections.unmodifiableList(filters);
|
||||||
|
} else {
|
||||||
try {
|
try {
|
||||||
discordFilter = Pattern.compile(filter);
|
final String chatFilter = config.getString("chat.discord-filter", null);
|
||||||
|
if (chatFilter != null && !chatFilter.trim().isEmpty()) {
|
||||||
|
discordFilter = Collections.singletonList(Pattern.compile(chatFilter));
|
||||||
|
} else {
|
||||||
|
discordFilter = Collections.emptyList();
|
||||||
|
}
|
||||||
} catch (PatternSyntaxException e) {
|
} catch (PatternSyntaxException e) {
|
||||||
plugin.getLogger().log(java.util.logging.Level.WARNING, "Invalid pattern for \"chat.discord-filter\": " + e.getMessage());
|
plugin.getLogger().log(java.util.logging.Level.WARNING, "Invalid pattern for \"chat.discord-filter\": " + e.getMessage());
|
||||||
discordFilter = null;
|
discordFilter = Collections.emptyList();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
discordFilter = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
consoleLogLevel = Level.toLevel(config.getString("console.log-level", null), Level.INFO);
|
consoleLogLevel = Level.toLevel(config.getString("console.log-level", null), Level.INFO);
|
||||||
|
|
||||||
|
if (config.isList("console.console-filter")) {
|
||||||
|
final List<Pattern> filters = new ArrayList<>();
|
||||||
|
for (final String filterString : config.getList("console.console-filter", String.class)) {
|
||||||
|
if (filterString != null && !filterString.trim().isEmpty()) {
|
||||||
|
try {
|
||||||
|
filters.add(Pattern.compile(filterString));
|
||||||
|
} catch (PatternSyntaxException e) {
|
||||||
|
plugin.getLogger().log(java.util.logging.Level.WARNING, "Invalid pattern for \"console.log-level\": " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
consoleFilter = Collections.unmodifiableList(filters);
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
final String cFilter = config.getString("console.console-filter", null);
|
||||||
|
if (cFilter != null && !cFilter.trim().isEmpty()) {
|
||||||
|
consoleFilter = Collections.singletonList(Pattern.compile(cFilter));
|
||||||
|
} else {
|
||||||
|
consoleFilter = Collections.emptyList();
|
||||||
|
}
|
||||||
|
} catch (PatternSyntaxException e) {
|
||||||
|
plugin.getLogger().log(java.util.logging.Level.WARNING, "Invalid pattern for \"console.log-level\": " + e.getMessage());
|
||||||
|
consoleFilter = Collections.emptyList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
consoleFormat = generateMessageFormat(getFormatString(".console.format"), "[{timestamp} {level}] {message}", false,
|
consoleFormat = generateMessageFormat(getFormatString(".console.format"), "[{timestamp} {level}] {message}", false,
|
||||||
"timestamp", "level", "message");
|
"timestamp", "level", "message");
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ import org.jetbrains.annotations.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class DiscordListener extends ListenerAdapter {
|
public class DiscordListener extends ListenerAdapter {
|
||||||
private final static Logger logger = Logger.getLogger("EssentialsDiscord");
|
private final static Logger logger = Logger.getLogger("EssentialsDiscord");
|
||||||
|
@ -51,11 +52,15 @@ public class DiscordListener extends ListenerAdapter {
|
||||||
final String effectiveName = member == null ? event.getAuthor().getName() : member.getEffectiveName();
|
final String effectiveName = member == null ? event.getAuthor().getName() : member.getEffectiveName();
|
||||||
final Message message = event.getMessage();
|
final Message message = event.getMessage();
|
||||||
|
|
||||||
if (plugin.getSettings().getDiscordFilter() != null && plugin.getSettings().getDiscordFilter().matcher(message.getContentDisplay()).find()) {
|
if (!plugin.getSettings().getDiscordFilters().isEmpty()) {
|
||||||
if (plugin.isDebug()) {
|
for (final Pattern pattern : plugin.getSettings().getDiscordFilters()) {
|
||||||
logger.log(Level.INFO, "Skipping message " + message.getId() + " with content, \"" + message.getContentDisplay() + "\" as it matched the filter!");
|
if (pattern.matcher(message.getContentDisplay()).find()) {
|
||||||
|
if (plugin.isDebug()) {
|
||||||
|
logger.log(Level.INFO, "Skipping message " + message.getId() + " with content, \"" + message.getContentDisplay() + "\" as it matched the filter!");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final StringBuilder messageBuilder = new StringBuilder(message.getContentDisplay());
|
final StringBuilder messageBuilder = new StringBuilder(message.getContentDisplay());
|
||||||
|
|
|
@ -15,6 +15,7 @@ import org.bukkit.Bukkit;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static com.earth2me.essentials.I18n.tl;
|
import static com.earth2me.essentials.I18n.tl;
|
||||||
|
|
||||||
|
@ -67,6 +68,14 @@ public class ConsoleInjector extends AbstractAppender {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!jda.getSettings().getConsoleFilters().isEmpty()) {
|
||||||
|
for (final Pattern pattern : jda.getSettings().getConsoleFilters()) {
|
||||||
|
if (pattern.matcher(entry).find()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final String loggerName = event.getLoggerName();
|
final String loggerName = event.getLoggerName();
|
||||||
if (!loggerName.isEmpty() && !loggerName.contains(".")) {
|
if (!loggerName.isEmpty() && !loggerName.contains(".")) {
|
||||||
entry = "[" + event.getLoggerName() + "] " + entry;
|
entry = "[" + event.getLoggerName() + "] " + entry;
|
||||||
|
|
|
@ -100,6 +100,10 @@ console:
|
||||||
# - debug
|
# - debug
|
||||||
# - trace
|
# - trace
|
||||||
log-level: info
|
log-level: info
|
||||||
|
# Blocks any console message from sending to Discord if it matches this regex pattern.
|
||||||
|
# This is useful if you want to ignore certain messages from the console.
|
||||||
|
# Can also be a list of regex patterns in addition to a single regex pattern.
|
||||||
|
console-filter: ""
|
||||||
|
|
||||||
# Configure which Discord channels different messages will be sent to.
|
# Configure which Discord channels different messages will be sent to.
|
||||||
# You can either use the names of the channels listed above or just the id of a channel.
|
# You can either use the names of the channels listed above or just the id of a channel.
|
||||||
|
|
Loading…
Reference in a new issue