mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-16 04:21:49 +00:00
fixed future handling in message cache, so methods return futures instead of requiring them as parameters
and adapted the code using this fixed config loading still relying on double, where the values were changed to long
This commit is contained in:
@@ -140,9 +140,9 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
public void handleExperienceGain(List<AServer> servers) {
|
public void handleExperienceGain(List<AServer> servers) {
|
||||||
servers.forEach(serverExp -> {
|
servers.forEach(serverExp -> {
|
||||||
log.trace("Handling experience for server {}", serverExp.getId());
|
log.trace("Handling experience for server {}", serverExp.getId());
|
||||||
int minExp = configService.getDoubleValue("minExp", serverExp.getId()).intValue();
|
int minExp = configService.getLongValue("minExp", serverExp.getId()).intValue();
|
||||||
int maxExp = configService.getDoubleValue("maxExp", serverExp.getId()).intValue();
|
int maxExp = configService.getLongValue("maxExp", serverExp.getId()).intValue();
|
||||||
Integer multiplier = configService.getDoubleValue("expMultiplier", serverExp.getId()).intValue();
|
Double multiplier = configService.getDoubleValue("expMultiplier", serverExp.getId());
|
||||||
PrimitiveIterator.OfInt iterator = new Random().ints(serverExp.getUsers().size(), minExp, maxExp + 1).iterator();
|
PrimitiveIterator.OfInt iterator = new Random().ints(serverExp.getUsers().size(), minExp, maxExp + 1).iterator();
|
||||||
List<AExperienceLevel> levels = experienceLevelManagementService.getLevelConfig();
|
List<AExperienceLevel> levels = experienceLevelManagementService.getLevelConfig();
|
||||||
levels.sort(Comparator.comparing(AExperienceLevel::getExperienceNeeded));
|
levels.sort(Comparator.comparing(AExperienceLevel::getExperienceNeeded));
|
||||||
@@ -150,7 +150,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
roles.sort(Comparator.comparing(role -> role.getLevel().getLevel()));
|
roles.sort(Comparator.comparing(role -> role.getLevel().getLevel()));
|
||||||
serverExp.getUsers().forEach(userInAServer -> {
|
serverExp.getUsers().forEach(userInAServer -> {
|
||||||
Integer gainedExperience = iterator.next();
|
Integer gainedExperience = iterator.next();
|
||||||
gainedExperience *= multiplier;
|
gainedExperience = (int) Math.floor(gainedExperience * multiplier);
|
||||||
log.trace("Handling {}. The user gains {}", userInAServer.getUserReference().getId(), gainedExperience);
|
log.trace("Handling {}. The user gains {}", userInAServer.getUserReference().getId(), gainedExperience);
|
||||||
AUserExperience aUserExperience = userExperienceManagementService.incrementExpForUser(userInAServer, gainedExperience.longValue(), 1L);
|
AUserExperience aUserExperience = userExperienceManagementService.incrementExpForUser(userInAServer, gainedExperience.longValue(), 1L);
|
||||||
updateUserlevel(aUserExperience, levels);
|
updateUserlevel(aUserExperience, levels);
|
||||||
|
|||||||
@@ -111,8 +111,8 @@ public class WarnServiceBean implements WarnService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void decayWarningsForServer(AServer server) {
|
public void decayWarningsForServer(AServer server) {
|
||||||
Double days = configService.getDoubleValue("decayDays", server.getId());
|
Long days = configService.getLongValue("decayDays", server.getId());
|
||||||
Instant cutOffDay = Instant.now().minus(days.longValue(), ChronoUnit.DAYS);
|
Instant cutOffDay = Instant.now().minus(days, ChronoUnit.DAYS);
|
||||||
List<Warning> warningsToDecay = warnManagementService.getActiveWarningsInServerOlderThan(server, cutOffDay);
|
List<Warning> warningsToDecay = warnManagementService.getActiveWarningsInServerOlderThan(server, cutOffDay);
|
||||||
decayWarnings(warningsToDecay);
|
decayWarnings(warningsToDecay);
|
||||||
logDecayedWarnings(server, warningsToDecay);
|
logDecayedWarnings(server, warningsToDecay);
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
|||||||
if(reaction != null) {
|
if(reaction != null) {
|
||||||
AUserInAServer author = userInServerManagementService.loadUser(message.getServerId(), message.getAuthorId());
|
AUserInAServer author = userInServerManagementService.loadUser(message.getServerId(), message.getAuthorId());
|
||||||
List<AUserInAServer> userExceptAuthor = getUsersExcept(reaction.getUserInServersIds(), author);
|
List<AUserInAServer> userExceptAuthor = getUsersExcept(reaction.getUserInServersIds(), author);
|
||||||
Double starMinimum = getFromConfig("starLvl1", message.getServerId());
|
Long starMinimum = getFromConfig("starLvl1", message.getServerId());
|
||||||
if (userExceptAuthor.size() >= starMinimum) {
|
if (userExceptAuthor.size() >= starMinimum) {
|
||||||
log.info("Post reached starboard minimum. Message {} in channel {} in server {} will be starred/updated.",
|
log.info("Post reached starboard minimum. Message {} in channel {} in server {} will be starred/updated.",
|
||||||
message.getMessageId(), message.getChannelId(), message.getServerId());
|
message.getMessageId(), message.getChannelId(), message.getServerId());
|
||||||
@@ -133,8 +133,8 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Double getFromConfig(String key, Long guildId) {
|
private Long getFromConfig(String key, Long guildId) {
|
||||||
return configManagementService.loadConfig(guildId, key).getDoubleValue();
|
return configManagementService.loadConfig(guildId, key).getLongValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<AUserInAServer> getUsersExcept(List<Long> users, AUserInAServer author) {
|
private List<AUserInAServer> getUsersExcept(List<Long> users, AUserInAServer author) {
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
|
|
||||||
private String getAppropriateEmote(Long serverId, Integer starCount) {
|
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);
|
Long starMinimum = configService.getLongValue("starLvl" + i, serverId);
|
||||||
if(starCount >= starMinimum) {
|
if(starCount >= starMinimum) {
|
||||||
return emoteService.getUsableEmoteOrDefault(serverId, "star" + i);
|
return emoteService.getUsableEmoteOrDefault(serverId, "star" + i);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,9 +57,7 @@ public class ReactionUpdatedListener extends ListenerAdapter {
|
|||||||
}
|
}
|
||||||
CompletableFuture<CachedMessage> asyncMessageFromCache = messageCache.getMessageFromCache(event.getGuild().getIdLong(), event.getChannel().getIdLong(), event.getMessageIdLong());
|
CompletableFuture<CachedMessage> asyncMessageFromCache = messageCache.getMessageFromCache(event.getGuild().getIdLong(), event.getChannel().getIdLong(), event.getMessageIdLong());
|
||||||
asyncMessageFromCache.thenAccept(cachedMessage -> {
|
asyncMessageFromCache.thenAccept(cachedMessage -> {
|
||||||
CompletableFuture<CachedReaction> future = new CompletableFuture<>();
|
messageCache.getCachedReactionFromReaction(event.getReaction()).thenAccept(reaction -> {
|
||||||
messageCache.getCachedReactionFromReaction(future, event.getReaction());
|
|
||||||
future.thenAccept(reaction -> {
|
|
||||||
self.callAddedListeners(event, cachedMessage, reaction);
|
self.callAddedListeners(event, cachedMessage, reaction);
|
||||||
messageCache.putMessageInCache(cachedMessage);
|
messageCache.putMessageInCache(cachedMessage);
|
||||||
}).exceptionally(throwable -> {
|
}).exceptionally(throwable -> {
|
||||||
@@ -123,9 +121,7 @@ public class ReactionUpdatedListener extends ListenerAdapter {
|
|||||||
}
|
}
|
||||||
CompletableFuture<CachedMessage> asyncMessageFromCache = messageCache.getMessageFromCache(event.getGuild().getIdLong(), event.getChannel().getIdLong(), event.getMessageIdLong());
|
CompletableFuture<CachedMessage> asyncMessageFromCache = messageCache.getMessageFromCache(event.getGuild().getIdLong(), event.getChannel().getIdLong(), event.getMessageIdLong());
|
||||||
asyncMessageFromCache.thenAccept(cachedMessage -> {
|
asyncMessageFromCache.thenAccept(cachedMessage -> {
|
||||||
CompletableFuture<CachedReaction> future = new CompletableFuture<>();
|
messageCache.getCachedReactionFromReaction(event.getReaction()).thenAccept(reaction ->
|
||||||
messageCache.getCachedReactionFromReaction(future, event.getReaction());
|
|
||||||
future.thenAccept(reaction ->
|
|
||||||
self.callRemoveListeners(event, cachedMessage, reaction)
|
self.callRemoveListeners(event, cachedMessage, reaction)
|
||||||
) .exceptionally(throwable -> {
|
) .exceptionally(throwable -> {
|
||||||
log.error("Failed to retrieve cached reaction for message {} ", event.getMessageIdLong(), throwable);
|
log.error("Failed to retrieve cached reaction for message {} ", event.getMessageIdLong(), throwable);
|
||||||
|
|||||||
@@ -53,9 +53,7 @@ public class MessageCacheBean implements MessageCache {
|
|||||||
@CachePut(key = "#message.id")
|
@CachePut(key = "#message.id")
|
||||||
public CompletableFuture<CachedMessage> putMessageInCache(Message message) {
|
public CompletableFuture<CachedMessage> putMessageInCache(Message message) {
|
||||||
log.info("Adding message {} to cache", message.getId());
|
log.info("Adding message {} to cache", message.getId());
|
||||||
CompletableFuture<CachedMessage> future = new CompletableFuture<>();
|
return self.buildCachedMessageFromMessage(message);
|
||||||
self.buildCachedMessageFromMessage(future, message);
|
|
||||||
return future;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -78,20 +76,21 @@ public class MessageCacheBean implements MessageCache {
|
|||||||
public CompletableFuture<CachedMessage> getMessageFromCache(Long guildId, Long textChannelId, Long messageId) {
|
public CompletableFuture<CachedMessage> getMessageFromCache(Long guildId, Long textChannelId, Long messageId) {
|
||||||
log.info("Retrieving message with parameters");
|
log.info("Retrieving message with parameters");
|
||||||
|
|
||||||
CompletableFuture<CachedMessage> cachedMessageCompletableFuture = new CompletableFuture<>();
|
return self.loadMessage(guildId, textChannelId, messageId);
|
||||||
self.loadMessage(cachedMessageCompletableFuture, guildId, textChannelId, messageId);
|
|
||||||
return cachedMessageCompletableFuture;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadMessage(CompletableFuture<CachedMessage> future, Long guildId, Long textChannelId, Long messageId) {
|
public CompletableFuture<CachedMessage> loadMessage(Long guildId, Long textChannelId, Long messageId) {
|
||||||
|
CompletableFuture<CachedMessage> future = new CompletableFuture<>();
|
||||||
Optional<Guild> guildOptional = botService.getGuildById(guildId);
|
Optional<Guild> guildOptional = botService.getGuildById(guildId);
|
||||||
if(guildOptional.isPresent()) {
|
if(guildOptional.isPresent()) {
|
||||||
Optional<TextChannel> textChannelByIdOptional = botService.getTextChannelFromServer(guildOptional.get(), textChannelId);
|
Optional<TextChannel> textChannelByIdOptional = botService.getTextChannelFromServer(guildOptional.get(), textChannelId);
|
||||||
if(textChannelByIdOptional.isPresent()) {
|
if(textChannelByIdOptional.isPresent()) {
|
||||||
TextChannel textChannel = textChannelByIdOptional.get();
|
TextChannel textChannel = textChannelByIdOptional.get();
|
||||||
textChannel.retrieveMessageById(messageId).queue(message ->
|
textChannel.retrieveMessageById(messageId).queue(message ->
|
||||||
buildCachedMessageFromMessage(future, message)
|
{
|
||||||
|
buildCachedMessageFromMessage(message).thenAccept(future::complete);
|
||||||
|
}
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
log.error("Not able to load message {} in channel {} in guild {}. Text channel not found.", messageId, textChannelId, guildId);
|
log.error("Not able to load message {} in channel {} in guild {}. Text channel not found.", messageId, textChannelId, guildId);
|
||||||
@@ -102,10 +101,13 @@ public class MessageCacheBean implements MessageCache {
|
|||||||
future.completeExceptionally(new GuildException(String.format("Not able to load message %s. Guild %s not found.", messageId, guildId)));
|
future.completeExceptionally(new GuildException(String.format("Not able to load message %s. Guild %s not found.", messageId, guildId)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildCachedMessageFromMessage(CompletableFuture<CachedMessage> future, Message message) {
|
public CompletableFuture<CachedMessage> buildCachedMessageFromMessage(Message message) {
|
||||||
|
CompletableFuture<CachedMessage> future = new CompletableFuture<>();
|
||||||
List<String> attachmentUrls = new ArrayList<>();
|
List<String> attachmentUrls = new ArrayList<>();
|
||||||
message.getAttachments().forEach(attachment ->
|
message.getAttachments().forEach(attachment ->
|
||||||
attachmentUrls.add(attachment.getProxyUrl())
|
attachmentUrls.add(attachment.getProxyUrl())
|
||||||
@@ -117,9 +119,7 @@ public class MessageCacheBean implements MessageCache {
|
|||||||
|
|
||||||
List<CompletableFuture<CachedReaction>> futures = new ArrayList<>();
|
List<CompletableFuture<CachedReaction>> futures = new ArrayList<>();
|
||||||
message.getReactions().forEach(messageReaction -> {
|
message.getReactions().forEach(messageReaction -> {
|
||||||
CompletableFuture<CachedReaction> future1 = new CompletableFuture<>();
|
futures.add(self.getCachedReactionFromReaction(messageReaction));
|
||||||
self.getCachedReactionFromReaction(future1, messageReaction);
|
|
||||||
futures.add(future1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).thenAccept(aVoid ->
|
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).thenAccept(aVoid ->
|
||||||
@@ -138,6 +138,7 @@ public class MessageCacheBean implements MessageCache {
|
|||||||
log.error("Failed to load reactions for message {}. ", message.getId(), throwable);
|
log.error("Failed to load reactions for message {}. ", message.getId(), throwable);
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<CachedReaction> getFutures(List<CompletableFuture<CachedReaction>> futures) {
|
private List<CachedReaction> getFutures(List<CompletableFuture<CachedReaction>> futures) {
|
||||||
@@ -154,7 +155,8 @@ public class MessageCacheBean implements MessageCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getCachedReactionFromReaction(CompletableFuture<CachedReaction> future, MessageReaction reaction) {
|
public CompletableFuture<CachedReaction> getCachedReactionFromReaction(MessageReaction reaction) {
|
||||||
|
CompletableFuture<CachedReaction> future = new CompletableFuture<>();
|
||||||
ReactionPaginationAction users = reaction.retrieveUsers().cache(false);
|
ReactionPaginationAction users = reaction.retrieveUsers().cache(false);
|
||||||
CachedReaction.CachedReactionBuilder builder = CachedReaction.builder();
|
CachedReaction.CachedReactionBuilder builder = CachedReaction.builder();
|
||||||
|
|
||||||
@@ -169,6 +171,7 @@ public class MessageCacheBean implements MessageCache {
|
|||||||
});
|
});
|
||||||
builder.userInServersIds(ausers);
|
builder.userInServersIds(ausers);
|
||||||
builder.emote(emoteService.buildAEmoteFromReaction(reaction.getReactionEmote()));
|
builder.emote(emoteService.buildAEmoteFromReaction(reaction.getReactionEmote()));
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public interface MessageCache {
|
|||||||
CompletableFuture<CachedMessage> getMessageFromCache(Long guildId, Long textChannelId, Long messageId);
|
CompletableFuture<CachedMessage> getMessageFromCache(Long guildId, Long textChannelId, Long messageId);
|
||||||
CompletableFuture<CachedMessage> getMessageFromCache(Message message);
|
CompletableFuture<CachedMessage> getMessageFromCache(Message message);
|
||||||
CompletableFuture<CachedMessage> putMessageInCache(CachedMessage message);
|
CompletableFuture<CachedMessage> putMessageInCache(CachedMessage message);
|
||||||
void loadMessage(CompletableFuture<CachedMessage> future, Long guildId, Long textChannelId, Long messageId);
|
CompletableFuture<CachedMessage> loadMessage(Long guildId, Long textChannelId, Long messageId);
|
||||||
void getCachedReactionFromReaction(CompletableFuture<CachedReaction> future, MessageReaction reaction);
|
CompletableFuture<CachedReaction> getCachedReactionFromReaction(MessageReaction reaction);
|
||||||
void buildCachedMessageFromMessage(CompletableFuture<CachedMessage> future, Message message);
|
CompletableFuture<CachedMessage> buildCachedMessageFromMessage(Message message);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user