mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-09-08 08:55:39 +00:00
added rework of model split, not completely done, a lot of questions open (converters evaluate lazy evaluated properties (might need addition of different convert methods), hen egg problem with channel and server for converters, AModels still need to be exposed regardless, because else database cannot be used in same schema (jpa needs the objects), api need to be checked, to not convert all the time between objects for no reason)
This commit is contained in:
@@ -17,6 +17,12 @@
|
||||
<artifactId>moderation-int</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||
<artifactId>core-db-models</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -5,9 +5,12 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.moderation.Moderation;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLog;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel;
|
||||
import dev.sheldan.abstracto.moderation.service.BanService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -28,6 +31,13 @@ public class Ban extends AbstractConditionableCommand {
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Autowired
|
||||
private UserInServerModelConverter userConverter;
|
||||
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||
@@ -35,11 +45,12 @@ public class Ban extends AbstractConditionableCommand {
|
||||
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
|
||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||
|
||||
BanLog banLogModel = (BanLog) ContextConverter.fromCommandContext(commandContext, BanLog.class);
|
||||
banLogModel.setBannedUser(member);
|
||||
banLogModel.setBanningUser(commandContext.getAuthor());
|
||||
BanLogModel banLogModel = (BanLogModel) ContextConverter.fromCommandContext(commandContext, BanLogModel.class);
|
||||
banLogModel.setBannedUser(userConverter.fromMember(member));
|
||||
banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||
banLogModel.setReason(reason);
|
||||
banService.banMember(member, reason, banLogModel);
|
||||
banService.banMember(member, reason);
|
||||
banService.sendBanLog(banLogModel);
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,9 +5,11 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.moderation.Moderation;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLog;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel;
|
||||
import dev.sheldan.abstracto.moderation.service.BanService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -25,17 +27,25 @@ public class BanId extends AbstractConditionableCommand {
|
||||
@Autowired
|
||||
private BanService banService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Autowired
|
||||
private UserInServerModelConverter userConverter;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||
Long userId = (Long) parameters.get(0);
|
||||
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
|
||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||
BanIdLog banLogModel = (BanIdLog) ContextConverter.fromCommandContext(commandContext, BanIdLog.class);
|
||||
BanIdLogModel banLogModel = (BanIdLogModel) ContextConverter.fromCommandContext(commandContext, BanIdLogModel.class);
|
||||
banLogModel.setBannedUserId(userId);
|
||||
banLogModel.setBanningUser(commandContext.getAuthor());
|
||||
banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||
banLogModel.setReason(reason);
|
||||
banService.banMember(userId, commandContext.getGuild().getIdLong(), reason, banLogModel);
|
||||
banService.banMember(userId, commandContext.getGuild().getIdLong(), reason);
|
||||
banService.sendBanIdLog(banLogModel);
|
||||
|
||||
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
|
||||
import dev.sheldan.abstracto.moderation.Moderation;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
|
||||
@@ -26,6 +27,9 @@ public class Kick extends AbstractConditionableCommand {
|
||||
@Autowired
|
||||
private KickServiceBean kickService;
|
||||
|
||||
@Autowired
|
||||
private UserInServerModelConverter userConverter;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
|
||||
@@ -35,10 +39,11 @@ public class Kick extends AbstractConditionableCommand {
|
||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||
|
||||
KickLogModel kickLogModel = (KickLogModel) ContextConverter.fromCommandContext(commandContext, KickLogModel.class);
|
||||
kickLogModel.setKickedUser(member);
|
||||
kickLogModel.setKickingUser(commandContext.getAuthor());
|
||||
kickLogModel.setKickedUser(userConverter.fromMember(member));
|
||||
kickLogModel.setKickingUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
|
||||
kickLogModel.setReason(reason);
|
||||
kickService.kickMember(member, reason, kickLogModel);
|
||||
kickService.kickMember(member, reason);
|
||||
kickService.sendKickLog(kickLogModel);
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,10 +5,11 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.moderation.Moderation;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
|
||||
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
|
||||
import dev.sheldan.abstracto.moderation.service.WarnService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -23,27 +24,26 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class Warn extends AbstractConditionableCommand {
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private WarnService warnService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private WarnConverter warnConverter;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||
Member member = (Member) parameters.get(0);
|
||||
String defaultReason = templateService.renderTemplateWithMap("warn_default_reason", null);
|
||||
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||
WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class);
|
||||
warnLogModel.setWarnedUser(member);
|
||||
WarnLogModel warnLogModel = (WarnLogModel) ContextConverter.fromCommandContext(commandContext, WarnLogModel.class);
|
||||
warnLogModel.setMessage(commandContext.getMessage());
|
||||
warnLogModel.setReason(reason);
|
||||
warnLogModel.setWarningUser(commandContext.getAuthor());
|
||||
warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel);
|
||||
WarnDto warnDto = warnService.warnUser(member, commandContext.getAuthor(), reason);
|
||||
warnLogModel.setWarning(warnConverter.convertFromWarnDto(warnDto));
|
||||
warnService.sendWarnLog(warnLogModel);
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package dev.sheldan.abstracto.moderation.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.utils.AbstractoDateUtils;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnModel;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class WarnConverter {
|
||||
public WarnDto convertFromAWarn(Warning warning) {
|
||||
return WarnDto.builder()
|
||||
.id(warning.getId())
|
||||
.decayed(warning.getDecayed())
|
||||
.reason(warning.getReason())
|
||||
.decayDate(AbstractoDateUtils.convertInstant(warning.getDecayDate()))
|
||||
.warnDate(AbstractoDateUtils.convertInstant(warning.getWarnDate()))
|
||||
.build();
|
||||
}
|
||||
|
||||
public WarnModel convertFromWarnDto(WarnDto warnDto) {
|
||||
return WarnModel
|
||||
.builder()
|
||||
.decayDate(warnDto.getDecayDate())
|
||||
.decayed(warnDto.getDecayed())
|
||||
.warnDate(warnDto.getWarnDate())
|
||||
.reason(warnDto.getReason())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.moderation.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.JoinListener;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -23,9 +22,6 @@ public class JoinLogger implements JoinListener {
|
||||
private static final String USER_JOIN_TEMPLATE = "user_join";
|
||||
private static final String JOIN_LOG_TARGET = "joinLog";
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.moderation.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.LeaveListener;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -23,9 +22,6 @@ public class LeaveLogger implements LeaveListener {
|
||||
private static final String USER_LEAVE_TEMPLATE = "user_leave";
|
||||
private static final String LEAVE_LOG_TARGET = "leaveLog";
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.moderation.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
@@ -4,6 +4,8 @@ import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -18,8 +20,9 @@ import java.util.Optional;
|
||||
public class BanServiceBean implements BanService {
|
||||
|
||||
private static final String BAN_LOG_TEMPLATE = "ban_log";
|
||||
private static final String BAN_ID_LOG_TEMPLATE = "banid_log";
|
||||
private static final String BAN_LOG_TARGET = "banLog";
|
||||
private static final String BAN_ID_LOG_TEMPLATE = "banid_log";
|
||||
|
||||
@Autowired
|
||||
private Bot bot;
|
||||
|
||||
@@ -30,17 +33,25 @@ public class BanServiceBean implements BanService {
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Override
|
||||
public void banMember(Member member, String reason, ServerContext banLog) {
|
||||
public void banMember(Member member, String reason) {
|
||||
this.banUser(member.getGuild().getIdLong(), member.getIdLong(), reason);
|
||||
String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLog);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banLog.getServer().getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog) {
|
||||
banUser(guildId, userId, reason);
|
||||
String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLog);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, guildId);
|
||||
public void banMember(Long guildId, Long userId, String reason) {
|
||||
this.banUser(guildId, userId, reason);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBanLog(BanLogModel banLogModel) {
|
||||
String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLogModel);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banLogModel.getGuild().getIdLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBanIdLog(BanIdLogModel banIdLogModel) {
|
||||
String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLogModel);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banIdLogModel.getGuild().getIdLong());
|
||||
}
|
||||
|
||||
private void banUser(Long guildId, Long userId, String reason) {
|
||||
|
||||
@@ -29,18 +29,18 @@ public class KickServiceBean implements KickService {
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Override
|
||||
public void kickMember(Member member, String reason, KickLogModel kickLogModel) {
|
||||
Optional<Guild> guildById = bot.getGuildById(kickLogModel.getGuild().getIdLong());
|
||||
public void kickMember(Member member, String reason) {
|
||||
Optional<Guild> guildById = bot.getGuildById(member.getGuild().getIdLong());
|
||||
if(guildById.isPresent()) {
|
||||
guildById.get().kick(member, reason).queue();
|
||||
this.sendKickLog(kickLogModel);
|
||||
} else {
|
||||
log.warn("Not able to kick. Guild {} not found.", kickLogModel.getGuild().getIdLong());
|
||||
throw new GuildException(String.format("Not able to kick %s. Guild %s not found", kickLogModel.getMember().getIdLong(), kickLogModel.getGuild().getIdLong()));
|
||||
log.warn("Not able to kick. Guild {} not found.", member.getGuild().getIdLong());
|
||||
throw new GuildException(String.format("Not able to kick %s. Guild %s not found", member.getIdLong(), member.getGuild().getIdLong()));
|
||||
}
|
||||
}
|
||||
|
||||
private void sendKickLog(KickLogModel kickLogModel) {
|
||||
@Override
|
||||
public void sendKickLog(KickLogModel kickLogModel) {
|
||||
String warnLogMessage = templateService.renderTemplate(KICK_LOG_TEMPLATE, kickLogModel);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, kickLogModel.getServer().getId());
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
@@ -28,7 +28,7 @@ public class SlowModeServiceBean implements SlowModeService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSlowMode(AChannel channel, Duration duration) {
|
||||
public void setSlowMode(ChannelDto channel, Duration duration) {
|
||||
Optional<TextChannel> textChannelOptional = bot.getTextChannelFromServer(channel.getServer().getId(), channel.getId());
|
||||
if(textChannelOptional.isPresent()) {
|
||||
TextChannel textChannel = textChannelOptional.get();
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.exception.UserException;
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
|
||||
import dev.sheldan.abstracto.moderation.service.management.WarnManagementServiceBean;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotification;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotificationModel;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
@@ -33,13 +33,10 @@ public class WarnServiceBean implements WarnService {
|
||||
|
||||
public static final String WARN_LOG_TARGET = "warnLog";
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userService;
|
||||
|
||||
@Autowired
|
||||
private WarnManagementService warnManagementService;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private WarnManagementServiceBean warnManagementService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
@@ -53,13 +50,19 @@ public class WarnServiceBean implements WarnService {
|
||||
private static final String WARN_LOG_TEMPLATE = "warn_log";
|
||||
private static final String WARN_NOTIFICATION_TEMPLATE = "warn_notification";
|
||||
|
||||
@Autowired
|
||||
private WarnConverter warnConverter;
|
||||
|
||||
|
||||
@Override
|
||||
public void warnUser(AUserInAServer warnedAUserInAServer, AUserInAServer warningAUserInAServer, String reason, WarnLog warnLog) {
|
||||
AUser warningAUser = warningAUserInAServer.getUserReference();
|
||||
AUser warnedAUser = warnedAUserInAServer.getUserReference();
|
||||
AServer serverOfWarning = warnedAUserInAServer.getServerReference();
|
||||
public WarnDto warnUser(UserInServerDto warnedAUserInAServer, UserInServerDto warningAUserInAServer, String reason) {
|
||||
UserDto warningAUser = warningAUserInAServer.getUser();
|
||||
UserDto warnedAUser = warnedAUserInAServer.getUser();
|
||||
ServerDto serverOfWarning = warnedAUserInAServer.getServer();
|
||||
log.info("User {} is warning {} in server {} because of {}", warningAUser.getId(), warnedAUser.getId(), serverOfWarning.getId(), reason);
|
||||
Warning warning = warnManagementService.createWarning(warnedAUserInAServer, warningAUserInAServer, reason);
|
||||
AUserInAServer warnedUserInAServerDb = AUserInAServer.builder().userInServerId(warnedAUserInAServer.getUserInServerId()).build();
|
||||
AUserInAServer warningUserInAServerDb = AUserInAServer.builder().userInServerId(warnedAUserInAServer.getUserInServerId()).build();
|
||||
WarnDto warning = warnManagementService.createWarning(warnedUserInAServerDb, warningUserInAServerDb, reason);
|
||||
JDA instance = bot.getInstance();
|
||||
User userBeingWarned = instance.getUserById(warnedAUser.getId());
|
||||
Optional<Guild> guildById = bot.getGuildById(serverOfWarning.getId());
|
||||
@@ -67,11 +70,9 @@ public class WarnServiceBean implements WarnService {
|
||||
if(guildById.isPresent()) {
|
||||
guildName = guildById.get().getName();
|
||||
}
|
||||
warnLog.setWarning(warning);
|
||||
this.sendWarnLog(warnLog);
|
||||
WarnNotification warnNotification = WarnNotification.builder().warning(warning).serverName(guildName).build();
|
||||
WarnNotificationModel warnNotificationModel = WarnNotificationModel.builder().warning(warnConverter.convertFromWarnDto(warning)).serverName(guildName).build();
|
||||
if(userBeingWarned != null) {
|
||||
String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotification);
|
||||
String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotificationModel);
|
||||
CompletableFuture<Message> messageFuture = new CompletableFuture<>();
|
||||
|
||||
// TODO the person executing this, is unaware that the message failed
|
||||
@@ -88,16 +89,18 @@ public class WarnServiceBean implements WarnService {
|
||||
log.warn("Unable to find user {} in guild {} to warn.", warnedAUser.getId(), serverOfWarning.getId());
|
||||
throw new UserException(String.format("Unable to find user %s.", warnedAUser.getId()));
|
||||
}
|
||||
return warning;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void warnUser(Member warnedMember, Member warningMember, String reason, WarnLog warnLog) {
|
||||
AUserInAServer warnedAUser = userManagementService.loadUser(warnedMember);
|
||||
AUserInAServer warningAUser = userManagementService.loadUser(warningMember);
|
||||
this.warnUser(warnedAUser, warningAUser, reason, warnLog);
|
||||
public WarnDto warnUser(Member warnedMember, Member warningMember, String reason) {
|
||||
UserInServerDto warnedAUser = userService.loadUser(warnedMember.getGuild().getIdLong(), warnedMember.getIdLong());
|
||||
UserInServerDto warningAUser = userService.loadUser(warningMember.getGuild().getIdLong(), warningMember.getIdLong());
|
||||
return this.warnUser(warnedAUser, warningAUser, reason);
|
||||
}
|
||||
|
||||
private void sendWarnLog(ServerContext warnLogModel) {
|
||||
@Override
|
||||
public void sendWarnLog(WarnLogModel warnLogModel) {
|
||||
String warnLogMessage = templateService.renderTemplate(WARN_LOG_TEMPLATE, warnLogModel);
|
||||
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, warnLogModel.getServer().getId());
|
||||
MessageToSend message = templateService.renderEmbedTemplate("warn_log", warnLogModel);
|
||||
|
||||
@@ -1,21 +1,25 @@
|
||||
package dev.sheldan.abstracto.moderation.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.repository.WarnRepository;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
@Component
|
||||
public class WarnManagementServiceBean implements WarnManagementService {
|
||||
public class WarnManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private WarnRepository warnRepository;
|
||||
|
||||
@Override
|
||||
public Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) {
|
||||
@Autowired
|
||||
private WarnConverter warnConverter;
|
||||
|
||||
public WarnDto createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) {
|
||||
Warning warning = Warning.builder()
|
||||
.reason(reason)
|
||||
.warnedUser(warnedAUser)
|
||||
@@ -23,6 +27,6 @@ public class WarnManagementServiceBean implements WarnManagementService {
|
||||
.warnDate(Instant.now())
|
||||
.build();
|
||||
warnRepository.save(warning);
|
||||
return warning;
|
||||
return warnConverter.convertFromAWarn(warning);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
abstracto.postTargets.moderation=joinLog,leaveLog,warnLog,kickLog,banLog,editLog,deleteLog
|
||||
abstracto.postTargets.moderation=joinLog,leaveLog,warnLogModel,kickLog,banLog,editLog,deleteLog
|
||||
abstracto.features.moderation=false
|
||||
abstracto.features.warnings=false
|
||||
abstracto.features.logging=true
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.sheldan.abstracto.moderation.models.dto;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class WarnDto {
|
||||
private Long id;
|
||||
private UserInServerDto warnedUser;
|
||||
private UserInServerDto warningUser;
|
||||
private String reason;
|
||||
private OffsetDateTime warnDate;
|
||||
private Boolean decayed;
|
||||
private OffsetDateTime decayDate;
|
||||
}
|
||||
@@ -1,15 +1,18 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@Getter @SuperBuilder @Setter
|
||||
public class BanIdLog extends UserInitiatedServerContext {
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@Setter
|
||||
public class BanIdLogModel extends UserInitiatedServerContext {
|
||||
private String reason;
|
||||
private Member banningUser;
|
||||
private UserInServerModel banningUser;
|
||||
private Long bannedUserId;
|
||||
|
||||
}
|
||||
@@ -1,15 +1,18 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@Getter @SuperBuilder @Setter
|
||||
public class BanLog extends UserInitiatedServerContext {
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@Setter
|
||||
public class BanLogModel extends UserInitiatedServerContext {
|
||||
|
||||
private String reason;
|
||||
private Member banningUser;
|
||||
private Member bannedUser;
|
||||
private UserInServerModel banningUser;
|
||||
private UserInServerModel bannedUser;
|
||||
}
|
||||
@@ -1,14 +1,17 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@Getter @SuperBuilder @Setter
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@Setter
|
||||
public class KickLogModel extends UserInitiatedServerContext {
|
||||
private String reason;
|
||||
private Member kickingUser;
|
||||
private Member kickedUser;
|
||||
private UserInServerModel kickingUser;
|
||||
private UserInServerModel kickedUser;
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
|
||||
@Getter @SuperBuilder @Setter
|
||||
public class WarnLog extends UserInitiatedServerContext {
|
||||
|
||||
private String reason;
|
||||
private Member warnedUser;
|
||||
private Member warningUser;
|
||||
private Message message;
|
||||
private Warning warning;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@Setter
|
||||
public class WarnLogModel extends UserInitiatedServerContext {
|
||||
private Message message;
|
||||
private WarnModel warning;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class WarnModel {
|
||||
private Long id;
|
||||
private UserInServerModel warnedUser;
|
||||
private UserInServerModel warningUser;
|
||||
private String reason;
|
||||
private OffsetDateTime warnDate;
|
||||
private Boolean decayed;
|
||||
private OffsetDateTime decayDate;
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import lombok.Builder;
|
||||
import lombok.Value;
|
||||
|
||||
@Value @Builder
|
||||
public class WarnNotification {
|
||||
private Warning warning;
|
||||
@Value
|
||||
@Builder
|
||||
public class WarnNotificationModel {
|
||||
private WarnModel warning;
|
||||
private String serverName;
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
public interface BanService {
|
||||
void banMember(Member member, String reason, ServerContext banLog);
|
||||
void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog);
|
||||
void banMember(Member member, String reason);
|
||||
void banMember(Long guildId, Long userId, String reason);
|
||||
void sendBanLog(BanLogModel banLogModel);
|
||||
void sendBanIdLog(BanIdLogModel banLogModel);
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@ import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
public interface KickService {
|
||||
void kickMember(Member member, String reason, KickLogModel kickLogModel);
|
||||
void kickMember(Member member, String reason);
|
||||
void sendKickLog(KickLogModel kickLogModel);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
public interface SlowModeService {
|
||||
void setSlowMode(TextChannel channel, Duration duration);
|
||||
void setSlowMode(AChannel channel, Duration duration);
|
||||
void setSlowMode(ChannelDto channel, Duration duration);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
|
||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
|
||||
public interface WarnService {
|
||||
void warnUser(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason, WarnLog warnLog);
|
||||
void warnUser(Member warnedUser, Member warningUser, String reason, WarnLog warnLog);
|
||||
WarnDto warnUser(UserInServerDto warnedAUser, UserInServerDto warningAUser, String reason);
|
||||
WarnDto warnUser(Member warnedUser, Member warningUser, String reason);
|
||||
void sendWarnLog(WarnLogModel warnLogModel);
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
package dev.sheldan.abstracto.moderation.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
|
||||
public interface WarnManagementService {
|
||||
Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason);
|
||||
}
|
||||
Reference in New Issue
Block a user