add role color and icon update, and add channel nsfw and user limit update logging

This commit is contained in:
Lee 2024-07-04 10:40:51 +01:00
parent 626a9bd77d
commit 26b7b7158a
7 changed files with 321 additions and 125 deletions

@ -45,4 +45,14 @@ public class HexColorUtils {
int rgb = Integer.parseInt(hex, 16); int rgb = Integer.parseInt(hex, 16);
return new Color(rgb); return new Color(rgb);
} }
/**
* Converts a Color object to a hex color
*
* @param color the Color object to convert
* @return the hex color
*/
public static String colorToHex(Color color) {
return String.format("#%02x%02x%02x", color.getRed(), color.getGreen(), color.getBlue());
}
} }

@ -12,10 +12,7 @@ import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.channel.ChannelCreateEvent; import net.dv8tion.jda.api.events.channel.ChannelCreateEvent;
import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent; import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateBitrateEvent; import net.dv8tion.jda.api.events.channel.update.*;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateNameEvent;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateTopicEvent;
import net.dv8tion.jda.api.events.channel.update.GenericChannelUpdateEvent;
import net.dv8tion.jda.api.events.emoji.EmojiAddedEvent; import net.dv8tion.jda.api.events.emoji.EmojiAddedEvent;
import net.dv8tion.jda.api.events.emoji.EmojiRemovedEvent; import net.dv8tion.jda.api.events.emoji.EmojiRemovedEvent;
import net.dv8tion.jda.api.events.emoji.update.EmojiUpdateNameEvent; import net.dv8tion.jda.api.events.emoji.update.EmojiUpdateNameEvent;
@ -39,6 +36,8 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.events.message.MessageUpdateEvent; import net.dv8tion.jda.api.events.message.MessageUpdateEvent;
import net.dv8tion.jda.api.events.role.RoleCreateEvent; import net.dv8tion.jda.api.events.role.RoleCreateEvent;
import net.dv8tion.jda.api.events.role.RoleDeleteEvent; import net.dv8tion.jda.api.events.role.RoleDeleteEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateColorEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateIconEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateNameEvent; import net.dv8tion.jda.api.events.role.update.RoleUpdateNameEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdatePermissionsEvent; import net.dv8tion.jda.api.events.role.update.RoleUpdatePermissionsEvent;
import net.dv8tion.jda.api.events.user.update.UserUpdateAvatarEvent; import net.dv8tion.jda.api.events.user.update.UserUpdateAvatarEvent;
@ -164,6 +163,18 @@ public interface EventListener {
default void onChannelUpdateBitrate(@NonNull BatGuild guild, @NonNull ChannelUpdateBitrateEvent event) { default void onChannelUpdateBitrate(@NonNull BatGuild guild, @NonNull ChannelUpdateBitrateEvent event) {
} }
default void onRoleUpdateColor(@NonNull BatGuild guild, @NonNull RoleUpdateColorEvent event) {
}
default void onRoleUpdateIcon(@NonNull BatGuild guild, @NonNull RoleUpdateIconEvent event) {
}
default void onChannelUpdateNSFW(@NonNull BatGuild guild, @NonNull ChannelUpdateNSFWEvent event) {
}
default void onChannelUpdateUserLimit(@NonNull BatGuild guild, @NonNull ChannelUpdateUserLimitEvent event) {
}
default void onShutdown() { default void onShutdown() {
} }
} }

