2019-06-09 23:52:41 +01:00
// SupportBot
2020-01-26 22:35:45 +00:00
// Created by © 2020 Emerald Services
// Command: Forceclose
2019-06-09 23:52:41 +01:00
const Discord = require ( "discord.js" );
const bot = new Discord . Client ()
2020-01-26 22:35:45 +00:00
const fs = require ( "fs" )
const yaml = require ( 'js-yaml' );
2019-06-09 23:52:41 +01:00
2020-01-26 22:35:45 +00:00
const supportbot = yaml . load ( fs . readFileSync ( './supportbot-config.yml' , 'utf8' ));
2019-06-09 23:52:41 +01:00
2020-01-26 22:35:45 +00:00
exports . run = async ( bot , message , args ) => {
console . log ( `\u001b[33m` , `[ ${ supportbot . Bot_Name } ] > ` , `\u001b[31;1m` , ` ${ message . author . tag } ` , `\u001b[32;1m` , `has executed` , `\u001b[31;1m` , ` ${ supportbot . Prefix }${ supportbot . Forceclose_Command } ` );
2020-04-16 16:43:16 +01:00
let staffGroup = message . guild . roles . cache . find ( staffRole => staffRole . name === supportbot . StaffRole );
2019-06-09 23:52:41 +01:00
2020-04-16 16:43:16 +01:00
const rolerequired = new Discord . MessageEmbed ()
. setTitle ( "SupportBot Error!" )
. setDescription ( `:x: **Error!** Incorrect Permissions, You cannot execute this command as you do not have the required role.\n\nRole Required: \` ${ supportbot . StaffRole } \`\n\nError Code: \`SB-02\`` )
. setColor ( supportbot . ErrorColour );
if ( ! message . member . roles . cache . has ( staffGroup . id )) return message . reply ({ embed : rolerequired });
2020-01-26 22:35:45 +00:00
2020-04-06 18:14:10 -04:00
const outsideticket = new Discord . MessageEmbed ()
2020-04-16 16:43:16 +01:00
. setTitle ( "Incorrect Channel" )
. setDescription ( `:warning: You cannot execute this command here. This command is used when closing a ticket.` )
. setColor ( supportbot . WarningColour );
2020-01-26 22:35:45 +00:00
if ( ! message . channel . name . startsWith ( ` ${ supportbot . Ticket_Channel_Name } -` )) return message . channel . send ({ embed : outsideticket });
2020-04-16 16:43:16 +01:00
const log = message . guild . channels . cache . find ( channel => channel . name === supportbot . Transcript_Log )
2020-01-26 22:35:45 +00:00
const uID = message . author
const reason = args . join ( " " ) || "No Reason Provided." ;
const name = message . channel . name ;
const c = message . channel ;
message . channel . send ( `Your ticket is currently closing` )
. then (() => {
2019-06-09 23:52:41 +01:00
2020-04-06 18:14:10 -04:00
const embed1 = new Discord . MessageEmbed ()
2020-01-26 22:35:45 +00:00
. setTitle ( supportbot . Transcript_Title )
. setColor ( supportbot . EmbedColour )
. setFooter ( supportbot . EmbedFooter )
2019-11-15 21:54:32 +00:00
. addField ( "Ticket Author" , uID )
. addField ( "Closed By" , message . author . tag )
. addField ( "Reason" , reason )
2020-04-16 16:43:16 +01:00
message . channel . messages . fetch ({ limit : 100 })
2019-11-15 21:54:32 +00:00
2019-11-15 20:31:58 +00:00
. then ( msgs => {
2020-04-16 16:43:16 +01:00
message . channel . messages . fetch ({ 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
})
});
2020-01-26 22:35:45 +00:00
});
2019-07-24 16:52:30 -06:00
2019-06-09 23:52:41 +01:00
}
exports . help = {
2020-01-26 22:35:45 +00:00
name : supportbot . Forceclose_Command ,
2019-11-15 20:31:58 +00:00
}