1+ import modifers from '../Scripts/message/messageContentModifiers' ;
12import evalScript from '../Scripts/message/evalScript' ;
23import messageSendTypes from '../Scripts/message/messageTypes' ;
34import { EmbedBuilder , GuildMember , Message , User } from 'discord.js' ;
@@ -27,9 +28,14 @@ export const usersMap = new Map<string, UserEntries>();
2728export const blacklistsMap = new Map < string , BlacklistEntries > ( ) ;
2829export const warningsMap = new Map < string , WarningEntries > ( ) ;
2930
31+ export interface MessageInterface extends Message < boolean > {
32+ compactMessage ?: string ,
33+ uncensoredCompactMessage ?: string ,
34+ }
35+
3036export default {
3137 name : 'messageCreate' ,
32- async execute ( message : Message ) {
38+ async execute ( message : MessageInterface ) {
3339 if ( message . author . bot || blacklistsMap . has ( message . author . id ) ) return ;
3440
3541 if ( message . content . startsWith ( 'c!eval' ) ) evalScript . execute ( message ) ;
@@ -48,17 +54,6 @@ export default {
4854 const checks = await require ( '../Scripts/message/checks' ) . execute ( message , database ) ;
4955 if ( ! checks ) return ;
5056
51- if ( message . reference ) {
52- const referredMessage = await message . fetchReference ( ) ;
53- if (
54- referredMessage . author . id === message . client . user . id &&
55- referredMessage . embeds [ 0 ] &&
56- referredMessage . embeds [ 0 ] . fields ?. length > 0
57- ) {
58- message . content = `> ${ referredMessage . embeds [ 0 ] . fields [ 0 ] . value } \n${ message . content } ` ;
59- }
60- }
61-
6257 const embed = new EmbedBuilder ( )
6358 . setTimestamp ( )
6459 . setColor ( colors ( ) )
@@ -73,17 +68,38 @@ export default {
7368 iconURL : message . guild ?. iconURL ( ) ?. toString ( ) ,
7469 } ) ;
7570
76- await require ( '../Scripts/message/addBadges' ) . execute ( message , database , embed ) ;
71+ message . compactMessage = `**${ message . author . tag } :** ${ message . content } ` ;
72+
73+ if ( message . reference ) {
74+ const messageReferred = await message . fetchReference ( ) . catch ( ( ) => null ) ;
75+ const messageInDb = await messageData ?. findOne ( { channelAndMessageIds : { $elemMatch : { messageId : messageReferred ?. id } } } ) ;
7776
78- const modifers = require ( '../Scripts/message/messageContentModifiers' ) . default ;
77+ if ( messageInDb && messageReferred ) {
78+ let embedMessage = messageReferred . embeds [ 0 ] ?. fields [ 0 ] ?. value ;
79+ const embedFieldName = messageReferred . embeds [ 0 ] ?. fields [ 0 ] ?. name ;
80+
81+ const compactReferrence = messageReferred . content ;
82+
83+ if ( embedFieldName ?. includes ( 'Reply Message' ) && embedMessage ) embedMessage = embedMessage ?. split ( / > .* / g) [ 1 ] . trimStart ( ) ;
84+
85+ message . content = embedMessage ? `> ${ embedMessage } \n${ message . content } ` : compactReferrence ? `> ${ compactReferrence } \n${ message . content } ` : message . content ;
86+ message . compactMessage = embedMessage ? `> ${ embedMessage } \n` + message . compactMessage : compactReferrence ? `> ${ compactReferrence } \n` + message . compactMessage : message . content ;
87+
88+ embed . spliceFields ( 0 , 1 , {
89+ name : 'Reply Message' ,
90+ value : message . content ,
91+ } ) ;
92+ }
93+ }
94+
95+
96+ await require ( '../Scripts/message/addBadges' ) . execute ( message , database , embed ) ;
7997 const attachments = await modifers . attachmentModifiers ( message , embed ) ;
8098
81- // this embed remains untouched and is not changed in embedModifers
82- // required for profanity toggle
8399 const uncensoredEmbed = new EmbedBuilder ( embed . data ) ;
100+ message . uncensoredCompactMessage = message . compactMessage ;
84101
85- // call this function after uncensoredEmbed is created or it will be modified
86- await modifers . embedModifers ( embed ) ;
102+ await modifers . profanityCensor ( embed , message ) ; // FIXME: Does not work for compact messages
87103
88104 // leveling system
89105 // FIXME: Add levelling back when ready
0 commit comments