mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-23 03:24:38 +00:00
Compare commits
1 Commits
release-20
...
modelsplit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa8ff9ddb5 |
@@ -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