2019-11-15 13:58:24 -06:00
2019-06-09 23:52:41 +01:00
// SupportBot
// Command: Close Ticket
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-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 13:58:24 -06:00
const uID = message . author // Grabs
const reason = args . join ( " " ) || "No reason has been provided" ; //
const name = message . channel . name ; // channel name
const log = message . guild . channels . find ( channel => channel . name === bot . settings . Transcript_Logs );
const c = message . channel ;
message . channel . send ( `Ticket is being closed!` )
. then (() => {
const embed = new Discord . RichEmbed () // embed
. setColor ( bot . settings . colour )
. setDescription ( `Closed by: ${ message . author . tag } \nFor the reason: ${ reason } ` );
const embed1 = new Discord . RichEmbed () // embed
. setColor ( bot . settings . colour )
. setDescription ( `Ticket Owner: ${ uID } \nClosed by: ${ message . author . tag } \nFor the reason: ${ reason } ` );
message . channel . fetchMessages ({ limit : 100 })
. then ( msgs => {
message . channel . fetchMessages ({ limit : 100 , before : msgs . last (). id })
. 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 ;
}, '' );
uID . send ({ files : [{ attachment : Buffer . from ( output , 'utf8' ), name : ` ${ name } .txt` }] }). catch ( console . error ); // sends the file to ticket author
log . send ({ files : [{ attachment : Buffer . from ( output , 'utf8' ), name : ` ${ name } .txt` }] }). then ( c . delete ()). catch ( console . error ); // sends the file to logs
uID . send ( embed ). catch ( console . error );
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
}
exports . help = {
name : bot . settings . Close_Command ,
2019-11-15 13:58:24 -06:00
}