2019-06-09 23:52:41 +01:00
// SupportBot
// Command: Forceclose Ticket
const Discord = require ( "discord.js" );
const bot = new Discord . Client ()
bot . settings = require ( "../settings.json" );
exports . run = ( bot , message , args ) => {
message . delete ();
2019-08-16 18:45:18 +01:00
let staffGroup = message . guild . roles . find ( staffRole => staffRole . name === ` ${ bot . settings . staff } ` )
2019-06-09 23:52:41 +01:00
const rolemissing = new Discord . RichEmbed ()
2019-08-16 18:45:18 +01:00
. setDescription ( `:x: Looks like this server doesn't have the role ** ${ bot . settings . staff } **` )
2019-06-09 23:52:41 +01:00
. setColor ( bot . settings . colour )
if ( ! staffGroup ) return message . reply ({ embed : rolemissing });
const donothaverole = new Discord . RichEmbed ()
2019-08-16 18:45:18 +01:00
. setDescription ( `:x: Sorry! You cannot use this command with the role ** ${ bot . settings . staff } **` )
2019-06-09 23:52:41 +01:00
. setColor ( bot . settings . colour )
if ( ! message . member . roles . has ( staffGroup . id )) return message . reply ({ embed : donothaverole });
const outsideticket = new Discord . RichEmbed ()
. setDescription ( `:x: Cannot use this command becase you are outside a ticket channel.` )
. setColor ( bot . settings . colour )
2019-12-03 23:23:33 +00:00
if ( ! message . channel . name . startsWith ( ` ${ bot . settings . Ticket_Channel_Name } -` )) return message . channel . send ({ embed : outsideticket });
2019-11-15 21:54:32 +00:00
const log = message . guild . channels . find ( channel => channel . name === bot . settings . Transcript_Logs )
const uID = message . author
const reason = args . join ( " " ) || "No Reason Provided." ;
const name = message . channel . name ;
2019-11-15 20:31:58 +00:00
const c = message . channel ;
2019-11-15 21:54:32 +00:00
message . channel . send ( `Your ticket is currently closing` )
2019-11-15 20:31:58 +00:00
. then (() => {
2019-11-15 21:54:32 +00:00
const embed1 = new Discord . RichEmbed ()
2019-11-15 20:31:58 +00:00
. setTitle ( bot . settings . Transcript_Title )
. setColor ( bot . settings . colour )
. setFooter ( bot . settings . footer )
2019-11-15 21:54:32 +00:00
. addField ( "Ticket Author" , uID )
. addField ( "Closed By" , message . author . tag )
. addField ( "Reason" , reason )
2019-11-15 20:31:58 +00:00
message . channel . fetchMessages ({ limit : 100 })
2019-11-15 21:54:32 +00:00
2019-11-15 20:31:58 +00:00
. then ( msgs => {
message . channel . fetchMessages ({ limit : 100 , before : msgs . last (). id })
2019-11-15 21:54:32 +00:00
2019-11-15 20:31:58 +00:00
. then ( msg => {
const merged = msgs . concat ( msg );
2019-11-15 21:54:32 +00:00
const output = merged . reduce (( out , msg ) => {
out += `[ ${ message . createdAt } ] ${ message . author . tag } : ${ message . cleanContent ? message . cleanContent . replace ( /\n/g , '\r\n' ) : '' } \r\n` ;
return out ;
}, '' );
2019-06-09 23:52:41 +01:00
2019-11-15 20:31:58 +00:00
log . send ({ files : [{ attachment : Buffer . from ( output , 'utf8' ), name : ` ${ name } .txt` }] }). then ( c . delete ()). catch ( console . error ); // sends the file to logs
2019-11-15 21:54:32 +00:00
return log . send ( embed1 ). catch ( console . error );
2019-11-15 20:31:58 +00:00
})
});
2019-11-15 21:54:32 +00:00
})
2019-11-15 20:31:58 +00:00
2019-06-09 23:52:41 +01:00
console . log ( `\x1b[36m` , ` ${ message . author } has executed ${ bot . settings . prefix }${ bot . settings . Forceclose_Command } ` )
2019-07-24 16:52:30 -06:00
const CMDLog = new Discord . RichEmbed ()
. setTitle ( bot . settings . Commands_Log_Title )
. addField ( `User` , `<@ ${ message . author . id } >` )
. addField ( `Command` , bot . settings . Forceclose_Command , true )
. addField ( `Channel` , message . channel , true )
. addField ( `Executed At` , message . createdAt , true )
. setColor ( bot . settings . colour )
. setFooter ( bot . settings . footer )
let CommandLog = message . guild . channels . find ( LogsChannel => LogsChannel . name === ` ${ bot . settings . Command_Log_Channel } ` );
if ( ! CommandLog ) return message . channel . send ( `:x: Error! Could not find the logs channel. ** ${ bot . settings . Command_Log_Channel } **\nThis can be changed via ``settings.json``` );
CommandLog . send ( CMDLog );
2019-06-09 23:52:41 +01:00
}
exports . help = {
name : bot . settings . Forceclose_Command ,
2019-11-15 20:31:58 +00:00
}