mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-27 07:18:26 +00:00
[AB-184] adding various metrics to the system, organizing imports, changing some transactional behaviour
adding okhttp metrics, split bot service into multiple services (guild, message), unified some places that services are used in order to interact with the api, and not directly the objects (this is to make it easier for metric to be accurate)
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.command;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
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.FeatureAware;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.config.ModuleInterface;
|
||||
import dev.sheldan.abstracto.core.command.config.ModuleInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.ModuleInterface;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.condition.detail.IncorrectFeatureModeConditionDetail;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.command.condition.detail.IncorrectFeatureModeConditionDetail;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.models.exception.IncorrectParameterExceptionModel;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
|
||||
public class IncorrectParameterException extends AbstractoRunTimeException implements Templatable {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.command.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.exception.InsufficientParametersExceptionModel;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.models.exception.InsufficientParametersExceptionModel;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
|
||||
public class InsufficientParametersException extends AbstractoRunTimeException implements Templatable {
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ public class InteractiveUtils {
|
||||
@Transactional
|
||||
public void sendTimeoutMessage(Long serverId, Long channelId) {
|
||||
String s = templateService.renderSimpleTemplate("feature_setup_configuration_timeout");
|
||||
Optional<TextChannel> channelOptional = channelService.getTextChannelInGuild(serverId, channelId);
|
||||
Optional<TextChannel> channelOptional = channelService.getTextChannelFromServerOptional(serverId, channelId);
|
||||
channelOptional.ifPresent(channel -> channelService.sendTextToChannelNotAsync(s, channel));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
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 dev.sheldan.abstracto.core.listener.Consumable;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
public interface MessageReceivedListener extends FeatureAware, Prioritized, Consumable {
|
||||
|
||||
@@ -22,11 +22,11 @@ public class UndoActionInstance {
|
||||
.build();
|
||||
}
|
||||
|
||||
public static UndoActionInstance getMessageDeleteAction(Long channelId, Long messageId) {
|
||||
public static UndoActionInstance getMessageDeleteAction(Long serverId, Long channelId, Long messageId) {
|
||||
return UndoActionInstance
|
||||
.builder()
|
||||
.action(UndoAction.DELETE_MESSAGE)
|
||||
.ids(Arrays.asList(channelId, messageId))
|
||||
.ids(Arrays.asList(serverId, channelId, messageId))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@@ -3,7 +3,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.core.models.exception;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -1,47 +1,13 @@
|
||||
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;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.security.auth.login.LoginException;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@Service
|
||||
public interface BotService {
|
||||
void login() throws LoginException;
|
||||
JDA getInstance();
|
||||
GuildChannelMember getServerChannelUser(Long serverId, Long channelId, Long userId);
|
||||
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);
|
||||
CompletableFuture<Member> getMemberInServerAsync(AUserInAServer aUserInAServer);
|
||||
Member getMemberInServer(AServer server, AUser member);
|
||||
CompletableFuture<Void> deleteMessage(Long serverId, Long channelId, Long messageId);
|
||||
CompletableFuture<Void> deleteMessage(Long channelId, Long messageId);
|
||||
CompletableFuture<Member> forceReloadMember(Member member);
|
||||
Optional<Emote> getEmote(Long serverId, AEmote emote);
|
||||
Optional<Emote> getEmote(AEmote emote);
|
||||
Optional<TextChannel> getTextChannelFromServerOptional(Guild serverId, Long textChannelId);
|
||||
TextChannel getTextChannelFromServer(Guild guild, Long textChannelId);
|
||||
TextChannel getTextChannelFromServerNullable(Guild guild, Long textChannelId);
|
||||
Optional<TextChannel> getTextChannelFromServerOptional(Long serverId, Long textChannelId);
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.requests.RestAction;
|
||||
import net.dv8tion.jda.api.requests.restaction.MessageAction;
|
||||
|
||||
import java.util.List;
|
||||
@@ -22,13 +23,24 @@ public interface ChannelService {
|
||||
MessageAction sendEmbedToChannelInComplete(MessageEmbed embed, MessageChannel channel);
|
||||
List<CompletableFuture<Message>> sendMessageToSendToAChannel(MessageToSend messageToSend, AChannel channel);
|
||||
CompletableFuture<Message> sendMessageToSendToAChannel(MessageToSend messageToSend, AChannel channel, Integer embedIndex);
|
||||
|
||||
CompletableFuture<Message> retrieveMessageInChannel(Long serverId, Long channelId, Long messageId);
|
||||
CompletableFuture<Message> retrieveMessageInChannel(MessageChannel channel, Long messageId);
|
||||
|
||||
/**
|
||||
* Sends a {@link MessageToSend} to Discord. This can result in multiple messages, because we do support multiple embeds.
|
||||
* @param messageToSend The {@link MessageToSend} to send, this can contain multiple embeds and normal text. The text will be sent
|
||||
* in the first message. One optional file can be used as an attachment. This will also be present in the first message.
|
||||
* @param textChannel The {@link MessageChannel} to send the messages to
|
||||
* @return A list of {@link CompletableFuture} representing each potential message sent
|
||||
*/
|
||||
List<CompletableFuture<Message>> sendMessageToSendToChannel(MessageToSend messageToSend, MessageChannel textChannel);
|
||||
Optional<TextChannel> getTextChannelInGuild(Long serverId, Long channelId);
|
||||
void editMessageInAChannel(MessageToSend messageToSend, AChannel channel, Long messageId);
|
||||
void editMessageInAChannel(MessageToSend messageToSend, MessageChannel channel, Long messageId);
|
||||
CompletableFuture<Message> editMessageInAChannelFuture(MessageToSend messageToSend, MessageChannel channel, Long messageId);
|
||||
CompletableFuture<Message> editEmbedMessageInAChannel(MessageEmbed embedToSend, MessageChannel channel, Long messageId);
|
||||
CompletableFuture<Message> editTextMessageInAChannel(String text, MessageChannel channel, Long messageId);
|
||||
CompletableFuture<Message> editTextMessageInAChannel(String text, MessageEmbed messageEmbed, MessageChannel channel, Long messageId);
|
||||
List<CompletableFuture<Message>> editMessagesInAChannelFuture(MessageToSend messageToSend, MessageChannel channel, List<Long> messageIds);
|
||||
CompletableFuture<Message> removeFieldFromMessage(MessageChannel channel, Long messageId, Integer index);
|
||||
CompletableFuture<Message> removeFieldFromMessage(MessageChannel channel, Long messageId, Integer index, Integer embedIndex);
|
||||
@@ -36,10 +48,17 @@ public interface ChannelService {
|
||||
CompletableFuture<Void> deleteTextChannel(Long serverId, Long channelId);
|
||||
List<CompletableFuture<Message>> sendEmbedTemplateInChannel(String templateKey, Object model, MessageChannel channel);
|
||||
CompletableFuture<Message> sendTextTemplateInChannel(String templateKey, Object model, MessageChannel channel);
|
||||
RestAction<Void> deleteMessagesInChannel(TextChannel textChannel, List<Message> messages);
|
||||
|
||||
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);
|
||||
CompletableFuture<MessageHistory> getHistoryOfChannel(TextChannel channel, Long startMessageId, Integer amount);
|
||||
Optional<TextChannel> getTextChannelFromServerOptional(Guild serverId, Long textChannelId);
|
||||
TextChannel getTextChannelFromServer(Guild guild, Long textChannelId);
|
||||
TextChannel getTextChannelFromServerNullable(Guild guild, Long textChannelId);
|
||||
Optional<TextChannel> getTextChannelFromServerOptional(Long serverId, Long textChannelId);
|
||||
TextChannel getTextChannelFromServer(Long serverId, Long textChannelId);
|
||||
CompletableFuture<Void> setSlowModeInChannel(TextChannel textChannel, Integer seconds);
|
||||
}
|
||||
|
||||
@@ -28,4 +28,7 @@ public interface EmoteService {
|
||||
AEmote getFakeEmoteFromEmote(Emote emote);
|
||||
boolean emoteIsFromGuild(Emote emote, Guild guild);
|
||||
CompletableFuture<Emote> getEmoteFromCachedEmote(CachedEmote cachedEmote);
|
||||
|
||||
Optional<Emote> getEmote(Long serverId, AEmote emote);
|
||||
Optional<Emote> getEmote(AEmote emote);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
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,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.interactive.DelayedActionConfig;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.interactive.DelayedActionConfig;
|
||||
import dev.sheldan.abstracto.core.interactive.SetupExecution;
|
||||
import dev.sheldan.abstracto.core.models.AServerChannelUserId;
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface GuildService {
|
||||
|
||||
Optional<Guild> getGuildByIdOptional(Long serverId);
|
||||
Guild getGuildById(Long serverId);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
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.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface MemberService {
|
||||
GuildChannelMember getServerChannelUser(Long serverId, Long channelId, Long userId);
|
||||
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);
|
||||
CompletableFuture<Member> getMemberInServerAsync(AUserInAServer aUserInAServer);
|
||||
Member getMemberInServer(AServer server, AUser member);
|
||||
CompletableFuture<Member> forceReloadMember(Member member);
|
||||
Member getBotInGuild(AServer server);
|
||||
CompletableFuture<User> getUserViaId(Long userId);
|
||||
}
|
||||
@@ -2,38 +2,18 @@ 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;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.requests.restaction.AuditableRestAction;
|
||||
import net.dv8tion.jda.api.requests.restaction.MessageAction;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
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);
|
||||
CompletableFuture<Void> clearReactionFromMessageWithFuture(Integer emoteId, Message message);
|
||||
CompletableFuture<Void> removeReactionFromMessageWithFuture(AEmote emote, Long serverId, Long channelId, Long messageId);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(AEmote emote, Long serverId, Long channelId, Long messageId, Long userId);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(AEmote emote, Long serverId, Long channelId, Long messageId, Member member);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(AEmote emote, Message message, Member member);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(Integer emoteId, Message message, Member member);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(AEmote emote, Message message, Long userId);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(Integer emoteId, Message message, Long userId);
|
||||
CompletableFuture<Void> clearReactionFromMessageWithFuture(AEmote emote, Long serverId, Long channelId, Long messageId);
|
||||
List<CompletableFuture<Void>> addReactionsToMessageWithFuture(List<String> emoteKeys, Long serverId, Message message);
|
||||
CompletableFuture<Void> deleteMessageInChannelInServer(Long serverId, Long channelId, Long messageId);
|
||||
CompletableFuture<Message> createStatusMessage(MessageToSend messageToSend, AChannel channel);
|
||||
CompletableFuture<Message> createStatusMessage(MessageToSend messageToSend, MessageChannel channel);
|
||||
@@ -51,4 +31,7 @@ public interface MessageService {
|
||||
CompletableFuture<Void> editMessageInDMChannel(User user, MessageToSend messageToSend, Long messageId);
|
||||
CompletableFuture<Message> loadMessageFromCachedMessage(CachedMessage cachedMessage);
|
||||
CompletableFuture<Message> loadMessage(Long serverId, Long channelId, Long messageId);
|
||||
MessageAction editMessage(Message message, MessageEmbed messageEmbed);
|
||||
MessageAction editMessage(Message message, String text, MessageEmbed messageEmbed);
|
||||
AuditableRestAction<Void> deleteMessage(Message message);
|
||||
}
|
||||
|
||||
@@ -2,11 +2,43 @@ 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 dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface ReactionService {
|
||||
CompletableFuture<Void> removeReactionFromMessage(CachedReaction reaction, CachedMessage cachedMessage);
|
||||
CompletableFuture<Void> removeReactionFromMessage(CachedReaction reaction, Message message);
|
||||
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> addReactionToMessageAsync(String emoteKey, Long serverId, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageAsync(String emoteKey, Guild guild, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageAsync(AEmote emote, Long serverId, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageAsync(AEmote emote, Guild guild, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageAsync(Emote emote,Message message);
|
||||
CompletableFuture<Void> addReactionToMessageAsync(Long emoteId, Long serverId, Message message);
|
||||
CompletableFuture<Void> addReactionToMessageAsync(String emoteKey, Long serverId, Long channelId, Long messageId);
|
||||
CompletableFuture<Void> removeReaction(Message message, String key);
|
||||
CompletableFuture<Void> removeReaction(Message message, String key, User user);
|
||||
CompletableFuture<Void> removeReaction(Message message, Emote emoteById);
|
||||
CompletableFuture<Void> removeReaction(Message message, Emote emoteById, User user);
|
||||
CompletableFuture<Void> removeReactionFromMessageWithFuture(AEmote emote, Message message);
|
||||
CompletableFuture<Void> clearReactionFromMessageWithFuture(AEmote emote, Message message);
|
||||
CompletableFuture<Void> clearReaction(Message message, String key);
|
||||
CompletableFuture<Void> clearReaction(Message message, Emote emote);
|
||||
CompletableFuture<Void> removeReactionFromMessageWithFuture(Integer emoteId, Message message);
|
||||
CompletableFuture<Void> clearReactionFromMessageWithFuture(Integer emoteId, Message message);
|
||||
CompletableFuture<Void> removeReactionFromMessageWithFuture(AEmote emote, Long serverId, Long channelId, Long messageId);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(AEmote emote, Long serverId, Long channelId, Long messageId, Long userId);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(AEmote emote, Long serverId, Long channelId, Long messageId, Member member);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(AEmote emote, Message message, Member member);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(Integer emoteId, Message message, Member member);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(AEmote emote, Message message, Long userId);
|
||||
CompletableFuture<Void> removeReactionOfUserFromMessageWithFuture(Integer emoteId, Message message, Long userId);
|
||||
CompletableFuture<Void> clearReactionFromMessageWithFuture(AEmote emote, Long serverId, Long channelId, Long messageId);
|
||||
List<CompletableFuture<Void>> addReactionsToMessageWithFuture(List<String> emoteKeys, Long serverId, Message message);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.service;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
@@ -18,6 +19,8 @@ public interface RoleService {
|
||||
void removeRoleFromMember(Member member, ARole role);
|
||||
CompletableFuture<Void> removeRoleFromMemberAsync(Member member, ARole role);
|
||||
CompletableFuture<Void> removeRoleFromMemberAsync(Member member, Long roleId);
|
||||
CompletableFuture<Void> addRoleToUser(Guild guild, Long userId, Role roleById);
|
||||
CompletableFuture<Void> removeRoleFromUser(Guild guild, Long userId, Role roleById);
|
||||
void removeRoleFromUser(AUserInAServer aUserInAServer, ARole role);
|
||||
CompletableFuture<Void> removeRoleFromUserFuture(AUserInAServer aUserInAServer, ARole role);
|
||||
void markDeleted(Role role, AServer server);
|
||||
|
||||
@@ -10,13 +10,14 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface UserInServerManagementService {
|
||||
AUserInAServer loadUser(Long serverId, Long userId);
|
||||
AUserInAServer loadUser(ServerUser serverUser);
|
||||
AUserInAServer loadOrCreateUser(Long serverId, Long userId);
|
||||
AUserInAServer onlyLoadUser(Long serverId, Long userId);
|
||||
AUserInAServer loadOrCreateUser(ServerUser serverUser);
|
||||
Optional<AUserInAServer> loadUserOptional(Long serverId, Long userId);
|
||||
AUserInAServer loadUser(AServer server, AUser user);
|
||||
AUserInAServer loadUser(Member member);
|
||||
AUserInAServer loadOrCreateUser(AServer server, AUser user);
|
||||
AUserInAServer loadOrCreateUser(Member member);
|
||||
Optional<AUserInAServer> loadUserOptional(Long userInServerId);
|
||||
AUserInAServer loadUser(Long userInServerId);
|
||||
AUserInAServer loadOrCreateUser(Long userInServerId);
|
||||
AUserInAServer createUserInServer(Member member);
|
||||
AUserInAServer createUserInServer(Long guildId, Long userId);
|
||||
List<AUserInAServer> getUserInAllServers(Long userId);
|
||||
|
||||
@@ -9,5 +9,6 @@ public interface UserManagementService {
|
||||
AUser createUser(Member member);
|
||||
AUser createUser(Long userId);
|
||||
AUser loadUser(Long userId);
|
||||
AUser loadOrCreateUser(Long userId);
|
||||
Optional<AUser> loadUserOptional(Long userId);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.service.BotService;
|
||||
import dev.sheldan.abstracto.core.service.MemberService;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -25,11 +25,11 @@ public class ContextUtils {
|
||||
private UserInServerManagementService userInServerManagementService;
|
||||
|
||||
@Autowired
|
||||
private BotService botService;
|
||||
private MemberService memberService;
|
||||
|
||||
public <T extends UserInitiatedServerContext> UserInitiatedServerContext fromMessage(CachedMessage message, Class<T> clazz) {
|
||||
Method m = null;
|
||||
GuildChannelMember guildChannelMember = botService.getServerChannelUser(message.getServerId(), message.getChannelId(), message.getAuthor().getAuthorId());
|
||||
GuildChannelMember guildChannelMember = memberService.getServerChannelUser(message.getServerId(), message.getChannelId(), message.getAuthor().getAuthorId());
|
||||
try {
|
||||
m = clazz.getMethod("builder");
|
||||
UserInitiatedServerContext.UserInitiatedServerContextBuilder<?, ?> builder = (UserInitiatedServerContext.UserInitiatedServerContextBuilder) m.invoke(null, null);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
@@ -13,14 +14,17 @@ public class ExceptionUtils {
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private ChannelService channelService;
|
||||
|
||||
@Transactional
|
||||
public void handleExceptionIfTemplatable(Throwable throwable, MessageChannel channel) {
|
||||
if(throwable != null) {
|
||||
if(throwable.getCause() instanceof Templatable) {
|
||||
String exceptionText = templateService.renderTemplatable((Templatable) throwable.getCause());
|
||||
channel.sendMessage(exceptionText).queue();
|
||||
channelService.sendTextToChannel(exceptionText, channel);
|
||||
} else {
|
||||
channel.sendMessage(throwable.getCause().getMessage()).queue();
|
||||
channelService.sendTextToChannel(throwable.getCause().getMessage(), channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class ParseUtilsTest {
|
||||
|
||||
Reference in New Issue
Block a user