diff --git a/events/interactionCreate.js b/events/interactionCreate.js index f7664fb..e1274da 100644 --- a/events/interactionCreate.js +++ b/events/interactionCreate.js @@ -4,163 +4,195 @@ const fs = require("fs"); const Discord = require("discord.js"); -const yaml = require('js-yaml'); -const supportbot = yaml.load(fs.readFileSync('./Data/supportbot.yml', 'utf8')); -const cmdconfig = yaml.load(fs.readFileSync('./Data/commands.yml', 'utf8')); +const yaml = require("js-yaml"); +const supportbot = yaml.load(fs.readFileSync("./Data/supportbot.yml", "utf8")); +const cmdconfig = yaml.load(fs.readFileSync("./Data/commands.yml", "utf8")); const Event = require("../Structures/Event.js"); module.exports = new Event("interactionCreate", (client, interaction) => { - - if (interaction.isCommand()) return; - - const command = client.commands.find(cmd => cmd.name.toLowerCase() == interaction.commandName); + if (interaction.isCommand()) { + const command = client.commands.find( + (cmd) => cmd.name.toLowerCase() == interaction.commandName + ); if (interaction.user.bot || !interaction.isCommand() || !interaction.guild) - return; + return; const args = [ - interaction.commandName, - ...client.commands - .find(cmd => cmd.name.toLowerCase() == interaction.commandName) - .slashCommandOptions.map(v => `${interaction.options.get(v.name).value}`) + interaction.commandName, + ...client.commands + .find((cmd) => cmd.name.toLowerCase() == interaction.commandName) + .slashCommandOptions.map( + (v) => `${interaction.options.get(v.name).value}` + ), ]; + console.log(args) const NotValid = new Discord.MessageEmbed() - .setDescription(`:x: \`Invalid Command\` `) - .setColor(supportbot.ErrorColour) + .setDescription(`:x: \`Invalid Command\` `) + .setColor(supportbot.ErrorColour); - if (!command) return interaction.reply({ - embeds: [NotValid] - }); + if (!command) + return interaction.reply({ + embeds: [NotValid], + }); const permission = interaction.member.permissions.has(command.permission); const ValidPerms = new Discord.MessageEmbed() - .setDescription(":x: \`Invalid Permissions\` Do you have the correct permissions to execute this command?") - .setColor(supportbot.ErrorColour) + .setDescription( + ":x: `Invalid Permissions` Do you have the correct permissions to execute this command?" + ) + .setColor(supportbot.ErrorColour); if (!permission) - return interaction.reply({ - embeds: [ValidPerms] - }); - + return interaction.reply({ + embeds: [ValidPerms], + }); + interaction.author = interaction.user; command.run(interaction, args, client); - - if(interaction.isButton()) { - if(interaction.customId === 'openticket') { - interaction.message.fetch() - interaction.deferUpdate() - let message = { - guild: client.guilds.cache.get(interaction.message.guildId), - author: client.users.cache.get(interaction.user.id), - content: "N/A", - channel: client.channels.cache.get(interaction.message.channelId) - } - try { - const cmd = client.commands.get(cmdconfig.OpenTicket); - if(!cmd) return; - cmd.run(message, message.content) - } - catch (error){ - console.error(error) - } - } - - if(interaction.customId === 'ticketclose') { - if(interaction.channel.name.startsWith(`${supportbot.TicketChannel}-`)) { - interaction.message.fetch() - interaction.deferUpdate() - const DeleteTicketEmbed = new Discord.MessageEmbed() - .setDescription(supportbot.TicketDeleteMessage) - .setColor(supportbot.EmbedColour) - interaction.channel.send({embeds: [DeleteTicketEmbed]}) - - let logChannel = interaction.guild.channels.cache.find(channel => channel.name === supportbot.TranscriptLog) || interaction.guild.channels.cache.find(channel => channel.id === supportbot.TranscriptLog) - - let user = interaction.user - let name = interaction.channel.name; - let ticketChannel = interaction.channel - let reason = "No Reason Provided." - - interaction.channel.send({content: `**${supportbot.ClosingTicket}**`}) - .then(() => { - const logEmbed = new Discord.MessageEmbed() - .setTitle(supportbot.TranscriptTitle) - .setColor(supportbot.EmbedColour) - .setFooter(supportbot.EmbedFooter) - .addField("Closed By", user.username) - .addField("Reason", reason) - - interaction.channel.messages.fetch({limit: 100}).then(msgs => { - let html = '' - - msgs = msgs.sort( ( a, b ) => a.createdTimestamp - b.createdTimestamp ); - html += `Server Name: ${interaction.guild.name}
` - html += `Ticket: ${ticketChannel.name}
` - html += `Message: ${msgs.size} Messages


` - - - msgs.forEach(msg => { - if(msg.content) { - html += `User: ${msg.author.tag}
`; - html += `Message: ${msg.content}
`; - html += `-----

`; - } - }) - - const TranscriptSavedEmbed = new Discord.MessageEmbed() - .setDescription(supportbot.TranscriptSavedMessage) - .setColor(supportbot.SuccessColour) - interaction.channel.send({embeds: [TranscriptSavedEmbed]}) - - let file = new Discord.MessageAttachment( Buffer.from( html ), `${name}.html` ) - logChannel.send({embeds: [logEmbed], files: [file]}) - - setTimeout(() => interaction.channel.delete(), supportbot.TicketDeleteTime) - - }) - }) - } - } - if(interaction.customId === 'ticketlock') { - if(interaction.channel.name.startsWith(`${supportbot.TicketChannel}`)) { - interaction.message.fetch() - interaction.deferUpdate() - let Admin = interaction.guild.roles.cache.find(AdminUser => AdminUser.name === supportbot.Admin) || interaction.guild.roles.cache.find(AdminUser => AdminUser.id === supportbot.Admin) - let all = interaction.channel.permissionOverwrites.cache - - let parent = interaction.guild.channels.cache.find(c => c.name === `${supportbot.LockTicketCategory}`) || interaction.guild.channels.cache.find(c => c.id === `${supportbot.LockTicketCategory}`) - if(parent) { - interaction.channel.setParent(parent.id) - } - - all.forEach(perm => { - interaction.channel.permissionOverwrites.delete(perm.id) - - }) - interaction.channel.permissionOverwrites.create(Admin.id, {VIEW_CHANNEL: true}) - - interaction.channel.permissionOverwrites.create(interaction.guild.id, {VIEW_CHANNEL: false}) - - - const ticketDeleteButton = new Discord.MessageButton() - .setCustomId('ticketclose') - .setLabel('Close') - .setStyle(supportbot.TicketDeleteColour) - .setEmoji(supportbot.TicketDeleteEmoji) - - const row = new Discord.MessageActionRow() - .addComponents(ticketDeleteButton) - const ArchiveEmbed = new Discord.MessageEmbed() - .setTitle("Archived") - .setDescription(`Archived ${interaction.channel.name}`) - .setColor(`${supportbot.SuccessColour}`) - - interaction.channel.send({embeds: [ArchiveEmbed]}) - interaction.message.edit({components: [row]}) - } - } + } + if (interaction.isButton()) { + if (interaction.customId === "openticket") { + interaction.message.fetch(); + interaction.deferUpdate(); + let message = { + guild: client.guilds.cache.get(interaction.message.guildId), + author: client.users.cache.get(interaction.user.id), + content: "N/A", + channel: client.channels.cache.get(interaction.message.channelId), + }; + try { + const cmd = client.commands.get(cmdconfig.OpenTicket); + if (!cmd) return; + cmd.run(message, message.content); + } catch (error) { + console.error(error); + } } -}); \ No newline at end of file + if (interaction.customId === "ticketclose") { + if (interaction.channel.name.startsWith(`${supportbot.TicketChannel}-`)) { + interaction.message.fetch(); + interaction.deferUpdate(); + const DeleteTicketEmbed = new Discord.MessageEmbed() + .setDescription(supportbot.TicketDeleteMessage) + .setColor(supportbot.EmbedColour); + interaction.channel.send({ embeds: [DeleteTicketEmbed] }); + + let logChannel = + interaction.guild.channels.cache.find( + (channel) => channel.name === supportbot.TranscriptLog + ) || + interaction.guild.channels.cache.find( + (channel) => channel.id === supportbot.TranscriptLog + ); + + let user = interaction.user; + let name = interaction.channel.name; + let ticketChannel = interaction.channel; + let reason = "No Reason Provided."; + + interaction.channel + .send({ content: `**${supportbot.ClosingTicket}**` }) + .then(() => { + const logEmbed = new Discord.MessageEmbed() + .setTitle(supportbot.TranscriptTitle) + .setColor(supportbot.EmbedColour) + .setFooter(supportbot.EmbedFooter) + .addField("Closed By", user.username) + .addField("Reason", reason); + + interaction.channel.messages.fetch({ limit: 100 }).then((msgs) => { + let html = ""; + + msgs = msgs.sort( + (a, b) => a.createdTimestamp - b.createdTimestamp + ); + html += `Server Name: ${interaction.guild.name}
`; + html += `Ticket: ${ticketChannel.name}
`; + html += `Message: ${msgs.size} Messages


`; + + msgs.forEach((msg) => { + if (msg.content) { + html += `User: ${msg.author.tag}
`; + html += `Message: ${msg.content}
`; + html += `-----

`; + } + }); + + const TranscriptSavedEmbed = new Discord.MessageEmbed() + .setDescription(supportbot.TranscriptSavedMessage) + .setColor(supportbot.SuccessColour); + interaction.channel.send({ embeds: [TranscriptSavedEmbed] }); + + let file = new Discord.MessageAttachment( + Buffer.from(html), + `${name}.html` + ); + logChannel.send({ embeds: [logEmbed], files: [file] }); + + setTimeout( + () => interaction.channel.delete(), + supportbot.TicketDeleteTime + ); + }); + }); + } + } + if (interaction.customId === "ticketlock") { + if (interaction.channel.name.startsWith(`${supportbot.TicketChannel}`)) { + interaction.message.fetch(); + interaction.deferUpdate(); + let Admin = + interaction.guild.roles.cache.find( + (AdminUser) => AdminUser.name === supportbot.Admin + ) || + interaction.guild.roles.cache.find( + (AdminUser) => AdminUser.id === supportbot.Admin + ); + let all = interaction.channel.permissionOverwrites.cache; + + let parent = + interaction.guild.channels.cache.find( + (c) => c.name === `${supportbot.LockTicketCategory}` + ) || + interaction.guild.channels.cache.find( + (c) => c.id === `${supportbot.LockTicketCategory}` + ); + if (parent) { + interaction.channel.setParent(parent.id); + } + + all.forEach((perm) => { + interaction.channel.permissionOverwrites.delete(perm.id); + }); + interaction.channel.permissionOverwrites.create(Admin.id, { + VIEW_CHANNEL: true, + }); + + interaction.channel.permissionOverwrites.create(interaction.guild.id, { + VIEW_CHANNEL: false, + }); + + const ticketDeleteButton = new Discord.MessageButton() + .setCustomId("ticketclose") + .setLabel("Close") + .setStyle(supportbot.TicketDeleteColour) + .setEmoji(supportbot.TicketDeleteEmoji); + + const row = new Discord.MessageActionRow().addComponents( + ticketDeleteButton + ); + const ArchiveEmbed = new Discord.MessageEmbed() + .setTitle("Archived") + .setDescription(`Archived ${interaction.channel.name}`) + .setColor(`${supportbot.SuccessColour}`); + + interaction.channel.send({ embeds: [ArchiveEmbed] }); + interaction.message.edit({ components: [row] }); + } + } + } +});