@ -23,9 +23,7 @@ import net.dv8tion.jda.api.entities.channel.unions.AudioChannelUnion;
import net.dv8tion.jda.api.entities.channel.unions.ChannelUnion; import net.dv8tion.jda.api.entities.channel.unions.ChannelUnion;
import net.dv8tion.jda.api.events.channel.ChannelCreateEvent; import net.dv8tion.jda.api.events.channel.ChannelCreateEvent;
import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent; import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateBitrateEvent; import net.dv8tion.jda.api.events.channel.update.*;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateNameEvent;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateTopicEvent;
import net.dv8tion.jda.api.events.guild.override.GenericPermissionOverrideEvent; import net.dv8tion.jda.api.events.guild.override.GenericPermissionOverrideEvent;
import net.dv8tion.jda.api.events.guild.voice.GenericGuildVoiceEvent; import net.dv8tion.jda.api.events.guild.voice.GenericGuildVoiceEvent;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -70,6 +68,17 @@ public class ChannelListener implements EventListener {
log.info("Found {} users in a voice channel", lastVoiceChannel.size()); log.info("Found {} users in a voice channel", lastVoiceChannel.size());
} }
/**
* Formats the channel type
*
* @param channel - the channel
* @return the formatted channel type
*/
public String formatChannelType(ChannelUnion channel) {
return (channel.getType() == ChannelType.TEXT || channel.getType() == ChannelType.VOICE) ? EnumUtils.getEnumName(channel.getType()) + " Channel"
: EnumUtils.getEnumName(channel.getType());
}
@Override @Override
public void onChannelCreate(@NonNull BatGuild guild, @NonNull ChannelCreateEvent event) { public void onChannelCreate(@NonNull BatGuild guild, @NonNull ChannelCreateEvent event) {
ChannelUnion channel = event.getChannel(); ChannelUnion channel = event.getChannel();
@ -212,14 +221,35 @@ public class ChannelListener implements EventListener {
.build()); .build());
} }
/** @Override
* Formats the channel type public void onChannelUpdateNSFW(@NonNull BatGuild guild, @NonNull ChannelUpdateNSFWEvent event) {
* logFeature.sendLog(guild, LogType.CHANNEL_CONFIGURATION, EmbedUtils.successEmbed()
* @param channel - the channel .setDescription(new EmbedDescriptionBuilder("Channel NSFW Updated")
* @return the formatted channel type .appendLine("Channel: %s".formatted(event.getChannel().getAsMention()), true)
*/ .appendLine("NSFW: `%s` -> `%s`".formatted(
public String formatChannelType(ChannelUnion channel) { Boolean.TRUE.equals(event.getOldValue()) ? "Yes" : "No",
return (channel.getType() == ChannelType.TEXT || channel.getType() == ChannelType.VOICE) ? EnumUtils.getEnumName(channel.getType()) + " Channel" Boolean.TRUE.equals(event.getNewValue()) ? "Yes" : "No"
: EnumUtils.getEnumName(channel.getType()); ), true)
.build())
.build());
}
@Override
public void onChannelUpdateUserLimit(@NonNull BatGuild guild, @NonNull ChannelUpdateUserLimitEvent event) {
if (Objects.equals(event.getOldValue(), event.getNewValue()) || event.getOldValue() == null || event.getNewValue() == null) {
return;
}
VoiceChannel channel = event.getChannel().asVoiceChannel();
log.info("Voice channel \"{}\" user limit was updated to {} in guild \"{}\"", channel.getName(), event.getNewValue(), guild.getName());
EmbedDescriptionBuilder description = new EmbedDescriptionBuilder("Voice Channel User Limit Updated")
.appendLine("Channel: %s".formatted(channel.getAsMention()), true)
.appendLine("User Limit: `%s` -> `%s`".formatted(
event.getOldValue() == 0 ? "Unlimited" : NumberFormatter.format(event.getOldValue()),
event.getNewValue() == 0 ? "Unlimited" : NumberFormatter.format(event.getNewValue())
), true);
logFeature.sendLog(guild, LogType.CHANNEL_CONFIGURATION, EmbedUtils.successEmbed()
.setDescription(description.build())
.build());
} }
} }

