mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-07-04 12:11:33 +00:00
added rework of model split, not completely done, a lot of questions open (converters evaluate lazy evaluated properties (might need addition of different convert methods), hen egg problem with channel and server for converters, AModels still need to be exposed regardless, because else database cannot be used in same schema (jpa needs the objects), api need to be checked, to not convert all the time between objects for no reason)
This commit is contained in:
@@ -17,6 +17,12 @@
|
|||||||
<artifactId>moderation-int</artifactId>
|
<artifactId>moderation-int</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||||
|
<artifactId>core-db-models</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</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.CommandConfiguration;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
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.Moderation;
|
||||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
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.moderation.service.BanService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -28,6 +31,13 @@ public class Ban extends AbstractConditionableCommand {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerModelConverter userConverter;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandContext commandContext) {
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
@@ -35,11 +45,12 @@ public class Ban extends AbstractConditionableCommand {
|
|||||||
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
|
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
|
||||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||||
|
|
||||||
BanLog banLogModel = (BanLog) ContextConverter.fromCommandContext(commandContext, BanLog.class);
|
BanLogModel banLogModel = (BanLogModel) ContextConverter.fromCommandContext(commandContext, BanLogModel.class);
|
||||||
banLogModel.setBannedUser(member);
|
banLogModel.setBannedUser(userConverter.fromMember(member));
|
||||||
banLogModel.setBanningUser(commandContext.getAuthor());
|
banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||||
banLogModel.setReason(reason);
|
banLogModel.setReason(reason);
|
||||||
banService.banMember(member, reason, banLogModel);
|
banService.banMember(member, reason);
|
||||||
|
banService.sendBanLog(banLogModel);
|
||||||
return CommandResult.fromSuccess();
|
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.CommandConfiguration;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
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.Moderation;
|
||||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
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.moderation.service.BanService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -25,17 +27,25 @@ public class BanId extends AbstractConditionableCommand {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private BanService banService;
|
private BanService banService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerModelConverter userConverter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandContext commandContext) {
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
Long userId = (Long) parameters.get(0);
|
Long userId = (Long) parameters.get(0);
|
||||||
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
|
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
|
||||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
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.setBannedUserId(userId);
|
||||||
banLogModel.setBanningUser(commandContext.getAuthor());
|
banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||||
banLogModel.setReason(reason);
|
banLogModel.setReason(reason);
|
||||||
banService.banMember(userId, commandContext.getGuild().getIdLong(), reason, banLogModel);
|
banService.banMember(userId, commandContext.getGuild().getIdLong(), reason);
|
||||||
|
banService.sendBanIdLog(banLogModel);
|
||||||
|
|
||||||
|
|
||||||
return CommandResult.fromSuccess();
|
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.CommandConfiguration;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
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.Moderation;
|
||||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
|
import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
|
||||||
@@ -26,6 +27,9 @@ public class Kick extends AbstractConditionableCommand {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private KickServiceBean kickService;
|
private KickServiceBean kickService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerModelConverter userConverter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandContext commandContext) {
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
|
|
||||||
@@ -35,10 +39,11 @@ public class Kick extends AbstractConditionableCommand {
|
|||||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||||
|
|
||||||
KickLogModel kickLogModel = (KickLogModel) ContextConverter.fromCommandContext(commandContext, KickLogModel.class);
|
KickLogModel kickLogModel = (KickLogModel) ContextConverter.fromCommandContext(commandContext, KickLogModel.class);
|
||||||
kickLogModel.setKickedUser(member);
|
kickLogModel.setKickedUser(userConverter.fromMember(member));
|
||||||
kickLogModel.setKickingUser(commandContext.getAuthor());
|
kickLogModel.setKickingUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||||
kickLogModel.setReason(reason);
|
kickLogModel.setReason(reason);
|
||||||
kickService.kickMember(member, reason, kickLogModel);
|
kickService.kickMember(member, reason);
|
||||||
|
kickService.sendKickLog(kickLogModel);
|
||||||
return CommandResult.fromSuccess();
|
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.CommandConfiguration;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
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.Moderation;
|
||||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
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.moderation.service.WarnService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -23,27 +24,26 @@ import java.util.List;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class Warn extends AbstractConditionableCommand {
|
public class Warn extends AbstractConditionableCommand {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private UserManagementService userManagementService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private WarnService warnService;
|
private WarnService warnService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WarnConverter warnConverter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandContext commandContext) {
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
Member member = (Member) parameters.get(0);
|
Member member = (Member) parameters.get(0);
|
||||||
String defaultReason = templateService.renderTemplateWithMap("warn_default_reason", null);
|
String defaultReason = templateService.renderTemplateWithMap("warn_default_reason", null);
|
||||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||||
WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class);
|
WarnLogModel warnLogModel = (WarnLogModel) ContextConverter.fromCommandContext(commandContext, WarnLogModel.class);
|
||||||
warnLogModel.setWarnedUser(member);
|
|
||||||
warnLogModel.setMessage(commandContext.getMessage());
|
warnLogModel.setMessage(commandContext.getMessage());
|
||||||
warnLogModel.setReason(reason);
|
WarnDto warnDto = warnService.warnUser(member, commandContext.getAuthor(), reason);
|
||||||
warnLogModel.setWarningUser(commandContext.getAuthor());
|
warnLogModel.setWarning(warnConverter.convertFromWarnDto(warnDto));
|
||||||
warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel);
|
warnService.sendWarnLog(warnLogModel);
|
||||||
return CommandResult.fromSuccess();
|
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.listener.JoinListener;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
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.moderation.config.ModerationFeatures;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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 USER_JOIN_TEMPLATE = "user_join";
|
||||||
private static final String JOIN_LOG_TARGET = "joinLog";
|
private static final String JOIN_LOG_TARGET = "joinLog";
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ServerManagementService serverManagementService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
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.listener.LeaveListener;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
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.moderation.config.ModerationFeatures;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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 USER_LEAVE_TEMPLATE = "user_leave";
|
||||||
private static final String LEAVE_LOG_TARGET = "leaveLog";
|
private static final String LEAVE_LOG_TARGET = "leaveLog";
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ServerManagementService serverManagementService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package dev.sheldan.abstracto.moderation.models.database;
|
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.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
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.models.context.ServerContext;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
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 dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.Guild;
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
@@ -18,8 +20,9 @@ import java.util.Optional;
|
|||||||
public class BanServiceBean implements BanService {
|
public class BanServiceBean implements BanService {
|
||||||
|
|
||||||
private static final String BAN_LOG_TEMPLATE = "ban_log";
|
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_LOG_TARGET = "banLog";
|
||||||
|
private static final String BAN_ID_LOG_TEMPLATE = "banid_log";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Bot bot;
|
private Bot bot;
|
||||||
|
|
||||||
@@ -30,17 +33,25 @@ public class BanServiceBean implements BanService {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Override
|
@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);
|
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
|
@Override
|
||||||
public void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog) {
|
public void banMember(Long guildId, Long userId, String reason) {
|
||||||
banUser(guildId, userId, reason);
|
this.banUser(guildId, userId, reason);
|
||||||
String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLog);
|
}
|
||||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, guildId);
|
|
||||||
|
@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) {
|
private void banUser(Long guildId, Long userId, String reason) {
|
||||||
|
|||||||
@@ -29,18 +29,18 @@ public class KickServiceBean implements KickService {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void kickMember(Member member, String reason, KickLogModel kickLogModel) {
|
public void kickMember(Member member, String reason) {
|
||||||
Optional<Guild> guildById = bot.getGuildById(kickLogModel.getGuild().getIdLong());
|
Optional<Guild> guildById = bot.getGuildById(member.getGuild().getIdLong());
|
||||||
if(guildById.isPresent()) {
|
if(guildById.isPresent()) {
|
||||||
guildById.get().kick(member, reason).queue();
|
guildById.get().kick(member, reason).queue();
|
||||||
this.sendKickLog(kickLogModel);
|
|
||||||
} else {
|
} else {
|
||||||
log.warn("Not able to kick. Guild {} not found.", 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", kickLogModel.getMember().getIdLong(), kickLogModel.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);
|
String warnLogMessage = templateService.renderTemplate(KICK_LOG_TEMPLATE, kickLogModel);
|
||||||
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, kickLogModel.getServer().getId());
|
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, kickLogModel.getServer().getId());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.moderation.service;
|
package dev.sheldan.abstracto.moderation.service;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
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 dev.sheldan.abstracto.core.service.Bot;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
@@ -28,7 +28,7 @@ public class SlowModeServiceBean implements SlowModeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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());
|
Optional<TextChannel> textChannelOptional = bot.getTextChannelFromServer(channel.getServer().getId(), channel.getId());
|
||||||
if(textChannelOptional.isPresent()) {
|
if(textChannelOptional.isPresent()) {
|
||||||
TextChannel textChannel = textChannelOptional.get();
|
TextChannel textChannel = textChannelOptional.get();
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
package dev.sheldan.abstracto.moderation.service;
|
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.exception.UserException;
|
||||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
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.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
|
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotificationModel;
|
||||||
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.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
@@ -33,13 +33,10 @@ public class WarnServiceBean implements WarnService {
|
|||||||
|
|
||||||
public static final String WARN_LOG_TARGET = "warnLog";
|
public static final String WARN_LOG_TARGET = "warnLog";
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserManagementService userManagementService;
|
private UserService userService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private WarnManagementService warnManagementService;
|
private WarnManagementServiceBean warnManagementService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ServerManagementService serverManagementService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PostTargetService postTargetService;
|
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_LOG_TEMPLATE = "warn_log";
|
||||||
private static final String WARN_NOTIFICATION_TEMPLATE = "warn_notification";
|
private static final String WARN_NOTIFICATION_TEMPLATE = "warn_notification";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WarnConverter warnConverter;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void warnUser(AUserInAServer warnedAUserInAServer, AUserInAServer warningAUserInAServer, String reason, WarnLog warnLog) {
|
public WarnDto warnUser(UserInServerDto warnedAUserInAServer, UserInServerDto warningAUserInAServer, String reason) {
|
||||||
AUser warningAUser = warningAUserInAServer.getUserReference();
|
UserDto warningAUser = warningAUserInAServer.getUser();
|
||||||
AUser warnedAUser = warnedAUserInAServer.getUserReference();
|
UserDto warnedAUser = warnedAUserInAServer.getUser();
|
||||||
AServer serverOfWarning = warnedAUserInAServer.getServerReference();
|
ServerDto serverOfWarning = warnedAUserInAServer.getServer();
|
||||||
log.info("User {} is warning {} in server {} because of {}", warningAUser.getId(), warnedAUser.getId(), serverOfWarning.getId(), reason);
|
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();
|
JDA instance = bot.getInstance();
|
||||||
User userBeingWarned = instance.getUserById(warnedAUser.getId());
|
User userBeingWarned = instance.getUserById(warnedAUser.getId());
|
||||||
Optional<Guild> guildById = bot.getGuildById(serverOfWarning.getId());
|
Optional<Guild> guildById = bot.getGuildById(serverOfWarning.getId());
|
||||||
@@ -67,11 +70,9 @@ public class WarnServiceBean implements WarnService {
|
|||||||
if(guildById.isPresent()) {
|
if(guildById.isPresent()) {
|
||||||
guildName = guildById.get().getName();
|
guildName = guildById.get().getName();
|
||||||
}
|
}
|
||||||
warnLog.setWarning(warning);
|
WarnNotificationModel warnNotificationModel = WarnNotificationModel.builder().warning(warnConverter.convertFromWarnDto(warning)).serverName(guildName).build();
|
||||||
this.sendWarnLog(warnLog);
|
|
||||||
WarnNotification warnNotification = WarnNotification.builder().warning(warning).serverName(guildName).build();
|
|
||||||
if(userBeingWarned != null) {
|
if(userBeingWarned != null) {
|
||||||
String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotification);
|
String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotificationModel);
|
||||||
CompletableFuture<Message> messageFuture = new CompletableFuture<>();
|
CompletableFuture<Message> messageFuture = new CompletableFuture<>();
|
||||||
|
|
||||||
// TODO the person executing this, is unaware that the message failed
|
// 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());
|
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()));
|
throw new UserException(String.format("Unable to find user %s.", warnedAUser.getId()));
|
||||||
}
|
}
|
||||||
|
return warning;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void warnUser(Member warnedMember, Member warningMember, String reason, WarnLog warnLog) {
|
public WarnDto warnUser(Member warnedMember, Member warningMember, String reason) {
|
||||||
AUserInAServer warnedAUser = userManagementService.loadUser(warnedMember);
|
UserInServerDto warnedAUser = userService.loadUser(warnedMember.getGuild().getIdLong(), warnedMember.getIdLong());
|
||||||
AUserInAServer warningAUser = userManagementService.loadUser(warningMember);
|
UserInServerDto warningAUser = userService.loadUser(warningMember.getGuild().getIdLong(), warningMember.getIdLong());
|
||||||
this.warnUser(warnedAUser, warningAUser, reason, warnLog);
|
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);
|
String warnLogMessage = templateService.renderTemplate(WARN_LOG_TEMPLATE, warnLogModel);
|
||||||
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, warnLogModel.getServer().getId());
|
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, warnLogModel.getServer().getId());
|
||||||
MessageToSend message = templateService.renderEmbedTemplate("warn_log", warnLogModel);
|
MessageToSend message = templateService.renderEmbedTemplate("warn_log", warnLogModel);
|
||||||
|
|||||||
@@ -1,21 +1,25 @@
|
|||||||
package dev.sheldan.abstracto.moderation.service.management;
|
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.database.Warning;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||||
import dev.sheldan.abstracto.moderation.repository.WarnRepository;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class WarnManagementServiceBean implements WarnManagementService {
|
public class WarnManagementServiceBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private WarnRepository warnRepository;
|
private WarnRepository warnRepository;
|
||||||
|
|
||||||
@Override
|
@Autowired
|
||||||
public Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) {
|
private WarnConverter warnConverter;
|
||||||
|
|
||||||
|
public WarnDto createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) {
|
||||||
Warning warning = Warning.builder()
|
Warning warning = Warning.builder()
|
||||||
.reason(reason)
|
.reason(reason)
|
||||||
.warnedUser(warnedAUser)
|
.warnedUser(warnedAUser)
|
||||||
@@ -23,6 +27,6 @@ public class WarnManagementServiceBean implements WarnManagementService {
|
|||||||
.warnDate(Instant.now())
|
.warnDate(Instant.now())
|
||||||
.build();
|
.build();
|
||||||
warnRepository.save(warning);
|
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.moderation=false
|
||||||
abstracto.features.warnings=false
|
abstracto.features.warnings=false
|
||||||
abstracto.features.logging=true
|
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;
|
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||||
|
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
|
||||||
@Getter @SuperBuilder @Setter
|
@Getter
|
||||||
public class BanIdLog extends UserInitiatedServerContext {
|
@SuperBuilder
|
||||||
|
@Setter
|
||||||
|
public class BanIdLogModel extends UserInitiatedServerContext {
|
||||||
private String reason;
|
private String reason;
|
||||||
private Member banningUser;
|
private UserInServerModel banningUser;
|
||||||
private Long bannedUserId;
|
private Long bannedUserId;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,18 @@
|
|||||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||||
|
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
|
||||||
@Getter @SuperBuilder @Setter
|
@Getter
|
||||||
public class BanLog extends UserInitiatedServerContext {
|
@SuperBuilder
|
||||||
|
@Setter
|
||||||
|
public class BanLogModel extends UserInitiatedServerContext {
|
||||||
|
|
||||||
private String reason;
|
private String reason;
|
||||||
private Member banningUser;
|
private UserInServerModel banningUser;
|
||||||
private Member bannedUser;
|
private UserInServerModel bannedUser;
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,17 @@
|
|||||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||||
|
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
|
||||||
@Getter @SuperBuilder @Setter
|
@Getter
|
||||||
|
@SuperBuilder
|
||||||
|
@Setter
|
||||||
public class KickLogModel extends UserInitiatedServerContext {
|
public class KickLogModel extends UserInitiatedServerContext {
|
||||||
private String reason;
|
private String reason;
|
||||||
private Member kickingUser;
|
private UserInServerModel kickingUser;
|
||||||
private Member kickedUser;
|
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;
|
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Value;
|
import lombok.Value;
|
||||||
|
|
||||||
@Value @Builder
|
@Value
|
||||||
public class WarnNotification {
|
@Builder
|
||||||
private Warning warning;
|
public class WarnNotificationModel {
|
||||||
|
private WarnModel warning;
|
||||||
private String serverName;
|
private String serverName;
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
package dev.sheldan.abstracto.moderation.service;
|
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;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
|
||||||
public interface BanService {
|
public interface BanService {
|
||||||
void banMember(Member member, String reason, ServerContext banLog);
|
void banMember(Member member, String reason);
|
||||||
void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog);
|
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;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
|
||||||
public interface KickService {
|
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;
|
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 net.dv8tion.jda.api.entities.TextChannel;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
public interface SlowModeService {
|
public interface SlowModeService {
|
||||||
void setSlowMode(TextChannel channel, Duration duration);
|
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;
|
package dev.sheldan.abstracto.moderation.service;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
|
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
|
||||||
|
|
||||||
public interface WarnService {
|
public interface WarnService {
|
||||||
void warnUser(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason, WarnLog warnLog);
|
WarnDto warnUser(UserInServerDto warnedAUser, UserInServerDto warningAUser, String reason);
|
||||||
void warnUser(Member warnedUser, Member warningUser, String reason, WarnLog warnLog);
|
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.HelpInfo;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
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.config.UtilityFeatures;
|
||||||
import dev.sheldan.abstracto.utility.Utility;
|
import dev.sheldan.abstracto.utility.Utility;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel;
|
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();
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
Duration remindTime = (Duration) parameters.get(0);
|
Duration remindTime = (Duration) parameters.get(0);
|
||||||
String text = (String) parameters.get(1);
|
String text = (String) parameters.get(1);
|
||||||
AUserInAServer aUserInAServer = commandContext.getUserInitiatedContext().getAUserInAServer();
|
UserInServerDto aUserInAServer = commandContext.getUserInitiatedContext().getAUserInAServer();
|
||||||
ReminderModel remindModel = (ReminderModel) ContextConverter.fromCommandContext(commandContext, ReminderModel.class);
|
ReminderModel remindModel = (ReminderModel) ContextConverter.fromCommandContext(commandContext, ReminderModel.class);
|
||||||
remindModel.setMessage(commandContext.getMessage());
|
remindModel.setMessage(commandContext.getMessage());
|
||||||
remindModel.setRemindText(text);
|
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.config.UtilityFeatures;
|
||||||
import dev.sheldan.abstracto.utility.models.database.Reminder;
|
import dev.sheldan.abstracto.utility.models.database.Reminder;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.reminder.RemindersModel;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ import java.util.List;
|
|||||||
public class Reminders extends AbstractConditionableCommand {
|
public class Reminders extends AbstractConditionableCommand {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ReminderManagementService reminderManagementService;
|
private ReminderManagementServiceBean reminderManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ChannelService channelService;
|
private ChannelService channelService;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.utility.config;
|
package dev.sheldan.abstracto.utility.config;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.listener.ServerConfigListener;
|
import dev.sheldan.abstracto.core.listener.ServerConfigListener;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||||
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
|
import dev.sheldan.abstracto.core.service.ConfigService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -15,13 +15,13 @@ public class StarboardConfigListener implements ServerConfigListener {
|
|||||||
private StarboardConfig starboardConfig;
|
private StarboardConfig starboardConfig;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigManagementService configManagementService;
|
private ConfigService configManagementService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateServerConfig(AServer server) {
|
public void updateServerConfig(ServerDto server) {
|
||||||
for (int i = 0; i < starboardConfig.getLvl().size(); i++) {
|
for (int i = 0; i < starboardConfig.getLvl().size(); i++) {
|
||||||
Integer value = starboardConfig.getLvl().get(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;
|
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.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.MessageCache;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
|
||||||
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
|
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
|
||||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||||
import dev.sheldan.abstracto.utility.service.MessageEmbedService;
|
import dev.sheldan.abstracto.utility.service.MessageEmbedService;
|
||||||
@@ -25,7 +25,7 @@ public class MessageEmbedListener implements MessageReceivedListener {
|
|||||||
public static final String MESSAGE_EMBED_TEMPLATE = "message";
|
public static final String MESSAGE_EMBED_TEMPLATE = "message";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserManagementService userManagementService;
|
private UserService userManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageEmbedService messageEmbedService;
|
private MessageEmbedService messageEmbedService;
|
||||||
@@ -36,7 +36,7 @@ public class MessageEmbedListener implements MessageReceivedListener {
|
|||||||
List<MessageEmbedLink> links = messageEmbedService.getLinksInMessage(messageRaw);
|
List<MessageEmbedLink> links = messageEmbedService.getLinksInMessage(messageRaw);
|
||||||
for (MessageEmbedLink messageEmbedLink : links) {
|
for (MessageEmbedLink messageEmbedLink : links) {
|
||||||
messageRaw = messageRaw.replace(messageEmbedLink.getWholeUrl(), "");
|
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 -> {
|
messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId()).thenAccept(cachedMessage -> {
|
||||||
messageEmbedService.embedLink(cachedMessage, message.getTextChannel(), cause, message);
|
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.listener.ReactedAddedListener;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
|
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
import dev.sheldan.abstracto.core.service.MessageService;
|
||||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
|
||||||
import dev.sheldan.abstracto.core.utils.EmoteUtils;
|
import dev.sheldan.abstracto.core.utils.EmoteUtils;
|
||||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||||
import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.Emote;
|
import net.dv8tion.jda.api.entities.Emote;
|
||||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||||
@@ -26,31 +26,31 @@ public class MessageEmbedRemovalReactionListener implements ReactedAddedListener
|
|||||||
public static final String REMOVAL_EMOTE = "removeEmbed";
|
public static final String REMOVAL_EMOTE = "removeEmbed";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmoteManagementService emoteManagementService;
|
private EmoteService emoteManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Bot bot;
|
private Bot bot;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageEmbedPostManagementService messageEmbedPostManagementService;
|
private MessageEmbedPostManagementServiceBean messageEmbedPostManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageService messageService;
|
private MessageService messageService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void executeReactionAdded(CachedMessage message, MessageReaction reaction, AUserInAServer userAdding) {
|
public void executeReactionAdded(CachedMessage message, MessageReaction reaction, UserInServerDto userAdding) {
|
||||||
Long guildId = message.getServerId();
|
Long guildId = message.getServerId();
|
||||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(REMOVAL_EMOTE, guildId);
|
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(REMOVAL_EMOTE, guildId);
|
||||||
if(aEmote.isPresent()) {
|
if(aEmote.isPresent()) {
|
||||||
AEmote emote = aEmote.get();
|
EmoteDto emote = aEmote.get();
|
||||||
MessageReaction.ReactionEmote reactionEmote = reaction.getReactionEmote();
|
MessageReaction.ReactionEmote reactionEmote = reaction.getReactionEmote();
|
||||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
||||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
||||||
Optional<EmbeddedMessage> embeddedMessageOptional = messageEmbedPostManagementService.findEmbeddedPostByMessageId(message.getMessageId());
|
Optional<EmbeddedMessage> embeddedMessageOptional = messageEmbedPostManagementService.findEmbeddedPostByMessageId(message.getMessageId());
|
||||||
if(embeddedMessageOptional.isPresent()) {
|
if(embeddedMessageOptional.isPresent()) {
|
||||||
EmbeddedMessage embeddedMessage = embeddedMessageOptional.get();
|
EmbeddedMessage embeddedMessage = embeddedMessageOptional.get();
|
||||||
if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|
if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUser().getId())
|
||||||
|| embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|
|| embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUser().getId())
|
||||||
) {
|
) {
|
||||||
messageService.deleteMessageInChannelInServer(message.getServerId(), message.getChannelId(), message.getMessageId()).thenAccept(aVoid -> {
|
messageService.deleteMessageInChannelInServer(message.getServerId(), message.getChannelId(), message.getMessageId()).thenAccept(aVoid -> {
|
||||||
messageEmbedPostManagementService.deleteEmbeddedMessageTransactional(embeddedMessage);
|
messageEmbedPostManagementService.deleteEmbeddedMessageTransactional(embeddedMessage);
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
package dev.sheldan.abstracto.utility.listener.starboard;
|
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.ReactedAddedListener;
|
||||||
import dev.sheldan.abstracto.core.listener.ReactedRemovedListener;
|
import dev.sheldan.abstracto.core.listener.ReactedRemovedListener;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
||||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
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.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.core.utils.EmoteUtils;
|
||||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
||||||
import dev.sheldan.abstracto.utility.service.StarboardService;
|
import dev.sheldan.abstracto.utility.service.StarboardService;
|
||||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService;
|
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean;
|
||||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementService;
|
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementServiceBean;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.Emote;
|
import net.dv8tion.jda.api.entities.Emote;
|
||||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||||
@@ -36,7 +36,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
|||||||
public static final String STAR_EMOTE = "star";
|
public static final String STAR_EMOTE = "star";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmoteManagementService emoteManagementService;
|
private EmoteService emoteManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Bot bot;
|
private Bot bot;
|
||||||
@@ -45,30 +45,30 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
|||||||
private MessageCache messageCache;
|
private MessageCache messageCache;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigManagementService configManagementService;
|
private ConfigService configManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardService starboardService;
|
private StarboardService starboardService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostManagementService starboardPostManagementService;
|
private StarboardPostManagementServiceBean starboardPostManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostReactorManagementService starboardPostReactorManagementService;
|
private StarboardPostReactorManagementServiceBean starboardPostReactorManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserManagementService userManagementService;
|
private UserService userManagementService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, AUserInAServer userAdding) {
|
public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, UserInServerDto userAdding) {
|
||||||
if(userAdding.getUserReference().getId().equals(message.getAuthorId())) {
|
if(userAdding.getUser().getId().equals(message.getAuthorId())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Long guildId = message.getServerId();
|
Long guildId = message.getServerId();
|
||||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId);
|
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(STAR_EMOTE, guildId);
|
||||||
if(aEmote.isPresent()) {
|
if(aEmote.isPresent()) {
|
||||||
AEmote emote = aEmote.get();
|
EmoteDto emote = aEmote.get();
|
||||||
MessageReaction.ReactionEmote reactionEmote = addedReaction.getReactionEmote();
|
MessageReaction.ReactionEmote reactionEmote = addedReaction.getReactionEmote();
|
||||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
||||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
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());
|
Optional<StarboardPost> starboardPostOptional = starboardPostManagementService.findByMessageId(message.getMessageId());
|
||||||
if(reaction != null) {
|
if(reaction != null) {
|
||||||
List<AUser> userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId());
|
List<UserDto> userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId());
|
||||||
Double starMinimum = getFromConfig("starLvl1", message.getServerId());
|
Double starMinimum = configManagementService.getDoubleValue("starLvl1", message.getServerId());
|
||||||
if (userExceptAuthor.size() >= starMinimum) {
|
if (userExceptAuthor.size() >= starMinimum) {
|
||||||
AUserInAServer author = userManagementService.loadUser(message.getServerId(), message.getAuthorId());
|
UserInServerDto author = userManagementService.loadUser(message.getServerId(), message.getAuthorId());
|
||||||
if(starboardPostOptional.isPresent()) {
|
if(starboardPostOptional.isPresent()) {
|
||||||
StarboardPost starboardPost = starboardPostOptional.get();
|
StarboardPost starboardPost = starboardPostOptional.get();
|
||||||
starboardPost.setIgnored(false);
|
starboardPost.setIgnored(false);
|
||||||
starboardService.updateStarboardPost(starboardPost, message, userExceptAuthor);
|
starboardService.updateStarboardPost(starboardPost, message, userExceptAuthor);
|
||||||
if(adding) {
|
if(adding) {
|
||||||
starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUserReference());
|
starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUser());
|
||||||
} else {
|
} else {
|
||||||
starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUserReference());
|
starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUser());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
starboardService.createStarboardPost(message, userExceptAuthor, userReacting, author);
|
starboardService.createStarboardPost(message, userExceptAuthor, userReacting, author);
|
||||||
@@ -119,14 +119,14 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void executeReactionRemoved(CachedMessage message, MessageReaction removedReaction, AUserInAServer userRemoving) {
|
public void executeReactionRemoved(CachedMessage message, MessageReaction removedReaction, UserInServerDto userRemoving) {
|
||||||
if(message.getAuthorId().equals(userRemoving.getUserReference().getId())) {
|
if(message.getAuthorId().equals(userRemoving.getUser().getId())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Long guildId = message.getServerId();
|
Long guildId = message.getServerId();
|
||||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId);
|
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(STAR_EMOTE, guildId);
|
||||||
if(aEmote.isPresent()) {
|
if(aEmote.isPresent()) {
|
||||||
AEmote emote = aEmote.get();
|
EmoteDto emote = aEmote.get();
|
||||||
MessageReaction.ReactionEmote reactionEmote = removedReaction.getReactionEmote();
|
MessageReaction.ReactionEmote reactionEmote = removedReaction.getReactionEmote();
|
||||||
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
|
||||||
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
|
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) {
|
private List<UserDto> getUsersExcept(List<UserDto> users, Long userId) {
|
||||||
return configManagementService.loadConfig(guildId, key).getDoubleValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<AUser> getUsersExcept(List<AUser> users, Long userId) {
|
|
||||||
return users.stream().filter(user -> !user.getId().equals(userId)).collect(Collectors.toList());
|
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.core.models.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
|
||||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ import java.util.Optional;
|
|||||||
public class StarboardPostDeletedListener implements MessageDeletedListener {
|
public class StarboardPostDeletedListener implements MessageDeletedListener {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostManagementService starboardPostManagementService;
|
private StarboardPostManagementServiceBean starboardPostManagementService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(CachedMessage messageBefore) {
|
public void execute(CachedMessage messageBefore) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package dev.sheldan.abstracto.utility.repository;
|
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 dev.sheldan.abstracto.utility.models.database.Reminder;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package dev.sheldan.abstracto.utility.repository;
|
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.StarboardPost;
|
||||||
import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction;
|
import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.utility.repository.converter;
|
package dev.sheldan.abstracto.utility.repository.converter;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
||||||
import dev.sheldan.abstracto.utility.repository.StarStatsUserResult;
|
import dev.sheldan.abstracto.utility.repository.StarStatsUserResult;
|
||||||
@@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
public class StarStatsUserConverter {
|
public class StarStatsUserConverter {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserManagementService userManagementService;
|
private UserService userManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Bot bot;
|
private Bot bot;
|
||||||
@@ -27,7 +27,7 @@ public class StarStatsUserConverter {
|
|||||||
.builder()
|
.builder()
|
||||||
.starCount(starStatsUserResult.getStarCount())
|
.starCount(starStatsUserResult.getStarCount())
|
||||||
.member(bot.getMemberInServer(serverId, starStatsUserResult.getUserId()))
|
.member(bot.getMemberInServer(serverId, starStatsUserResult.getUserId()))
|
||||||
.user(AUser.builder().id(starStatsUserResult.getUserId()).build())
|
.user(UserDto.builder().id(starStatsUserResult.getUserId()).build())
|
||||||
.build();
|
.build();
|
||||||
result.add(newUser);
|
result.add(newUser);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package dev.sheldan.abstracto.utility.service;
|
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.core.models.template.listener.MessageEmbeddedModel;
|
||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
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.Bot;
|
||||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.MessageCache;
|
import dev.sheldan.abstracto.core.service.MessageCache;
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
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.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
@@ -41,13 +42,10 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
|||||||
public static final String REMOVAL_EMOTE = "removeEmbed";
|
public static final String REMOVAL_EMOTE = "removeEmbed";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ChannelManagementService channelManagementService;
|
private ChannelService channelManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ServerManagementService serverManagementService;
|
private UserService userManagementService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private UserManagementService userManagementService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Bot bot;
|
private Bot bot;
|
||||||
@@ -65,11 +63,17 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
|||||||
private MessageCache messageCache;
|
private MessageCache messageCache;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageEmbedPostManagementService messageEmbedPostManagementService;
|
private MessageEmbedPostManagementServiceBean messageEmbedPostManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageService messageService;
|
private MessageService messageService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerModelConverter userInServerModelConverter;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<MessageEmbedLink> getLinksInMessage(String message) {
|
public List<MessageEmbedLink> getLinksInMessage(String message) {
|
||||||
List<MessageEmbedLink> links = new ArrayList<>();
|
List<MessageEmbedLink> links = new ArrayList<>();
|
||||||
@@ -95,7 +99,7 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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 -> {
|
linksToEmbed.forEach(messageEmbedLink -> {
|
||||||
messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId())
|
messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId())
|
||||||
.thenAccept(cachedMessage -> {
|
.thenAccept(cachedMessage -> {
|
||||||
@@ -106,7 +110,7 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@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);
|
MessageEmbeddedModel messageEmbeddedModel = buildTemplateParameter(embeddingMessage, cachedMessage);
|
||||||
MessageToSend embed = templateService.renderEmbedTemplate(MESSAGE_EMBED_TEMPLATE, messageEmbeddedModel);
|
MessageToSend embed = templateService.renderEmbedTemplate(MESSAGE_EMBED_TEMPLATE, messageEmbeddedModel);
|
||||||
List<CompletableFuture<Message>> completableFutures = channelService.sendMessageToEndInTextChannel(embed, target);
|
List<CompletableFuture<Message>> completableFutures = channelService.sendMessageToEndInTextChannel(embed, target);
|
||||||
@@ -124,24 +128,22 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private MessageEmbeddedModel buildTemplateParameter(Message message, CachedMessage embeddedMessage) {
|
private MessageEmbeddedModel buildTemplateParameter(Message message, CachedMessage embeddedMessage) {
|
||||||
AChannel channel = channelManagementService.loadChannel(message.getChannel().getIdLong());
|
ChannelModel currentChannel = ChannelModel.builder().id(message.getTextChannel().getIdLong()).build();
|
||||||
AServer server = serverManagementService.loadOrCreate(message.getGuild().getIdLong());
|
Guild guild = message.getGuild();
|
||||||
AUserInAServer user = userManagementService.loadUser(message.getMember());
|
ServerModel server = ServerModel.builder().id(guild.getIdLong()).build();
|
||||||
Member author = bot.getMemberInServer(embeddedMessage.getServerId(), embeddedMessage.getAuthorId());
|
UserInServerModel embeddingUser = userInServerModelConverter.fromMember(message.getMember());
|
||||||
TextChannel sourceChannel = bot.getTextChannelFromServer(embeddedMessage.getServerId(), embeddedMessage.getChannelId()).get();
|
UserInServerModel embeddedUser = userInServerModelConverter.fromUser(userService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId()));
|
||||||
|
ServerModel sourceServer = ServerModel.builder().id(embeddedMessage.getServerId()).build();
|
||||||
return MessageEmbeddedModel
|
return MessageEmbeddedModel
|
||||||
.builder()
|
.builder()
|
||||||
.channel(channel)
|
.channel(currentChannel)
|
||||||
.server(server)
|
.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)
|
.embeddedMessage(embeddedMessage)
|
||||||
|
.embeddedUser(embeddedUser.getUser())
|
||||||
|
.embeddedUserInServer(embeddedUser)
|
||||||
|
.userModel(embeddingUser.getUser())
|
||||||
|
.userInServer(embeddedUser)
|
||||||
|
.sourceServer(sourceServer)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package dev.sheldan.abstracto.utility.service;
|
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.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
|
||||||
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
|
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.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
import dev.sheldan.abstracto.scheduling.service.SchedulerService;
|
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.database.Reminder;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ExecutedReminderModel;
|
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.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 lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.Guild;
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
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";
|
public static final String REMINDER_EMBED_KEY = "remind_response";
|
||||||
@Autowired
|
@Autowired
|
||||||
private ReminderManagementService reminderManagementService;
|
private ReminderManagementServiceBean reminderManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ChannelManagementService channelManagementService;
|
private ChannelService channelManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
@@ -58,14 +60,23 @@ public class RemindServiceBean implements ReminderService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ChannelService channelService;
|
private ChannelService channelService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ServerConverter serverConverter;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelConverter channelConverter;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserConverter userConverter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createReminderInForUser(AUserInAServer user, String remindText, Duration remindIn, ReminderModel reminderModel) {
|
public void createReminderInForUser(UserInServerDto user, String remindText, Duration remindIn, ReminderModel reminderModel) {
|
||||||
AChannel channel = channelManagementService.loadChannel(reminderModel.getChannel().getId());
|
ChannelDto channel = channelManagementService.loadChannel(reminderModel.getChannel().getId());
|
||||||
AServerAChannelAUser aServerAChannelAUser = AServerAChannelAUser
|
AServerAChannelAUser aServerAChannelAUser = AServerAChannelAUser
|
||||||
.builder()
|
.builder()
|
||||||
.user(user.getUserReference())
|
.user(user.getUser())
|
||||||
.aUserInAServer(user)
|
.aUserInAServer(user)
|
||||||
.guild(user.getServerReference())
|
.guild(user.getServer())
|
||||||
.channel(channel)
|
.channel(channel)
|
||||||
.build();
|
.build();
|
||||||
Instant remindAt = Instant.now().plusNanos(remindIn.toNanos());
|
Instant remindAt = Instant.now().plusNanos(remindIn.toNanos());
|
||||||
@@ -90,14 +101,14 @@ public class RemindServiceBean implements ReminderService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void executeReminder(Long reminderId) {
|
public void executeReminder(Long reminderId) {
|
||||||
Reminder reminderToRemindFor = reminderManagementService.loadReminder(reminderId);
|
Reminder reminderToRemindFor = reminderManagementService.loadReminder(reminderId);
|
||||||
AServer server = reminderToRemindFor.getServer();
|
ServerDto server = serverConverter.convertServer(reminderToRemindFor.getServer());
|
||||||
AChannel channel = reminderToRemindFor.getChannel();
|
ChannelDto channel = channelConverter.fromChannel(reminderToRemindFor.getChannel());
|
||||||
Optional<Guild> guildToAnswerIn = bot.getGuildById(server.getId());
|
Optional<Guild> guildToAnswerIn = bot.getGuildById(server.getId());
|
||||||
if(guildToAnswerIn.isPresent()) {
|
if(guildToAnswerIn.isPresent()) {
|
||||||
Optional<TextChannel> channelToAnswerIn = bot.getTextChannelFromServer(server.getId(), channel.getId());
|
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.
|
// only send the message if the channel still exists, if not, only set the reminder to reminded.
|
||||||
if(channelToAnswerIn.isPresent()) {
|
if(channelToAnswerIn.isPresent()) {
|
||||||
AUser userReference = reminderToRemindFor.getRemindedUser().getUserReference();
|
UserDto userReference = userConverter.fromAUser(reminderToRemindFor.getRemindedUser().getUserReference());
|
||||||
Member memberInServer = bot.getMemberInServer(server.getId(), userReference.getId());
|
Member memberInServer = bot.getMemberInServer(server.getId(), userReference.getId());
|
||||||
ExecutedReminderModel build = ExecutedReminderModel
|
ExecutedReminderModel build = ExecutedReminderModel
|
||||||
.builder()
|
.builder()
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package dev.sheldan.abstracto.utility.service;
|
package dev.sheldan.abstracto.utility.service;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||||
import dev.sheldan.abstracto.core.service.management.PostTargetManagement;
|
import dev.sheldan.abstracto.core.models.AChannel;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
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.AServerAChannelMessage;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
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.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
import dev.sheldan.abstracto.core.service.ConfigService;
|
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.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.utility.config.StarboardConfig;
|
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.database.StarboardPost;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsModel;
|
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.StarStatsPost;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
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.models.template.commands.starboard.StarboardPostModel;
|
||||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService;
|
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean;
|
||||||
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementService;
|
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementServiceBean;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.*;
|
import net.dv8tion.jda.api.entities.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -48,35 +51,41 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private EmoteManagementService emoteManagementService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigService configService;
|
private ConfigService configService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostManagementService starboardPostManagementService;
|
private StarboardPostManagementServiceBean starboardPostManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardConfig starboardConfig;
|
private StarboardConfig starboardConfig;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserManagementService userManagementService;
|
private UserService userManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostReactorManagementService starboardPostReactorManagementService;
|
private StarboardPostReactorManagementServiceBean starboardPostReactorManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PostTargetManagement postTargetManagement;
|
private PostTargetService postTargetManagement;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmoteService emoteService;
|
private EmoteService emoteService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerConverter userInServerConverter;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelConverter channelConverter;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StarPostConverter starPostConverter;
|
||||||
|
|
||||||
@Override
|
@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());
|
StarboardPostModel starboardPostModel = buildStarboardPostModel(message, userExceptAuthor.size());
|
||||||
MessageToSend messageToSend = templateService.renderEmbedTemplate(STARBOARD_POST_TEMPLATE, starboardPostModel);
|
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());
|
List<CompletableFuture<Message>> completableFutures = postTargetService.sendEmbedInPostTarget(messageToSend, STARBOARD_POSTTARGET, message.getServerId());
|
||||||
CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> {
|
CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> {
|
||||||
try {
|
try {
|
||||||
@@ -85,7 +94,7 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
.builder()
|
.builder()
|
||||||
.messageId(message1.getIdLong())
|
.messageId(message1.getIdLong())
|
||||||
.channel(starboard.getChannelReference())
|
.channel(starboard.getChannelReference())
|
||||||
.server(userReacting.getServerReference())
|
.server(userReacting.getServer())
|
||||||
.build();
|
.build();
|
||||||
StarboardPost starboardPost = starboardPostManagementService.createStarboardPost(message, starredUser, userReacting, aServerAChannelMessage);
|
StarboardPost starboardPost = starboardPostManagementService.createStarboardPost(message, starredUser, userReacting, aServerAChannelMessage);
|
||||||
// TODO maybe in bulk, but numbers should be small enough
|
// 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());
|
Member member = bot.getMemberInServer(message.getServerId(), message.getAuthorId());
|
||||||
Optional<TextChannel> channel = bot.getTextChannelFromServer(message.getServerId(), message.getChannelId());
|
Optional<TextChannel> channel = bot.getTextChannelFromServer(message.getServerId(), message.getChannelId());
|
||||||
Optional<Guild> guild = bot.getGuildById(message.getServerId());
|
Optional<Guild> guild = bot.getGuildById(message.getServerId());
|
||||||
AChannel aChannel = AChannel.builder().id(message.getChannelId()).build();
|
ChannelDto aChannel = ChannelDto.builder().id(message.getChannelId()).build();
|
||||||
AUser user = AUser.builder().id(message.getAuthorId()).build();
|
UserDto user = UserDto.builder().id(message.getAuthorId()).build();
|
||||||
AServer server = AServer.builder().id(message.getServerId()).build();
|
ServerDto server = ServerDto.builder().id(message.getServerId()).build();
|
||||||
Optional<AEmote> appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount);
|
Optional<EmoteDto> appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount);
|
||||||
String emoteText;
|
String emoteText;
|
||||||
if(appropriateEmoteOptional.isPresent()) {
|
if(appropriateEmoteOptional.isPresent()) {
|
||||||
AEmote emote = appropriateEmoteOptional.get();
|
EmoteDto emote = appropriateEmoteOptional.get();
|
||||||
emoteText = emoteService.getEmoteAsMention(emote, message.getServerId(), "⭐");
|
emoteText = emoteService.getEmoteAsMention(emote, message.getServerId(), "⭐");
|
||||||
} else {
|
} else {
|
||||||
log.warn("No emote defined to be used for starboard post. Falling back to default.");
|
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
|
@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());
|
StarboardPostModel starboardPostModel = buildStarboardPostModel(message, userExceptAuthor.size());
|
||||||
MessageToSend messageToSend = templateService.renderEmbedTemplate("starboard_post", starboardPostModel);
|
MessageToSend messageToSend = templateService.renderEmbedTemplate("starboard_post", starboardPostModel);
|
||||||
List<CompletableFuture<Message>> futures = new ArrayList<>();
|
List<CompletableFuture<Message>> futures = new ArrayList<>();
|
||||||
@@ -155,14 +164,14 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
int count = 3;
|
int count = 3;
|
||||||
List<StarboardPost> starboardPosts = starboardPostManagementService.retrieveTopPosts(serverId, count);
|
List<StarboardPost> starboardPosts = starboardPostManagementService.retrieveTopPosts(serverId, count);
|
||||||
List<StarStatsUser> topStarGivers = starboardPostReactorManagementService.retrieveTopStarGiver(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);
|
List<StarStatsUser> topStarReceiver = starboardPostReactorManagementService.retrieveTopStarReceiver(serverId, count);
|
||||||
Integer postCount = starboardPostManagementService.getPostCount(serverId);
|
Integer postCount = starboardPostManagementService.getPostCount(serverId);
|
||||||
Integer reactionCount = starboardPostReactorManagementService.getStarCount(serverId);
|
Integer reactionCount = starboardPostReactorManagementService.getStarCount(serverId);
|
||||||
List<String> emotes = new ArrayList<>();
|
List<String> emotes = new ArrayList<>();
|
||||||
for (int i = 1; i < count + 1; i++) {
|
for (int i = 1; i < count + 1; i++) {
|
||||||
Optional<AEmote> starboardRankingEmote = getStarboardRankingEmote(serverId, i);
|
Optional<EmoteDto> starboardRankingEmote = getStarboardRankingEmote(serverId, i);
|
||||||
AEmote emote = starboardRankingEmote.orElse(null);
|
EmoteDto emote = starboardRankingEmote.orElse(null);
|
||||||
String defaultEmoji = starboardConfig.getBadge().get(i - 1);
|
String defaultEmoji = starboardConfig.getBadge().get(i - 1);
|
||||||
emotes.add(emoteService.getEmoteAsMention(emote, serverId, defaultEmoji));
|
emotes.add(emoteService.getEmoteAsMention(emote, serverId, defaultEmoji));
|
||||||
}
|
}
|
||||||
@@ -178,17 +187,17 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<AEmote> getStarboardRankingEmote(Long serverId, Integer position) {
|
private Optional<EmoteDto> getStarboardRankingEmote(Long serverId, Integer position) {
|
||||||
return emoteManagementService.loadEmoteByName("starboardBadge" + position, serverId);
|
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--) {
|
for(int i = starboardConfig.getLvl().size(); i > 0; i--) {
|
||||||
Double starMinimum = configService.getDoubleValue("starLvl" + i, serverId);
|
Double starMinimum = configService.getDoubleValue("starLvl" + i, serverId);
|
||||||
if(starCount >= starMinimum) {
|
if(starCount >= starMinimum) {
|
||||||
return emoteManagementService.loadEmoteByName("star" + i, serverId);
|
return emoteService.getEmoteByName("star" + i, serverId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return emoteManagementService.loadEmoteByName("star0", serverId);
|
return emoteService.getEmoteByName("star0", serverId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.utility.service;
|
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.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.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.core.service.Bot;
|
import dev.sheldan.abstracto.core.service.Bot;
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
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.database.Suggestion;
|
||||||
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.SuggestionLog;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.JDA;
|
import net.dv8tion.jda.api.JDA;
|
||||||
import net.dv8tion.jda.api.entities.*;
|
import net.dv8tion.jda.api.entities.*;
|
||||||
@@ -35,7 +35,7 @@ public class SuggestionServiceBean implements SuggestionService {
|
|||||||
private static final String SUGGESTION_NO_EMOTE = "suggestionNo";
|
private static final String SUGGESTION_NO_EMOTE = "suggestionNo";
|
||||||
public static final String SUGGESTIONS_TARGET = "suggestions";
|
public static final String SUGGESTIONS_TARGET = "suggestions";
|
||||||
@Autowired
|
@Autowired
|
||||||
private SuggestionManagementService suggestionManagementService;
|
private SuggestionManagementServiceBean suggestionManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
@@ -46,9 +46,6 @@ public class SuggestionServiceBean implements SuggestionService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private Bot botService;
|
private Bot botService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private EmoteManagementService emoteManagementService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmoteService emoteService;
|
private EmoteService emoteService;
|
||||||
|
|
||||||
@@ -58,6 +55,9 @@ public class SuggestionServiceBean implements SuggestionService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SuggestionServiceBean self;
|
private SuggestionServiceBean self;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerConverter userInServerConverter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createSuggestion(Member member, String text, SuggestionLog suggestionLog) {
|
public void createSuggestion(Member member, String text, SuggestionLog suggestionLog) {
|
||||||
Suggestion suggestion = suggestionManagementService.createSuggestion(member, text);
|
Suggestion suggestion = suggestionManagementService.createSuggestion(member, text);
|
||||||
@@ -99,11 +99,11 @@ public class SuggestionServiceBean implements SuggestionService {
|
|||||||
suggestionLog.setOriginalChannelId(channelId);
|
suggestionLog.setOriginalChannelId(channelId);
|
||||||
suggestionLog.setOriginalMessageId(originalMessageId);
|
suggestionLog.setOriginalMessageId(originalMessageId);
|
||||||
suggestionLog.setOriginalMessageUrl(MessageUtils.buildMessageUrl(serverId, channelId, originalMessageId));
|
suggestionLog.setOriginalMessageUrl(MessageUtils.buildMessageUrl(serverId, channelId, originalMessageId));
|
||||||
AUserInAServer suggester = suggestion.getSuggester();
|
UserInServerDto suggester = userInServerConverter.fromAUserInAServer(suggestion.getSuggester());
|
||||||
JDA instance = botService.getInstance();
|
JDA instance = botService.getInstance();
|
||||||
Guild guildById = instance.getGuildById(serverId);
|
Guild guildById = instance.getGuildById(serverId);
|
||||||
if(guildById != null) {
|
if(guildById != null) {
|
||||||
Member memberById = guildById.getMemberById(suggester.getUserReference().getId());
|
Member memberById = guildById.getMemberById(suggester.getUser().getId());
|
||||||
if(memberById != null) {
|
if(memberById != null) {
|
||||||
suggestionLog.setSuggester(memberById);
|
suggestionLog.setSuggester(memberById);
|
||||||
suggestionLog.setSuggestion(suggestion);
|
suggestionLog.setSuggestion(suggestion);
|
||||||
@@ -140,6 +140,6 @@ public class SuggestionServiceBean implements SuggestionService {
|
|||||||
public void validateSetup(Long serverId) {
|
public void validateSetup(Long serverId) {
|
||||||
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_YES_EMOTE, serverId);
|
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_YES_EMOTE, serverId);
|
||||||
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_NO_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;
|
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.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
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.models.database.EmbeddedMessage;
|
||||||
import dev.sheldan.abstracto.utility.repository.EmbeddedMessageRepository;
|
import dev.sheldan.abstracto.utility.repository.EmbeddedMessageRepository;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -18,25 +20,29 @@ import java.util.Optional;
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class MessageEmbedPostManagementServiceBean implements MessageEmbedPostManagementService {
|
public class MessageEmbedPostManagementServiceBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmbeddedMessageRepository embeddedMessageRepository;
|
private EmbeddedMessageRepository embeddedMessageRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserManagementService userManagementService;
|
private UserService userManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageService messageService;
|
private MessageService messageService;
|
||||||
|
|
||||||
@Override
|
@Autowired
|
||||||
|
private UserInServerConverter userInServerConverter;
|
||||||
|
|
||||||
@Transactional
|
@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();
|
AServer embeddedServer = AServer.builder().id(embeddedMessage.getServerId()).build();
|
||||||
AChannel embeddedChannel = AChannel.builder().id(embeddedMessage.getChannelId()).build();
|
AChannel embeddedChannel = AChannel.builder().id(embeddedMessage.getChannelId()).build();
|
||||||
AServer embeddingServer = AServer.builder().id(messageContainingEmbed.getGuild().getIdLong()).build();
|
AServer embeddingServer = AServer.builder().id(messageContainingEmbed.getGuild().getIdLong()).build();
|
||||||
AChannel embeddingChannel = AChannel.builder().id(messageContainingEmbed.getTextChannel().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
|
EmbeddedMessage messageEmbedPost = EmbeddedMessage
|
||||||
.builder()
|
.builder()
|
||||||
.embeddedMessageId(embeddedMessage.getMessageId())
|
.embeddedMessageId(embeddedMessage.getMessageId())
|
||||||
@@ -45,24 +51,21 @@ public class MessageEmbedPostManagementServiceBean implements MessageEmbedPostMa
|
|||||||
.embeddingServer(embeddingServer)
|
.embeddingServer(embeddingServer)
|
||||||
.embeddingChannel(embeddingChannel)
|
.embeddingChannel(embeddingChannel)
|
||||||
.embeddingMessageId(messageContainingEmbed.getIdLong())
|
.embeddingMessageId(messageContainingEmbed.getIdLong())
|
||||||
.embeddedUser(embeddedAuthor)
|
.embeddedUser(author)
|
||||||
.embeddingUser(cause)
|
.embeddingUser(auserCause)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
embeddedMessageRepository.save(messageEmbedPost);
|
embeddedMessageRepository.save(messageEmbedPost);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Optional<EmbeddedMessage> findEmbeddedPostByMessageId(Long messageId) {
|
public Optional<EmbeddedMessage> findEmbeddedPostByMessageId(Long messageId) {
|
||||||
return Optional.ofNullable(embeddedMessageRepository.findByEmbeddingMessageId(messageId));
|
return Optional.ofNullable(embeddedMessageRepository.findByEmbeddingMessageId(messageId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage) {
|
public void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage) {
|
||||||
embeddedMessageRepository.delete(embeddedMessage);
|
embeddedMessageRepository.delete(embeddedMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void deleteEmbeddedMessageTransactional(EmbeddedMessage embeddedMessage) {
|
public void deleteEmbeddedMessageTransactional(EmbeddedMessage embeddedMessage) {
|
||||||
this.deleteEmbeddedMessage(embeddedMessage);
|
this.deleteEmbeddedMessage(embeddedMessage);
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
package dev.sheldan.abstracto.utility.service.management;
|
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.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.models.database.Reminder;
|
||||||
import dev.sheldan.abstracto.utility.repository.ReminderRepository;
|
import dev.sheldan.abstracto.utility.repository.ReminderRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -11,17 +16,25 @@ import java.time.Instant;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ReminderManagementServiceBean implements ReminderManagementService {
|
public class ReminderManagementServiceBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ReminderRepository reminderRepository;
|
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) {
|
public Reminder createReminder(AServerAChannelAUser userToBeReminded, String text, Instant timeToBeRemindedAt, Long messageId) {
|
||||||
Reminder reminder = Reminder.builder()
|
Reminder reminder = Reminder.builder()
|
||||||
.channel(userToBeReminded.getChannel())
|
.channel(channelConverter.fromDto(userToBeReminded.getChannel()))
|
||||||
.server(userToBeReminded.getGuild())
|
.server(serverConverter.fromDto(userToBeReminded.getGuild()))
|
||||||
.remindedUser(userToBeReminded.getAUserInAServer())
|
.remindedUser(userConverter.fromDto(userToBeReminded.getAUserInAServer()))
|
||||||
.reminded(false)
|
.reminded(false)
|
||||||
.text(text)
|
.text(text)
|
||||||
.reminderDate(Instant.now())
|
.reminderDate(Instant.now())
|
||||||
@@ -33,20 +46,17 @@ public class ReminderManagementServiceBean implements ReminderManagementService
|
|||||||
return reminder;
|
return reminder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Reminder loadReminder(Long reminderId) {
|
public Reminder loadReminder(Long reminderId) {
|
||||||
return reminderRepository.getOne(reminderId);
|
return reminderRepository.getOne(reminderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setReminded(Reminder reminder) {
|
public void setReminded(Reminder reminder) {
|
||||||
reminder.setReminded(true);
|
reminder.setReminded(true);
|
||||||
reminderRepository.save(reminder);
|
reminderRepository.save(reminder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public List<Reminder> getActiveRemindersForUser(UserInServerDto aUserInAServer) {
|
||||||
public List<Reminder> getActiveRemindersForUser(AUserInAServer aUserInAServer) {
|
return reminderRepository.getByRemindedUserAndRemindedFalse(userConverter.fromDto(aUserInAServer));
|
||||||
return reminderRepository.getByRemindedUserAndRemindedFalse(aUserInAServer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package dev.sheldan.abstracto.utility.service.management;
|
package dev.sheldan.abstracto.utility.service.management;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.AServerAChannelMessage;
|
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.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.models.database.StarboardPost;
|
||||||
import dev.sheldan.abstracto.utility.repository.StarboardPostRepository;
|
import dev.sheldan.abstracto.utility.repository.StarboardPostRepository;
|
||||||
import dev.sheldan.abstracto.utility.repository.converter.StarStatsUserConverter;
|
import dev.sheldan.abstracto.utility.repository.converter.StarStatsUserConverter;
|
||||||
@@ -16,7 +19,7 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class StarboardPostManagementServiceBean implements StarboardPostManagementService {
|
public class StarboardPostManagementServiceBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostRepository repository;
|
private StarboardPostRepository repository;
|
||||||
@@ -24,27 +27,32 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
|
|||||||
@Autowired
|
@Autowired
|
||||||
private StarStatsUserConverter converter;
|
private StarStatsUserConverter converter;
|
||||||
|
|
||||||
@Override
|
@Autowired
|
||||||
public StarboardPost createStarboardPost(CachedMessage starredMessage, AUserInAServer starredUser, AUserInAServer starringUser, AServerAChannelMessage starboardPost) {
|
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
|
StarboardPost post = StarboardPost
|
||||||
.builder()
|
.builder()
|
||||||
.author(starredUser.getUserReference())
|
.author(author.getUserReference())
|
||||||
.postMessageId(starredMessage.getMessageId())
|
.postMessageId(starredMessage.getMessageId())
|
||||||
.starboardMessageId(starboardPost.getMessageId())
|
.starboardMessageId(starboardPost.getMessageId())
|
||||||
.starboardChannel(starboardPost.getChannel())
|
.starboardChannel(channelConverter.fromDto(starboardPost.getChannel()))
|
||||||
.starredDate(Instant.now())
|
.starredDate(Instant.now())
|
||||||
.build();
|
.build();
|
||||||
repository.save(post);
|
repository.save(post);
|
||||||
return post;
|
return post;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setStarboardPostMessageId(StarboardPost post, Long messageId) {
|
public void setStarboardPostMessageId(StarboardPost post, Long messageId) {
|
||||||
post.setStarboardMessageId(messageId);
|
post.setStarboardMessageId(messageId);
|
||||||
repository.save(post);
|
repository.save(post);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<StarboardPost> retrieveTopPosts(Long serverId, Integer count) {
|
public List<StarboardPost> retrieveTopPosts(Long serverId, Integer count) {
|
||||||
List<StarboardPost> posts = retrieveAllPosts(serverId);
|
List<StarboardPost> posts = retrieveAllPosts(serverId);
|
||||||
posts.sort(Comparator.comparingInt(o -> o.getReactions().size()));
|
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()));
|
return posts.subList(0, Math.min(count, posts.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<StarboardPost> retrieveAllPosts(Long serverId) {
|
public List<StarboardPost> retrieveAllPosts(Long serverId) {
|
||||||
return repository.findByStarboardChannelServerId(serverId);
|
return repository.findByStarboardChannelServerId(serverId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Integer getPostCount(Long serverId) {
|
public Integer getPostCount(Long serverId) {
|
||||||
return retrieveAllPosts(serverId).size();
|
return retrieveAllPosts(serverId).size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Optional<StarboardPost> findByMessageId(Long messageId) {
|
public Optional<StarboardPost> findByMessageId(Long messageId) {
|
||||||
return Optional.ofNullable(repository.findByPostMessageId(messageId));
|
return Optional.ofNullable(repository.findByPostMessageId(messageId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Optional<StarboardPost> findByStarboardPostId(Long postId) {
|
public Optional<StarboardPost> findByStarboardPostId(Long postId) {
|
||||||
return Optional.ofNullable(repository.findByStarboardMessageId(postId));
|
return Optional.ofNullable(repository.findByStarboardMessageId(postId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setStarboardPostIgnored(Long messageId, Boolean newValue) {
|
public void setStarboardPostIgnored(Long messageId, Boolean newValue) {
|
||||||
StarboardPost post = repository.findByStarboardMessageId(messageId);
|
StarboardPost post = repository.findByStarboardMessageId(messageId);
|
||||||
post.setIgnored(newValue);
|
post.setIgnored(newValue);
|
||||||
repository.save(post);
|
repository.save(post);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isStarboardPost(Long messageId) {
|
public boolean isStarboardPost(Long messageId) {
|
||||||
return repository.findByStarboardMessageId(messageId) != null;
|
return repository.findByStarboardMessageId(messageId) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removePost(StarboardPost starboardPost) {
|
public void removePost(StarboardPost starboardPost) {
|
||||||
repository.deleteById(starboardPost.getId());
|
repository.deleteById(starboardPost.getId());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.utility.service.management;
|
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.StarboardPost;
|
||||||
import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction;
|
import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
||||||
@@ -13,7 +15,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class StarboardPostReactorManagementServiceBean implements StarboardPostReactorManagementService {
|
public class StarboardPostReactorManagementServiceBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostReactionRepository repository;
|
private StarboardPostReactionRepository repository;
|
||||||
@@ -21,38 +23,37 @@ public class StarboardPostReactorManagementServiceBean implements StarboardPostR
|
|||||||
@Autowired
|
@Autowired
|
||||||
private StarStatsUserConverter converter;
|
private StarStatsUserConverter converter;
|
||||||
|
|
||||||
@Override
|
@Autowired
|
||||||
public void addReactor(StarboardPost post, AUser user) {
|
private UserConverter userConverter;
|
||||||
|
|
||||||
|
public void addReactor(StarboardPost post, UserDto user) {
|
||||||
|
AUser aUser = userConverter.toUser(user);
|
||||||
StarboardPostReaction reactor = StarboardPostReaction
|
StarboardPostReaction reactor = StarboardPostReaction
|
||||||
.builder()
|
.builder()
|
||||||
.starboardPost(post)
|
.starboardPost(post)
|
||||||
.reactor(user)
|
.reactor(aUser)
|
||||||
.build();
|
.build();
|
||||||
repository.save(reactor);
|
repository.save(reactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void removeReactor(StarboardPost post, UserDto user) {
|
||||||
public void removeReactor(StarboardPost post, AUser user) {
|
AUser aUser = userConverter.toUser(user);
|
||||||
repository.deleteByReactorAndStarboardPost(user, post);
|
repository.deleteByReactorAndStarboardPost(aUser, post);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removeReactors(StarboardPost post) {
|
public void removeReactors(StarboardPost post) {
|
||||||
repository.deleteByStarboardPost(post);
|
repository.deleteByStarboardPost(post);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Integer getStarCount(Long serverId) {
|
public Integer getStarCount(Long serverId) {
|
||||||
return repository.getReactionCountByServer(serverId);
|
return repository.getReactionCountByServer(serverId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<StarStatsUser> retrieveTopStarGiver(Long serverId, Integer count) {
|
public List<StarStatsUser> retrieveTopStarGiver(Long serverId, Integer count) {
|
||||||
List<StarStatsUserResult> starGivers = repository.findTopStarGiverInServer(serverId, count);
|
List<StarStatsUserResult> starGivers = repository.findTopStarGiverInServer(serverId, count);
|
||||||
return converter.convertToStarStatsUser(starGivers, serverId);
|
return converter.convertToStarStatsUser(starGivers, serverId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<StarStatsUser> retrieveTopStarReceiver(Long serverId, Integer count) {
|
public List<StarStatsUser> retrieveTopStarReceiver(Long serverId, Integer count) {
|
||||||
List<StarStatsUserResult> starReceivers = repository.retrieveTopStarReceiverInServer(serverId, count);
|
List<StarStatsUserResult> starReceivers = repository.retrieveTopStarReceiverInServer(serverId, count);
|
||||||
return converter.convertToStarStatsUser(starReceivers, serverId);
|
return converter.convertToStarStatsUser(starReceivers, serverId);
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
package dev.sheldan.abstracto.utility.service.management;
|
package dev.sheldan.abstracto.utility.service.management;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.models.AChannel;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
import dev.sheldan.abstracto.core.models.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
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.database.Suggestion;
|
||||||
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
||||||
import dev.sheldan.abstracto.utility.repository.SuggestionRepository;
|
import dev.sheldan.abstracto.utility.repository.SuggestionRepository;
|
||||||
@@ -17,55 +20,55 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class SuggestionManagementServiceBean implements SuggestionManagementService {
|
public class SuggestionManagementServiceBean {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SuggestionRepository suggestionRepository;
|
private SuggestionRepository suggestionRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ChannelManagementService channelManagementService;
|
private UserInServerConverter userInServerConverter;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserManagementService userManagementService;
|
private UserConverter userConverter;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ServerManagementService serverManagementService;
|
private UserService userService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelService channelService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelConverter channelConverter;
|
||||||
|
|
||||||
@Override
|
|
||||||
public Suggestion createSuggestion(Member suggester, String text) {
|
public Suggestion createSuggestion(Member suggester, String text) {
|
||||||
AUserInAServer user = userManagementService.loadUser(suggester);
|
UserInServerDto userDto = userService.loadUser(suggester);
|
||||||
return this.createSuggestion(user, text);
|
return this.createSuggestion(userDto, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public Suggestion createSuggestion(UserInServerDto suggester, String text) {
|
||||||
public Suggestion createSuggestion(AUserInAServer suggester, String text) {
|
AUserInAServer aUserInAServer = userInServerConverter.fromDto(suggester);
|
||||||
Suggestion suggestion = Suggestion
|
Suggestion suggestion = Suggestion
|
||||||
.builder()
|
.builder()
|
||||||
.state(SuggestionState.NEW)
|
.state(SuggestionState.NEW)
|
||||||
.suggester(suggester)
|
.suggester(aUserInAServer)
|
||||||
.suggestionDate(Instant.now())
|
.suggestionDate(Instant.now())
|
||||||
.build();
|
.build();
|
||||||
suggestionRepository.save(suggestion);
|
suggestionRepository.save(suggestion);
|
||||||
return suggestion;
|
return suggestion;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Suggestion getSuggestion(Long suggestionId) {
|
public Suggestion getSuggestion(Long suggestionId) {
|
||||||
return suggestionRepository.getOne(suggestionId);
|
return suggestionRepository.getOne(suggestionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setPostedMessage(Suggestion suggestion, Message message) {
|
public void setPostedMessage(Suggestion suggestion, Message message) {
|
||||||
suggestion.setMessageId(message.getIdLong());
|
suggestion.setMessageId(message.getIdLong());
|
||||||
AChannel channel = channelManagementService.loadChannel(message.getTextChannel().getIdLong());
|
suggestion.setChannel(AChannel.builder().id(message.getTextChannel().getIdLong()).build());
|
||||||
suggestion.setChannel(channel);
|
suggestion.setServer(AServer.builder().id(message.getGuild().getIdLong()).build());
|
||||||
AServer server = serverManagementService.loadOrCreate(message.getGuild().getIdLong());
|
|
||||||
suggestion.setServer(server);
|
|
||||||
suggestionRepository.save(suggestion);
|
suggestionRepository.save(suggestion);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setSuggestionState(Suggestion suggestion, SuggestionState newState) {
|
public void setSuggestionState(Suggestion suggestion, SuggestionState newState) {
|
||||||
suggestion.setState(newState);
|
suggestion.setState(newState);
|
||||||
suggestionRepository.save(suggestion);
|
suggestionRepository.save(suggestion);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.utility.models.database;
|
package dev.sheldan.abstracto.utility.models.database;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.AChannel;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.utility.models.database;
|
package dev.sheldan.abstracto.utility.models.database;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.AChannel;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.utility.models.database;
|
package dev.sheldan.abstracto.utility.models.database;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.AChannel;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
import dev.sheldan.abstracto.core.models.AUser;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package dev.sheldan.abstracto.utility.models.database;
|
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 lombok.*;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.utility.models.database;
|
package dev.sheldan.abstracto.utility.models.database;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.AChannel;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
import dev.sheldan.abstracto.utility.models.SuggestionState;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
|
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.core.utils.MessageUtils;
|
||||||
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -20,14 +18,4 @@ public class StarStatsPost {
|
|||||||
return MessageUtils.buildMessageUrl(serverId ,channelId, messageId);
|
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;
|
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.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -11,7 +11,7 @@ import net.dv8tion.jda.api.entities.Member;
|
|||||||
@Setter
|
@Setter
|
||||||
@Builder
|
@Builder
|
||||||
public class StarStatsUser {
|
public class StarStatsUser {
|
||||||
private AUser user;
|
private UserDto user;
|
||||||
private Member member;
|
private Member member;
|
||||||
private Integer starCount;
|
private Integer starCount;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
|
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.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
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.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
@@ -16,8 +16,8 @@ import net.dv8tion.jda.api.entities.TextChannel;
|
|||||||
public class StarboardPostModel extends ServerContext {
|
public class StarboardPostModel extends ServerContext {
|
||||||
private Member author;
|
private Member author;
|
||||||
private TextChannel channel;
|
private TextChannel channel;
|
||||||
private AUser user;
|
private UserDto user;
|
||||||
private AChannel aChannel;
|
private ChannelDto aChannel;
|
||||||
private CachedMessage message;
|
private CachedMessage message;
|
||||||
private Integer starCount;
|
private Integer starCount;
|
||||||
private String starLevelEmote;
|
private String starLevelEmote;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.utility.service;
|
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.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
|
||||||
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
|
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
@@ -10,6 +10,6 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface MessageEmbedService {
|
public interface MessageEmbedService {
|
||||||
List<MessageEmbedLink> getLinksInMessage(String message);
|
List<MessageEmbedLink> getLinksInMessage(String message);
|
||||||
void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, AUserInAServer reason, Message embeddingMessage);
|
void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, UserInServerDto reason, Message embeddingMessage);
|
||||||
void embedLink(CachedMessage cachedMessage, TextChannel target, AUserInAServer cause, Message embeddingMessage);
|
void embedLink(CachedMessage cachedMessage, TextChannel target, UserInServerDto cause, Message embeddingMessage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package dev.sheldan.abstracto.utility.service;
|
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 dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
public interface ReminderService {
|
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);
|
void executeReminder(Long reminderId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
package dev.sheldan.abstracto.utility.service;
|
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.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.database.StarboardPost;
|
||||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsModel;
|
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsModel;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface StarboardService {
|
public interface StarboardService {
|
||||||
void createStarboardPost(CachedMessage message, List<AUser> userExceptAuthor, AUserInAServer userReacting, AUserInAServer starredUser);
|
void createStarboardPost(CachedMessage message, List<UserDto> userExceptAuthor, UserInServerDto userReacting, UserInServerDto starredUser);
|
||||||
void updateStarboardPost(StarboardPost post, CachedMessage message, List<AUser> userExceptAuthor);
|
void updateStarboardPost(StarboardPost post, CachedMessage message, List<UserDto> userExceptAuthor);
|
||||||
void removeStarboardPost(StarboardPost message);
|
void removeStarboardPost(StarboardPost message);
|
||||||
StarStatsModel retrieveStarStats(Long serverId);
|
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 dev.sheldan.abstracto.core.models.SnowFlake;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
@@ -38,13 +38,5 @@ public class AChannel implements SnowFlake {
|
|||||||
@Column
|
@Column
|
||||||
private Boolean deleted;
|
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 lombok.*;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name="channelGroup")
|
@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 lombok.*;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package dev.sheldan.abstracto.core.models.database;
|
package dev.sheldan.abstracto.core.models;
|
||||||
|
|
||||||
public enum AChannelType {
|
public enum AChannelType {
|
||||||
TEXT, DM, VOICE, NEWS, CATEGORY, UNKOWN
|
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.*;
|
import lombok.*;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package dev.sheldan.abstracto.core.models.database;
|
package dev.sheldan.abstracto.core.models;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package dev.sheldan.abstracto.core.models.database;
|
package dev.sheldan.abstracto.core.models;
|
||||||
|
|
||||||
import lombok.*;
|
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 dev.sheldan.abstracto.core.models.SnowFlake;
|
||||||
import lombok.*;
|
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.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
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 dev.sheldan.abstracto.core.models.SnowFlake;
|
||||||
import lombok.*;
|
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 dev.sheldan.abstracto.core.models.SnowFlake;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package dev.sheldan.abstracto.core.models.database;
|
package dev.sheldan.abstracto.core.models;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ import java.util.List;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
public class AUser {
|
public class AUser implements SnowFlake {
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
private Long id;
|
private Long id;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package dev.sheldan.abstracto.core.models.database;
|
package dev.sheldan.abstracto.core.models;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.core.models.database;
|
package dev.sheldan.abstracto.core.models;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name="posttarget")
|
@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