mirror of
https://github.com/DiscordSRV/Ascension.git
synced 2025-03-19 14:39:28 +01:00
Add regex filtering to nickname sync
This commit is contained in:
parent
f3fc87c35b
commit
44378288d5
@ -18,15 +18,30 @@
|
||||
|
||||
package com.discordsrv.common.config.main;
|
||||
|
||||
import com.discordsrv.common.abstraction.sync.enums.SyncDirection;
|
||||
import com.discordsrv.common.config.main.generic.AbstractSyncConfig;
|
||||
import com.discordsrv.common.util.Game;
|
||||
import org.spongepowered.configurate.objectmapping.meta.Comment;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class NicknameSyncConfig extends AbstractSyncConfig<NicknameSyncConfig, Game, Long> {
|
||||
|
||||
public NicknameSyncConfig() {
|
||||
// Change defaults
|
||||
timer.enabled = false;
|
||||
direction = SyncDirection.MINECRAFT_TO_DISCORD;
|
||||
}
|
||||
|
||||
@Comment("The id for the Discord server where the nicknames should be synced from/to")
|
||||
public long serverId = 0L;
|
||||
|
||||
// TODO: more info on regex pairs (String#replaceAll)
|
||||
@Comment("Regex filters for nicknames")
|
||||
public Map<Pattern, String> nicknameRegexFilters = new LinkedHashMap<>();
|
||||
|
||||
@Override
|
||||
public boolean isSet() {
|
||||
return serverId != 0;
|
||||
|
@ -37,12 +37,12 @@ import com.discordsrv.common.util.Game;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.events.guild.member.update.GuildMemberUpdateNicknameEvent;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* {@code long} is used for the guild id being synced to in Discord.
|
||||
@ -50,6 +50,8 @@ import java.util.concurrent.CompletableFuture;
|
||||
*/
|
||||
public class NicknameSyncModule extends AbstractSyncModule<DiscordSRV, NicknameSyncConfig, Game, Long, String> {
|
||||
|
||||
private final Map<NicknameSyncConfig, List<Pair<Pattern, String>>> replacements = new HashMap<>();
|
||||
|
||||
public NicknameSyncModule(DiscordSRV discordSRV) {
|
||||
super(discordSRV, "NICKNAME_SYNC");
|
||||
}
|
||||
@ -108,7 +110,10 @@ public class NicknameSyncModule extends AbstractSyncModule<DiscordSRV, NicknameS
|
||||
return discordSRV.getModule(NicknameModule.class);
|
||||
}
|
||||
|
||||
protected String cleanNickname(String nickname) {
|
||||
protected String cleanNickname(NicknameSyncConfig config, String nickname) {
|
||||
for (Map.Entry<Pattern, String> filter : config.nicknameRegexFilters.entrySet()) {
|
||||
nickname = filter.getKey().matcher(nickname).replaceAll(filter.getValue());
|
||||
}
|
||||
return nickname;
|
||||
}
|
||||
|
||||
@ -121,7 +126,7 @@ public class NicknameSyncModule extends AbstractSyncModule<DiscordSRV, NicknameS
|
||||
|
||||
return guild.retrieveMemberById(userId)
|
||||
.thenApply(DiscordGuildMember::getNickname)
|
||||
.thenApply(this::cleanNickname);
|
||||
.thenApply(nickname -> cleanNickname(config, nickname));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -131,7 +136,8 @@ public class NicknameSyncModule extends AbstractSyncModule<DiscordSRV, NicknameS
|
||||
return CompletableFutureUtil.failed(new SyncFail(GenericSyncResults.MODULE_NOT_FOUND));
|
||||
}
|
||||
|
||||
return module.getNickname(playerUUID).thenApply(this::cleanNickname);
|
||||
return module.getNickname(playerUUID)
|
||||
.thenApply(nickname -> cleanNickname(config, nickname));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user