@ -0,0 +1,63 @@
package cc.fascinated.bat.features.logging.listeners;
import cc.fascinated.bat.common.EmbedDescriptionBuilder;
import cc.fascinated.bat.common.EmbedUtils;
import cc.fascinated.bat.event.EventListener;
import cc.fascinated.bat.features.logging.LogFeature;
import cc.fascinated.bat.features.logging.LogType;
import cc.fascinated.bat.model.BatGuild;
import lombok.NonNull;
import lombok.extern.log4j.Log4j2;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.emoji.EmojiAddedEvent;
import net.dv8tion.jda.api.events.emoji.EmojiRemovedEvent;
import net.dv8tion.jda.api.events.emoji.update.EmojiUpdateNameEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author Fascinated (fascinated7)
*/
@Component
@Log4j2(topic = "Logging - Emoji Listener")
public class EmojiListener implements EventListener {
private final LogFeature logFeature;
@Autowired
public EmojiListener(@NonNull LogFeature logFeature) {
this.logFeature = logFeature;
}
@Override
public void onEmojiAdd(@NonNull BatGuild guild, @NonNull Emoji emoji, @NonNull EmojiAddedEvent event) {
log.info("Emoji \"{}\" was added in guild \"{}\"", emoji.getName(), guild.getName());
logFeature.sendLog(guild, LogType.EMOJI_ADD, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Emoji Added")
.appendLine("Emoji: %s".formatted(emoji.getFormatted()), true)
.appendLine("Name: `%s`".formatted(emoji.getName()), true)
.build())
.build());
}
@Override
public void onEmojiRemove(@NonNull BatGuild guild, @NonNull Emoji emoji, @NonNull EmojiRemovedEvent event) {
log.info("Emoji \"{}\" was removed in guild \"{}\"", emoji.getName(), guild.getName());
logFeature.sendLog(guild, LogType.EMOJI_REMOVE, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Emoji Removed")
.appendLine("Emoji: %s".formatted(emoji.getFormatted()), true)
.appendLine("Name: `%s`".formatted(emoji.getName()), true)
.build())
.build());
}
@Override
public void onEmojiRename(@NonNull BatGuild guild, @NonNull Emoji emoji, @NonNull String oldName, @NonNull String newName, @NonNull EmojiUpdateNameEvent event) {
log.info("Emoji \"{}\" was renamed to \"{}\" in guild \"{}\"", oldName, newName, guild.getName());
logFeature.sendLog(guild, LogType.EMOJI_NAME_UPDATED, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Emoji Renamed")
.appendLine("Emoji: %s".formatted(emoji.getFormatted()), true)
.appendLine("Name: `%s` -> `%s`".formatted(oldName, newName), true)
.build())
.build());
}
}

