mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-08 10:02:27 +00:00
[AB-154] split up private and guild message received handler, split handlers into async and sync handlers
adapting the tests and improving tests to reduce usage of MockUtils adding some util methods to message bean extending cache for cached messages enabling to build cached messages from messages in DM channels (they are not part of the message cache) splitting multiple listeners to different beans, for better overview (emote updated) adding convenience service for reactions specifically split cached reaction and cached reactions, singular only contains one user, while the later contains all users fixing liquibase configuration for assigned role user fixing assignable role not having a transaction moved caching update a bit earlier in various methods fixing bug that a manual unmute caused duplicate unmute notification fixing short scheduled unmute not checking the new mute state limiting parameters for roll
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core;
|
||||
|
||||
public interface Prioritized {
|
||||
Integer getPriority();
|
||||
@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.core.command;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.listener.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.condition.ConditionResult;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameters;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.UnParsedCommandParameter;
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
@@ -25,5 +26,6 @@ public interface CommandService {
|
||||
void disAllowCommandForRole(ACommand aCommand, ARole role);
|
||||
void disAllowFeatureForRole(FeatureEnum featureEnum, ARole role);
|
||||
ConditionResult isCommandExecutable(Command command, CommandContext commandContext);
|
||||
UnParsedCommandParameter getUnParsedCommandParameter(String messageContent);
|
||||
CompletableFuture<Parameters> getParametersForCommand(String commandName, Message messageContainingContent);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.execution;
|
||||
|
||||
public interface ResultAware {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.execution.result;
|
||||
|
||||
public interface ExecutionResult {
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.execution.result;
|
||||
|
||||
public enum MessageReceivedListenerResult implements ExecutionResult {
|
||||
IGNORED, PROCESSED, DELETED
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.execution.result.ExecutionResult;
|
||||
import net.dv8tion.jda.api.events.Event;
|
||||
|
||||
public interface Consumable {
|
||||
default boolean shouldConsume(Event event, ExecutionResult result) { return false; }
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
public interface MessageReceivedListener extends FeatureAware, Prioritized {
|
||||
void execute(Message message);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionAddEvent;
|
||||
|
||||
public interface ReactedAddedListener extends FeatureAware, Prioritized {
|
||||
void executeReactionAdded(CachedMessage message, GuildMessageReactionAddEvent event, AUserInAServer userAdding);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionRemoveEvent;
|
||||
|
||||
public interface ReactedRemovedListener extends FeatureAware, Prioritized {
|
||||
void executeReactionRemoved(CachedMessage message, GuildMessageReactionRemoveEvent reaction, AUserInAServer userRemoving);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedEmote;
|
||||
|
||||
public interface AsyncEmoteCreatedListener extends FeatureAware, Prioritized {
|
||||
void emoteCreated(CachedEmote createdEmote);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedEmote;
|
||||
|
||||
public interface AsyncEmoteDeletedListener extends FeatureAware, Prioritized {
|
||||
void emoteDeleted(CachedEmote deletedEmote);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedEmote;
|
||||
|
||||
public interface AsyncEmoteUpdatedListener extends FeatureAware, Prioritized {
|
||||
void emoteUpdated(CachedEmote updatedEmote, String oldValue, String newValue);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
|
||||
public interface AsyncJoinListener extends FeatureAware {
|
||||
void execute(ServerUser joiningUser);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
|
||||
public interface AsyncLeaveListener extends FeatureAware {
|
||||
void execute(ServerUser serverUser);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
|
||||
public interface AsyncMessageDeletedListener extends FeatureAware {
|
||||
void execute(CachedMessage messageBefore);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.listener.GuildMessageEmbedEventModel;
|
||||
|
||||
public interface AsyncMessageEmbeddedListener extends FeatureAware {
|
||||
void execute(GuildMessageEmbedEventModel eventModel);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
|
||||
public interface AsyncMessageReceivedListener extends FeatureAware {
|
||||
void execute(CachedMessage message);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
|
||||
public interface AsyncMessageTextUpdatedListener extends FeatureAware {
|
||||
void execute(CachedMessage messageBefore, CachedMessage messageAfter);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
|
||||
public interface AsyncPrivateMessageReceivedListener extends FeatureAware {
|
||||
void execute(CachedMessage message);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReactions;
|
||||
|
||||
public interface AsyncReactionAddedListener extends FeatureAware {
|
||||
void executeReactionAdded(CachedMessage message, CachedReactions addedReaction, ServerUser userAdding);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
|
||||
public interface AsyncReactionClearedListener extends FeatureAware {
|
||||
void executeReactionCleared(CachedMessage message);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.listener.async.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReactions;
|
||||
|
||||
public interface AsyncReactionRemovedListener extends FeatureAware {
|
||||
void executeReactionRemoved(CachedMessage message, CachedReactions removedReaction, ServerUser userRemoving);
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.listener.entity;
|
||||
package dev.sheldan.abstracto.core.listener.sync.entity;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.listener.entity;
|
||||
package dev.sheldan.abstracto.core.listener.sync.entity;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.entity;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
|
||||
public interface EmoteCreatedListener extends FeatureAware, Prioritized {
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
|
||||
public interface EmoteDeletedListener extends FeatureAware, Prioritized {
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
|
||||
public interface EmoteUpdatedListener extends FeatureAware, Prioritized {
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.listener.GuildMessageEmbedEventModel;
|
||||
|
||||
public interface MessageEmbeddedListener extends FeatureAware, Prioritized {
|
||||
@@ -0,0 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.Consumable;
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.execution.result.MessageReceivedListenerResult;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
public interface MessageReceivedListener extends FeatureAware, Prioritized, Consumable {
|
||||
MessageReceivedListenerResult execute(Message message);
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
public interface PrivateMessageReceivedListener extends FeatureAware, Prioritized {
|
||||
@@ -0,0 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionAddEvent;
|
||||
|
||||
public interface ReactionAddedListener extends FeatureAware, Prioritized {
|
||||
void executeReactionAdded(CachedMessage message, GuildMessageReactionAddEvent event, ServerUser serverUser);
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
|
||||
public interface ReactionClearedListener extends FeatureAware, Prioritized {
|
||||
@@ -0,0 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.listener.sync.jda;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.Prioritized;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionRemoveEvent;
|
||||
|
||||
public interface ReactionRemovedListener extends FeatureAware, Prioritized {
|
||||
void executeReactionRemoved(CachedMessage message, GuildMessageReactionRemoveEvent reaction, ServerUser serverUser);
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@EqualsAndHashCode
|
||||
public class ServerUser {
|
||||
private Long serverId;
|
||||
private Long userId;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.sheldan.abstracto.core.models.cache;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CachedAttachment {
|
||||
private String url;
|
||||
private String proxyUrl;
|
||||
private String fileName;
|
||||
private Integer size;
|
||||
private Integer height;
|
||||
private Integer width;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package dev.sheldan.abstracto.core.models.cache;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CachedAuthor {
|
||||
private Long authorId;
|
||||
private Boolean isBot;
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.models.cache;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.EmbedType;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
@@ -15,9 +16,10 @@ public class CachedEmbed {
|
||||
private CachedEmbedTitle title;
|
||||
private CachedEmbedColor color;
|
||||
private String description;
|
||||
private String thumbnail;
|
||||
private String imageUrl;
|
||||
private CachedThumbnail cachedThumbnail;
|
||||
private CachedImageInfo cachedImageInfo;
|
||||
private List<CachedEmbedField> fields;
|
||||
private CachedEmbedFooter footer;
|
||||
private OffsetDateTime timeStamp;
|
||||
private EmbedType type;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.sheldan.abstracto.core.models.cache;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@EqualsAndHashCode
|
||||
public class CachedEmote {
|
||||
private String emoteName;
|
||||
private Long emoteId;
|
||||
private Boolean external;
|
||||
private String imageURL;
|
||||
private Boolean custom;
|
||||
private Boolean animated;
|
||||
private Long serverId;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.cache;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CachedImageInfo {
|
||||
protected String url;
|
||||
protected String proxyUrl;
|
||||
protected Integer width;
|
||||
protected Integer height;
|
||||
}
|
||||
@@ -15,12 +15,13 @@ public class CachedMessage {
|
||||
private Long serverId;
|
||||
private Long channelId;
|
||||
private Long messageId;
|
||||
private Long authorId;
|
||||
private CachedAuthor author;
|
||||
private Instant timeCreated;
|
||||
private String content;
|
||||
private List<CachedEmbed> embeds;
|
||||
private List<String> attachmentUrls;
|
||||
private List<CachedReaction> reactions;
|
||||
private List<CachedAttachment> attachments;
|
||||
private List<CachedReactions> reactions;
|
||||
private List<CachedEmote> emotes;
|
||||
|
||||
public String getMessageUrl() {
|
||||
return MessageUtils.buildMessageUrl(this.serverId ,this.channelId, this.messageId);
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.cache;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CachedReaction {
|
||||
private AEmote emote;
|
||||
private List<Long> userInServersIds;
|
||||
private CachedEmote emote;
|
||||
private Boolean self;
|
||||
private ServerUser user;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package dev.sheldan.abstracto.core.models.cache;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CachedReactions {
|
||||
private CachedEmote emote;
|
||||
private Boolean self;
|
||||
private List<ServerUser> users;
|
||||
|
||||
public CachedReaction getReactionForSpecificUser(ServerUser serverUser) {
|
||||
ServerUser matchingUser = users.stream().filter(serverUser1 -> serverUser1.equals(serverUser)).findAny().orElseThrow(() -> new AbstractoRunTimeException("Server user not found."));
|
||||
return CachedReaction.builder().self(self).emote(emote).user(matchingUser).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.models.cache;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CachedThumbnail {
|
||||
protected String url;
|
||||
protected String proxyUrl;
|
||||
protected Integer width;
|
||||
protected Integer height;
|
||||
|
||||
}
|
||||
@@ -4,7 +4,6 @@ import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -16,5 +15,6 @@ public class GuildMessageEmbedEventModel {
|
||||
@Builder.Default
|
||||
private List<MessageEmbed> embeds = new ArrayList<>();
|
||||
private Long messageId;
|
||||
private TextChannel channel;
|
||||
private Long channelId;
|
||||
private Long serverId;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
@@ -21,6 +22,8 @@ public interface BotService {
|
||||
CompletableFuture<GuildChannelMember> getServerChannelUserAsync(Long serverId, Long channelId, Long userId);
|
||||
Member getMemberInServer(Long serverId, Long memberId);
|
||||
CompletableFuture<Member> getMemberInServerAsync(Long serverId, Long memberId);
|
||||
CompletableFuture<Member> retrieveMemberInServer(ServerUser serverUser);
|
||||
CompletableFuture<User> retrieveUserById(Long userId);
|
||||
boolean isUserInGuild(AUserInAServer aUserInAServer);
|
||||
boolean isUserInGuild(Guild guild, AUserInAServer aUserInAServer);
|
||||
Member getMemberInServer(AUserInAServer aUserInAServer);
|
||||
@@ -38,5 +41,7 @@ public interface BotService {
|
||||
TextChannel getTextChannelFromServer(Long serverId, Long textChannelId);
|
||||
Optional<Guild> getGuildByIdOptional(Long serverId);
|
||||
Guild getGuildById(Long serverId);
|
||||
CompletableFuture<Guild> retrieveGuildById(Long serverId);
|
||||
Member getBotInGuild(AServer server);
|
||||
CompletableFuture<User> getUserViaId(Long userId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.*;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface CacheEntityService {
|
||||
CachedEmote getCachedEmoteFromEmote(Emote emote, Guild guild);
|
||||
CachedEmote getCachedEmoteFromEmote(MessageReaction.ReactionEmote emote, Guild guild);
|
||||
CachedAttachment getCachedAttachment(Message.Attachment attachment);
|
||||
CachedEmbed getCachedEmbedFromEmbed(MessageEmbed embed);
|
||||
CachedThumbnail buildCachedThumbnail(MessageEmbed.Thumbnail thumbnail);
|
||||
CachedImageInfo buildCachedImage(MessageEmbed.ImageInfo image);
|
||||
CompletableFuture<CachedReactions> getCachedReactionFromReaction(MessageReaction reaction);
|
||||
CompletableFuture<CachedMessage> buildCachedMessageFromMessage(Message message);
|
||||
}
|
||||
@@ -40,4 +40,6 @@ public interface ChannelService {
|
||||
CompletableFuture<TextChannel> createTextChannel(String name, AServer server, Long categoryId);
|
||||
Optional<TextChannel> getChannelFromAChannel(AChannel channel);
|
||||
AChannel getFakeChannelFromTextChannel(TextChannel textChannel);
|
||||
CompletableFuture<Message> sendSimpleTemplateToChannel(Long serverId, Long channelId, String template);
|
||||
TextChannel getTextChannel(Long serverId, Long channelId);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedEmote;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReactions;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface EmoteService {
|
||||
boolean isEmoteUsableByBot(Emote emote);
|
||||
@@ -19,9 +21,11 @@ public interface EmoteService {
|
||||
AEmote getEmoteOrDefaultEmote(String emoteKey, Long serverId);
|
||||
String getDefaultEmote(String emoteKey);
|
||||
boolean isReactionEmoteAEmote(MessageReaction.ReactionEmote reaction, AEmote storedEmote);
|
||||
Optional<CachedReaction> getReactionFromMessageByEmote(CachedMessage message, AEmote emote);
|
||||
Optional<CachedReactions> getReactionFromMessageByEmote(CachedMessage message, AEmote emote);
|
||||
boolean compareAEmote(AEmote a, AEmote b);
|
||||
boolean compareCachedEmoteWithAEmote(CachedEmote a, AEmote b);
|
||||
AEmote getFakeEmote(Object object);
|
||||
AEmote getFakeEmoteFromEmote(Emote emote);
|
||||
boolean emoteIsFromGuild(Emote emote, Guild guild);
|
||||
CompletableFuture<Emote> getEmoteFromCachedEmote(CachedEmote cachedEmote);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.listener.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.database.AFeature;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.FeatureModeDisplay;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@@ -13,6 +11,4 @@ public interface MessageCache {
|
||||
CompletableFuture<CachedMessage> getMessageFromCache(Message message);
|
||||
CompletableFuture<CachedMessage> putMessageInCache(CachedMessage message);
|
||||
CompletableFuture<CachedMessage> loadMessage(Long guildId, Long textChannelId, Long messageId);
|
||||
CompletableFuture<CachedReaction> getCachedReactionFromReaction(MessageReaction reaction);
|
||||
CompletableFuture<CachedMessage> buildCachedMessageFromMessage(Message message);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
@@ -13,11 +14,13 @@ public interface MessageService {
|
||||
void addReactionToMessage(String emoteKey, Long serverId, Message message);
|
||||
void addDefaultReactionToMessage(String unicode, Message message);
|
||||
CompletableFuture<Void> addDefaultReactionToMessageAsync(String unicode, Message message);
|
||||
CompletableFuture<Void> addDefaultReactionToMessageAsync(String unicode, Long serverId, Long channelId, Long messageId);
|
||||
CompletableFuture<Void> addReactionToMessageWithFuture(String emoteKey, Long serverId, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageWithFuture(String emoteKey, Guild guild, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageWithFuture(AEmote emote, Long serverId, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageWithFuture(AEmote emote, Guild guild, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageWithFuture(Long emoteId, Long serverId, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageWithFuture(String emoteKey, Long serverId, Long channelId, Long messageId);
|
||||
CompletableFuture<Void> removeReactionFromMessageWithFuture(AEmote emote, Message message);
|
||||
CompletableFuture<Void> clearReactionFromMessageWithFuture(AEmote emote, Message message);
|
||||
CompletableFuture<Void> removeReactionFromMessageWithFuture(Integer emoteId, Message message);
|
||||
@@ -38,6 +41,7 @@ public interface MessageService {
|
||||
void updateStatusMessage(AChannel channel, Long messageId, MessageToSend messageToSend);
|
||||
void updateStatusMessage(MessageChannel channel, Long messageId, MessageToSend messageToSend);
|
||||
CompletableFuture<Message> sendMessageToUser(AUserInAServer userInAServer, String text);
|
||||
CompletableFuture<Message> sendSimpleTemplateToUser(Long userId, String templateKey);
|
||||
CompletableFuture<Message> sendTemplateToUser(User user, String template, Object model);
|
||||
CompletableFuture<Void> sendEmbedToUser(User user, String template, Object model);
|
||||
CompletableFuture<Message> sendEmbedToUserWithMessage(User user, String template, Object model);
|
||||
@@ -45,4 +49,6 @@ public interface MessageService {
|
||||
CompletableFuture<Message> sendMessageToUser(User user, String text);
|
||||
CompletableFuture<Void> deleteMessageInChannelWithUser(User user, Long messageId);
|
||||
CompletableFuture<Void> editMessageInDMChannel(User user, MessageToSend messageToSend, Long messageId);
|
||||
CompletableFuture<Message> loadMessageFromCachedMessage(CachedMessage cachedMessage);
|
||||
CompletableFuture<Message> loadMessage(Long serverId, Long channelId, Long messageId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface ReactionService {
|
||||
CompletableFuture<Void> removeReactionFromMessage(CachedReaction reaction, CachedMessage cachedMessage);
|
||||
CompletableFuture<Void> removeReactionFromMessage(CachedReaction reaction, Message message);
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
@@ -10,9 +11,11 @@ import java.util.Optional;
|
||||
|
||||
public interface UserInServerManagementService {
|
||||
AUserInAServer loadUser(Long serverId, Long userId);
|
||||
AUserInAServer loadUser(ServerUser serverUser);
|
||||
Optional<AUserInAServer> loadUserOptional(Long serverId, Long userId);
|
||||
AUserInAServer loadUser(AServer server, AUser user);
|
||||
AUserInAServer loadUser(Member member);
|
||||
Optional<AUserInAServer> loadUserConditional(Long userInServerId);
|
||||
Optional<AUserInAServer> loadUserOptional(Long userInServerId);
|
||||
AUserInAServer loadUser(Long userInServerId);
|
||||
AUserInAServer createUserInServer(Member member);
|
||||
AUserInAServer createUserInServer(Long guildId, Long userId);
|
||||
|
||||
@@ -31,11 +31,11 @@ public class ContextUtils {
|
||||
|
||||
public <T extends UserInitiatedServerContext> UserInitiatedServerContext fromMessage(CachedMessage message, Class<T> clazz) {
|
||||
Method m = null;
|
||||
GuildChannelMember guildChannelMember = botService.getServerChannelUser(message.getServerId(), message.getChannelId(), message.getAuthorId());
|
||||
GuildChannelMember guildChannelMember = botService.getServerChannelUser(message.getServerId(), message.getChannelId(), message.getAuthor().getAuthorId());
|
||||
try {
|
||||
m = clazz.getMethod("builder");
|
||||
UserInitiatedServerContext.UserInitiatedServerContextBuilder<?, ?> builder = (UserInitiatedServerContext.UserInitiatedServerContextBuilder) m.invoke(null, null);
|
||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(message.getServerId(), message.getAuthorId());
|
||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(message.getServerId(), message.getAuthor().getAuthorId());
|
||||
AChannel channel = channelManagementService.loadChannel(message.getChannelId());
|
||||
return builder
|
||||
.member(guildChannelMember.getMember())
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedAuthor;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
@@ -61,6 +62,6 @@ public class ContextUtilsTest {
|
||||
}
|
||||
|
||||
private CachedMessage buildCachedMessage() {
|
||||
return CachedMessage.builder().authorId(AUTHOR_ID).serverId(SERVER_ID).channelId(CHANNEL_ID).build();
|
||||
return CachedMessage.builder().author(CachedAuthor.builder().authorId(AUTHOR_ID).build()).serverId(SERVER_ID).channelId(CHANNEL_ID).build();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user