2022-11-15 09:06:18 -05:00
import Discord from 'discord.js' ;
2023-04-14 06:47:58 -04:00
import TClient from '../client.js' ;
2023-12-24 10:21:40 -05:00
export default class GuildMemberAdd {
2024-01-06 04:49:35 -05:00
static async run ( client :TClient , member :Discord.GuildMember ) {
2023-12-24 10:21:40 -05:00
if ( member . partial || member . guild ? . id != client . config . dcServer . id ) return ;
2023-03-08 04:04:52 -05:00
const index = member . guild . memberCount ;
2024-03-23 21:36:12 -04:00
/ * c o n s t s u f f i x = ( i n d e x = > {
2023-03-08 04:04:52 -05:00
const numbers = index . toString ( ) . split ( '' ) . reverse ( ) ; // eg 1850 --> [0,5,8,1]
if ( numbers [ 1 ] === '1' ) return 'th' ; // this is some -teen
else {
if ( numbers [ 0 ] === '1' ) return 'st' ;
else if ( numbers [ 0 ] === '2' ) return 'nd' ;
else if ( numbers [ 0 ] === '3' ) return 'rd' ;
else return 'th' ;
}
2024-03-23 21:36:12 -04:00
} ) ( index ) ; * /
const suffix = { // Trial run, just discovered Intl.PluralRules this morning (as of March 24th) when I was browsing MDN Docs.
one : 'st' ,
two : 'nd' ,
few : 'rd' ,
other : 'th'
} [ new Intl . PluralRules ( 'en' , { type : 'ordinal' } ) . select ( index ) ] ;
2023-06-09 21:11:19 -04:00
let isBot = 'Bot' ;
if ( ! member . user . bot ) isBot = 'Member' ;
2023-03-05 05:04:10 -05:00
if ( ! client . config . botSwitches . logs ) return ;
2024-01-31 15:54:38 -05:00
( client . channels . resolve ( client . config . dcServer . channels . welcome ) as Discord . TextChannel ) . send ( { embeds : [ new client . embed ( ) . setColor ( client . config . embedColor ) . setThumbnail ( member . user . displayAvatarURL ( { size : 2048 } ) || member . user . defaultAvatarURL ) . setTitle ( ` Welcome to ${ member . guild . name } , ${ member . user . username } ! ` ) . setFooter ( { text : ` ${ index } ${ suffix } member ` } ) ] } ) ;
2023-03-05 05:04:10 -05:00
const newInvites = await member . guild . invites . fetch ( ) ;
2023-05-23 01:14:17 -04:00
const usedInvite = newInvites . find ( ( inv :Discord.Invite ) = > client . invites . get ( inv . code ) ? . uses < inv . uses ) ;
newInvites . forEach ( ( inv :Discord.Invite ) = > client . invites . set ( inv . code , { uses : inv.uses , creator : inv.inviterId , channel : inv.channel.name } ) ) ;
2024-03-04 19:03:04 -05:00
( client . channels . resolve ( client . config . dcServer . channels . bot_log ) as Discord . TextChannel ) . send ( { embeds : [
2024-02-03 21:09:33 -05:00
new client . embed ( ) . setColor ( client . config . embedColorGreen ) . setTimestamp ( ) . setThumbnail ( member . user . displayAvatarURL ( { size : 2048 } ) ) . setTitle ( ` ${ isBot } Joined: ${ member . user . username } ` ) . setFooter ( { text : ` Total members: ${ index } ${ suffix } | ID: ${ member . user . id } ` } ) . addFields (
2023-03-05 05:04:10 -05:00
{ name : '🔹 Account Creation Date' , value : ` <t: ${ Math . round ( member . user . createdTimestamp / 1000 ) } > \ n<t: ${ Math . round ( member . user . createdTimestamp / 1000 ) } :R> ` } ,
2023-06-09 21:11:19 -04:00
{ name : '🔹 Invite Data:' , value : usedInvite ? ` Invite: \` ${ usedInvite . code } \` \ nCreated by: ** ${ usedInvite . inviter ? . username } ** \ nChannel: **# ${ usedInvite . channel . name } ** ` : 'No invite data could be fetched.' }
) ] } ) ;
2023-03-05 05:04:10 -05:00
}
2022-11-25 04:46:51 -05:00
}