added ability to define and use default emotes (introduced them in starboard/embed deletion/command reactions/suggestions)

fixed post target validation for suggestions
This commit is contained in:
Sheldan
2020-04-10 11:24:16 +02:00
parent ef8dcb61d9
commit e84e384706
13 changed files with 99 additions and 79 deletions

View File

@@ -19,6 +19,7 @@ public class DynamicKeyLoader {
private HashMap<String, String> postTargets = new HashMap<>();
private HashMap<String, String> emoteNames = new HashMap<>();
private HashMap<String, String> defaultEmotes = new HashMap<>();
public List<String> getPostTargetsAsList() {
return getHashMapAsList(postTargets);

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.DynamicKeyLoader;
import dev.sheldan.abstracto.core.exception.EmoteException;
import dev.sheldan.abstracto.core.models.database.AEmote;
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
@@ -22,6 +23,9 @@ public class EmoteServiceBean implements EmoteService {
@Autowired
private EmoteManagementService emoteManagementService;
@Autowired
private DynamicKeyLoader keyLoader;
@Override
public boolean isEmoteUsableByBot(Emote emote) {
for (Guild guild : botService.getInstance().getGuilds()) {
@@ -65,10 +69,28 @@ public class EmoteServiceBean implements EmoteService {
return this.getEmoteAsMention(emote, serverId, " ");
}
@Override
public String getUsableEmoteOrDefault(Long serverId, String name) {
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(name, serverId);
String defaultEmote = getDefaultEmote(name);
return getEmoteAsMention(aEmote.orElse(null), serverId, defaultEmote);
}
@Override
public void throwIfEmoteDoesNotExist(String emoteKey, Long serverId) {
if(!emoteManagementService.loadEmoteByName(emoteKey, serverId).isPresent()) {
throw new EmoteException(String.format("Emote %s not defined.", emoteKey));
}
}
@Override
public AEmote getEmoteOrFakeEmote(String emoteKey, Long serverId) {
Optional<AEmote> emoteOptional = emoteManagementService.loadEmoteByName(emoteKey, serverId);
return emoteOptional.orElseGet(() -> AEmote.builder().emoteKey(getDefaultEmote(emoteKey)).custom(false).name(emoteKey).build());
}
@Override
public String getDefaultEmote(String emoteKey) {
return keyLoader.getDefaultEmotes().get(emoteKey);
}
}

View File

@@ -24,6 +24,9 @@ public class MessageServiceBean implements MessageService {
@Autowired
private EmoteManagementService emoteManagementService;
@Autowired
private EmoteService emoteService;
@Override
public void addReactionToMessage(String emoteKey, Long serverId, Message message) {
Optional<Guild> guildByIdOptional = bot.getGuildById(serverId);
@@ -44,9 +47,8 @@ public class MessageServiceBean implements MessageService {
message.addReaction(emote.getEmoteKey()).queue();
}
} else {
log.error("Cannot add reaction, emote {} not defined for server {}.", emoteKey, serverId);
throw new EmoteException(String.format("Cannot add reaction. Emote `%s` not defined in server %s. Define the emote via the setEmote command.", emoteKey, serverId));
}
String defaultEmote = emoteService.getDefaultEmote(emoteKey);
message.addReaction(defaultEmote).queue();}
} else {
log.error("Cannot add reaction, guild not found {}", serverId);
throw new GuildException(String.format("Cannot add reaction, guild %s not found.", serverId));

View File

@@ -1 +1,3 @@
abstracto.emoteNames.postReaction=warnReaction,successReaction
abstracto.emoteNames.postReaction=warnReaction,successReaction
abstracto.defaultEmotes.warnReaction=\u26A0\uFE0F
abstracto.defaultEmotes.successReaction=\u2705