From 8b7340715c45f798d870417cfbc385dacfc8d8ac Mon Sep 17 00:00:00 2001 From: Liam Date: Tue, 2 Jul 2024 19:47:51 +0100 Subject: [PATCH] impl member ban and unban logging --- .../fascinated/bat/event/EventListener.java | 20 +++++++++++++ .../bat/features/logging/LogType.java | 2 ++ .../logging/listeners/MemberListener.java | 28 +++++++++++++++++++ .../fascinated/bat/service/EventService.java | 28 +++++++++++++++++++ 4 files changed, 78 insertions(+) diff --git a/src/main/java/cc/fascinated/bat/event/EventListener.java b/src/main/java/cc/fascinated/bat/event/EventListener.java index 45f9e5b..a256cbe 100644 --- a/src/main/java/cc/fascinated/bat/event/EventListener.java +++ b/src/main/java/cc/fascinated/bat/event/EventListener.java @@ -10,6 +10,8 @@ import lombok.NonNull; import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.events.channel.ChannelCreateEvent; import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent; +import net.dv8tion.jda.api.events.guild.GuildBanEvent; +import net.dv8tion.jda.api.events.guild.GuildUnbanEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRoleAddEvent; @@ -170,6 +172,24 @@ public interface EventListener { default void onChannelDelete(@NonNull BatGuild guild, @NonNull ChannelDeleteEvent event) { } + /** + * Called when a user is banned from a guild + * + * @param guild the guild that the user was banned from + * @param user the user that was banned + */ + default void onGuildMemberBan(@NonNull BatGuild guild, @NonNull BatUser user, @NonNull GuildBanEvent event) { + } + + /** + * Called when a user is unbanned from a guild + * + * @param guild the guild that the user was unbanned from + * @param user the user that was unbanned + */ + default void onGuildMemberUnban(@NonNull BatGuild guild, @NonNull BatUser user, @NonNull GuildUnbanEvent event) { + } + /** * Called when Spring is shutting down */ diff --git a/src/main/java/cc/fascinated/bat/features/logging/LogType.java b/src/main/java/cc/fascinated/bat/features/logging/LogType.java index 6592f12..05a44a5 100644 --- a/src/main/java/cc/fascinated/bat/features/logging/LogType.java +++ b/src/main/java/cc/fascinated/bat/features/logging/LogType.java @@ -24,6 +24,8 @@ public enum LogType { MEMBER_LEAVE(LogCategory.MEMBER, "Member Leave"), MEMBER_NICKNAME_UPDATE(LogCategory.MEMBER, "Member Nickname Update"), MEMBER_ROLE_UPDATE(LogCategory.MEMBER, "Member Role Update"), + MEMBER_BAN(LogCategory.MEMBER, "Member Ban"), + MEMBER_UNBAN(LogCategory.MEMBER, "Member Unban"), /** * Channel Events diff --git a/src/main/java/cc/fascinated/bat/features/logging/listeners/MemberListener.java b/src/main/java/cc/fascinated/bat/features/logging/listeners/MemberListener.java index feb5d4a..053123e 100644 --- a/src/main/java/cc/fascinated/bat/features/logging/listeners/MemberListener.java +++ b/src/main/java/cc/fascinated/bat/features/logging/listeners/MemberListener.java @@ -9,6 +9,8 @@ import cc.fascinated.bat.model.BatGuild; import cc.fascinated.bat.model.BatUser; import lombok.NonNull; import net.dv8tion.jda.api.entities.Role; +import net.dv8tion.jda.api.events.guild.GuildBanEvent; +import net.dv8tion.jda.api.events.guild.GuildUnbanEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRoleAddEvent; @@ -106,4 +108,30 @@ public class MemberListener implements EventListener { .build()) .build()); } + + @Override + public void onGuildMemberBan(@NonNull BatGuild guild, @NonNull BatUser user, @NonNull GuildBanEvent event) { + if (user.getDiscordUser().isBot()) return; + + logFeature.sendLog(guild, LogType.MEMBER_BAN, EmbedUtils.errorEmbed() + .setDescription(new EmbedDescriptionBuilder("Member Banned") + .appendLine("Member: %s".formatted(user.getDiscordUser().getAsMention()), true) + .appendLine("Username: %s".formatted(user.getDiscordUser().getName()), true) + .appendLine("Snowflake: %s".formatted(user.getId()), true) + .build()) + .build()); + } + + @Override + public void onGuildMemberUnban(@NonNull BatGuild guild, @NonNull BatUser user, @NonNull GuildUnbanEvent event) { + if (user.getDiscordUser().isBot()) return; + + logFeature.sendLog(guild, LogType.MEMBER_UNBAN, EmbedUtils.successEmbed() + .setDescription(new EmbedDescriptionBuilder("Member Unbanned") + .appendLine("Member: %s".formatted(user.getDiscordUser().getAsMention()), true) + .appendLine("Username: %s".formatted(user.getDiscordUser().getName()), true) + .appendLine("Snowflake: %s".formatted(user.getId()), true) + .build()) + .build()); + } } diff --git a/src/main/java/cc/fascinated/bat/service/EventService.java b/src/main/java/cc/fascinated/bat/service/EventService.java index a7a39e8..581b3b1 100644 --- a/src/main/java/cc/fascinated/bat/service/EventService.java +++ b/src/main/java/cc/fascinated/bat/service/EventService.java @@ -8,6 +8,8 @@ import lombok.NonNull; import lombok.extern.log4j.Log4j2; import net.dv8tion.jda.api.events.channel.ChannelCreateEvent; import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent; +import net.dv8tion.jda.api.events.guild.GuildBanEvent; +import net.dv8tion.jda.api.events.guild.GuildUnbanEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRoleAddEvent; @@ -222,4 +224,30 @@ public class EventService extends ListenerAdapter { listener.onChannelDelete(guild, event); } } + + @Override + public void onGuildBan(@NotNull GuildBanEvent event) { + if (event.getUser().isBot()) { + return; + } + BatGuild guild = guildService.getGuild(event.getGuild().getId()); + BatUser user = userService.getUser(event.getUser().getId()); + + for (EventListener listener : LISTENERS) { + listener.onGuildMemberBan(guild, user, event); + } + } + + @Override + public void onGuildUnban(@NotNull GuildUnbanEvent event) { + if (event.getUser().isBot()) { + return; + } + BatGuild guild = guildService.getGuild(event.getGuild().getId()); + BatUser user = userService.getUser(event.getUser().getId()); + + for (EventListener listener : LISTENERS) { + listener.onGuildMemberUnban(guild, user, event); + } + } }