mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-25 11:22:06 +00:00
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:
@@ -14,5 +14,4 @@ import java.util.List;
|
|||||||
@ConfigurationProperties(prefix = "abstracto.starboard")
|
@ConfigurationProperties(prefix = "abstracto.starboard")
|
||||||
public class StarboardConfig {
|
public class StarboardConfig {
|
||||||
private List<Integer> lvl = new ArrayList<>();
|
private List<Integer> lvl = new ArrayList<>();
|
||||||
private List<String> badge = new ArrayList<>();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
|
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
import dev.sheldan.abstracto.core.service.MessageService;
|
||||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||||
import dev.sheldan.abstracto.core.utils.EmoteUtils;
|
import dev.sheldan.abstracto.core.utils.EmoteUtils;
|
||||||
@@ -37,30 +38,29 @@ public class MessageEmbedRemovalReactionListener implements ReactedAddedListener
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MessageService messageService;
|
private MessageService messageService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmoteService emoteService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void executeReactionAdded(CachedMessage message, MessageReaction reaction, AUserInAServer userAdding) {
|
public void executeReactionAdded(CachedMessage message, MessageReaction reaction, AUserInAServer userAdding) {
|
||||||
Long guildId = message.getServerId();
|
Long guildId = message.getServerId();
|
||||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(REMOVAL_EMOTE, guildId);
|
AEmote aEmote = emoteService.getEmoteOrFakeEmote(REMOVAL_EMOTE, guildId);
|
||||||
if(aEmote.isPresent()) {
|
MessageReaction.ReactionEmote reactionEmote = reaction.getReactionEmote();
|
||||||
AEmote emote = aEmote.get();
|
Optional<Emote> emoteInGuild = bot.getEmote(guildId, aEmote);
|
||||||
MessageReaction.ReactionEmote reactionEmote = reaction.getReactionEmote();
|
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, aEmote, emoteInGuild.orElse(null))) {
|
||||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
Optional<EmbeddedMessage> embeddedMessageOptional = messageEmbedPostManagementService.findEmbeddedPostByMessageId(message.getMessageId());
|
||||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
if(embeddedMessageOptional.isPresent()) {
|
||||||
Optional<EmbeddedMessage> embeddedMessageOptional = messageEmbedPostManagementService.findEmbeddedPostByMessageId(message.getMessageId());
|
EmbeddedMessage embeddedMessage = embeddedMessageOptional.get();
|
||||||
if(embeddedMessageOptional.isPresent()) {
|
if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|
||||||
EmbeddedMessage embeddedMessage = embeddedMessageOptional.get();
|
|| embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|
||||||
if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|
) {
|
||||||
|| embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|
messageService.deleteMessageInChannelInServer(message.getServerId(), message.getChannelId(), message.getMessageId()).thenAccept(aVoid -> {
|
||||||
) {
|
messageEmbedPostManagementService.deleteEmbeddedMessageTransactional(embeddedMessage);
|
||||||
messageService.deleteMessageInChannelInServer(message.getServerId(), message.getChannelId(), message.getMessageId()).thenAccept(aVoid -> {
|
});
|
||||||
messageEmbedPostManagementService.deleteEmbeddedMessageTransactional(embeddedMessage);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
log.warn("Emote {} is not defined for guild {}. Embed link deletion not functional.", REMOVAL_EMOTE, guildId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import dev.sheldan.abstracto.core.models.database.AEmote;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
|
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||||
import dev.sheldan.abstracto.core.service.MessageCache;
|
import dev.sheldan.abstracto.core.service.MessageCache;
|
||||||
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
|
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||||
@@ -59,6 +60,9 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UserManagementService userManagementService;
|
private UserManagementService userManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmoteService emoteService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, AUserInAServer userAdding) {
|
public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, AUserInAServer userAdding) {
|
||||||
@@ -66,17 +70,12 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Long guildId = message.getServerId();
|
Long guildId = message.getServerId();
|
||||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId);
|
AEmote aEmote = emoteService.getEmoteOrFakeEmote(STAR_EMOTE, guildId);
|
||||||
if(aEmote.isPresent()) {
|
MessageReaction.ReactionEmote reactionEmote = addedReaction.getReactionEmote();
|
||||||
AEmote emote = aEmote.get();
|
Optional<Emote> emoteInGuild = bot.getEmote(guildId, aEmote);
|
||||||
MessageReaction.ReactionEmote reactionEmote = addedReaction.getReactionEmote();
|
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, aEmote, emoteInGuild.orElse(null))) {
|
||||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
Optional<CachedReaction> reactionOptional = EmoteUtils.getReactionFromMessageByEmote(message, aEmote);
|
||||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
updateStarboardPost(message, reactionOptional.orElse(null), userAdding, true);
|
||||||
Optional<CachedReaction> reactionOptional = EmoteUtils.getReactionFromMessageByEmote(message, emote);
|
|
||||||
updateStarboardPost(message, reactionOptional.orElse(null), userAdding, true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.warn("Emote {} is not defined for guild {}. Starboard not functional.", STAR_EMOTE, guildId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,17 +123,12 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Long guildId = message.getServerId();
|
Long guildId = message.getServerId();
|
||||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId);
|
AEmote aEmote = emoteService.getEmoteOrFakeEmote(STAR_EMOTE, guildId);
|
||||||
if(aEmote.isPresent()) {
|
MessageReaction.ReactionEmote reactionEmote = removedReaction.getReactionEmote();
|
||||||
AEmote emote = aEmote.get();
|
Optional<Emote> emoteInGuild = bot.getEmote(guildId, aEmote);
|
||||||
MessageReaction.ReactionEmote reactionEmote = removedReaction.getReactionEmote();
|
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, aEmote, emoteInGuild.orElse(null))) {
|
||||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
Optional<CachedReaction> reactionOptional = EmoteUtils.getReactionFromMessageByEmote(message, aEmote);
|
||||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
updateStarboardPost(message, reactionOptional.orElse(null), userRemoving, false);
|
||||||
Optional<CachedReaction> reactionOptional = EmoteUtils.getReactionFromMessageByEmote(message, emote);
|
|
||||||
updateStarboardPost(message, reactionOptional.orElse(null), userRemoving, false);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.warn("Emote {} is not defined for guild {}. Starboard not functional.", STAR_EMOTE, guildId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -106,15 +106,7 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
AChannel aChannel = AChannel.builder().id(message.getChannelId()).build();
|
AChannel aChannel = AChannel.builder().id(message.getChannelId()).build();
|
||||||
AUser user = AUser.builder().id(message.getAuthorId()).build();
|
AUser user = AUser.builder().id(message.getAuthorId()).build();
|
||||||
AServer server = AServer.builder().id(message.getServerId()).build();
|
AServer server = AServer.builder().id(message.getServerId()).build();
|
||||||
Optional<AEmote> appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount);
|
String starLevelEmote = getAppropriateEmote(message.getServerId(), starCount);
|
||||||
String emoteText;
|
|
||||||
if(appropriateEmoteOptional.isPresent()) {
|
|
||||||
AEmote emote = appropriateEmoteOptional.get();
|
|
||||||
emoteText = emoteService.getEmoteAsMention(emote, message.getServerId(), "⭐");
|
|
||||||
} else {
|
|
||||||
log.warn("No emote defined to be used for starboard post. Falling back to default.");
|
|
||||||
emoteText = "⭐";
|
|
||||||
}
|
|
||||||
return StarboardPostModel
|
return StarboardPostModel
|
||||||
.builder()
|
.builder()
|
||||||
.message(message)
|
.message(message)
|
||||||
@@ -125,7 +117,7 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
.guild(guild.orElse(null))
|
.guild(guild.orElse(null))
|
||||||
.user(user)
|
.user(user)
|
||||||
.server(server)
|
.server(server)
|
||||||
.starLevelEmote(emoteText)
|
.starLevelEmote(starLevelEmote)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,10 +153,7 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
Integer reactionCount = starboardPostReactorManagementService.getStarCount(serverId);
|
Integer reactionCount = starboardPostReactorManagementService.getStarCount(serverId);
|
||||||
List<String> emotes = new ArrayList<>();
|
List<String> emotes = new ArrayList<>();
|
||||||
for (int i = 1; i < count + 1; i++) {
|
for (int i = 1; i < count + 1; i++) {
|
||||||
Optional<AEmote> starboardRankingEmote = getStarboardRankingEmote(serverId, i);
|
emotes.add(getStarboardRankingEmote(serverId, i));
|
||||||
AEmote emote = starboardRankingEmote.orElse(null);
|
|
||||||
String defaultEmoji = starboardConfig.getBadge().get(i - 1);
|
|
||||||
emotes.add(emoteService.getEmoteAsMention(emote, serverId, defaultEmoji));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return StarStatsModel
|
return StarStatsModel
|
||||||
@@ -178,17 +167,21 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<AEmote> getStarboardRankingEmote(Long serverId, Integer position) {
|
private String getStarboardRankingEmote(Long serverId, Integer position) {
|
||||||
return emoteManagementService.loadEmoteByName("starboardBadge" + position, serverId);
|
return emoteService.getUsableEmoteOrDefault(serverId, buildBadgeName(position));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<AEmote> getAppropriateEmote(Long serverId, Integer starCount) {
|
private String buildBadgeName(Integer position) {
|
||||||
|
return "starboardBadge" + position;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getAppropriateEmote(Long serverId, Integer starCount) {
|
||||||
for(int i = starboardConfig.getLvl().size(); i > 0; i--) {
|
for(int i = starboardConfig.getLvl().size(); i > 0; i--) {
|
||||||
Double starMinimum = configService.getDoubleValue("starLvl" + i, serverId);
|
Double starMinimum = configService.getDoubleValue("starLvl" + i, serverId);
|
||||||
if(starCount >= starMinimum) {
|
if(starCount >= starMinimum) {
|
||||||
return emoteManagementService.loadEmoteByName("star" + i, serverId);
|
return emoteService.getUsableEmoteOrDefault(serverId, "star" + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return emoteManagementService.loadEmoteByName("star0", serverId);
|
return emoteService.getUsableEmoteOrDefault(serverId, "star0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,8 +138,6 @@ public class SuggestionServiceBean implements SuggestionService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validateSetup(Long serverId) {
|
public void validateSetup(Long serverId) {
|
||||||
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_YES_EMOTE, serverId);
|
postTargetService.throwIfPostTargetIsNotDefined(SUGGESTIONS_TARGET, serverId);
|
||||||
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_NO_EMOTE, serverId);
|
|
||||||
postTargetService.throwIfPostTargetIsNotDefined(SUGGESTION_YES_EMOTE, serverId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,21 @@ abstracto.postTargets.utility=suggestions,starboard
|
|||||||
abstracto.emoteNames.suggestion=suggestionYes,suggestionNo
|
abstracto.emoteNames.suggestion=suggestionYes,suggestionNo
|
||||||
abstracto.emoteNames.starboard=star,star1,star2,star3,star4,starboardBadge1,starboardBadge2,starboardBadge3
|
abstracto.emoteNames.starboard=star,star1,star2,star3,star4,starboardBadge1,starboardBadge2,starboardBadge3
|
||||||
abstracto.emoteNames.embed=removeEmbed
|
abstracto.emoteNames.embed=removeEmbed
|
||||||
|
abstracto.defaultEmotes.suggestionYes=\u2B06\uFE0F
|
||||||
|
abstracto.defaultEmotes.suggestionNo=\u2B07\uFE0F
|
||||||
|
abstracto.defaultEmotes.star=\u2B50
|
||||||
|
abstracto.defaultEmotes.star1=\u2B50
|
||||||
|
abstracto.defaultEmotes.star2=\uD83C\uDF1F
|
||||||
|
abstracto.defaultEmotes.star3=\uD83D\uDCAB
|
||||||
|
abstracto.defaultEmotes.star4=\uD83C\uDF20
|
||||||
|
abstracto.defaultEmotes.starboardBadge1=\ud83e\udd47
|
||||||
|
abstracto.defaultEmotes.starboardBadge2=\ud83e\udd48
|
||||||
|
abstracto.defaultEmotes.starboardBadge3=\ud83e\udd49
|
||||||
|
abstracto.defaultEmotes.removeEmbed=\uD83D\uDDD1\uFE0F
|
||||||
abstracto.starboard.lvl[0]=5
|
abstracto.starboard.lvl[0]=5
|
||||||
abstracto.starboard.lvl[1]=8
|
abstracto.starboard.lvl[1]=8
|
||||||
abstracto.starboard.lvl[2]=13
|
abstracto.starboard.lvl[2]=13
|
||||||
abstracto.starboard.lvl[3]=17
|
abstracto.starboard.lvl[3]=17
|
||||||
abstracto.starboard.badge[0]=\ud83e\udd47
|
|
||||||
abstracto.starboard.badge[1]=\ud83e\udd48
|
|
||||||
abstracto.starboard.badge[2]=\ud83e\udd49
|
|
||||||
|
|
||||||
abstracto.scheduling.jobs.reminderJob.name=reminderJob
|
abstracto.scheduling.jobs.reminderJob.name=reminderJob
|
||||||
abstracto.scheduling.jobs.reminderJob.group=utility
|
abstracto.scheduling.jobs.reminderJob.group=utility
|
||||||
@@ -16,8 +24,8 @@ abstracto.scheduling.jobs.reminderJob.clazz=dev.sheldan.abstracto.utility.jobs.R
|
|||||||
abstracto.scheduling.jobs.reminderJob.standAlone=false
|
abstracto.scheduling.jobs.reminderJob.standAlone=false
|
||||||
abstracto.scheduling.jobs.reminderJob.active=true
|
abstracto.scheduling.jobs.reminderJob.active=true
|
||||||
|
|
||||||
abstracto.features.starboard=false
|
abstracto.features.starboard=true
|
||||||
abstracto.features.reminder=false
|
abstracto.features.remind=true
|
||||||
abstracto.features.suggestion=false
|
abstracto.features.suggestion=false
|
||||||
abstracto.features.utility=false
|
abstracto.features.utility=false
|
||||||
abstracto.features.embeds=true
|
abstracto.features.embeds=true
|
||||||
@@ -19,6 +19,7 @@ public class DynamicKeyLoader {
|
|||||||
|
|
||||||
private HashMap<String, String> postTargets = new HashMap<>();
|
private HashMap<String, String> postTargets = new HashMap<>();
|
||||||
private HashMap<String, String> emoteNames = new HashMap<>();
|
private HashMap<String, String> emoteNames = new HashMap<>();
|
||||||
|
private HashMap<String, String> defaultEmotes = new HashMap<>();
|
||||||
|
|
||||||
public List<String> getPostTargetsAsList() {
|
public List<String> getPostTargetsAsList() {
|
||||||
return getHashMapAsList(postTargets);
|
return getHashMapAsList(postTargets);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package dev.sheldan.abstracto.core.service;
|
package dev.sheldan.abstracto.core.service;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.DynamicKeyLoader;
|
||||||
import dev.sheldan.abstracto.core.exception.EmoteException;
|
import dev.sheldan.abstracto.core.exception.EmoteException;
|
||||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||||
@@ -22,6 +23,9 @@ public class EmoteServiceBean implements EmoteService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmoteManagementService emoteManagementService;
|
private EmoteManagementService emoteManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DynamicKeyLoader keyLoader;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEmoteUsableByBot(Emote emote) {
|
public boolean isEmoteUsableByBot(Emote emote) {
|
||||||
for (Guild guild : botService.getInstance().getGuilds()) {
|
for (Guild guild : botService.getInstance().getGuilds()) {
|
||||||
@@ -65,10 +69,28 @@ public class EmoteServiceBean implements EmoteService {
|
|||||||
return this.getEmoteAsMention(emote, serverId, " ");
|
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
|
@Override
|
||||||
public void throwIfEmoteDoesNotExist(String emoteKey, Long serverId) {
|
public void throwIfEmoteDoesNotExist(String emoteKey, Long serverId) {
|
||||||
if(!emoteManagementService.loadEmoteByName(emoteKey, serverId).isPresent()) {
|
if(!emoteManagementService.loadEmoteByName(emoteKey, serverId).isPresent()) {
|
||||||
throw new EmoteException(String.format("Emote %s not defined.", emoteKey));
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ public class MessageServiceBean implements MessageService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmoteManagementService emoteManagementService;
|
private EmoteManagementService emoteManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmoteService emoteService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addReactionToMessage(String emoteKey, Long serverId, Message message) {
|
public void addReactionToMessage(String emoteKey, Long serverId, Message message) {
|
||||||
Optional<Guild> guildByIdOptional = bot.getGuildById(serverId);
|
Optional<Guild> guildByIdOptional = bot.getGuildById(serverId);
|
||||||
@@ -44,9 +47,8 @@ public class MessageServiceBean implements MessageService {
|
|||||||
message.addReaction(emote.getEmoteKey()).queue();
|
message.addReaction(emote.getEmoteKey()).queue();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.error("Cannot add reaction, emote {} not defined for server {}.", emoteKey, serverId);
|
String defaultEmote = emoteService.getDefaultEmote(emoteKey);
|
||||||
throw new EmoteException(String.format("Cannot add reaction. Emote `%s` not defined in server %s. Define the emote via the setEmote command.", emoteKey, serverId));
|
message.addReaction(defaultEmote).queue();}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
log.error("Cannot add reaction, guild not found {}", serverId);
|
log.error("Cannot add reaction, guild not found {}", serverId);
|
||||||
throw new GuildException(String.format("Cannot add reaction, guild %s not found.", serverId));
|
throw new GuildException(String.format("Cannot add reaction, guild %s not found.", serverId));
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
abstracto.emoteNames.postReaction=warnReaction,successReaction
|
abstracto.emoteNames.postReaction=warnReaction,successReaction
|
||||||
|
abstracto.defaultEmotes.warnReaction=\u26A0\uFE0F
|
||||||
|
abstracto.defaultEmotes.successReaction=\u2705
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ import net.dv8tion.jda.api.entities.MessageReaction;
|
|||||||
public interface EmoteService {
|
public interface EmoteService {
|
||||||
boolean isEmoteUsableByBot(Emote emote);
|
boolean isEmoteUsableByBot(Emote emote);
|
||||||
AEmote buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction);
|
AEmote buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction);
|
||||||
String getEmoteAsMention(AEmote emote, Long serverId, String defaultText) ;
|
String getEmoteAsMention(AEmote emote, Long serverId, String defaultText);
|
||||||
String getEmoteAsMention(AEmote emote, Long serverId) ;
|
String getEmoteAsMention(AEmote emote, Long serverId);
|
||||||
void throwIfEmoteDoesNotExist(String emoteKey, Long serverId) ;
|
String getUsableEmoteOrDefault(Long serverId, String name);
|
||||||
|
void throwIfEmoteDoesNotExist(String emoteKey, Long serverId);
|
||||||
|
AEmote getEmoteOrFakeEmote(String emoteKey, Long serverId);
|
||||||
|
String getDefaultEmote(String emoteKey);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package dev.sheldan.abstracto.core.service.management;
|
package dev.sheldan.abstracto.core.service.management;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.exception.ConfigurationException;
|
|
||||||
import dev.sheldan.abstracto.core.exception.EmoteException;
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import net.dv8tion.jda.api.entities.Emote;
|
import net.dv8tion.jda.api.entities.Emote;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
spring.quartz.job-store-type=jdbc
|
spring.quartz.job-store-type=jdbc
|
||||||
spring.quartz.jdbc.initialize-schema=always
|
spring.quartz.jdbc.initialize-schema=never
|
||||||
|
|
||||||
|
|
||||||
spring.quartz.properties.org.quartz.scheduler.instanceName=quartz-abstracto-app
|
spring.quartz.properties.org.quartz.scheduler.instanceName=quartz-abstracto-app
|
||||||
|
|||||||
Reference in New Issue
Block a user