2121package com .mcmoddev .mmdbot .thelistener .events ;
2222
2323import com .mcmoddev .mmdbot .core .event .moderation .ScamLinkEvent ;
24- import com .mcmoddev .mmdbot .core .util .MessageUtilities ;
2524import com .mcmoddev .mmdbot .core .util .Utils ;
2625import com .mcmoddev .mmdbot .core .util .jda .caching .MessageData ;
2726import com .mcmoddev .mmdbot .thelistener .TheListener ;
2827import com .mcmoddev .mmdbot .thelistener .util .LoggingType ;
2928import io .github .matyrobbrt .eventdispatcher .SubscribeEvent ;
3029import net .dv8tion .jda .api .EmbedBuilder ;
3130import net .dv8tion .jda .api .entities .Message ;
31+ import net .dv8tion .jda .api .entities .MessageChannel ;
3232import net .dv8tion .jda .api .entities .MessageEmbed ;
33- import net .dv8tion .jda .api .exceptions .ErrorHandler ;
3433import net .dv8tion .jda .api .hooks .ListenerAdapter ;
35- import net .dv8tion .jda .api .requests .ErrorResponse ;
3634import org .jetbrains .annotations .NotNull ;
3735
3836import java .awt .Color ;
@@ -42,7 +40,6 @@ public final class MessageEvents extends ListenerAdapter {
4240
4341 public static final MessageEvents INSTANCE = new MessageEvents ();
4442
45- public static final ErrorHandler ERROR_HANDLER = new ErrorHandler ().ignore (ErrorResponse .UNKNOWN_MEMBER );
4643 public static final java .awt .Color GRAY_CHATEAOU = new java .awt .Color (0x979C9F );
4744 public static final java .awt .Color VIVID_VIOLET = new java .awt .Color (0x71368A );
4845
@@ -53,83 +50,69 @@ public void onMessageDelete(final net.dv8tion.jda.api.events.message.MessageDele
5350 if (!event .isFromGuild () || (data .getContent ().isBlank () && data .getAttachments ().isEmpty ())) return ;
5451 final var loggingChannels = LoggingType .MESSAGE_EVENTS .getChannels (event .getGuild ().getIdLong ());
5552 if (loggingChannels .stream ().anyMatch (v -> v .test (event .getChannel ()))) return ; // Don't log in event channels
56- event .getGuild ().retrieveMemberById (data .getAuthorId ())
57- .map (author -> {
58- final var msgSplit = data .getContent ().split (" " );
59- if (msgSplit .length == 1 ) {
60- final var matcher = Message .JUMP_URL_PATTERN .matcher (msgSplit [0 ]);
61- if (matcher .find ()) {
62- return null ;
63- }
64- }
65- final var embedBuilder = new EmbedBuilder ();
66- embedBuilder .setColor (GRAY_CHATEAOU )
67- .setDescription ("""
53+ final var msgSplit = data .getContent ().split (" " );
54+ if (msgSplit .length == 1 ) {
55+ final var matcher = Message .JUMP_URL_PATTERN .matcher (msgSplit [0 ]);
56+ if (matcher .find ()) {
57+ return ;
58+ }
59+ }
60+ final var embedBuilder = new EmbedBuilder ();
61+ embedBuilder .setColor (GRAY_CHATEAOU )
62+ .setDescription ("""
6863 **A message sent by <@%s> in <#%s> has been deleted!**
6964 %s"""
70- .formatted (data .getAuthorId (), data .getChannelId (), Utils .truncate (data .getContent (), MessageEmbed .DESCRIPTION_MAX_LENGTH - 30 )));
71- embedBuilder .setAuthor (author .getEffectiveName (), null , author .getEffectiveAvatarUrl ());
72- embedBuilder .setTimestamp (Instant .now ())
73- .setFooter ("Author: %s | Message ID: %s" .formatted (data .getAuthorId (), data .getChannelId ()), null );
74- final var interaction = data .getInteraction ();
75- if (interaction != null ) {
76- embedBuilder .addField ("Interaction Author: " , "<@%s> (%s)" .formatted (interaction .getAuthorId (), interaction .getAuthorId ()), true );
77- }
78- if (!data .getAttachments ().isEmpty ()) {
79- embedBuilder .setImage (data .getAttachments ().get (0 ));
80- }
81- return embedBuilder .build ();
82- })
83- .queue (embed -> {
84- if (embed == null ) return ;
85- loggingChannels
86- .forEach (id -> {
87- final var ch = id .resolve (idL -> event .getJDA ().getChannelById (net .dv8tion .jda .api .entities .MessageChannel .class , idL ));
88- if (ch != null ) {
89- ch .sendMessageEmbeds (embed ).queue ();
90- }
91- });
92- }, ERROR_HANDLER );
65+ .formatted (data .getAuthorId (), data .getChannelId (), Utils .truncate (data .getContent (), MessageEmbed .DESCRIPTION_MAX_LENGTH - 30 )));
66+ embedBuilder .setAuthor (data .getAuthorUsername (), null , data .getAuthorAvatar ());
67+ embedBuilder .setTimestamp (Instant .now ())
68+ .setFooter ("Author: %s | Message ID: %s" .formatted (data .getAuthorId (), data .getChannelId ()), null );
69+ final var interaction = data .getInteraction ();
70+ if (interaction != null ) {
71+ embedBuilder .addField ("Interaction Author: " , "<@%s> (%s)" .formatted (interaction .getAuthorId (), interaction .getAuthorId ()), true );
72+ }
73+ if (!data .getAttachments ().isEmpty ()) {
74+ embedBuilder .setImage (data .getAttachments ().get (0 ));
75+ }
76+ final var embed = embedBuilder .build ();
77+ loggingChannels .forEach (id -> {
78+ final var ch = id .resolve (idL -> event .getJDA ().getChannelById (MessageChannel .class , idL ));
79+ if (ch != null )
80+ ch .sendMessageEmbeds (embed ).queue ();
81+ });
9382 }
9483
9584 public void onMessageUpdate (final net .dv8tion .jda .api .events .message .MessageUpdateEvent event , MessageData data ) {
9685 final var newMessage = event .getMessage ();
9786 if (!event .isFromGuild () || (newMessage .getContentRaw ().isBlank () && newMessage .getAttachments ().isEmpty ())) return ;
9887 final var loggingChannels = LoggingType .MESSAGE_EVENTS .getChannels (event .getGuild ().getIdLong ());
9988 if (loggingChannels .stream ().anyMatch (v -> v .test (event .getChannel ()))) return ; // Don't log in event channels
100- event .getGuild ().retrieveMemberById (data .getAuthorId ())
101- .map (author -> {
102- if (newMessage .getContentRaw ().equals (data .getContent ())) {
103- return null ;
104- }
105- final var embedBuilder = new EmbedBuilder ();
106- embedBuilder .setColor (VIVID_VIOLET )
107- .setDescription ("**A message sent by <@%s> in <#%s> has been edited!** [Jump to message.](%s)"
108- .formatted (author .getId (), event .getChannel ().getId (), newMessage .getJumpUrl ()));
109- embedBuilder .setTimestamp (Instant .now ());
110- embedBuilder .addField ("Before" , data .getContent ().isBlank () ? "*Blank*" : Utils .truncate (data .getContent (), MessageEmbed .VALUE_MAX_LENGTH ), false )
111- .addField ("After" , newMessage .getContentRaw ().isBlank () ? "*Blank*" : Utils .truncate (newMessage .getContentRaw (), MessageEmbed .VALUE_MAX_LENGTH ), false );
112- embedBuilder .setAuthor (author .getEffectiveName (), null , author .getEffectiveAvatarUrl ())
113- .setFooter ("Author ID: " + author .getId (), null );
114- final var interaction = data .getInteraction ();
115- if (interaction != null ) {
116- embedBuilder .addField ("Interaction Author: " , "<@%s> (%s)" .formatted (interaction .getAuthorId (), interaction .getAuthorId ()), true );
117- }
118- if (!data .getAttachments ().isEmpty ()) {
119- embedBuilder .setImage (data .getAttachments ().get (0 ));
89+ if (newMessage .getContentRaw ().equals (data .getContent ())) {
90+ return ;
91+ }
92+ final var embedBuilder = new EmbedBuilder ();
93+ embedBuilder .setColor (VIVID_VIOLET )
94+ .setDescription ("**A message sent by <@%s> in <#%s> has been edited!** [Jump to message.](%s)"
95+ .formatted (data .getAuthorId (), event .getChannel ().getId (), newMessage .getJumpUrl ()));
96+ embedBuilder .setTimestamp (Instant .now ());
97+ embedBuilder .addField ("Before" , data .getContent ().isBlank () ? "*Blank*" : Utils .truncate (data .getContent (), MessageEmbed .VALUE_MAX_LENGTH ), false )
98+ .addField ("After" , newMessage .getContentRaw ().isBlank () ? "*Blank*" : Utils .truncate (newMessage .getContentRaw (), MessageEmbed .VALUE_MAX_LENGTH ), false );
99+ embedBuilder .setAuthor (data .getAuthorUsername (), null , data .getAuthorAvatar ())
100+ .setFooter ("Author ID: " + data .getAuthorId (), null );
101+ final var interaction = data .getInteraction ();
102+ if (interaction != null ) {
103+ embedBuilder .addField ("Interaction Author: " , "<@%s> (%s)" .formatted (interaction .getAuthorId (), interaction .getAuthorId ()), true );
104+ }
105+ if (!data .getAttachments ().isEmpty ()) {
106+ embedBuilder .setImage (data .getAttachments ().get (0 ));
107+ }
108+ final var embed = embedBuilder .build ();
109+ loggingChannels
110+ .forEach (id -> {
111+ final var ch = id .resolve (idL -> event .getJDA ().getChannelById (net .dv8tion .jda .api .entities .MessageChannel .class , idL ));
112+ if (ch != null ) {
113+ ch .sendMessageEmbeds (embed ).queue ();
120114 }
121- return embedBuilder .build ();
122- })
123- .queue (embed -> {
124- if (embed == null ) return ;
125- loggingChannels
126- .forEach (id -> {
127- final var ch = id .resolve (idL -> event .getJDA ().getChannelById (net .dv8tion .jda .api .entities .MessageChannel .class , idL ));
128- if (ch != null ) {
129- ch .sendMessageEmbeds (embed ).queue ();
130- }
131- });
132- }, ERROR_HANDLER );
115+ });
133116 }
134117
135118 @ Override
0 commit comments