2022-11-15 09:06:18 -05:00
import Discord , { ChannelType } from 'discord.js' ;
2022-11-13 08:46:50 -05:00
import { TClient } from '../client' ;
export default {
name : 'messageCreate' ,
2022-11-15 09:06:18 -05:00
execute : async ( client :TClient , message :Discord.Message ) = > {
2022-11-13 08:46:50 -05:00
if ( message . author . bot ) return ;
if ( message . channel . type === ChannelType . DM ) return ;
const msgarr = message . content . toLowerCase ( ) . split ( ' ' ) ;
2022-11-19 05:17:04 -05:00
let automodded : boolean ;
2022-11-13 08:46:50 -05:00
function onTimeout ( ) {
delete client . repeatedMessages [ message . author . id ]
}
const Whitelist = [
// Arrary of channel ids for automod to be disabled in
]
2022-11-18 11:54:40 -05:00
if ( client . bannedWords . _content . some ( ( x ) = > msgarr . includes ( x ) ) && ! message . member . roles . cache . has ( client . config . mainServer . roles . dcmod ) && message . guildId == client . config . mainServer . id && ! Whitelist . includes ( message . channelId ) && client . config . botSwitches . automod ) {
2022-11-13 08:46:50 -05:00
automodded = true ;
2022-11-18 22:23:33 -05:00
message . delete ( ) . catch ( ( err ) = > {
2022-11-19 05:17:04 -05:00
console . log ( 'bannedWords automod; msg got possibly deleted by another bot.' )
2022-11-18 22:23:33 -05:00
} )
2022-11-18 11:54:40 -05:00
message . channel . send ( 'That word is banned here.' ) . then ( ( x ) = > setTimeout ( ( ) = > x . delete ( ) , 5000 ) ) ;
2022-11-13 08:46:50 -05:00
if ( client . repeatedMessages [ message . author . id ] ) {
// add this message to the list
client . repeatedMessages [ message . author . id ] . set ( message . createdTimestamp , { cont : 0 , ch : message.channelId } ) ;
// reset timeout
clearTimeout ( client . repeatedMessages [ message . author . id ] . to ) ;
client . repeatedMessages [ message . author . id ] . to = setTimeout ( onTimeout , 30000 ) ;
// this is the time in which 4 messages have to be sent, in milliseconds (ms)
const threshold = 30000 ;
// message mustve been sent after (now - threshold), so purge those that were sent earlier
2022-11-18 11:54:40 -05:00
client . repeatedMessages [ message . author . id ] = client . repeatedMessages [ message . author . id ] . filter ( ( x , i ) = > i >= Date . now ( ) - threshold )
2022-11-13 08:46:50 -05:00
// a spammed message is one that has been sent atleast 4 times in the last threshold milliseconds
2022-11-18 11:54:40 -05:00
const spammedMessage = client . repeatedMessages [ message . author . id ] ? . find ( ( x ) = > {
2022-11-15 09:06:18 -05:00
return client . repeatedMessages [ message . author . id ] . size >= 4 ;
2022-11-13 08:46:50 -05:00
} ) ;
// if a spammed message exists;
if ( spammedMessage ) {
// mute
const muteResult = await client . punishments . addPunishment ( 'mute' , message . member , { reason : 'Automod; banned words' , time : '30m' } , client . user . id ) ;
// and clear their list of long messages
delete client . repeatedMessages [ message . author . id ] ;
}
} else {
client . repeatedMessages [ message . author . id ] = new client . collection ( ) ;
client . repeatedMessages [ message . author . id ] . set ( message . createdTimestamp , { cont : 0 , ch : message.channelId } ) ;
// autodelete after 30 secs
client . repeatedMessages [ message . author . id ] . to = setTimeout ( onTimeout , 30000 ) ;
}
}
if ( message . content . toLowerCase ( ) . includes ( 'discord.gg/' ) && ! message . member . roles . cache . has ( client . config . mainServer . roles . dcmod ) ) {
automodded = true ;
2022-11-18 22:23:33 -05:00
message . delete ( ) . catch ( ( err ) = > {
2022-11-19 05:17:04 -05:00
console . log ( 'advertisement automod; msg got possibly deleted by another bot.' )
2022-11-18 22:23:33 -05:00
} )
2022-11-13 08:46:50 -05:00
}
if ( message . guildId == client . config . mainServer . id && ! automodded ) {
client . userLevels . incrementUser ( message . author . id ) ; // Ranking incrementation
}
// Mop gifs from banned channels without Monster having to mop them.
const bannedChannels = [
'516344221452599306' , // #mp-moderators
'742324777934520350' , // #discord-moderators
]
2022-11-18 11:54:40 -05:00
const gifURL = [
'tenor.com/view' ,
'giphy.com/gifs' ,
'giphy.com/media'
]
if ( gifURL . some ( e = > message . content . toLowerCase ( ) . includes ( e ) ) && bannedChannels . includes ( message . channelId ) ) {
2022-11-15 09:06:18 -05:00
message . reply ( 'Gifs are not allowed in this channel.' ) . then ( ( msg : any ) = > message . delete ( ) )
2022-11-13 08:46:50 -05:00
}
// Autoresponse:tm:
2022-11-17 12:58:19 -05:00
if ( client . config . botSwitches . autores && ! automodded ) {
2022-11-18 11:54:40 -05:00
const MorningArray = [ 'good morning' , 'morning all' , 'morning everyone' , 'morning lads' ]
const AfternoonArray = [ 'good afternoon' , 'afternoon all' ]
const EveningArray = [ 'good evening' , 'evening all' , 'evening everyone' ]
const NightArray = [ 'night all' , 'night everyone' ]
const PasswordArray = [ 'whats the password' , 'what\'s the password' , 'password pls' ]
const cantRead = [ 'i cant read' , 'i can\'t read' , 'cant read' , 'can\'t read' ]
const NawdicBrokeIt = [ 'break' , 'broke' , 'broken' ]
const deadChat = [ 'dead chat' , 'chat is dead' , 'dead server' ]
2022-11-13 08:46:50 -05:00
if ( message . mentions . members . has ( '309373272594579456' ) && ! client . isStaff ( message . member ) && message . type != 19 ) {
message . reply ( 'Please don\'t tag Daggerwin, read rule 14 in <#468846117405196289>' )
}
if ( message . mentions . members . has ( '215497515934416896' ) && ! client . isStaff ( message . member ) && message . type != 19 ) {
message . reply ( 'Please don\'t tag Monster unless it\'s important!' )
}
2022-11-17 12:58:19 -05:00
if ( message . content . toLowerCase ( ) . startsWith ( ` *mp players ` ) || message . content . toLowerCase ( ) . startsWith ( ` *mp status ` ) ) {
2022-11-22 17:05:12 -05:00
message . reply ( 'Prefix-based MP commands has moved to </mp players:1044732701317537873> and </mp status:1044732701317537873>' )
2022-11-18 11:54:40 -05:00
}
if ( message . content . toLowerCase ( ) . startsWith ( ` *lrs ` ) || message . content . toLowerCase ( ) . startsWith ( ` *rank ` ) ) {
2022-11-22 17:09:44 -05:00
message . reply ( 'Prefix-based LRS command has moved to </rank view:1044732701317537877>' )
2022-11-18 11:54:40 -05:00
}
if ( message . content . toLowerCase ( ) . startsWith ( ` *mp series ` ) || message . content . toLowerCase ( ) . startsWith ( ` *mp info ` ) ) {
2022-11-22 17:08:38 -05:00
message . reply ( 'Prefix-based info commands has moved to </faq:1044732701267202195>' )
2022-11-13 08:46:50 -05:00
}
2022-11-18 11:54:40 -05:00
if ( PasswordArray . some ( e = > message . content . toLowerCase ( ) . includes ( e ) ) ) {
2022-11-13 08:46:50 -05:00
message . reply ( 'Password and other details can be found in <#543494084363288637>' )
}
2022-11-18 11:54:40 -05:00
if ( cantRead . some ( e = > message . content . toLowerCase ( ) . includes ( e ) ) ) {
2022-11-13 08:46:50 -05:00
message . reply ( 'https://tenor.com/view/aristocats-george-pen-cap-meticulous-gif-5330931' )
}
if ( message . content . toLowerCase ( ) . includes ( 'is daggerbot working' ) ) {
message . reply ( 'https://tenor.com/view/i-still-feel-alive-living-existing-active-singing-gif-14630579' )
}
2022-11-18 11:54:40 -05:00
if ( deadChat . some ( e = > message . content . toLowerCase ( ) . includes ( e ) ) ) {
2022-11-13 08:46:50 -05:00
message . reply ( 'https://cdn.discordapp.com/attachments/925589318276382720/1011333656167579849/F57G5ZS.png' )
}
2022-11-18 11:54:40 -05:00
if ( message . content . toLowerCase ( ) . includes ( 'nawdic' ) && ( NawdicBrokeIt . some ( e = > message . content . toLowerCase ( ) . includes ( e ) ) ) ) {
2022-11-16 13:53:42 -05:00
const embed = new client . embed ( ) . setTitle ( '*Nawdic has done an oopsie*' ) . setImage ( 'https://c.tenor.com/JSj9ie_MD9kAAAAC/kopfsch%C3%BCtteln-an-kopf-fassen-oh-no.gif' ) . setColor ( client . config . embedColor )
2022-11-13 08:46:50 -05:00
message . reply ( { embeds : [ embed ] } )
}
2022-11-18 11:54:40 -05:00
if ( MorningArray . some ( e = > message . content . toLowerCase ( ) . startsWith ( e ) ) ) {
2022-11-16 13:53:42 -05:00
message . reply ( ` Good morning ** ${ message . member . displayName } **! ` )
2022-11-13 08:46:50 -05:00
}
2022-11-18 11:54:40 -05:00
if ( AfternoonArray . some ( e = > message . content . toLowerCase ( ) . startsWith ( e ) ) ) {
2022-11-16 13:53:42 -05:00
message . reply ( ` Afternoon ** ${ message . member . displayName } **! ` )
}
2022-11-18 11:54:40 -05:00
if ( EveningArray . some ( e = > message . content . toLowerCase ( ) . startsWith ( e ) ) ) {
2022-11-16 13:53:42 -05:00
message . reply ( ` Good evening ** ${ message . member . displayName } **! ` )
2022-11-13 08:46:50 -05:00
}
2022-11-18 11:54:40 -05:00
if ( NightArray . some ( e = > message . content . toLowerCase ( ) . startsWith ( e ) ) ) {
2022-11-16 13:53:42 -05:00
message . reply ( ` Night ** ${ message . member . displayName } ** ` )
2022-11-13 08:46:50 -05:00
}
2022-11-15 09:06:18 -05:00
}
2022-11-13 08:46:50 -05:00
}
}