@ -2,6 +2,7 @@ package cc.fascinated.bat.features.logging.listeners;
import cc.fascinated.bat.common.EmbedDescriptionBuilder; import cc.fascinated.bat.common.EmbedDescriptionBuilder;
import cc.fascinated.bat.common.EmbedUtils; import cc.fascinated.bat.common.EmbedUtils;
import cc.fascinated.bat.common.HexColorUtils;
import cc.fascinated.bat.event.EventListener; import cc.fascinated.bat.event.EventListener;
import cc.fascinated.bat.features.logging.LogFeature; import cc.fascinated.bat.features.logging.LogFeature;
import cc.fascinated.bat.features.logging.LogType; import cc.fascinated.bat.features.logging.LogType;
@ -11,6 +12,7 @@ import lombok.extern.log4j.Log4j2;
import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Invite; import net.dv8tion.jda.api.entities.Invite;
import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.RoleIcon;
import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.emoji.EmojiAddedEvent; import net.dv8tion.jda.api.events.emoji.EmojiAddedEvent;
import net.dv8tion.jda.api.events.emoji.EmojiRemovedEvent; import net.dv8tion.jda.api.events.emoji.EmojiRemovedEvent;
@ -18,12 +20,15 @@ import net.dv8tion.jda.api.events.emoji.update.EmojiUpdateNameEvent;
import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent; import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent;
import net.dv8tion.jda.api.events.role.RoleCreateEvent; import net.dv8tion.jda.api.events.role.RoleCreateEvent;
import net.dv8tion.jda.api.events.role.RoleDeleteEvent; import net.dv8tion.jda.api.events.role.RoleDeleteEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateColorEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateIconEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateNameEvent; import net.dv8tion.jda.api.events.role.update.RoleUpdateNameEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdatePermissionsEvent; import net.dv8tion.jda.api.events.role.update.RoleUpdatePermissionsEvent;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.awt.*;
import java.util.EnumSet; import java.util.EnumSet;
/** /**
@ -58,109 +63,4 @@ public class GuildListener implements EventListener {
.build())); .build()));
}); });
} }
@Override
public void onEmojiAdd(@NonNull BatGuild guild, @NonNull Emoji emoji, @NonNull EmojiAddedEvent event) {
log.info("Emoji \"{}\" was added in guild \"{}\"", emoji.getName(), guild.getName());
logFeature.sendLog(guild, LogType.EMOJI_ADD, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Emoji Added")
.appendLine("Emoji: %s".formatted(emoji.getFormatted()), true)
.appendLine("Name: `%s`".formatted(emoji.getName()), true)
.build())
.build());
}
@Override
public void onEmojiRemove(@NonNull BatGuild guild, @NonNull Emoji emoji, @NonNull EmojiRemovedEvent event) {
log.info("Emoji \"{}\" was removed in guild \"{}\"", emoji.getName(), guild.getName());
logFeature.sendLog(guild, LogType.EMOJI_REMOVE, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Emoji Removed")
.appendLine("Emoji: %s".formatted(emoji.getFormatted()), true)
.appendLine("Name: `%s`".formatted(emoji.getName()), true)
.build())
.build());
}
@Override
public void onEmojiRename(@NonNull BatGuild guild, @NonNull Emoji emoji, @NonNull String oldName, @NonNull String newName, @NonNull EmojiUpdateNameEvent event) {
log.info("Emoji \"{}\" was renamed to \"{}\" in guild \"{}\"", oldName, newName, guild.getName());
logFeature.sendLog(guild, LogType.EMOJI_NAME_UPDATED, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Emoji Renamed")
.appendLine("Emoji: %s".formatted(emoji.getFormatted()), true)
.appendLine("Name: `%s` -> `%s`".formatted(oldName, newName), true)
.build())
.build());
}
@Override
public void onRoleUpdatePermissions(@NonNull BatGuild guild, @NonNull RoleUpdatePermissionsEvent event) {
log.info("Role \"{}\" permissions were updated in guild \"{}\"", event.getRole().getName(), guild.getName());
EnumSet<Permission> oldPermissions = event.getOldValue();
EnumSet<Permission> newPermissions = event.getNewValue();
StringBuilder allowedPermissions = new StringBuilder();
for (Permission permission : newPermissions) {
if (!oldPermissions.contains(permission)) {
allowedPermissions.append("`").append(permission.getName()).append("`, ");
}
}
StringBuilder deniedPermissions = new StringBuilder();
for (Permission permission : oldPermissions) {
if (!newPermissions.contains(permission)) {
deniedPermissions.append("`").append(permission.getName()).append("`, ");
}
}
EmbedDescriptionBuilder description = new EmbedDescriptionBuilder("Role Permissions Updated")
.appendLine("Role: %s".formatted(event.getRole().getAsMention()), true);
if (!allowedPermissions.isEmpty()) {
description.appendLine("Allowed Permissions: %s".formatted(allowedPermissions.substring(0, allowedPermissions.length() - 2)), true);
}
if (!deniedPermissions.isEmpty()) {
description.appendLine("Denied Permissions: %s".formatted(deniedPermissions.substring(0, deniedPermissions.length() - 2)), true);
}
logFeature.sendLog(guild, LogType.ROLE_PERMISSIONS_UPDATED, EmbedUtils.successEmbed()
.setDescription(description.build())
.build());
}
@Override
public void onRoleCreate(@NonNull BatGuild guild, @NonNull RoleCreateEvent event) {
Role role = event.getRole();
log.info("Role \"{}\" was created in guild \"{}\"", role.getName(), guild.getName());
logFeature.sendLog(guild, LogType.ROLE_CREATE, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Role Created")
.appendLine("Role: %s".formatted(role.getAsMention()), true)
.appendLine("Color: %s".formatted(role.getColor() == null ? "Default" : role.getColor()), true)
.appendLine("Position: `%s`".formatted(role.getPosition()), true)
.build())
.build());
}
@Override
public void onRoleDelete(@NonNull BatGuild guild, @NonNull RoleDeleteEvent event) {
log.info("Role \"{}\" was deleted in guild \"{}\"", event.getRole().getName(), guild.getName());
logFeature.sendLog(guild, LogType.ROLE_DELETE, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Role Deleted")
.appendLine("Role: %s".formatted(event.getRole().getAsMention()), true)
.appendLine("Color: %s".formatted(event.getRole().getColor() == null ? "Default" : event.getRole().getColor()), true)
.appendLine("Position: `%s`".formatted(event.getRole().getPosition()), true)
.build())
.build());
}
@Override
public void onRoleUpdateName(@NonNull BatGuild guild, @NonNull RoleUpdateNameEvent event) {
String oldName = event.getOldName();
String newName = event.getNewName();
log.info("Role \"{}\" was renamed to \"{}\" in guild \"{}\"", oldName, newName, guild.getName());
logFeature.sendLog(guild, LogType.ROLE_CONFIGURATION, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Role Renamed")
.appendLine("Role: %s".formatted(event.getRole().getAsMention()), true)
.appendLine("Name: `%s` -> `%s`".formatted(oldName, newName), true)
.build())
.build());
}
} }

@ -0,0 +1,146 @@
package cc.fascinated.bat.features.logging.listeners;
import cc.fascinated.bat.common.EmbedDescriptionBuilder;
import cc.fascinated.bat.common.EmbedUtils;
import cc.fascinated.bat.common.HexColorUtils;
import cc.fascinated.bat.event.EventListener;
import cc.fascinated.bat.features.logging.LogFeature;
import cc.fascinated.bat.features.logging.LogType;
import cc.fascinated.bat.model.BatGuild;
import lombok.NonNull;
import lombok.extern.log4j.Log4j2;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.RoleIcon;
import net.dv8tion.jda.api.events.role.RoleCreateEvent;
import net.dv8tion.jda.api.events.role.RoleDeleteEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateColorEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateIconEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateNameEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdatePermissionsEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.AccessType;
import org.springframework.stereotype.Component;
import java.awt.*;
import java.util.EnumSet;
/**
* @author Fascinated (fascinated7)
*/
@Component
@Log4j2(topic = "Logging - Role Listener")
public class RoleListener implements EventListener {
private final LogFeature logFeature;
@Autowired
public RoleListener(@NonNull LogFeature logFeature) {
this.logFeature = logFeature;
}
@Override
public void onRoleUpdatePermissions(@NonNull BatGuild guild, @NonNull RoleUpdatePermissionsEvent event) {
log.info("Role \"{}\" permissions were updated in guild \"{}\"", event.getRole().getName(), guild.getName());
EnumSet<Permission> oldPermissions = event.getOldValue();
EnumSet<Permission> newPermissions = event.getNewValue();
StringBuilder allowedPermissions = new StringBuilder();
for (Permission permission : newPermissions) {
if (!oldPermissions.contains(permission)) {
allowedPermissions.append("`").append(permission.getName()).append("`, ");
}
}
StringBuilder deniedPermissions = new StringBuilder();
for (Permission permission : oldPermissions) {
if (!newPermissions.contains(permission)) {
deniedPermissions.append("`").append(permission.getName()).append("`, ");
}
}
EmbedDescriptionBuilder description = new EmbedDescriptionBuilder("Role Permissions Updated")
.appendLine("Role: %s".formatted(event.getRole().getAsMention()), true);
if (!allowedPermissions.isEmpty()) {
description.appendLine("Allowed Permissions: %s".formatted(allowedPermissions.substring(0, allowedPermissions.length() - 2)), true);
}
if (!deniedPermissions.isEmpty()) {
description.appendLine("Denied Permissions: %s".formatted(deniedPermissions.substring(0, deniedPermissions.length() - 2)), true);
}
logFeature.sendLog(guild, LogType.ROLE_PERMISSIONS_UPDATED, EmbedUtils.successEmbed()
.setDescription(description.build())
.build());
}
@Override
public void onRoleCreate(@NonNull BatGuild guild, @NonNull RoleCreateEvent event) {
Role role = event.getRole();
log.info("Role \"{}\" was created in guild \"{}\"", role.getName(), guild.getName());
logFeature.sendLog(guild, LogType.ROLE_CREATE, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Role Created")
.appendLine("Role: %s".formatted(role.getAsMention()), true)
.appendLine("Color: %s".formatted(role.getColor() == null ? "Default" : role.getColor()), true)
.appendLine("Position: `%s`".formatted(role.getPosition()), true)
.build())
.build());
}
@Override
public void onRoleDelete(@NonNull BatGuild guild, @NonNull RoleDeleteEvent event) {
log.info("Role \"{}\" was deleted in guild \"{}\"", event.getRole().getName(), guild.getName());
logFeature.sendLog(guild, LogType.ROLE_DELETE, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Role Deleted")
.appendLine("Role: %s".formatted(event.getRole().getAsMention()), true)
.appendLine("Color: %s".formatted(event.getRole().getColor() == null ? "Default" : event.getRole().getColor()), true)
.appendLine("Position: `%s`".formatted(event.getRole().getPosition()), true)
.build())
.build());
}
@Override
public void onRoleUpdateName(@NonNull BatGuild guild, @NonNull RoleUpdateNameEvent event) {
String oldName = event.getOldName();
String newName = event.getNewName();
log.info("Role \"{}\" was renamed to \"{}\" in guild \"{}\"", oldName, newName, guild.getName());
logFeature.sendLog(guild, LogType.ROLE_CONFIGURATION, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Role Renamed")
.appendLine("Role: %s".formatted(event.getRole().getAsMention()), true)
.appendLine("Name: `%s` -> `%s`".formatted(oldName, newName), true)
.build())
.build());
}
@Override
public void onRoleUpdateColor(@NonNull BatGuild guild, @NonNull RoleUpdateColorEvent event) {
Color oldColor = event.getOldColor();
Color newColor = event.getNewColor();
log.info("Role \"{}\" color was updated in guild \"{}\"", event.getRole().getName(), guild.getName());
logFeature.sendLog(guild, LogType.ROLE_CONFIGURATION, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Role Color Updated")
.appendLine("Role: %s".formatted(event.getRole().getAsMention()), true)
.appendLine("Color: `%s` -> `%s`".formatted(
oldColor == null ? "Default" : HexColorUtils.colorToHex(oldColor),
newColor == null ? "Default" : HexColorUtils.colorToHex(newColor)
), true)
.build())
.build());
}
@Override
public void onRoleUpdateIcon(@NonNull BatGuild guild, @NonNull RoleUpdateIconEvent event) {
RoleIcon oldIcon = event.getOldIcon();
RoleIcon newIcon = event.getNewIcon();
log.info("Role \"{}\" icon was updated in guild \"{}\"", event.getRole().getName(), guild.getName());
logFeature.sendLog(guild, LogType.ROLE_CONFIGURATION, EmbedUtils.successEmbed()
.setDescription(new EmbedDescriptionBuilder("Role Icon Updated")
.appendLine("Role: %s".formatted(event.getRole().getAsMention()), true)
.appendLine("Icon: `%s` -> `%s`".formatted(
oldIcon == null ? "None" : oldIcon.getEmoji(),
newIcon == null ? "None" : newIcon.getEmoji()
), true)
.build())
.build());
}
}

