export const event = 'messageDelete'
export async function callback ( client , message ) {
try {
if ( message . author . id === client . user . id ) return ;
if ( client . noLog . includes ( ` ${ message . guild . id } / ${ message . channel . id } / ${ message . id } ` ) ) return ;
const { getAuditLog , log , NucleusColors , entry , renderUser , renderDelta , renderChannel } = message . channel . client . logger
let auditLog = await getAuditLog ( message . guild , 'MEMBER_BAN_ADD' )
let audit = auditLog . entries . filter ( entry = > entry . target . id === message . author . id ) . first ( ) ;
if ( audit ) {
if ( audit . createdAt - 100 < new Date ( ) . getTime ( ) ) return ;
}
message . reference = message . reference || { }
let content = message . cleanContent
content . replace ( ` \` ` , ` \\ \` ` )
if ( content . length > 256 ) content = content . substring ( 0 , 253 ) + '...'
let attachments = message . attachments . size + ( message . content . match ( /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi ) ? ? [ ] ) . length
let attachmentJump = ""
let config = ( await client . database . guilds . read ( message . guild . id ) ) . logging . attachments . saved [ message . channel . id + message . id ] ;
if ( config ) { attachmentJump = ` [[View attachments]]( ${ config } ) ` }
let data = {
meta : {
type : 'messageDelete' ,
displayName : 'Message Deleted' ,
calculateType : 'messageDelete' ,
color : NucleusColors.red ,
emoji : 'MESSAGE.DELETE' ,
timestamp : new Date ( ) . getTime ( )
} ,
separate : {
start : content ? ` **Message:** \ n \` \` \` ${ content } \` \` \` ` : '**Message:** *Message had no content*' ,
} ,
list : {
messageId : entry ( message . id , ` \` ${ message . id } \` ` ) ,
sentBy : entry ( message . author . id , renderUser ( message . author ) ) ,
sentIn : entry ( message . channel . id , renderChannel ( message . channel ) ) ,
deleted : entry ( new Date ( ) . getTime ( ) , renderDelta ( new Date ( ) . getTime ( ) ) ) ,
mentions : message.mentions.users.size ,
attachments : entry ( attachments , attachments + attachmentJump ) ,
repliedTo : entry (
message . reference . messageId || null ,
message . reference . messageId ? ` [[Jump to message]](https://discord.com/channels/ ${ message . guild . id } / ${ message . channel . id } / ${ message . reference . messageId } ) ` : "None"
)
} ,
hidden : {
guild : message.channel.guild.id
}
}
log ( data ) ;
} catch ( e ) { console . log ( e ) }
}