diff --git a/commands/close.js b/commands/close.js index 80413a0..5fa9c2f 100644 --- a/commands/close.js +++ b/commands/close.js @@ -9,12 +9,12 @@ const { execute } = require("./help"); const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8')); module.exports = { - name: "bob", + name: supportbot.CloseTicket, execute(message, args) { console.log(`\u001b[32m`, `[${supportbot.Bot_Name}]:`, `\u001b[32m`, `${message.author.tag} has executed ${supportbot.Prefix}${supportbot.CloseTicket}!`); - if (!message.channel.name.startsWith( `${TicketChannel}-` )) { + if (!message.channel.name.startsWith( `${supportbot.TicketChannel}-` )) { const Exists = new Discord.MessageEmbed() .setTitle("Incorrect Channel") .setDescription(`:warning: You cannot execute this command here. This command is used when closing a ticket.`) @@ -27,11 +27,120 @@ module.exports = { if (supportbot.CloseConfirmation === "true") { const CloseTicketRequest = new Discord.MessageEmbed() - .setDescription(`**${supportbot.ClosingTicket}**`) - .addField("Please confirm by repeating the following word..", `**${supportbot.ClosingConfirmation_Word}**`) + .setTitle(`**${supportbot.ClosingTicket}**`) + .setDescription(`Please confirm by repeating the following word.. \`${supportbot.ClosingConfirmation_Word}\` `) + .setColor(supportbot.EmbedColour); + + message.channel.send(CloseTicketRequest).then(m => { + message.channel.awaitMessages( response => response.content.toLowerCase() === supportbot.ClosingConfirmation_Word, { + max: 1, + time: 20000, + errors: [ 'time' ], + + + }).then( collected => { + let logChannel = message.guild.channels.cache.find(channel => channel.name === supportbot.TranscriptLog); + let user = message.author; + let reason = args.join(" ") || "No Reason Provided."; + + let name = message.channel.name; + let ticketChannel = message.channel; + + message.channel.send(`**${supportbot.ClosingTicket}**`) + + .then(() => { + const logEmbed = new Discord.MessageEmbed() + .setTitle(supportbot.TranscriptTitle) + .setColor(supportbot.EmbedColour) + .setFooter(supportbot.EmbedFooter) + .addField("Closed By", message.author.tag) + .addField("Reason", reason); + + message.channel.messages.fetch({ limit: 100 }).then( msgs => { + let txt = ''; + + msgs = msgs.sort( ( a, b ) => a.createdTimestamp - b.createdTimestamp ); + txt += `${message.guild.name}\n`; + txt += `#${ticketChannel.name}\n`; + txt += `${msgs.size} messages\n\n\n`; + + msgs.forEach( msg => { + if ( msg.content ) { + txt += `----- ${msg.author.tag} at ${msg.createdAt}\n`; + txt += `${msg.content}\n`; + txt += `-----\n\n`; + } + }); + + logChannel.send(logEmbed).catch(err => { + message.reply(err) + }) + + logChannel.send( new Discord.MessageAttachment( Buffer.from( txt ), `${name}.txt` ) ); + + message.channel.delete(); + + }) + }) + + }) + + }).catch( () => { + m.edit('The request to close the ticket has timed out.').then( m2 => m2.delete( 3000 ) ); + }); } + if (supportbot.CloseConfirmation === "false") { + + let logChannel = message.guild.channels.cache.find(channel => channel.name === supportbot.TranscriptLog); + let user = message.author; + let reason = args.join(" ") || "No Reason Provided."; + + let name = message.channel.name; + let ticketChannel = message.channel; + + message.channel.send(`**${supportbot.ClosingTicket}**`) + + .then(() => { + const logEmbed = new Discord.MessageEmbed() + .setTitle(supportbot.TranscriptTitle) + .setColor(supportbot.EmbedColour) + .setFooter(supportbot.EmbedFooter) + .addField("Closed By", message.author.tag) + .addField("Reason", reason); + + message.channel.messages.fetch({ limit: 100 }).then( msgs => { + let txt = ''; + + msgs = msgs.sort( ( a, b ) => a.createdTimestamp - b.createdTimestamp ); + txt += `${message.guild.name}\n`; + txt += `#${ticketChannel.name}\n`; + txt += `${msgs.size} messages\n\n\n`; + + msgs.forEach( msg => { + if ( msg.content ) { + txt += `----- ${msg.author.tag} at ${msg.createdAt}\n`; + txt += `${msg.content}\n`; + txt += `-----\n\n`; + } + }); + + logChannel.send(logEmbed).catch(err => { + message.reply(err) + }) + + logChannel.send( new Discord.MessageAttachment( Buffer.from( txt ), `${name}.txt` ) ); + + message.channel.delete(); + + }) + + }).catch( () => { + m.edit('The request to close the ticket has timed out.').then( m2 => m2.delete( 3000 ) ); + }); + + } } }; \ No newline at end of file diff --git a/commands/newticket.js b/commands/newticket.js index 1ee174a..3995ba3 100644 --- a/commands/newticket.js +++ b/commands/newticket.js @@ -97,7 +97,7 @@ module.exports = { } - if (supportbot.TicketDepartments === true) { + if (supportbot.TicketDepartments === "true") { TicketMessage.addFields({ name: 'Departments', value: `${supportbot.DepartmentEmoji_1} **${supportbot.DepartmentTitle_1}**\n${supportbot.DepartmentEmoji_2} **${supportbot.DepartmentTitle_2}**\n${supportbot.DepartmentEmoji_3} **${supportbot.DepartmentTitle_3}**` }) } @@ -109,7 +109,7 @@ module.exports = { reacted[ticketNumberID] = false; - if (supportbot.TicketDepartments === true) { + if (supportbot.TicketDepartments === "true") { await msg.react(Emoji_1); await msg.react(Emoji_2); await msg.react(Emoji_3); @@ -122,10 +122,14 @@ module.exports = { SupportTicket.updateOverwrite(Admins, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) SupportTicket.updateOverwrite(DeptRole1, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) - if (supportbot.AllowStaff === true) { + if (supportbot.AllowStaff === "true") { SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) } + if (supportbot.AllowStaff === "false") { + SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: false, READ_MESSAGES: true, SEND_MESSAGES: true, }) + } + const Department1 = new Discord.MessageEmbed() .setTitle(`> Thank for reaching out to the **${supportbot.DepartmentTitle_1} Department**. Please provide us information regarding your query.`) .setColor(supportbot.EmbedColour) @@ -138,9 +142,13 @@ module.exports = { SupportTicket.updateOverwrite(Admins, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) SupportTicket.updateOverwrite(DeptRole2, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) - if (supportbot.AllowStaff === true) { + if (supportbot.AllowStaff === "true") { SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) } + + if (supportbot.AllowStaff === "false") { + SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: false, READ_MESSAGES: true, SEND_MESSAGES: true, }) + } const Department2 = new Discord.MessageEmbed() .setTitle(`> Thank for reaching out to the **${supportbot.DepartmentTitle_2} Department**. Please provide us information regarding your query.`) @@ -153,10 +161,15 @@ module.exports = { SupportTicket.updateOverwrite(message.author.id, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) SupportTicket.updateOverwrite(Admins, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) SupportTicket.updateOverwrite(DeptRole3, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) + SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: false, READ_MESSAGES: true, SEND_MESSAGES: true, }) - if (supportbot.AllowStaff === true) { + if (supportbot.AllowStaff === "true") { SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, }) } + + if (supportbot.AllowStaff === "false") { + SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: false, READ_MESSAGES: true, SEND_MESSAGES: true, }) + } const Department3 = new Discord.MessageEmbed() .setTitle(`> Thank for reaching out to the **${supportbot.DepartmentTitle_3} Department**. Please provide us information regarding your query.`) diff --git a/storage/SupportTickets.json b/storage/SupportTickets.json index 3078a8d..0bc4123 100644 --- a/storage/SupportTickets.json +++ b/storage/SupportTickets.json @@ -1,4 +1,4 @@ { - "ticket": "ticket-0054", - "id":276497792526974996 + "ticket": "ticket-0058", + "id":419821884431925260 } \ No newline at end of file diff --git a/storage/TicketID.json b/storage/TicketID.json index 1e4e615..9f38e34 100644 --- a/storage/TicketID.json +++ b/storage/TicketID.json @@ -1,5 +1,5 @@ { "716992597377286145": { - "id": 55 + "id": 59 } } \ No newline at end of file diff --git a/supportbot-config.yml b/supportbot-config.yml index ee45c21..25f4482 100644 --- a/supportbot-config.yml +++ b/supportbot-config.yml @@ -46,27 +46,26 @@ TicketCategory: "Tickets" TicketLog: "ticket-logs" TranscriptLog: "transcripts" TicketSubject: "description" +# TicketSuvject: "description" means that the subject (reason) of the ticket will be displayed upon the channel description if set to "embed" it will be displayed within the embed. Ticket_Thumbnail: "https://images.emojiterra.com/google/android-pie/512px/1f39f.png" Ticket_Title: "Server Support | %ticketusername%" TicketMessage: "Hello <@%ticketauthor%>, Thank you for creating a support ticket\nPlease wait patiently whilst a member of our team reaches out to you." NoTicketSubject: "No Reason Provided!" TicketCreatedAlert: ":ticket: Your support ticket has been created: <#%ticketid%>" - -TicketPanel: true -ReactionForTicket: 🎫 +TranscriptTitle: "Ticket Transcript" ClosingTicket: ":warning: You have requested to close your support ticket." ClosingConfirmation_Word: "confirm" -CloseConfirmation: true -Transcripts: true +CloseConfirmation: "true" +# CloseConfirmation to true will make users confirm that they want to close a their ticket, settings to false will just close the ticket. # Ticket Department Configuration -TicketDepartments: true +TicketDepartments: "true" # This option enable or disable the ticket departments. If set false Ticket Departments will not work -AllowStaff: true +AllowStaff: "true" # AllowStaff is an option to whether or not you want the users with the "Staff" role to be able to view inside tickets. If set false "Staff" will not view tickets. DepartmentEmoji_1: "🙋" diff --git a/test b/test deleted file mode 100644 index 23e74ae..0000000 --- a/test +++ /dev/null @@ -1,8 +0,0 @@ - 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`) - .setColor(supportbot.ErrorColour); - - if (supportbot.ShowErrorCodes === "true") { - rolerequired.addField("Error Code", "SB-02") - } \ No newline at end of file