@ -10,10 +10,7 @@ import lombok.extern.log4j.Log4j2;
import net.dv8tion.jda.api.entities.Invite; import net.dv8tion.jda.api.entities.Invite;
import net.dv8tion.jda.api.events.channel.ChannelCreateEvent; import net.dv8tion.jda.api.events.channel.ChannelCreateEvent;
import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent; import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateBitrateEvent; import net.dv8tion.jda.api.events.channel.update.*;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateNSFWEvent;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateNameEvent;
import net.dv8tion.jda.api.events.channel.update.ChannelUpdateTopicEvent;
import net.dv8tion.jda.api.events.emoji.EmojiAddedEvent; import net.dv8tion.jda.api.events.emoji.EmojiAddedEvent;
import net.dv8tion.jda.api.events.emoji.EmojiRemovedEvent; import net.dv8tion.jda.api.events.emoji.EmojiRemovedEvent;
import net.dv8tion.jda.api.events.emoji.update.EmojiUpdateNameEvent; import net.dv8tion.jda.api.events.emoji.update.EmojiUpdateNameEvent;
@ -36,6 +33,8 @@ import net.dv8tion.jda.api.events.message.MessageDeleteEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.events.role.RoleCreateEvent; import net.dv8tion.jda.api.events.role.RoleCreateEvent;
import net.dv8tion.jda.api.events.role.RoleDeleteEvent; import net.dv8tion.jda.api.events.role.RoleDeleteEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateColorEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateIconEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdateNameEvent; import net.dv8tion.jda.api.events.role.update.RoleUpdateNameEvent;
import net.dv8tion.jda.api.events.role.update.RoleUpdatePermissionsEvent; import net.dv8tion.jda.api.events.role.update.RoleUpdatePermissionsEvent;
import net.dv8tion.jda.api.events.user.update.UserUpdateAvatarEvent; import net.dv8tion.jda.api.events.user.update.UserUpdateAvatarEvent;
@ -445,6 +444,25 @@ public class EventService extends ListenerAdapter {
} }
} }
@Override
public void onRoleUpdateColor(@NotNull RoleUpdateColorEvent event) {
BatGuild guild = guildService.getGuild(event.getGuild().getId());
for (EventListener listener : LISTENERS) {
listener.onRoleUpdateColor(guild, event);
}
}
@Override
public void onRoleUpdateIcon(@NotNull RoleUpdateIconEvent event) {
BatGuild guild = guildService.getGuild(event.getGuild().getId());
for (EventListener listener : LISTENERS) {
listener.onRoleUpdateIcon(guild, event);
}
}
@Override @Override
public void onChannelUpdateTopic(@NotNull ChannelUpdateTopicEvent event) { public void onChannelUpdateTopic(@NotNull ChannelUpdateTopicEvent event) {
BatGuild guild = guildService.getGuild(event.getGuild().getId()); BatGuild guild = guildService.getGuild(event.getGuild().getId());
@ -462,4 +480,22 @@ public class EventService extends ListenerAdapter {
listener.onChannelUpdateBitrate(guild, event); listener.onChannelUpdateBitrate(guild, event);
} }
} }
@Override
public void onChannelUpdateNSFW(@NotNull ChannelUpdateNSFWEvent event) {
BatGuild guild = guildService.getGuild(event.getGuild().getId());
for (EventListener listener : LISTENERS) {
listener.onChannelUpdateNSFW(guild, event);
}
}
@Override
public void onChannelUpdateUserLimit(@NotNull ChannelUpdateUserLimitEvent event) {
BatGuild guild = guildService.getGuild(event.getGuild().getId());
for (EventListener listener : LISTENERS) {
listener.onChannelUpdateUserLimit(guild, event);
}
}
} }