2019-06-09 23:52:41 +01:00
// SupportBot
// Command: Close Ticket
2019-11-15 20:27:10 +00:00
2019-06-09 23:52:41 +01:00
const Discord = require ( "discord.js" );
const bot = new Discord . Client ()
bot . settings = require ( "../settings.json" );
exports . run = ( bot , message , args ) => {
message . delete ();
const outsideticket = new Discord . RichEmbed ()
. setDescription ( `:x: Cannot use this command becase you are outside a ticket channel.` )
2019-11-15 13:58:24 -06:00
. setColor ( bot . settings . colour )
2019-06-09 23:52:41 +01:00
if ( ! message . channel . name . startsWith ( `ticket-` )) return message . channel . send ({ embed : outsideticket });
const close1 = new Discord . RichEmbed ()
. setDescription ( `Looks like you have come to the end of your support ticket\nPlease confirm that you want to close your ticket by saying ||**confirm**||` )
. setFooter ( "Your request will be avoided in 20 seconds" )
. setColor ( bot . settings . colour )
2019-11-15 13:58:24 -06:00
2019-11-15 21:53:39 +00:00
2019-06-09 23:52:41 +01:00
message . channel . send ({ embed : close1 }). then ( m => {
message . channel . awaitMessages ( response => response . content === `confirm` , {
max : 1 ,
time : 10000 ,
errors : [ 'time' ],
}). then (( collected ) => {
2019-11-15 21:53:39 +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 13:58:24 -06:00
const c = message . channel ;
2019-11-15 21:53:39 +00:00
message . channel . send ( `Your ticket is currently closing` )
. then (() => {
const embed1 = new Discord . RichEmbed ()
2019-11-15 20:43:29 +00:00
. setTitle ( bot . settings . Transcript_Title )
. setColor ( bot . settings . colour )
. setFooter ( bot . settings . footer )
2019-11-15 21:53:39 +00:00
. addField ( "Ticket Author" , uID )
. addField ( "Closed By" , message . author . tag )
. addField ( "Reason" , reason )
2019-11-15 20:43:29 +00:00
message . channel . fetchMessages ({ limit : 100 })
2019-11-15 21:53:39 +00:00
2019-11-15 20:43:29 +00:00
. then ( msgs => {
message . channel . fetchMessages ({ limit : 100 , before : msgs . last (). id })
2019-11-15 21:53:39 +00:00
2019-11-15 20:43:29 +00:00
. then ( msg => {
const merged = msgs . concat ( msg );
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-11-15 21:53:39 +00:00
}, '' );
2019-11-15 13:58:24 -06:00
2019-11-15 20:43:29 +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:53:39 +00:00
return log . send ( embed1 ). catch ( console . error );
})
});
})
2019-06-09 23:52:41 +01:00
}). catch (() => {
m . edit ( 'Close ticket request, timedout' ). then ( m2 => {
m2 . delete ();
}, 3000 );
});
});
console . log ( `\x1b[36m` , ` ${ message . author } has executed ${ bot . settings . prefix }${ bot . settings . Close_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 . Close_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``` );
2019-11-15 13:58:24 -06:00
2019-07-24 16:52:30 -06:00
CommandLog . send ( CMDLog );
2019-06-09 23:52:41 +01:00
}
2019-11-15 21:53:39 +00:00
2019-06-09 23:52:41 +01:00
exports . help = {
name : bot . settings . Close_Command ,
2019-11-15 13:58:24 -06:00
}