[AB-111] adding ability to perform moderation actions on various logging/report messages

This commit is contained in:
Sheldan
2024-03-17 12:37:30 +01:00
parent f45721ba42
commit dbf5d99622
76 changed files with 1663 additions and 648 deletions

View File

@@ -87,7 +87,7 @@ public class ModalInteractionListenerBean extends ListenerAdapter {
postInteractionExecution.execute(model, result, listener);
}
} else {
log.warn("No listener found for button event for id {}.", event.getModalId());
log.warn("No listener found for modal event for id {}.", event.getModalId());
}
} else {
log.warn("No callback found for id {}.", event.getModalId());

View File

@@ -117,13 +117,23 @@ public class MemberServiceBean implements MemberService {
return getMemberInServer(aUserInAServer.getServerReference().getId(), aUserInAServer.getUserReference().getId());
}
@Override
public Member getMemberInServer(ServerUser serverUser) {
return getMemberInServer(serverUser.getServerId(), serverUser.getUserId());
}
@Override
public CompletableFuture<Member> getMemberInServerAsync(ServerUser serverUser) {
return getMemberInServerAsync(serverUser.getServerId(), serverUser.getUserId());
}
@Override
public CompletableFuture<Member> getMemberInServerAsync(AUserInAServer aUserInAServer) {
return getMemberInServerAsync(aUserInAServer.getServerReference().getId(), aUserInAServer.getUserReference().getId());
}
@Override
public Member getMemberInServer(AServer server, AUser member) {
public Member getMemberInServerAsync(AServer server, AUser member) {
return getMemberInServer(server.getId(), member.getId());
}
@@ -151,8 +161,7 @@ public class MemberServiceBean implements MemberService {
@Override
public CompletableFuture<Void> timeoutUser(Member member, Duration duration, String reason) {
log.info("Applying timeout for user {} in guild {} for {}", member.getId(), member.getGuild().getIdLong(), duration);
return member.timeoutFor(duration).reason(reason).submit();
return timeoutMember(member.getGuild(), ServerUser.fromMember(member), duration, reason);
}
@Override
@@ -171,9 +180,19 @@ public class MemberServiceBean implements MemberService {
return timeoutUser(member, muteDuration, reason);
}
@Override
public CompletableFuture<Void> timeoutMember(Guild guild, ServerUser serverUser, Duration duration, String reason) {
return guild.timeoutFor(UserSnowflake.fromId(serverUser.getUserId()), duration).reason(reason).submit();
}
@Override
public CompletableFuture<Void> removeTimeout(Guild guild, ServerUser serverUser, String reason) {
log.info("Removing timeout for user {} in guild {}.", serverUser.getUserId(), guild.getIdLong());
return guild.removeTimeout(UserSnowflake.fromId(serverUser.getUserId())).reason(reason).submit();
}
@Override
public CompletableFuture<Void> removeTimeout(Member member) {
log.info("Removing timeout for user {} in guild {}.", member.getId(), member.getGuild().getIdLong());
return member.removeTimeout().submit();
return removeTimeout(member.getGuild(), ServerUser.fromMember(member), null);
}
}

View File

@@ -4,6 +4,7 @@ import dev.sheldan.abstracto.core.metric.service.CounterMetric;
import dev.sheldan.abstracto.core.metric.service.MetricService;
import dev.sheldan.abstracto.core.metric.service.MetricTag;
import dev.sheldan.abstracto.core.models.ServerChannelMessage;
import dev.sheldan.abstracto.core.models.ServerUser;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
@@ -130,6 +131,13 @@ public class MessageServiceBean implements MessageService {
);
}
@Override
public CompletableFuture<Message> sendMessageToUser(ServerUser serverUser, String text) {
return memberService.getMemberInServerAsync(serverUser).thenCompose(member ->
sendMessageToUser(member.getUser(), text)
);
}
@Override
public CompletableFuture<Message> sendSimpleTemplateToUser(Long userId, String templateKey) {
String text = templateService.renderSimpleTemplate(templateKey);

View File

@@ -22,7 +22,16 @@ public class ServerUser implements Serializable {
return ServerUser
.builder()
.serverId(aUserInAServer.getServerReference().getId())
.userId(aUserInAServer.getUserReference().getId()).build();
.userId(aUserInAServer.getUserReference().getId())
.build();
}
public static ServerUser fromId(Long serverId, Long userId) {
return ServerUser
.builder()
.serverId(serverId)
.userId(userId)
.build();
}
public static ServerUser fromMember(Member member) {

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.models.template.display;
import dev.sheldan.abstracto.core.models.ServerUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.utils.MemberUtils;
import lombok.Builder;
@@ -12,6 +13,7 @@ import net.dv8tion.jda.api.entities.Member;
@Builder
public class MemberDisplay {
private String memberMention;
private String name;
private Long userId;
private Long serverId;
@@ -19,6 +21,7 @@ public class MemberDisplay {
return MemberDisplay
.builder()
.memberMention(member.getAsMention())
.name(member.getEffectiveName())
.serverId(member.getGuild().getIdLong())
.userId(member.getIdLong())
.build();
@@ -41,4 +44,13 @@ public class MemberDisplay {
.userId(userId)
.build();
}
public static MemberDisplay fromServerUser(ServerUser serverUser) {
return MemberDisplay
.builder()
.memberMention(MemberUtils.getUserAsMention(serverUser.getUserId()))
.serverId(serverUser.getServerId())
.userId(serverUser.getUserId())
.build();
}
}

View File

@@ -0,0 +1,41 @@
package dev.sheldan.abstracto.core.models.template.display;
import dev.sheldan.abstracto.core.models.ServerUser;
import dev.sheldan.abstracto.core.utils.MemberUtils;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.User;
@Getter
@Setter
@Builder
public class UserDisplay {
private Long userId;
private String userMention;
public static UserDisplay fromUser(User user) {
return UserDisplay
.builder()
.userMention(MemberUtils.getUserAsMention(user.getIdLong()))
.userId(user.getIdLong())
.build();
}
public static UserDisplay fromServerUser(ServerUser serverUser) {
return UserDisplay
.builder()
.userMention(MemberUtils.getUserAsMention(serverUser.getUserId()))
.userId(serverUser.getUserId())
.build();
}
public static UserDisplay fromId(Long id) {
return UserDisplay
.builder()
.userMention(MemberUtils.getUserAsMention(id))
.userId(id)
.build();
}
}

View File

@@ -25,8 +25,10 @@ public interface MemberService {
boolean isUserInGuild(AUserInAServer aUserInAServer);
boolean isUserInGuild(Guild guild, AUserInAServer aUserInAServer);
Member getMemberInServer(AUserInAServer aUserInAServer);
Member getMemberInServer(ServerUser serverUser);
CompletableFuture<Member> getMemberInServerAsync(ServerUser serverUser);
CompletableFuture<Member> getMemberInServerAsync(AUserInAServer aUserInAServer);
Member getMemberInServer(AServer server, AUser member);
Member getMemberInServerAsync(AServer server, AUser member);
CompletableFuture<Member> forceReloadMember(Member member);
Member getBotInGuild(AServer server);
CompletableFuture<User> getUserViaId(Long userId);
@@ -35,5 +37,7 @@ public interface MemberService {
CompletableFuture<Void> timeoutUserMaxDuration(Member member);
CompletableFuture<Void> timeoutUser(Member member, Instant target);
CompletableFuture<Void> timeoutUser(Member member, Instant target, String reason);
CompletableFuture<Void> timeoutMember(Guild guild, ServerUser serverUser, Duration duration, String reason);
CompletableFuture<Void> removeTimeout(Guild guild, ServerUser serverUser, String reason);
CompletableFuture<Void> removeTimeout(Member member);
}

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.ServerChannelMessage;
import dev.sheldan.abstracto.core.models.ServerUser;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
@@ -25,6 +26,7 @@ public interface MessageService {
void updateStatusMessage(AChannel channel, Long messageId, MessageToSend messageToSend);
void updateStatusMessage(MessageChannel channel, Long messageId, MessageToSend messageToSend);
CompletableFuture<Message> sendMessageToUser(AUserInAServer userInAServer, String text);
CompletableFuture<Message> sendMessageToUser(ServerUser serverUser, String text);
CompletableFuture<Message> sendSimpleTemplateToUser(Long userId, String templateKey);
List<CompletableFuture<Message>> retrieveMessages(List<ServerChannelMessage> messages);
CompletableFuture<Message> sendTemplateToUser(User user, String template, Object model);