const Discord = require ( 'discord.js' ) ;
const UserData = require ( '../../models/user' ) ;
module . exports = {
name : "supportstaff" ,
help : new Discord . MessageEmbed ( )
. setTitle ( "Help -> Support" )
. setDescription ( "Make a user a Natsuki Support Team member" )
. addField ( "Syntax" , "`supportstaff <add|remove|check> <@user|userID>`" )
. addField ( "Notice" , "This command is only available to Natsuki admin." ) ,
meta : {
category : 'Developer' ,
description : "Add or remove users as Natsuki support" ,
syntax : '`supportstaff <add|remove|check> <@user|userID>`' ,
extra : "You can check if a user is a support member without being a developer."
} ,
async execute ( message , msg , args , cmd , prefix , mention , client ) {
if ( ! message . guild ) { return message . reply ( "This is a guild-only command." ) ; }
if ( ! args . length ) { return message . channel . send ( ` Syntax: \` ${ prefix } supportstaff <add|remove|check> <@user|userID> \` ` ) ; }
let person = mention ? mention : args [ 1 ] ? client . users . cache . has ( args [ 1 ] ) ? client . users . cache . get ( args [ 1 ] ) : null : null ;
let tu = await UserData . findOne ( { uid : person ? person . id : message . author . id } ) ? await UserData . findOne ( { uid : person ? person . id : message . author . id } ) : new UserData ( { uid : person ? person . id : message . author . id } ) ;
if ( [ 'c' , 'check' ] . includes ( args [ 0 ] ) ) { return message . reply ( ` ${ person ? person : message . member . displayName } ${ tu . support ? 'is' : 'is not' } a part of Natsuki Support. ` ) ; }
if ( ! [ 'a' , 'add' , 'r' , 'remove' ] . includes ( args [ 0 ] ) ) { return message . reply ( "You must specify whether to `add` or `remove` someone as a Support Team Member." ) ; }
if ( ! person ) { return message . reply ( "You must mention someone to add as a support member, or use their ID." ) ; }
let atu = await UserData . findOne ( { uid : message . author . id } ) ;
if ( ! atu || ! atu . admin ) { return message . reply ( 'You must be an admin in order to add set support team member statuses.' ) ; }
if ( [ 'a' , 'add' ] . includes ( args [ 0 ] ) ) { tu . support = true ; }
else { tu . support = false ; tu . staff = false ; tu . admin = false ; tu . developer = false ; }
tu . save ( ) ;
const logemb = ( act ) => new Discord . MessageEmbed ( )
. setAuthor ( { name : ` Support ${ act } ` , iconURL : message . author . displayAvatarURL ( ) } )
. setDescription ( "A user's Support status was updated." )
. setThumbnail ( person . displayAvatarURL ( { size : 1024 } ) )
. addField ( "Name" , person . username , true )
. addField ( "Developer" , message . author . username , true )
. setColor ( "e8da3a" )
. setFooter ( { text : "Natsuki" } )
. setTimestamp ( ) ;
client . guilds . cache . get ( '762707532417335296' ) . channels . cache . get ( '762732961753595915' ) . send ( { embeds : [ logemb ( [ 'a' , 'add' ] . includes ( args [ 0 ] ) ? 'Added' : 'Removed' ) ] } ) ;
return message . reply ( ` ${ message . guild . members . cache . get ( person . id ) . displayName } is no ${ [ 'a' , 'add' ] . includes ( args [ 0 ] ) ? 'w' : ' longer' } a Support Team member! ` ) ;
}
} ;