mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-02 07:44:25 +00:00
Compare commits
1 Commits
abstracto-
...
modelsplit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa8ff9ddb5 |
@@ -17,6 +17,12 @@
|
||||
<artifactId>moderation-int</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||
<artifactId>core-db-models</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -5,9 +5,12 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.moderation.Moderation;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLog;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel;
|
||||
import dev.sheldan.abstracto.moderation.service.BanService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -28,6 +31,13 @@ public class Ban extends AbstractConditionableCommand {
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Autowired
|
||||
private UserInServerModelConverter userConverter;
|
||||
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||
@@ -35,11 +45,12 @@ public class Ban extends AbstractConditionableCommand {
|
||||
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
|
||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||
|
||||
BanLog banLogModel = (BanLog) ContextConverter.fromCommandContext(commandContext, BanLog.class);
|
||||
banLogModel.setBannedUser(member);
|
||||
banLogModel.setBanningUser(commandContext.getAuthor());
|
||||
BanLogModel banLogModel = (BanLogModel) ContextConverter.fromCommandContext(commandContext, BanLogModel.class);
|
||||
banLogModel.setBannedUser(userConverter.fromMember(member));
|
||||
banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||
banLogModel.setReason(reason);
|
||||
banService.banMember(member, reason, banLogModel);
|
||||
banService.banMember(member, reason);
|
||||
banService.sendBanLog(banLogModel);
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,9 +5,11 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.moderation.Moderation;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLog;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel;
|
||||
import dev.sheldan.abstracto.moderation.service.BanService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -25,17 +27,25 @@ public class BanId extends AbstractConditionableCommand {
|
||||
@Autowired
|
||||
private BanService banService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Autowired
|
||||
private UserInServerModelConverter userConverter;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||
Long userId = (Long) parameters.get(0);
|
||||
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
|
||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||
BanIdLog banLogModel = (BanIdLog) ContextConverter.fromCommandContext(commandContext, BanIdLog.class);
|
||||
BanIdLogModel banLogModel = (BanIdLogModel) ContextConverter.fromCommandContext(commandContext, BanIdLogModel.class);
|
||||
banLogModel.setBannedUserId(userId);
|
||||
banLogModel.setBanningUser(commandContext.getAuthor());
|
||||
banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||
banLogModel.setReason(reason);
|
||||
banService.banMember(userId, commandContext.getGuild().getIdLong(), reason, banLogModel);
|
||||
banService.banMember(userId, commandContext.getGuild().getIdLong(), reason);
|
||||
banService.sendBanIdLog(banLogModel);
|
||||
|
||||
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
|
||||
import dev.sheldan.abstracto.moderation.Moderation;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
|
||||
@@ -26,6 +27,9 @@ public class Kick extends AbstractConditionableCommand {
|
||||
@Autowired
|
||||
private KickServiceBean kickService;
|
||||
|
||||
@Autowired
|
||||
private UserInServerModelConverter userConverter;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
|
||||
@@ -35,10 +39,11 @@ public class Kick extends AbstractConditionableCommand {
|
||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||
|
||||
KickLogModel kickLogModel = (KickLogModel) ContextConverter.fromCommandContext(commandContext, KickLogModel.class);
|
||||
kickLogModel.setKickedUser(member);
|
||||
kickLogModel.setKickingUser(commandContext.getAuthor());
|
||||
kickLogModel.setKickedUser(userConverter.fromMember(member));
|
||||
kickLogModel.setKickingUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||
kickLogModel.setReason(reason);
|
||||
kickService.kickMember(member, reason, kickLogModel);
|
||||
kickService.kickMember(member, reason);
|
||||
kickService.sendKickLog(kickLogModel);
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,10 +5,11 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.moderation.Moderation;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
|
||||
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
|
||||
import dev.sheldan.abstracto.moderation.service.WarnService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -23,27 +24,26 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class Warn extends AbstractConditionableCommand {
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private WarnService warnService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private WarnConverter warnConverter;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||
Member member = (Member) parameters.get(0);
|
||||
String defaultReason = templateService.renderTemplateWithMap("warn_default_reason", null);
|
||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||
WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class);
|
||||
warnLogModel.setWarnedUser(member);
|
||||
WarnLogModel warnLogModel = (WarnLogModel) ContextConverter.fromCommandContext(commandContext, WarnLogModel.class);
|
||||
warnLogModel.setMessage(commandContext.getMessage());
|
||||
warnLogModel.setReason(reason);
|
||||
warnLogModel.setWarningUser(commandContext.getAuthor());
|
||||
warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel);
|
||||
WarnDto warnDto = warnService.warnUser(member, commandContext.getAuthor(), reason);
|
||||
warnLogModel.setWarning(warnConverter.convertFromWarnDto(warnDto));
|
||||
warnService.sendWarnLog(warnLogModel);
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package dev.sheldan.abstracto.moderation.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.utils.AbstractoDateUtils;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnModel;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class WarnConverter {
|
||||
public WarnDto convertFromAWarn(Warning warning) {
|
||||
return WarnDto.builder()
|
||||
.id(warning.getId())
|
||||
.decayed(warning.getDecayed())
|
||||
.reason(warning.getReason())
|
||||
.decayDate(AbstractoDateUtils.convertInstant(warning.getDecayDate()))
|
||||
.warnDate(AbstractoDateUtils.convertInstant(warning.getWarnDate()))
|
||||
.build();
|
||||
}
|
||||
|
||||
public WarnModel convertFromWarnDto(WarnDto warnDto) {
|
||||
return WarnModel
|
||||
.builder()
|
||||
.decayDate(warnDto.getDecayDate())
|
||||
.decayed(warnDto.getDecayed())
|
||||
.warnDate(warnDto.getWarnDate())
|
||||
.reason(warnDto.getReason())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.moderation.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.JoinListener;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -23,9 +22,6 @@ public class JoinLogger implements JoinListener {
|
||||
private static final String USER_JOIN_TEMPLATE = "user_join";
|
||||
private static final String JOIN_LOG_TARGET = "joinLog";
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.moderation.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.LeaveListener;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -23,9 +22,6 @@ public class LeaveLogger implements LeaveListener {
|
||||
private static final String USER_LEAVE_TEMPLATE = "user_leave";
|
||||
private static final String LEAVE_LOG_TARGET = "leaveLog";
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.moderation.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
@@ -4,6 +4,8 @@ import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -18,8 +20,9 @@ import java.util.Optional;
|
||||
public class BanServiceBean implements BanService {
|
||||
|
||||
private static final String BAN_LOG_TEMPLATE = "ban_log";
|
||||
private static final String BAN_ID_LOG_TEMPLATE = "banid_log";
|
||||
private static final String BAN_LOG_TARGET = "banLog";
|
||||
private static final String BAN_ID_LOG_TEMPLATE = "banid_log";
|
||||
|
||||
@Autowired
|
||||
private Bot bot;
|
||||
|
||||
@@ -30,17 +33,25 @@ public class BanServiceBean implements BanService {
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Override
|
||||
public void banMember(Member member, String reason, ServerContext banLog) {
|
||||
public void banMember(Member member, String reason) {
|
||||
this.banUser(member.getGuild().getIdLong(), member.getIdLong(), reason);
|
||||
String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLog);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banLog.getServer().getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog) {
|
||||
banUser(guildId, userId, reason);
|
||||
String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLog);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, guildId);
|
||||
public void banMember(Long guildId, Long userId, String reason) {
|
||||
this.banUser(guildId, userId, reason);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBanLog(BanLogModel banLogModel) {
|
||||
String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLogModel);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banLogModel.getGuild().getIdLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBanIdLog(BanIdLogModel banIdLogModel) {
|
||||
String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLogModel);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banIdLogModel.getGuild().getIdLong());
|
||||
}
|
||||
|
||||
private void banUser(Long guildId, Long userId, String reason) {
|
||||
|
||||
@@ -29,18 +29,18 @@ public class KickServiceBean implements KickService {
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Override
|
||||
public void kickMember(Member member, String reason, KickLogModel kickLogModel) {
|
||||
Optional<Guild> guildById = bot.getGuildById(kickLogModel.getGuild().getIdLong());
|
||||
public void kickMember(Member member, String reason) {
|
||||
Optional<Guild> guildById = bot.getGuildById(member.getGuild().getIdLong());
|
||||
if(guildById.isPresent()) {
|
||||
guildById.get().kick(member, reason).queue();
|
||||
this.sendKickLog(kickLogModel);
|
||||
} else {
|
||||
log.warn("Not able to kick. Guild {} not found.", kickLogModel.getGuild().getIdLong());
|
||||
throw new GuildException(String.format("Not able to kick %s. Guild %s not found", kickLogModel.getMember().getIdLong(), kickLogModel.getGuild().getIdLong()));
|
||||
log.warn("Not able to kick. Guild {} not found.", member.getGuild().getIdLong());
|
||||
throw new GuildException(String.format("Not able to kick %s. Guild %s not found", member.getIdLong(), member.getGuild().getIdLong()));
|
||||
}
|
||||
}
|
||||
|
||||
private void sendKickLog(KickLogModel kickLogModel) {
|
||||
@Override
|
||||
public void sendKickLog(KickLogModel kickLogModel) {
|
||||
String warnLogMessage = templateService.renderTemplate(KICK_LOG_TEMPLATE, kickLogModel);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, kickLogModel.getServer().getId());
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
@@ -28,7 +28,7 @@ public class SlowModeServiceBean implements SlowModeService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSlowMode(AChannel channel, Duration duration) {
|
||||
public void setSlowMode(ChannelDto channel, Duration duration) {
|
||||
Optional<TextChannel> textChannelOptional = bot.getTextChannelFromServer(channel.getServer().getId(), channel.getId());
|
||||
if(textChannelOptional.isPresent()) {
|
||||
TextChannel textChannel = textChannelOptional.get();
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.exception.UserException;
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
|
||||
import dev.sheldan.abstracto.moderation.service.management.WarnManagementServiceBean;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotification;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotificationModel;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
@@ -33,13 +33,10 @@ public class WarnServiceBean implements WarnService {
|
||||
|
||||
public static final String WARN_LOG_TARGET = "warnLog";
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userService;
|
||||
|
||||
@Autowired
|
||||
private WarnManagementService warnManagementService;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private WarnManagementServiceBean warnManagementService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
@@ -53,13 +50,19 @@ public class WarnServiceBean implements WarnService {
|
||||
private static final String WARN_LOG_TEMPLATE = "warn_log";
|
||||
private static final String WARN_NOTIFICATION_TEMPLATE = "warn_notification";
|
||||
|
||||
@Autowired
|
||||
private WarnConverter warnConverter;
|
||||
|
||||
|
||||
@Override
|
||||
public void warnUser(AUserInAServer warnedAUserInAServer, AUserInAServer warningAUserInAServer, String reason, WarnLog warnLog) {
|
||||
AUser warningAUser = warningAUserInAServer.getUserReference();
|
||||
AUser warnedAUser = warnedAUserInAServer.getUserReference();
|
||||
AServer serverOfWarning = warnedAUserInAServer.getServerReference();
|
||||
public WarnDto warnUser(UserInServerDto warnedAUserInAServer, UserInServerDto warningAUserInAServer, String reason) {
|
||||
UserDto warningAUser = warningAUserInAServer.getUser();
|
||||
UserDto warnedAUser = warnedAUserInAServer.getUser();
|
||||
ServerDto serverOfWarning = warnedAUserInAServer.getServer();
|
||||
log.info("User {} is warning {} in server {} because of {}", warningAUser.getId(), warnedAUser.getId(), serverOfWarning.getId(), reason);
|
||||
Warning warning = warnManagementService.createWarning(warnedAUserInAServer, warningAUserInAServer, reason);
|
||||
AUserInAServer warnedUserInAServerDb = AUserInAServer.builder().userInServerId(warnedAUserInAServer.getUserInServerId()).build();
|
||||
AUserInAServer warningUserInAServerDb = AUserInAServer.builder().userInServerId(warnedAUserInAServer.getUserInServerId()).build();
|
||||
WarnDto warning = warnManagementService.createWarning(warnedUserInAServerDb, warningUserInAServerDb, reason);
|
||||
JDA instance = bot.getInstance();
|
||||
User userBeingWarned = instance.getUserById(warnedAUser.getId());
|
||||
Optional<Guild> guildById = bot.getGuildById(serverOfWarning.getId());
|
||||
@@ -67,11 +70,9 @@ public class WarnServiceBean implements WarnService {
|
||||
if(guildById.isPresent()) {
|
||||
guildName = guildById.get().getName();
|
||||
}
|
||||
warnLog.setWarning(warning);
|
||||
this.sendWarnLog(warnLog);
|
||||
WarnNotification warnNotification = WarnNotification.builder().warning(warning).serverName(guildName).build();
|
||||
WarnNotificationModel warnNotificationModel = WarnNotificationModel.builder().warning(warnConverter.convertFromWarnDto(warning)).serverName(guildName).build();
|
||||
if(userBeingWarned != null) {
|
||||
String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotification);
|
||||
String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotificationModel);
|
||||
CompletableFuture<Message> messageFuture = new CompletableFuture<>();
|
||||
|
||||
// TODO the person executing this, is unaware that the message failed
|
||||
@@ -88,16 +89,18 @@ public class WarnServiceBean implements WarnService {
|
||||
log.warn("Unable to find user {} in guild {} to warn.", warnedAUser.getId(), serverOfWarning.getId());
|
||||
throw new UserException(String.format("Unable to find user %s.", warnedAUser.getId()));
|
||||
}
|
||||
return warning;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void warnUser(Member warnedMember, Member warningMember, String reason, WarnLog warnLog) {
|
||||
AUserInAServer warnedAUser = userManagementService.loadUser(warnedMember);
|
||||
AUserInAServer warningAUser = userManagementService.loadUser(warningMember);
|
||||
this.warnUser(warnedAUser, warningAUser, reason, warnLog);
|
||||
public WarnDto warnUser(Member warnedMember, Member warningMember, String reason) {
|
||||
UserInServerDto warnedAUser = userService.loadUser(warnedMember.getGuild().getIdLong(), warnedMember.getIdLong());
|
||||
UserInServerDto warningAUser = userService.loadUser(warningMember.getGuild().getIdLong(), warningMember.getIdLong());
|
||||
return this.warnUser(warnedAUser, warningAUser, reason);
|
||||
}
|
||||
|
||||
private void sendWarnLog(ServerContext warnLogModel) {
|
||||
@Override
|
||||
public void sendWarnLog(WarnLogModel warnLogModel) {
|
||||
String warnLogMessage = templateService.renderTemplate(WARN_LOG_TEMPLATE, warnLogModel);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, warnLogModel.getServer().getId());
|
||||
MessageToSend message = templateService.renderEmbedTemplate("warn_log", warnLogModel);
|
||||
|
||||
@@ -1,21 +1,25 @@
|
||||
package dev.sheldan.abstracto.moderation.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.repository.WarnRepository;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
@Component
|
||||
public class WarnManagementServiceBean implements WarnManagementService {
|
||||
public class WarnManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private WarnRepository warnRepository;
|
||||
|
||||
@Override
|
||||
public Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) {
|
||||
@Autowired
|
||||
private WarnConverter warnConverter;
|
||||
|
||||
public WarnDto createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) {
|
||||
Warning warning = Warning.builder()
|
||||
.reason(reason)
|
||||
.warnedUser(warnedAUser)
|
||||
@@ -23,6 +27,6 @@ public class WarnManagementServiceBean implements WarnManagementService {
|
||||
.warnDate(Instant.now())
|
||||
.build();
|
||||
warnRepository.save(warning);
|
||||
return warning;
|
||||
return warnConverter.convertFromAWarn(warning);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
abstracto.postTargets.moderation=joinLog,leaveLog,warnLog,kickLog,banLog,editLog,deleteLog
|
||||
abstracto.postTargets.moderation=joinLog,leaveLog,warnLogModel,kickLog,banLog,editLog,deleteLog
|
||||
abstracto.features.moderation=false
|
||||
abstracto.features.warnings=false
|
||||
abstracto.features.logging=true
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.sheldan.abstracto.moderation.models.dto;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class WarnDto {
|
||||
private Long id;
|
||||
private UserInServerDto warnedUser;
|
||||
private UserInServerDto warningUser;
|
||||
private String reason;
|
||||
private OffsetDateTime warnDate;
|
||||
private Boolean decayed;
|
||||
private OffsetDateTime decayDate;
|
||||
}
|
||||
@@ -1,15 +1,18 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@Getter @SuperBuilder @Setter
|
||||
public class BanIdLog extends UserInitiatedServerContext {
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@Setter
|
||||
public class BanIdLogModel extends UserInitiatedServerContext {
|
||||
private String reason;
|
||||
private Member banningUser;
|
||||
private UserInServerModel banningUser;
|
||||
private Long bannedUserId;
|
||||
|
||||
}
|
||||
@@ -1,15 +1,18 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@Getter @SuperBuilder @Setter
|
||||
public class BanLog extends UserInitiatedServerContext {
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@Setter
|
||||
public class BanLogModel extends UserInitiatedServerContext {
|
||||
|
||||
private String reason;
|
||||
private Member banningUser;
|
||||
private Member bannedUser;
|
||||
private UserInServerModel banningUser;
|
||||
private UserInServerModel bannedUser;
|
||||
}
|
||||
@@ -1,14 +1,17 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@Getter @SuperBuilder @Setter
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@Setter
|
||||
public class KickLogModel extends UserInitiatedServerContext {
|
||||
private String reason;
|
||||
private Member kickingUser;
|
||||
private Member kickedUser;
|
||||
private UserInServerModel kickingUser;
|
||||
private UserInServerModel kickedUser;
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
|
||||
@Getter @SuperBuilder @Setter
|
||||
public class WarnLog extends UserInitiatedServerContext {
|
||||
|
||||
private String reason;
|
||||
private Member warnedUser;
|
||||
private Member warningUser;
|
||||
private Message message;
|
||||
private Warning warning;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@Setter
|
||||
public class WarnLogModel extends UserInitiatedServerContext {
|
||||
private Message message;
|
||||
private WarnModel warning;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class WarnModel {
|
||||
private Long id;
|
||||
private UserInServerModel warnedUser;
|
||||
private UserInServerModel warningUser;
|
||||
private String reason;
|
||||
private OffsetDateTime warnDate;
|
||||
private Boolean decayed;
|
||||
private OffsetDateTime decayDate;
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import lombok.Builder;
|
||||
import lombok.Value;
|
||||
|
||||
@Value @Builder
|
||||
public class WarnNotification {
|
||||
private Warning warning;
|
||||
@Value
|
||||
@Builder
|
||||
public class WarnNotificationModel {
|
||||
private WarnModel warning;
|
||||
private String serverName;
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
public interface BanService {
|
||||
void banMember(Member member, String reason, ServerContext banLog);
|
||||
void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog);
|
||||
void banMember(Member member, String reason);
|
||||
void banMember(Long guildId, Long userId, String reason);
|
||||
void sendBanLog(BanLogModel banLogModel);
|
||||
void sendBanIdLog(BanIdLogModel banLogModel);
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@ import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
public interface KickService {
|
||||
void kickMember(Member member, String reason, KickLogModel kickLogModel);
|
||||
void kickMember(Member member, String reason);
|
||||
void sendKickLog(KickLogModel kickLogModel);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
public interface SlowModeService {
|
||||
void setSlowMode(TextChannel channel, Duration duration);
|
||||
void setSlowMode(AChannel channel, Duration duration);
|
||||
void setSlowMode(ChannelDto channel, Duration duration);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
|
||||
public interface WarnService {
|
||||
void warnUser(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason, WarnLog warnLog);
|
||||
void warnUser(Member warnedUser, Member warningUser, String reason, WarnLog warnLog);
|
||||
WarnDto warnUser(UserInServerDto warnedAUser, UserInServerDto warningAUser, String reason);
|
||||
WarnDto warnUser(Member warnedUser, Member warningUser, String reason);
|
||||
void sendWarnLog(WarnLogModel warnLogModel);
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
package dev.sheldan.abstracto.moderation.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
|
||||
public interface WarnManagementService {
|
||||
Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason);
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||
import dev.sheldan.abstracto.utility.Utility;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel;
|
||||
@@ -29,7 +29,7 @@ public class Remind extends AbstractConditionableCommand {
|
||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||
Duration remindTime = (Duration) parameters.get(0);
|
||||
String text = (String) parameters.get(1);
|
||||
AUserInAServer aUserInAServer = commandContext.getUserInitiatedContext().getAUserInAServer();
|
||||
UserInServerDto aUserInAServer = commandContext.getUserInitiatedContext().getAUserInAServer();
|
||||
ReminderModel remindModel = (ReminderModel) ContextConverter.fromCommandContext(commandContext, ReminderModel.class);
|
||||
remindModel.setMessage(commandContext.getMessage());
|
||||
remindModel.setRemindText(text);
|
||||
|
||||
@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.utility.Utility;
|
||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||
import dev.sheldan.abstracto.utility.models.database.Reminder;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.reminder.RemindersModel;
|
||||
import dev.sheldan.abstracto.utility.service.management.ReminderManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.ReminderManagementServiceBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -23,7 +23,7 @@ import java.util.List;
|
||||
public class Reminders extends AbstractConditionableCommand {
|
||||
|
||||
@Autowired
|
||||
private ReminderManagementService reminderManagementService;
|
||||
private ReminderManagementServiceBean reminderManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelService channelService;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.utility.config;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.ServerConfigListener;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.service.ConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -15,13 +15,13 @@ public class StarboardConfigListener implements ServerConfigListener {
|
||||
private StarboardConfig starboardConfig;
|
||||
|
||||
@Autowired
|
||||
private ConfigManagementService configManagementService;
|
||||
private ConfigService configManagementService;
|
||||
|
||||
@Override
|
||||
public void updateServerConfig(AServer server) {
|
||||
public void updateServerConfig(ServerDto server) {
|
||||
for (int i = 0; i < starboardConfig.getLvl().size(); i++) {
|
||||
Integer value = starboardConfig.getLvl().get(i);
|
||||
configManagementService.createIfNotExists(server.getId(), "starLvl" + ( i + 1 ), Double.valueOf(value));
|
||||
configManagementService.createValueIfNotExists("starLvl" + ( i + 1 ), server.getId(), Double.valueOf(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.sheldan.abstracto.utility.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsPost;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class StarPostConverter {
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
public StarStatsPost fromStarboardPost(StarboardPost starboardPost) {
|
||||
ChannelDto channel = channelConverter.fromChannel(starboardPost.getStarboardChannel());
|
||||
return StarStatsPost
|
||||
.builder()
|
||||
.serverId(channel.getServer().getId())
|
||||
.channelId(channel.getId())
|
||||
.messageId(starboardPost.getPostMessageId())
|
||||
.starCount(starboardPost.getReactions().size())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package dev.sheldan.abstracto.utility.listener.embed;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.listener.MessageReceivedListener;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.service.MessageCache;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
|
||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||
import dev.sheldan.abstracto.utility.service.MessageEmbedService;
|
||||
@@ -25,7 +25,7 @@ public class MessageEmbedListener implements MessageReceivedListener {
|
||||
public static final String MESSAGE_EMBED_TEMPLATE = "message";
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private MessageEmbedService messageEmbedService;
|
||||
@@ -36,7 +36,7 @@ public class MessageEmbedListener implements MessageReceivedListener {
|
||||
List<MessageEmbedLink> links = messageEmbedService.getLinksInMessage(messageRaw);
|
||||
for (MessageEmbedLink messageEmbedLink : links) {
|
||||
messageRaw = messageRaw.replace(messageEmbedLink.getWholeUrl(), "");
|
||||
AUserInAServer cause = userManagementService.loadUser(message.getMember());
|
||||
UserInServerDto cause = userManagementService.loadUser(message.getMember());
|
||||
messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId()).thenAccept(cachedMessage -> {
|
||||
messageEmbedService.embedLink(cachedMessage, message.getTextChannel(), cause, message);
|
||||
});
|
||||
|
||||
@@ -2,15 +2,15 @@ package dev.sheldan.abstracto.utility.listener.embed;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.ReactedAddedListener;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
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.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.utils.EmoteUtils;
|
||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||
import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage;
|
||||
import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
@@ -26,31 +26,31 @@ public class MessageEmbedRemovalReactionListener implements ReactedAddedListener
|
||||
public static final String REMOVAL_EMOTE = "removeEmbed";
|
||||
|
||||
@Autowired
|
||||
private EmoteManagementService emoteManagementService;
|
||||
private EmoteService emoteManagementService;
|
||||
|
||||
@Autowired
|
||||
private Bot bot;
|
||||
|
||||
@Autowired
|
||||
private MessageEmbedPostManagementService messageEmbedPostManagementService;
|
||||
private MessageEmbedPostManagementServiceBean messageEmbedPostManagementService;
|
||||
|
||||
@Autowired
|
||||
private MessageService messageService;
|
||||
|
||||
@Override
|
||||
public void executeReactionAdded(CachedMessage message, MessageReaction reaction, AUserInAServer userAdding) {
|
||||
public void executeReactionAdded(CachedMessage message, MessageReaction reaction, UserInServerDto userAdding) {
|
||||
Long guildId = message.getServerId();
|
||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(REMOVAL_EMOTE, guildId);
|
||||
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(REMOVAL_EMOTE, guildId);
|
||||
if(aEmote.isPresent()) {
|
||||
AEmote emote = aEmote.get();
|
||||
EmoteDto emote = aEmote.get();
|
||||
MessageReaction.ReactionEmote reactionEmote = reaction.getReactionEmote();
|
||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
||||
Optional<EmbeddedMessage> embeddedMessageOptional = messageEmbedPostManagementService.findEmbeddedPostByMessageId(message.getMessageId());
|
||||
if(embeddedMessageOptional.isPresent()) {
|
||||
EmbeddedMessage embeddedMessage = embeddedMessageOptional.get();
|
||||
if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|
||||
|| embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|
||||
if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUser().getId())
|
||||
|| embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUser().getId())
|
||||
) {
|
||||
messageService.deleteMessageInChannelInServer(message.getServerId(), message.getChannelId(), message.getMessageId()).thenAccept(aVoid -> {
|
||||
messageEmbedPostManagementService.deleteEmbeddedMessageTransactional(embeddedMessage);
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
package dev.sheldan.abstracto.utility.listener.starboard;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.listener.ReactedAddedListener;
|
||||
import dev.sheldan.abstracto.core.listener.ReactedRemovedListener;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.ConfigService;
|
||||
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||
import dev.sheldan.abstracto.core.service.MessageCache;
|
||||
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.utils.EmoteUtils;
|
||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.service.StarboardService;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
@@ -36,7 +36,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
||||
public static final String STAR_EMOTE = "star";
|
||||
|
||||
@Autowired
|
||||
private EmoteManagementService emoteManagementService;
|
||||
private EmoteService emoteManagementService;
|
||||
|
||||
@Autowired
|
||||
private Bot bot;
|
||||
@@ -45,30 +45,30 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
||||
private MessageCache messageCache;
|
||||
|
||||
@Autowired
|
||||
private ConfigManagementService configManagementService;
|
||||
private ConfigService configManagementService;
|
||||
|
||||
@Autowired
|
||||
private StarboardService starboardService;
|
||||
|
||||
@Autowired
|
||||
private StarboardPostManagementService starboardPostManagementService;
|
||||
private StarboardPostManagementServiceBean starboardPostManagementService;
|
||||
|
||||
@Autowired
|
||||
private StarboardPostReactorManagementService starboardPostReactorManagementService;
|
||||
private StarboardPostReactorManagementServiceBean starboardPostReactorManagementService;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userManagementService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, AUserInAServer userAdding) {
|
||||
if(userAdding.getUserReference().getId().equals(message.getAuthorId())) {
|
||||
public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, UserInServerDto userAdding) {
|
||||
if(userAdding.getUser().getId().equals(message.getAuthorId())) {
|
||||
return;
|
||||
}
|
||||
Long guildId = message.getServerId();
|
||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId);
|
||||
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(STAR_EMOTE, guildId);
|
||||
if(aEmote.isPresent()) {
|
||||
AEmote emote = aEmote.get();
|
||||
EmoteDto emote = aEmote.get();
|
||||
MessageReaction.ReactionEmote reactionEmote = addedReaction.getReactionEmote();
|
||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
||||
@@ -80,21 +80,21 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
||||
}
|
||||
}
|
||||
|
||||
private void updateStarboardPost(CachedMessage message, CachedReaction reaction, AUserInAServer userReacting, boolean adding) {
|
||||
private void updateStarboardPost(CachedMessage message, CachedReaction reaction, UserInServerDto userReacting, boolean adding) {
|
||||
Optional<StarboardPost> starboardPostOptional = starboardPostManagementService.findByMessageId(message.getMessageId());
|
||||
if(reaction != null) {
|
||||
List<AUser> userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId());
|
||||
Double starMinimum = getFromConfig("starLvl1", message.getServerId());
|
||||
List<UserDto> userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId());
|
||||
Double starMinimum = configManagementService.getDoubleValue("starLvl1", message.getServerId());
|
||||
if (userExceptAuthor.size() >= starMinimum) {
|
||||
AUserInAServer author = userManagementService.loadUser(message.getServerId(), message.getAuthorId());
|
||||
UserInServerDto author = userManagementService.loadUser(message.getServerId(), message.getAuthorId());
|
||||
if(starboardPostOptional.isPresent()) {
|
||||
StarboardPost starboardPost = starboardPostOptional.get();
|
||||
starboardPost.setIgnored(false);
|
||||
starboardService.updateStarboardPost(starboardPost, message, userExceptAuthor);
|
||||
if(adding) {
|
||||
starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUserReference());
|
||||
starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUser());
|
||||
} else {
|
||||
starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUserReference());
|
||||
starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUser());
|
||||
}
|
||||
} else {
|
||||
starboardService.createStarboardPost(message, userExceptAuthor, userReacting, author);
|
||||
@@ -119,14 +119,14 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void executeReactionRemoved(CachedMessage message, MessageReaction removedReaction, AUserInAServer userRemoving) {
|
||||
if(message.getAuthorId().equals(userRemoving.getUserReference().getId())) {
|
||||
public void executeReactionRemoved(CachedMessage message, MessageReaction removedReaction, UserInServerDto userRemoving) {
|
||||
if(message.getAuthorId().equals(userRemoving.getUser().getId())) {
|
||||
return;
|
||||
}
|
||||
Long guildId = message.getServerId();
|
||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId);
|
||||
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(STAR_EMOTE, guildId);
|
||||
if(aEmote.isPresent()) {
|
||||
AEmote emote = aEmote.get();
|
||||
EmoteDto emote = aEmote.get();
|
||||
MessageReaction.ReactionEmote reactionEmote = removedReaction.getReactionEmote();
|
||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
||||
@@ -138,11 +138,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
||||
}
|
||||
}
|
||||
|
||||
private Double getFromConfig(String key, Long guildId) {
|
||||
return configManagementService.loadConfig(guildId, key).getDoubleValue();
|
||||
}
|
||||
|
||||
private List<AUser> getUsersExcept(List<AUser> users, Long userId) {
|
||||
private List<UserDto> getUsersExcept(List<UserDto> users, Long userId) {
|
||||
return users.stream().filter(user -> !user.getId().equals(userId)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.listener.MessageDeletedListener;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.Optional;
|
||||
public class StarboardPostDeletedListener implements MessageDeletedListener {
|
||||
|
||||
@Autowired
|
||||
private StarboardPostManagementService starboardPostManagementService;
|
||||
private StarboardPostManagementServiceBean starboardPostManagementService;
|
||||
|
||||
@Override
|
||||
public void execute(CachedMessage messageBefore) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.utility.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.utility.models.database.Reminder;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.utility.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.utility.repository.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
||||
import dev.sheldan.abstracto.utility.repository.StarStatsUserResult;
|
||||
@@ -15,7 +15,7 @@ import java.util.List;
|
||||
public class StarStatsUserConverter {
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private Bot bot;
|
||||
@@ -27,7 +27,7 @@ public class StarStatsUserConverter {
|
||||
.builder()
|
||||
.starCount(starStatsUserResult.getStarCount())
|
||||
.member(bot.getMemberInServer(serverId, starStatsUserResult.getUserId()))
|
||||
.user(AUser.builder().id(starStatsUserResult.getUserId()).build())
|
||||
.user(UserDto.builder().id(starStatsUserResult.getUserId()).build())
|
||||
.build();
|
||||
result.add(newUser);
|
||||
});
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
package dev.sheldan.abstracto.utility.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.models.template.ChannelModel;
|
||||
import dev.sheldan.abstracto.core.models.template.ServerModel;
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import dev.sheldan.abstracto.core.models.template.listener.MessageEmbeddedModel;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.core.service.MessageCache;
|
||||
import dev.sheldan.abstracto.core.service.MessageService;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
|
||||
import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
@@ -41,13 +42,10 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
||||
public static final String REMOVAL_EMOTE = "removeEmbed";
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelService channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private Bot bot;
|
||||
@@ -65,11 +63,17 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
||||
private MessageCache messageCache;
|
||||
|
||||
@Autowired
|
||||
private MessageEmbedPostManagementService messageEmbedPostManagementService;
|
||||
private MessageEmbedPostManagementServiceBean messageEmbedPostManagementService;
|
||||
|
||||
@Autowired
|
||||
private MessageService messageService;
|
||||
|
||||
@Autowired
|
||||
private UserInServerModelConverter userInServerModelConverter;
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
@Override
|
||||
public List<MessageEmbedLink> getLinksInMessage(String message) {
|
||||
List<MessageEmbedLink> links = new ArrayList<>();
|
||||
@@ -95,7 +99,7 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, AUserInAServer reason, Message embeddingMessage) {
|
||||
public void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, UserInServerDto reason, Message embeddingMessage) {
|
||||
linksToEmbed.forEach(messageEmbedLink -> {
|
||||
messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId())
|
||||
.thenAccept(cachedMessage -> {
|
||||
@@ -106,7 +110,7 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void embedLink(CachedMessage cachedMessage, TextChannel target, AUserInAServer cause, Message embeddingMessage) {
|
||||
public void embedLink(CachedMessage cachedMessage, TextChannel target, UserInServerDto cause, Message embeddingMessage) {
|
||||
MessageEmbeddedModel messageEmbeddedModel = buildTemplateParameter(embeddingMessage, cachedMessage);
|
||||
MessageToSend embed = templateService.renderEmbedTemplate(MESSAGE_EMBED_TEMPLATE, messageEmbeddedModel);
|
||||
List<CompletableFuture<Message>> completableFutures = channelService.sendMessageToEndInTextChannel(embed, target);
|
||||
@@ -124,24 +128,22 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
||||
}
|
||||
|
||||
private MessageEmbeddedModel buildTemplateParameter(Message message, CachedMessage embeddedMessage) {
|
||||
AChannel channel = channelManagementService.loadChannel(message.getChannel().getIdLong());
|
||||
AServer server = serverManagementService.loadOrCreate(message.getGuild().getIdLong());
|
||||
AUserInAServer user = userManagementService.loadUser(message.getMember());
|
||||
Member author = bot.getMemberInServer(embeddedMessage.getServerId(), embeddedMessage.getAuthorId());
|
||||
TextChannel sourceChannel = bot.getTextChannelFromServer(embeddedMessage.getServerId(), embeddedMessage.getChannelId()).get();
|
||||
ChannelModel currentChannel = ChannelModel.builder().id(message.getTextChannel().getIdLong()).build();
|
||||
Guild guild = message.getGuild();
|
||||
ServerModel server = ServerModel.builder().id(guild.getIdLong()).build();
|
||||
UserInServerModel embeddingUser = userInServerModelConverter.fromMember(message.getMember());
|
||||
UserInServerModel embeddedUser = userInServerModelConverter.fromUser(userService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId()));
|
||||
ServerModel sourceServer = ServerModel.builder().id(embeddedMessage.getServerId()).build();
|
||||
return MessageEmbeddedModel
|
||||
.builder()
|
||||
.channel(channel)
|
||||
.channel(currentChannel)
|
||||
.server(server)
|
||||
.member(message.getMember())
|
||||
.aUserInAServer(user)
|
||||
.author(author)
|
||||
.sourceChannel(sourceChannel)
|
||||
.embeddingUser(message.getMember())
|
||||
.user(user.getUserReference())
|
||||
.messageChannel(message.getChannel())
|
||||
.guild(message.getGuild())
|
||||
.embeddedMessage(embeddedMessage)
|
||||
.embeddedUser(embeddedUser.getUser())
|
||||
.embeddedUserInServer(embeddedUser)
|
||||
.userModel(embeddingUser.getUser())
|
||||
.userInServer(embeddedUser)
|
||||
.sourceServer(sourceServer)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package dev.sheldan.abstracto.utility.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
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 dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.scheduling.service.SchedulerService;
|
||||
@@ -14,7 +16,7 @@ import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import dev.sheldan.abstracto.utility.models.database.Reminder;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ExecutedReminderModel;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel;
|
||||
import dev.sheldan.abstracto.utility.service.management.ReminderManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.ReminderManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
@@ -38,10 +40,10 @@ public class RemindServiceBean implements ReminderService {
|
||||
|
||||
public static final String REMINDER_EMBED_KEY = "remind_response";
|
||||
@Autowired
|
||||
private ReminderManagementService reminderManagementService;
|
||||
private ReminderManagementServiceBean reminderManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelService channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
@@ -58,14 +60,23 @@ public class RemindServiceBean implements ReminderService {
|
||||
@Autowired
|
||||
private ChannelService channelService;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private UserConverter userConverter;
|
||||
|
||||
@Override
|
||||
public void createReminderInForUser(AUserInAServer user, String remindText, Duration remindIn, ReminderModel reminderModel) {
|
||||
AChannel channel = channelManagementService.loadChannel(reminderModel.getChannel().getId());
|
||||
public void createReminderInForUser(UserInServerDto user, String remindText, Duration remindIn, ReminderModel reminderModel) {
|
||||
ChannelDto channel = channelManagementService.loadChannel(reminderModel.getChannel().getId());
|
||||
AServerAChannelAUser aServerAChannelAUser = AServerAChannelAUser
|
||||
.builder()
|
||||
.user(user.getUserReference())
|
||||
.user(user.getUser())
|
||||
.aUserInAServer(user)
|
||||
.guild(user.getServerReference())
|
||||
.guild(user.getServer())
|
||||
.channel(channel)
|
||||
.build();
|
||||
Instant remindAt = Instant.now().plusNanos(remindIn.toNanos());
|
||||
@@ -90,14 +101,14 @@ public class RemindServiceBean implements ReminderService {
|
||||
@Transactional
|
||||
public void executeReminder(Long reminderId) {
|
||||
Reminder reminderToRemindFor = reminderManagementService.loadReminder(reminderId);
|
||||
AServer server = reminderToRemindFor.getServer();
|
||||
AChannel channel = reminderToRemindFor.getChannel();
|
||||
ServerDto server = serverConverter.convertServer(reminderToRemindFor.getServer());
|
||||
ChannelDto channel = channelConverter.fromChannel(reminderToRemindFor.getChannel());
|
||||
Optional<Guild> guildToAnswerIn = bot.getGuildById(server.getId());
|
||||
if(guildToAnswerIn.isPresent()) {
|
||||
Optional<TextChannel> channelToAnswerIn = bot.getTextChannelFromServer(server.getId(), channel.getId());
|
||||
// only send the message if the channel still exists, if not, only set the reminder to reminded.
|
||||
if(channelToAnswerIn.isPresent()) {
|
||||
AUser userReference = reminderToRemindFor.getRemindedUser().getUserReference();
|
||||
UserDto userReference = userConverter.fromAUser(reminderToRemindFor.getRemindedUser().getUserReference());
|
||||
Member memberInServer = bot.getMemberInServer(server.getId(), userReference.getId());
|
||||
ExecutedReminderModel build = ExecutedReminderModel
|
||||
.builder()
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package dev.sheldan.abstracto.utility.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.PostTargetManagement;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.*;
|
||||
import dev.sheldan.abstracto.core.models.AServerAChannelMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.*;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.ConfigService;
|
||||
@@ -13,13 +15,14 @@ import dev.sheldan.abstracto.core.service.EmoteService;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import dev.sheldan.abstracto.utility.config.StarboardConfig;
|
||||
import dev.sheldan.abstracto.utility.converter.StarPostConverter;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsModel;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsPost;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarboardPostModel;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean;
|
||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -48,35 +51,41 @@ public class StarboardServiceBean implements StarboardService {
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private EmoteManagementService emoteManagementService;
|
||||
|
||||
@Autowired
|
||||
private ConfigService configService;
|
||||
|
||||
@Autowired
|
||||
private StarboardPostManagementService starboardPostManagementService;
|
||||
private StarboardPostManagementServiceBean starboardPostManagementService;
|
||||
|
||||
@Autowired
|
||||
private StarboardConfig starboardConfig;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private StarboardPostReactorManagementService starboardPostReactorManagementService;
|
||||
private StarboardPostReactorManagementServiceBean starboardPostReactorManagementService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetManagement postTargetManagement;
|
||||
private PostTargetService postTargetManagement;
|
||||
|
||||
@Autowired
|
||||
private EmoteService emoteService;
|
||||
|
||||
@Autowired
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private StarPostConverter starPostConverter;
|
||||
|
||||
@Override
|
||||
public void createStarboardPost(CachedMessage message, List<AUser> userExceptAuthor, AUserInAServer userReacting, AUserInAServer starredUser) {
|
||||
public void createStarboardPost(CachedMessage message, List<UserDto> userExceptAuthor, UserInServerDto userReacting, UserInServerDto starredUser) {
|
||||
StarboardPostModel starboardPostModel = buildStarboardPostModel(message, userExceptAuthor.size());
|
||||
MessageToSend messageToSend = templateService.renderEmbedTemplate(STARBOARD_POST_TEMPLATE, starboardPostModel);
|
||||
PostTarget starboard = postTargetManagement.getPostTarget(STARBOARD_POSTTARGET, message.getServerId());
|
||||
PostTargetDto starboard = postTargetManagement.getPostTarget(STARBOARD_POSTTARGET, message.getServerId());
|
||||
List<CompletableFuture<Message>> completableFutures = postTargetService.sendEmbedInPostTarget(messageToSend, STARBOARD_POSTTARGET, message.getServerId());
|
||||
CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> {
|
||||
try {
|
||||
@@ -85,7 +94,7 @@ public class StarboardServiceBean implements StarboardService {
|
||||
.builder()
|
||||
.messageId(message1.getIdLong())
|
||||
.channel(starboard.getChannelReference())
|
||||
.server(userReacting.getServerReference())
|
||||
.server(userReacting.getServer())
|
||||
.build();
|
||||
StarboardPost starboardPost = starboardPostManagementService.createStarboardPost(message, starredUser, userReacting, aServerAChannelMessage);
|
||||
// TODO maybe in bulk, but numbers should be small enough
|
||||
@@ -103,13 +112,13 @@ public class StarboardServiceBean implements StarboardService {
|
||||
Member member = bot.getMemberInServer(message.getServerId(), message.getAuthorId());
|
||||
Optional<TextChannel> channel = bot.getTextChannelFromServer(message.getServerId(), message.getChannelId());
|
||||
Optional<Guild> guild = bot.getGuildById(message.getServerId());
|
||||
AChannel aChannel = AChannel.builder().id(message.getChannelId()).build();
|
||||
AUser user = AUser.builder().id(message.getAuthorId()).build();
|
||||
AServer server = AServer.builder().id(message.getServerId()).build();
|
||||
Optional<AEmote> appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount);
|
||||
ChannelDto aChannel = ChannelDto.builder().id(message.getChannelId()).build();
|
||||
UserDto user = UserDto.builder().id(message.getAuthorId()).build();
|
||||
ServerDto server = ServerDto.builder().id(message.getServerId()).build();
|
||||
Optional<EmoteDto> appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount);
|
||||
String emoteText;
|
||||
if(appropriateEmoteOptional.isPresent()) {
|
||||
AEmote emote = appropriateEmoteOptional.get();
|
||||
EmoteDto 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.");
|
||||
@@ -130,7 +139,7 @@ public class StarboardServiceBean implements StarboardService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStarboardPost(StarboardPost post, CachedMessage message, List<AUser> userExceptAuthor) {
|
||||
public void updateStarboardPost(StarboardPost post, CachedMessage message, List<UserDto> userExceptAuthor) {
|
||||
StarboardPostModel starboardPostModel = buildStarboardPostModel(message, userExceptAuthor.size());
|
||||
MessageToSend messageToSend = templateService.renderEmbedTemplate("starboard_post", starboardPostModel);
|
||||
List<CompletableFuture<Message>> futures = new ArrayList<>();
|
||||
@@ -155,14 +164,14 @@ public class StarboardServiceBean implements StarboardService {
|
||||
int count = 3;
|
||||
List<StarboardPost> starboardPosts = starboardPostManagementService.retrieveTopPosts(serverId, count);
|
||||
List<StarStatsUser> topStarGivers = starboardPostReactorManagementService.retrieveTopStarGiver(serverId, count);
|
||||
List<StarStatsPost> starStatsPosts = starboardPosts.stream().map(StarStatsPost::fromStarboardPost).collect(Collectors.toList());
|
||||
List<StarStatsPost> starStatsPosts = starboardPosts.stream().map(starboardPost -> starPostConverter.fromStarboardPost(starboardPost)).collect(Collectors.toList());
|
||||
List<StarStatsUser> topStarReceiver = starboardPostReactorManagementService.retrieveTopStarReceiver(serverId, count);
|
||||
Integer postCount = starboardPostManagementService.getPostCount(serverId);
|
||||
Integer reactionCount = starboardPostReactorManagementService.getStarCount(serverId);
|
||||
List<String> emotes = new ArrayList<>();
|
||||
for (int i = 1; i < count + 1; i++) {
|
||||
Optional<AEmote> starboardRankingEmote = getStarboardRankingEmote(serverId, i);
|
||||
AEmote emote = starboardRankingEmote.orElse(null);
|
||||
Optional<EmoteDto> starboardRankingEmote = getStarboardRankingEmote(serverId, i);
|
||||
EmoteDto emote = starboardRankingEmote.orElse(null);
|
||||
String defaultEmoji = starboardConfig.getBadge().get(i - 1);
|
||||
emotes.add(emoteService.getEmoteAsMention(emote, serverId, defaultEmoji));
|
||||
}
|
||||
@@ -178,17 +187,17 @@ public class StarboardServiceBean implements StarboardService {
|
||||
.build();
|
||||
}
|
||||
|
||||
private Optional<AEmote> getStarboardRankingEmote(Long serverId, Integer position) {
|
||||
return emoteManagementService.loadEmoteByName("starboardBadge" + position, serverId);
|
||||
private Optional<EmoteDto> getStarboardRankingEmote(Long serverId, Integer position) {
|
||||
return emoteService.getEmoteByName("starboardBadge" + position, serverId);
|
||||
}
|
||||
|
||||
private Optional<AEmote> getAppropriateEmote(Long serverId, Integer starCount) {
|
||||
private Optional<EmoteDto> getAppropriateEmote(Long serverId, Integer starCount) {
|
||||
for(int i = starboardConfig.getLvl().size(); i > 0; i--) {
|
||||
Double starMinimum = configService.getDoubleValue("starLvl" + i, serverId);
|
||||
if(starCount >= starMinimum) {
|
||||
return emoteManagementService.loadEmoteByName("star" + i, serverId);
|
||||
return emoteService.getEmoteByName("star" + i, serverId);
|
||||
}
|
||||
}
|
||||
return emoteManagementService.loadEmoteByName("star0", serverId);
|
||||
return emoteService.getEmoteByName("star0", serverId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.utility.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.MessageService;
|
||||
@@ -12,7 +12,7 @@ import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import dev.sheldan.abstracto.utility.models.database.Suggestion;
|
||||
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.SuggestionLog;
|
||||
import dev.sheldan.abstracto.utility.service.management.SuggestionManagementService;
|
||||
import dev.sheldan.abstracto.utility.service.management.SuggestionManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
@@ -35,7 +35,7 @@ public class SuggestionServiceBean implements SuggestionService {
|
||||
private static final String SUGGESTION_NO_EMOTE = "suggestionNo";
|
||||
public static final String SUGGESTIONS_TARGET = "suggestions";
|
||||
@Autowired
|
||||
private SuggestionManagementService suggestionManagementService;
|
||||
private SuggestionManagementServiceBean suggestionManagementService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
@@ -46,9 +46,6 @@ public class SuggestionServiceBean implements SuggestionService {
|
||||
@Autowired
|
||||
private Bot botService;
|
||||
|
||||
@Autowired
|
||||
private EmoteManagementService emoteManagementService;
|
||||
|
||||
@Autowired
|
||||
private EmoteService emoteService;
|
||||
|
||||
@@ -58,6 +55,9 @@ public class SuggestionServiceBean implements SuggestionService {
|
||||
@Autowired
|
||||
private SuggestionServiceBean self;
|
||||
|
||||
@Autowired
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
@Override
|
||||
public void createSuggestion(Member member, String text, SuggestionLog suggestionLog) {
|
||||
Suggestion suggestion = suggestionManagementService.createSuggestion(member, text);
|
||||
@@ -99,11 +99,11 @@ public class SuggestionServiceBean implements SuggestionService {
|
||||
suggestionLog.setOriginalChannelId(channelId);
|
||||
suggestionLog.setOriginalMessageId(originalMessageId);
|
||||
suggestionLog.setOriginalMessageUrl(MessageUtils.buildMessageUrl(serverId, channelId, originalMessageId));
|
||||
AUserInAServer suggester = suggestion.getSuggester();
|
||||
UserInServerDto suggester = userInServerConverter.fromAUserInAServer(suggestion.getSuggester());
|
||||
JDA instance = botService.getInstance();
|
||||
Guild guildById = instance.getGuildById(serverId);
|
||||
if(guildById != null) {
|
||||
Member memberById = guildById.getMemberById(suggester.getUserReference().getId());
|
||||
Member memberById = guildById.getMemberById(suggester.getUser().getId());
|
||||
if(memberById != null) {
|
||||
suggestionLog.setSuggester(memberById);
|
||||
suggestionLog.setSuggestion(suggestion);
|
||||
@@ -140,6 +140,6 @@ public class SuggestionServiceBean implements SuggestionService {
|
||||
public void validateSetup(Long serverId) {
|
||||
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_YES_EMOTE, serverId);
|
||||
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_NO_EMOTE, serverId);
|
||||
postTargetService.throwIfPostTargetIsNotDefined(SUGGESTION_YES_EMOTE, serverId);
|
||||
postTargetService.throwIfPostTargetIsNotDefined(SUGGESTIONS_TARGET, serverId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.service.MessageService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage;
|
||||
import dev.sheldan.abstracto.utility.repository.EmbeddedMessageRepository;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -18,25 +20,29 @@ import java.util.Optional;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class MessageEmbedPostManagementServiceBean implements MessageEmbedPostManagementService {
|
||||
public class MessageEmbedPostManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private EmbeddedMessageRepository embeddedMessageRepository;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private MessageService messageService;
|
||||
|
||||
@Override
|
||||
@Autowired
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
@Transactional
|
||||
public void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, AUserInAServer cause) {
|
||||
public void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, UserInServerDto cause) {
|
||||
AServer embeddedServer = AServer.builder().id(embeddedMessage.getServerId()).build();
|
||||
AChannel embeddedChannel = AChannel.builder().id(embeddedMessage.getChannelId()).build();
|
||||
AServer embeddingServer = AServer.builder().id(messageContainingEmbed.getGuild().getIdLong()).build();
|
||||
AChannel embeddingChannel = AChannel.builder().id(messageContainingEmbed.getTextChannel().getIdLong()).build();
|
||||
AUserInAServer embeddedAuthor = userManagementService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId());
|
||||
UserInServerDto authorDto = userManagementService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId());
|
||||
AUserInAServer author = userInServerConverter.fromDto(authorDto);
|
||||
AUserInAServer auserCause = userInServerConverter.fromDto(cause);
|
||||
EmbeddedMessage messageEmbedPost = EmbeddedMessage
|
||||
.builder()
|
||||
.embeddedMessageId(embeddedMessage.getMessageId())
|
||||
@@ -45,24 +51,21 @@ public class MessageEmbedPostManagementServiceBean implements MessageEmbedPostMa
|
||||
.embeddingServer(embeddingServer)
|
||||
.embeddingChannel(embeddingChannel)
|
||||
.embeddingMessageId(messageContainingEmbed.getIdLong())
|
||||
.embeddedUser(embeddedAuthor)
|
||||
.embeddingUser(cause)
|
||||
.embeddedUser(author)
|
||||
.embeddingUser(auserCause)
|
||||
.build();
|
||||
|
||||
embeddedMessageRepository.save(messageEmbedPost);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<EmbeddedMessage> findEmbeddedPostByMessageId(Long messageId) {
|
||||
return Optional.ofNullable(embeddedMessageRepository.findByEmbeddingMessageId(messageId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage) {
|
||||
embeddedMessageRepository.delete(embeddedMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void deleteEmbeddedMessageTransactional(EmbeddedMessage embeddedMessage) {
|
||||
this.deleteEmbeddedMessage(embeddedMessage);
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.utility.models.database.Reminder;
|
||||
import dev.sheldan.abstracto.utility.repository.ReminderRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -11,17 +16,25 @@ import java.time.Instant;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ReminderManagementServiceBean implements ReminderManagementService {
|
||||
public class ReminderManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private ReminderRepository reminderRepository;
|
||||
|
||||
@Override
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private UserInServerConverter userConverter;
|
||||
|
||||
public Reminder createReminder(AServerAChannelAUser userToBeReminded, String text, Instant timeToBeRemindedAt, Long messageId) {
|
||||
Reminder reminder = Reminder.builder()
|
||||
.channel(userToBeReminded.getChannel())
|
||||
.server(userToBeReminded.getGuild())
|
||||
.remindedUser(userToBeReminded.getAUserInAServer())
|
||||
.channel(channelConverter.fromDto(userToBeReminded.getChannel()))
|
||||
.server(serverConverter.fromDto(userToBeReminded.getGuild()))
|
||||
.remindedUser(userConverter.fromDto(userToBeReminded.getAUserInAServer()))
|
||||
.reminded(false)
|
||||
.text(text)
|
||||
.reminderDate(Instant.now())
|
||||
@@ -33,20 +46,17 @@ public class ReminderManagementServiceBean implements ReminderManagementService
|
||||
return reminder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reminder loadReminder(Long reminderId) {
|
||||
return reminderRepository.getOne(reminderId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReminded(Reminder reminder) {
|
||||
reminder.setReminded(true);
|
||||
reminderRepository.save(reminder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Reminder> getActiveRemindersForUser(AUserInAServer aUserInAServer) {
|
||||
return reminderRepository.getByRemindedUserAndRemindedFalse(aUserInAServer);
|
||||
public List<Reminder> getActiveRemindersForUser(UserInServerDto aUserInAServer) {
|
||||
return reminderRepository.getByRemindedUserAndRemindedFalse(userConverter.fromDto(aUserInAServer));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AServerAChannelMessage;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.repository.StarboardPostRepository;
|
||||
import dev.sheldan.abstracto.utility.repository.converter.StarStatsUserConverter;
|
||||
@@ -16,7 +19,7 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Component
|
||||
public class StarboardPostManagementServiceBean implements StarboardPostManagementService {
|
||||
public class StarboardPostManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private StarboardPostRepository repository;
|
||||
@@ -24,27 +27,32 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
|
||||
@Autowired
|
||||
private StarStatsUserConverter converter;
|
||||
|
||||
@Override
|
||||
public StarboardPost createStarboardPost(CachedMessage starredMessage, AUserInAServer starredUser, AUserInAServer starringUser, AServerAChannelMessage starboardPost) {
|
||||
@Autowired
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
public StarboardPost createStarboardPost(CachedMessage starredMessage, UserInServerDto starredUser, UserInServerDto starringUser, AServerAChannelMessage starboardPost) {
|
||||
|
||||
AUserInAServer author = userInServerConverter.fromDto(starredUser);
|
||||
StarboardPost post = StarboardPost
|
||||
.builder()
|
||||
.author(starredUser.getUserReference())
|
||||
.author(author.getUserReference())
|
||||
.postMessageId(starredMessage.getMessageId())
|
||||
.starboardMessageId(starboardPost.getMessageId())
|
||||
.starboardChannel(starboardPost.getChannel())
|
||||
.starboardChannel(channelConverter.fromDto(starboardPost.getChannel()))
|
||||
.starredDate(Instant.now())
|
||||
.build();
|
||||
repository.save(post);
|
||||
return post;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStarboardPostMessageId(StarboardPost post, Long messageId) {
|
||||
post.setStarboardMessageId(messageId);
|
||||
repository.save(post);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StarboardPost> retrieveTopPosts(Long serverId, Integer count) {
|
||||
List<StarboardPost> posts = retrieveAllPosts(serverId);
|
||||
posts.sort(Comparator.comparingInt(o -> o.getReactions().size()));
|
||||
@@ -52,39 +60,32 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
|
||||
return posts.subList(0, Math.min(count, posts.size()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StarboardPost> retrieveAllPosts(Long serverId) {
|
||||
return repository.findByStarboardChannelServerId(serverId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getPostCount(Long serverId) {
|
||||
return retrieveAllPosts(serverId).size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<StarboardPost> findByMessageId(Long messageId) {
|
||||
return Optional.ofNullable(repository.findByPostMessageId(messageId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<StarboardPost> findByStarboardPostId(Long postId) {
|
||||
return Optional.ofNullable(repository.findByStarboardMessageId(postId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStarboardPostIgnored(Long messageId, Boolean newValue) {
|
||||
StarboardPost post = repository.findByStarboardMessageId(messageId);
|
||||
post.setIgnored(newValue);
|
||||
repository.save(post);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStarboardPost(Long messageId) {
|
||||
return repository.findByStarboardMessageId(messageId) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePost(StarboardPost starboardPost) {
|
||||
repository.deleteById(starboardPost.getId());
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
||||
@@ -13,7 +15,7 @@ import org.springframework.stereotype.Component;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class StarboardPostReactorManagementServiceBean implements StarboardPostReactorManagementService {
|
||||
public class StarboardPostReactorManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private StarboardPostReactionRepository repository;
|
||||
@@ -21,38 +23,37 @@ public class StarboardPostReactorManagementServiceBean implements StarboardPostR
|
||||
@Autowired
|
||||
private StarStatsUserConverter converter;
|
||||
|
||||
@Override
|
||||
public void addReactor(StarboardPost post, AUser user) {
|
||||
@Autowired
|
||||
private UserConverter userConverter;
|
||||
|
||||
public void addReactor(StarboardPost post, UserDto user) {
|
||||
AUser aUser = userConverter.toUser(user);
|
||||
StarboardPostReaction reactor = StarboardPostReaction
|
||||
.builder()
|
||||
.starboardPost(post)
|
||||
.reactor(user)
|
||||
.reactor(aUser)
|
||||
.build();
|
||||
repository.save(reactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeReactor(StarboardPost post, AUser user) {
|
||||
repository.deleteByReactorAndStarboardPost(user, post);
|
||||
public void removeReactor(StarboardPost post, UserDto user) {
|
||||
AUser aUser = userConverter.toUser(user);
|
||||
repository.deleteByReactorAndStarboardPost(aUser, post);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeReactors(StarboardPost post) {
|
||||
repository.deleteByStarboardPost(post);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getStarCount(Long serverId) {
|
||||
return repository.getReactionCountByServer(serverId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StarStatsUser> retrieveTopStarGiver(Long serverId, Integer count) {
|
||||
List<StarStatsUserResult> starGivers = repository.findTopStarGiverInServer(serverId, count);
|
||||
return converter.convertToStarStatsUser(starGivers, serverId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StarStatsUser> retrieveTopStarReceiver(Long serverId, Integer count) {
|
||||
List<StarStatsUserResult> starReceivers = repository.retrieveTopStarReceiverInServer(serverId, count);
|
||||
return converter.convertToStarStatsUser(starReceivers, serverId);
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.utility.models.database.Suggestion;
|
||||
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
||||
import dev.sheldan.abstracto.utility.repository.SuggestionRepository;
|
||||
@@ -17,55 +20,55 @@ import org.springframework.stereotype.Component;
|
||||
import java.time.Instant;
|
||||
|
||||
@Component
|
||||
public class SuggestionManagementServiceBean implements SuggestionManagementService {
|
||||
public class SuggestionManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private SuggestionRepository suggestionRepository;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserConverter userConverter;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private UserService userService;
|
||||
|
||||
@Autowired
|
||||
private ChannelService channelService;
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Override
|
||||
public Suggestion createSuggestion(Member suggester, String text) {
|
||||
AUserInAServer user = userManagementService.loadUser(suggester);
|
||||
return this.createSuggestion(user, text);
|
||||
UserInServerDto userDto = userService.loadUser(suggester);
|
||||
return this.createSuggestion(userDto, text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Suggestion createSuggestion(AUserInAServer suggester, String text) {
|
||||
public Suggestion createSuggestion(UserInServerDto suggester, String text) {
|
||||
AUserInAServer aUserInAServer = userInServerConverter.fromDto(suggester);
|
||||
Suggestion suggestion = Suggestion
|
||||
.builder()
|
||||
.state(SuggestionState.NEW)
|
||||
.suggester(suggester)
|
||||
.suggester(aUserInAServer)
|
||||
.suggestionDate(Instant.now())
|
||||
.build();
|
||||
suggestionRepository.save(suggestion);
|
||||
return suggestion;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Suggestion getSuggestion(Long suggestionId) {
|
||||
return suggestionRepository.getOne(suggestionId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setPostedMessage(Suggestion suggestion, Message message) {
|
||||
suggestion.setMessageId(message.getIdLong());
|
||||
AChannel channel = channelManagementService.loadChannel(message.getTextChannel().getIdLong());
|
||||
suggestion.setChannel(channel);
|
||||
AServer server = serverManagementService.loadOrCreate(message.getGuild().getIdLong());
|
||||
suggestion.setServer(server);
|
||||
suggestion.setChannel(AChannel.builder().id(message.getTextChannel().getIdLong()).build());
|
||||
suggestion.setServer(AServer.builder().id(message.getGuild().getIdLong()).build());
|
||||
suggestionRepository.save(suggestion);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSuggestionState(Suggestion suggestion, SuggestionState newState) {
|
||||
suggestion.setState(newState);
|
||||
suggestionRepository.save(suggestion);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.utility.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.utility.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.utility.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.utility.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.utility.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
||||
import lombok.*;
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.utils.MessageUtils;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -20,14 +18,4 @@ public class StarStatsPost {
|
||||
return MessageUtils.buildMessageUrl(serverId ,channelId, messageId);
|
||||
}
|
||||
|
||||
public static StarStatsPost fromStarboardPost(StarboardPost starboardPost) {
|
||||
AChannel channel = starboardPost.getStarboardChannel();
|
||||
return StarStatsPost
|
||||
.builder()
|
||||
.serverId(channel.getServer().getId())
|
||||
.channelId(channel.getId())
|
||||
.messageId(starboardPost.getPostMessageId())
|
||||
.starCount(starboardPost.getReactions().size())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -11,7 +11,7 @@ import net.dv8tion.jda.api.entities.Member;
|
||||
@Setter
|
||||
@Builder
|
||||
public class StarStatsUser {
|
||||
private AUser user;
|
||||
private UserDto user;
|
||||
private Member member;
|
||||
private Integer starCount;
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
@@ -16,8 +16,8 @@ import net.dv8tion.jda.api.entities.TextChannel;
|
||||
public class StarboardPostModel extends ServerContext {
|
||||
private Member author;
|
||||
private TextChannel channel;
|
||||
private AUser user;
|
||||
private AChannel aChannel;
|
||||
private UserDto user;
|
||||
private ChannelDto aChannel;
|
||||
private CachedMessage message;
|
||||
private Integer starCount;
|
||||
private String starLevelEmote;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.utility.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
@@ -10,6 +10,6 @@ import java.util.List;
|
||||
|
||||
public interface MessageEmbedService {
|
||||
List<MessageEmbedLink> getLinksInMessage(String message);
|
||||
void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, AUserInAServer reason, Message embeddingMessage);
|
||||
void embedLink(CachedMessage cachedMessage, TextChannel target, AUserInAServer cause, Message embeddingMessage);
|
||||
void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, UserInServerDto reason, Message embeddingMessage);
|
||||
void embedLink(CachedMessage cachedMessage, TextChannel target, UserInServerDto cause, Message embeddingMessage);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.utility.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
public interface ReminderService {
|
||||
void createReminderInForUser(AUserInAServer user, String remindText, Duration remindIn, ReminderModel reminderModel);
|
||||
void createReminderInForUser(UserInServerDto user, String remindText, Duration remindIn, ReminderModel reminderModel);
|
||||
void executeReminder(Long reminderId);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package dev.sheldan.abstracto.utility.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface StarboardService {
|
||||
void createStarboardPost(CachedMessage message, List<AUser> userExceptAuthor, AUserInAServer userReacting, AUserInAServer starredUser);
|
||||
void updateStarboardPost(StarboardPost post, CachedMessage message, List<AUser> userExceptAuthor);
|
||||
void createStarboardPost(CachedMessage message, List<UserDto> userExceptAuthor, UserInServerDto userReacting, UserInServerDto starredUser);
|
||||
void updateStarboardPost(StarboardPost post, CachedMessage message, List<UserDto> userExceptAuthor);
|
||||
void removeStarboardPost(StarboardPost message);
|
||||
StarStatsModel retrieveStarStats(Long serverId);
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface MessageEmbedPostManagementService {
|
||||
void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, AUserInAServer cause);
|
||||
Optional<EmbeddedMessage> findEmbeddedPostByMessageId(Long messageId);
|
||||
void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage);
|
||||
void deleteEmbeddedMessageTransactional(EmbeddedMessage embeddedMessage);
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.utility.models.database.Reminder;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
|
||||
public interface ReminderManagementService {
|
||||
Reminder createReminder(AServerAChannelAUser userToBeReminded, String text, Instant timeToBeRemindedAt, Long messageId);
|
||||
Reminder loadReminder(Long reminderId);
|
||||
void setReminded(Reminder reminder);
|
||||
List<Reminder> getActiveRemindersForUser(AUserInAServer aUserInAServer);
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AServerAChannelMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface StarboardPostManagementService {
|
||||
StarboardPost createStarboardPost(CachedMessage starredMessage, AUserInAServer starredUser, AUserInAServer starringUser, AServerAChannelMessage starboardPost);
|
||||
void setStarboardPostMessageId(StarboardPost post, Long messageId);
|
||||
List<StarboardPost> retrieveTopPosts(Long serverId, Integer count);
|
||||
List<StarboardPost> retrieveAllPosts(Long serverId);
|
||||
Integer getPostCount(Long serverId);
|
||||
Optional<StarboardPost> findByMessageId(Long messageId);
|
||||
Optional<StarboardPost> findByStarboardPostId(Long postId);
|
||||
void setStarboardPostIgnored(Long starboardPostId, Boolean newValue);
|
||||
boolean isStarboardPost(Long starboardPostId);
|
||||
void removePost(StarboardPost starboardPost);
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface StarboardPostReactorManagementService {
|
||||
void addReactor(StarboardPost post, AUser user);
|
||||
void removeReactor(StarboardPost post, AUser user);
|
||||
void removeReactors(StarboardPost post);
|
||||
Integer getStarCount(Long serverId);
|
||||
List<StarStatsUser> retrieveTopStarGiver(Long serverId, Integer count);
|
||||
List<StarStatsUser> retrieveTopStarReceiver(Long serverId, Integer count);
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package dev.sheldan.abstracto.utility.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.utility.models.database.Suggestion;
|
||||
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
public interface SuggestionManagementService {
|
||||
Suggestion createSuggestion(Member suggester, String text);
|
||||
Suggestion createSuggestion(AUserInAServer suggester, String text);
|
||||
Suggestion getSuggestion(Long suggestionId);
|
||||
void setPostedMessage(Suggestion suggestion, Message message);
|
||||
void setSuggestionState(Suggestion suggestion, SuggestionState newState);
|
||||
}
|
||||
32
abstracto-application/core/core-db-models/pom.xml
Normal file
32
abstracto-application/core/core-db-models/pom.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||
<artifactId>core</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<artifactId>core-db-models</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.dv8tion</groupId>
|
||||
<artifactId>JDA</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>club.minnced</groupId>
|
||||
<artifactId>opus-java</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
@@ -38,13 +38,5 @@ public class AChannel implements SnowFlake {
|
||||
@Column
|
||||
private Boolean deleted;
|
||||
|
||||
public static AChannelType getAChannelType(ChannelType type) {
|
||||
switch (type) {
|
||||
case TEXT: return AChannelType.TEXT;
|
||||
case PRIVATE: return AChannelType.DM;
|
||||
case VOICE: return AChannelType.VOICE;
|
||||
case CATEGORY: return AChannelType.CATEGORY;
|
||||
default: return AChannelType.UNKOWN;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Entity
|
||||
@Table(name="channelGroup")
|
||||
@@ -1,6 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
public enum AChannelType {
|
||||
TEXT, DM, VOICE, NEWS, CATEGORY, UNKOWN
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.util.List;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class AUser {
|
||||
public class AUser implements SnowFlake {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="posttarget")
|
||||
@@ -0,0 +1,46 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ChannelConverter {
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
public ChannelDto fromChannel(AChannel channel) {
|
||||
ServerDto server = ServerDto.builder().id(channel.getServer().getId()).build();
|
||||
return ChannelDto
|
||||
.builder()
|
||||
.id(channel.getId())
|
||||
.deleted(channel.getDeleted())
|
||||
.server(server)
|
||||
.build();
|
||||
}
|
||||
|
||||
public ChannelDto fromTextChannel(TextChannel channel) {
|
||||
|
||||
return ChannelDto
|
||||
.builder()
|
||||
.id(channel.getIdLong())
|
||||
.deleted(false)
|
||||
.server(ServerDto.builder().id(channel.getGuild().getIdLong()).build())
|
||||
.build();
|
||||
}
|
||||
|
||||
public AChannel fromDto(ChannelDto channelDto) {
|
||||
AServer server = AServer.builder().id(channelDto.getServer().getId()).build();
|
||||
return AChannel
|
||||
.builder()
|
||||
.deleted(channelDto.getDeleted())
|
||||
.server(server)
|
||||
.id(channelDto.getId())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ChannelGroupConverter {
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverModelConverter;
|
||||
|
||||
public ChannelGroupDto fromChannelGroup(AChannelGroup channelGroup) {
|
||||
ServerDto server = serverModelConverter.convertServer(channelGroup.getServer());
|
||||
return ChannelGroupDto
|
||||
.builder()
|
||||
.groupName(channelGroup.getGroupName())
|
||||
.server(server)
|
||||
.build();
|
||||
}
|
||||
|
||||
public AChannelGroup fromChannelGroup(ChannelGroupDto channelGroup) {
|
||||
AServer server = serverModelConverter.fromDto(channelGroup.getServer());
|
||||
return AChannelGroup
|
||||
.builder()
|
||||
.groupName(channelGroup.getGroupName())
|
||||
.server(server)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class CommandConverter {
|
||||
|
||||
public CommandDto fromCommand(ACommand command) {
|
||||
return CommandDto
|
||||
.builder()
|
||||
.name(command.getName())
|
||||
.id(command.getId())
|
||||
.build();
|
||||
}
|
||||
|
||||
public ACommand toCommand(CommandDto command) {
|
||||
return ACommand
|
||||
.builder()
|
||||
.name(command.getName())
|
||||
.id(command.getId())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class EmoteConverter {
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
public EmoteDto fromEmote(AEmote emote) {
|
||||
return EmoteDto
|
||||
.builder()
|
||||
.animated(emote.getAnimated())
|
||||
.custom(emote.getCustom())
|
||||
.emoteId(emote.getEmoteId())
|
||||
.emoteKey(emote.getEmoteKey())
|
||||
.name(emote.getName())
|
||||
.Id(emote.getId())
|
||||
.server(serverConverter.convertServer(emote.getServerRef()))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AModule;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ModuleDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ModuleConverter {
|
||||
|
||||
@Autowired
|
||||
private CommandConverter commandConverter;
|
||||
|
||||
public ModuleDto fromModule(AModule module) {
|
||||
List<CommandDto> commands = new ArrayList<>();
|
||||
module.getCommands().forEach(command -> {
|
||||
commands.add(commandConverter.fromCommand(command));
|
||||
});
|
||||
return ModuleDto.builder().name(module.getName()).id(module.getId()).commands(commands).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.PostTarget;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.PostTargetDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class PostTargetConverter {
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
public PostTargetDto fromPostTarget(PostTarget postTarget) {
|
||||
ServerDto convertedServer = serverConverter.convertServer(postTarget.getServerReference());
|
||||
ChannelDto convertedChannel = channelConverter.fromChannel(postTarget.getChannelReference());
|
||||
return PostTargetDto
|
||||
.builder()
|
||||
.id(postTarget.getId())
|
||||
.name(postTarget.getName())
|
||||
.serverReference(convertedServer)
|
||||
.channelReference(convertedChannel)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ARole;
|
||||
import dev.sheldan.abstracto.core.models.dto.RoleDto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class RoleConverter {
|
||||
public RoleDto fromARole(ARole role) {
|
||||
return RoleDto
|
||||
.builder()
|
||||
.id(role.getId())
|
||||
.name(role.getName())
|
||||
.build();
|
||||
}
|
||||
|
||||
public ARole fromDto(RoleDto role) {
|
||||
return ARole
|
||||
.builder()
|
||||
.id(role.getId())
|
||||
.name(role.getName())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ServerConverter {
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
public ServerDto convertServer(AServer server) {
|
||||
List<ChannelDto> channels = new ArrayList<>();
|
||||
server.getChannels().forEach(channel -> {
|
||||
channels.add(channelConverter.fromChannel(channel));
|
||||
});
|
||||
|
||||
List<UserInServerDto> users = new ArrayList<>();
|
||||
server.getUsers().forEach(aUserInAServer -> {
|
||||
users.add(userInServerConverter.fromAUserInAServer(aUserInAServer));
|
||||
});
|
||||
return ServerDto
|
||||
.builder()
|
||||
.id(server.getId())
|
||||
.channels(channels)
|
||||
.users(users)
|
||||
.name(server.getName())
|
||||
.build();
|
||||
}
|
||||
|
||||
public AServer fromDto(ServerDto serverDto) {
|
||||
List<AChannel> channels = new ArrayList<>();
|
||||
serverDto.getChannels().forEach(channelDto -> {
|
||||
channels.add(channelConverter.fromDto(channelDto));
|
||||
});
|
||||
|
||||
List<AUserInAServer> users = new ArrayList<>();
|
||||
serverDto.getUsers().forEach(userInServerDto -> {
|
||||
users.add(userInServerConverter.fromDto(userInServerDto));
|
||||
});
|
||||
return AServer
|
||||
.builder()
|
||||
.name(serverDto.getName())
|
||||
.id(serverDto.getId())
|
||||
.users(users)
|
||||
.channels(channels)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class UserConverter {
|
||||
|
||||
public UserDto fromAUser(AUser user) {
|
||||
return UserDto.builder().id(user.getId()).build();
|
||||
}
|
||||
|
||||
public UserDto fromMember(Member member) {
|
||||
return UserDto.builder().id(member.getIdLong()).build();
|
||||
}
|
||||
|
||||
public AUser toUser(UserDto userDto) {
|
||||
return AUser.builder().id(userDto.getId()).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class UserInServerConverter {
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private UserConverter userConverter;
|
||||
|
||||
public UserInServerDto fromAUserInAServer(AUserInAServer userInAServer) {
|
||||
ServerDto server = ServerDto.builder().id(userInAServer.getServerReference().getId()).build();
|
||||
UserDto user = userConverter.fromAUser(userInAServer.getUserReference());
|
||||
return UserInServerDto
|
||||
.builder()
|
||||
.server(server)
|
||||
.user(user)
|
||||
.userInServerId(userInAServer.getUserInServerId())
|
||||
.build();
|
||||
}
|
||||
|
||||
public AUserInAServer fromDto(UserInServerDto userInServerDto) {
|
||||
AUser user = userConverter.toUser(userInServerDto.getUser());
|
||||
AServer server = AServer.builder().id(userInServerDto.getServer().getId()).build();
|
||||
return AUserInAServer
|
||||
.builder()
|
||||
.userInServerId(userInServerDto.getUserInServerId())
|
||||
.serverReference(server)
|
||||
.userReference(user)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelDto implements SnowFlake {
|
||||
public Long id;
|
||||
private Boolean deleted;
|
||||
private ServerDto server;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelGroupCommandDto {
|
||||
private Long commandInGroupId;
|
||||
private CommandDto command;
|
||||
private ChannelGroupDto group;
|
||||
private Boolean enabled;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelGroupDto {
|
||||
|
||||
private Long id;
|
||||
|
||||
private String groupName;
|
||||
|
||||
private ServerDto server;
|
||||
|
||||
private List<ChannelDto> channels;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AModule;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CommandDto {
|
||||
private Long id;
|
||||
private String name;
|
||||
private AModule module;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class EmoteDto {
|
||||
private Integer Id;
|
||||
private String name;
|
||||
private String emoteKey;
|
||||
private Long emoteId;
|
||||
private Boolean animated;
|
||||
private Boolean custom;
|
||||
private ServerDto server;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ModuleDto {
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
private List<CommandDto> commands = new ArrayList<>();
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class PostTargetDto {
|
||||
private Long id;
|
||||
private String name;
|
||||
private ChannelDto channelReference;
|
||||
private ServerDto serverReference;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class RoleDto implements SnowFlake {
|
||||
private Long id;
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ServerDto implements SnowFlake {
|
||||
private Long id;
|
||||
private String name;
|
||||
private List<ChannelDto> channels;
|
||||
private List<UserInServerDto> users;
|
||||
private List<RoleDto> roles;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class UserDto implements SnowFlake {
|
||||
private Long id;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user