Advertisement
gaber-elsayed

tickets

Sep 17th, 2021
3,912
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.45 KB | None | 0 0
  1. const Discord = require("discord.js");
  2. const client = new Discord.Client({
  3. disableMentions: 'everyone'
  4. })
  5. require("dotenv").config()
  6. require('discord-reply');
  7. const { Database } = require("quickmongo");
  8. const db = new Database(process.env.Mongo)
  9. const randomstring = require("randomstring");
  10. const disbut = require('discord-buttons');
  11. require('discord-buttons')(client);
  12. const { MessageMenu, MessageMenuOption } = require('discord-buttons');
  13. const config = require(`./config.json`)
  14. const prefix = config.prefix;
  15.  
  16. async function channelLog(embed) {
  17. if (!config.log_channel_id) return;
  18. let ch = await client.channels.cache.get(config.log_channel_id) || message.guild.channels.cache.find(channel => channel.name.match("log"));
  19. if (!ch) return console.log(`Pls fill config.json`)
  20. ch.send(embed)
  21. }
  22.  
  23. client.on('ready', async () => {
  24. await console.clear()
  25. channelLog(`> The **Bot** is connecting to discord API`)
  26. console.log(`Made by Tejas Lamba$1924`)
  27. console.log(`Credits | Visa2Code | https://discord.gg/xtdessK2DPA`)
  28. console.log(`Join above or you gay`)
  29. client.user.setActivity(config.status.name, { type: config.status.type.toUpperCase(), url: "https://twitch.tv/SmallCadaver" })
  30. });
  31. client.on("message", async(message) =>{
  32. if (message.author.bot || !message.guild) return;
  33. let args = message.content.toLowerCase().split(" ");
  34. let command = args.shift()
  35. if (command == prefix + `help`) {
  36. let embed = new Discord.MessageEmbed()
  37. .setTitle(`Bot commands list`)
  38. .setDescription(`> \`${prefix}send\` - Send a message to open tickets
  39. > \`${prefix}add\` - Adds a member to a specific ticket
  40. > \`${prefix}remove\` - Removes a member to a specific ticket.
  41. > \`${prefix}delete\` - Delete a specific ticket
  42. > \`${prefix}close\` - Close a specific ticket
  43. > \`${prefix}open\` - Open a specific ticket
  44. > \`${prefix}rename\` - Rename a specific ticket
  45. > \`${prefix}setchannels\` - set channels relating to ticket log and category
  46. > \`${prefix}setstaff\` - set staff roles`)
  47. .setTimestamp()
  48. .setColor(`#33cd15`)
  49. .setFooter(`All rights belong to https://discord.gg/xtessK2DPA`)
  50. message.lineReply({ embed: embed })
  51. }
  52. if (command == prefix + `add`) {
  53. if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.lineReply(`:x: This command requires \`MANAGE_MESSAGES\` permission.`);
  54. let args = message.content.split(' ').slice(1).join(' ');
  55. let channel = message.mentions.channels.first() || message.channel;
  56. const sfats = await db.get(`Staff_${message.guild.id}`)
  57. if (!sfats) return message.lineReply({ embed: { description: `this server needs to set up their staff roles first! \`{prefix}setstaff\``, color: `#33cd15` } })
  58. if (await db.get(`ticket_${channel.id}_${message.guild.id}`)) {
  59. let member = message.mentions.members.first() || message.guild.members.cache.get(args || message.guild.members.cache.find(x => x.user.username === args || x.user.username === args));
  60. if (!member) return message.lineReply(`Mention a member of its ID`);
  61. try {
  62. channel.updateOverwrite(member.user, {
  63. VIEW_CHANNEL: true,
  64. SEND_MESSAGES: true,
  65. ATTACH_FILES: true,
  66. READ_MESSAGE_HISTORY: true,
  67. }).then(() => {
  68. message.lineReply({ embed: { description: `${member} has been successfully added to ${channel}`, color: `#33cd15` } });
  69. let log_embed = new Discord.MessageEmbed()
  70. .setTitle(`A person has been added to a ticket`)
  71. .addField(`Ticket`, `<#${channel.id}>`)
  72. .addField(`Added Person`, member.user)
  73. .addField(`Action by`, `<@!${message.author.id}>`)
  74. .setTimestamp()
  75. .setColor(`GREEN`)
  76. .setFooter(message.guild.name, message.guild.iconURL())
  77. channelLog(log_embed)
  78. });
  79. }
  80. catch (e) {
  81. return message.channel.send(`An error occurred, please try again!`);
  82. }
  83. }
  84. }
  85. if (command == prefix + `remove`) {
  86. if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.lineReply(`:x: This command requires \`MANAGE_MESSAGES\` permission.`);
  87. let args = message.content.split(' ').slice(1).join(' ');
  88. let channel = message.mentions.channels.first() || message.channel;
  89. const sfats = await db.get(`Staff_${message.guild.id}`)
  90. if (!sfats) return message.lineReply({ embed: { description: `this server needs to set up their staff roles first! \`{prefix}setstaff\``, color: `#33cd15` } })
  91. if (await db.get(`ticket_${channel.id}_${message.guild.id}`)) {
  92. let member = message.mentions.members.first() || message.guild.members.cache.get(args || message.guild.members.cache.find(x => x.user.username === args || x.user.username === args));
  93. if (!member) return message.lineReply(`Mention a member of its ID`);
  94. try {
  95. channel.updateOverwrite(member.user, {
  96. VIEW_CHANNEL: false,
  97. }).then(() => {
  98. let log_embed = new Discord.MessageEmbed()
  99. .setTitle(`People removed to ticket`)
  100. .addField(`Ticket`, `<#${channel.id}>`)
  101. .addField(`person added`, member.user)
  102. .addField(`Action by`, `<@!${message.author.id}>`)
  103. .setTimestamp()
  104. .setColor(`RED`)
  105. .setFooter(message.guild.name, message.guild.iconURL())
  106. channelLog(log_embed)
  107. message.lineReply({ embed: { description: `Successfully delete ${member} from ${channel}`, color: `#33cd15` } });
  108. });
  109. }
  110. catch (e) {
  111. return message.channel.send(`An error occurred, please try again!`);
  112. }
  113. }
  114. }
  115. if (command == prefix + 'delete') {
  116. if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.lineReply(`:x: This command requires \`MANAGE_MESSAGES\` permission.`);
  117. let channel = message.mentions.channels.first() || message.channel;
  118. const sfats = await db.get(`Staff_${message.guild.id}`)
  119. if (!sfats) return message.lineReply({ embed: { description: `this server needs to set up their staff roles first! \`{prefix}setstaff\``, color: `#33cd15` } })
  120. if (await db.get(`ticket_${channel.id}_${message.guild.id}`)) {
  121. message.lineReply({ embed: { description: `Your order is executed after 5 seconds, and it will be closed`, color: `#33cd15` } })
  122. setTimeout(async () => {
  123. let log_embed = new Discord.MessageEmbed()
  124. .setTitle(`Ticket Deleted`)
  125. .addField(`Ticket number`, `${await db.get(`ticket_${channel.id}_${message.guild.id}`).count}`)
  126. .addField(`Ticket by`,`<@!${await db.get(`ticket_${channel.id}_${message.guild.id}`).ticket_by}>`)
  127. .addField(`Action by`, `<@!${message.author.id}>`)
  128. .setTimestamp()
  129. .setColor(`RED`)
  130. .setFooter(message.guild.name, message.guild.iconURL())
  131. channelLog(log_embed)
  132. channel.delete()
  133. }, 5000)
  134. }
  135. }
  136. if (command == prefix + 'close') {
  137. if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.lineReply(`:x: This command requires \`MANAGE_MESSAGES\` permission.`);
  138. let channel = message.mentions.channels.first() || message.channel;
  139. const sfats = await db.get(`Staff_${message.guild.id}`)
  140. if (!sfats) return message.lineReply({ embed: { description: `this server needs to set up their staff roles first! \`{prefix}setstaff\``, color: `#33cd15` } })
  141. if (await db.get(`ticket_${channel.id}_${message.guild.id}`)) {
  142. let msg = await message.lineReply({ embed: { description: `Your order is executed after 5 seconds, and it will be closed`, color: `#33cd15` } })
  143. setTimeout(async () => {
  144. try {
  145. msg.delete()
  146. channel.send({ embed: { description: `Ticket has been closed by <@!${message.author.id}>`, color: `YELLOW` } })
  147. let type = 'member'
  148. await Promise.all(channel.permissionOverwrites.filter(o => o.type === type).map(o => o.delete()));
  149. channel.setName(`closed-${(await db.get(`ticket_${channel.id}_${message.guild.id}`))}`)
  150. let log_embed = new Discord.MessageEmbed()
  151. .setTitle(`Ticket closed`)
  152. .addField(`Ticket`, `<#${channel.id}>`)
  153. .addField(`Action by`, `<@!${message.author.id}>`)
  154. .setTimestamp()
  155. .setColor(`YELLOW`)
  156. .setFooter(message.guild.name, message.guild.iconURL())
  157. channelLog(log_embed)
  158. } catch (e) {
  159. return message.channel.send(`An error occurred, please try again!`);
  160. }
  161. }, 1000)
  162. }
  163. }
  164.  
  165. if (command == prefix + 'open') {
  166. if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.lineReply(`:x: This command requires \`MANAGE_MESSAGES\` permission.`);
  167. let channel = message.mentions.channels.first() || message.channel;
  168. const sfats = await db.get(`Staff_${message.guild.id}`)
  169. if (!sfats) return message.lineReply({ embed: { description: `this server needs to set up their staff roles first! \`{prefix}setstaff\``, color: `#33cd15` } })
  170. if (await db.get(`ticket_${channel.id}_${message.guild.id}`)) {
  171. let msg = await message.lineReply({ embed: { description: `Your order is executed after 5 seconds`, color: `#33cd15` } })
  172. setTimeout(async () => {
  173. try {
  174. msg.delete()
  175. channel.send({ embed: { description: `Ticket opened by <@!${message.author.id}>`, color: `GREEN` } })
  176. let meember = client.users.cache.get(await db.get(`ticket_${channel.id}_${message.guild.id}`).ticket_by);
  177. channel.updateOverwrite(meember, {
  178. VIEW_CHANNEL: true,
  179. SEND_MESSAGES: true,
  180. ATTACH_FILES: true,
  181. READ_MESSAGE_HISTORY: true,
  182. })
  183. channel.updateOverwrite((await db.get(`Staff_${message.guild.id}.Admin`)), {
  184. VIEW_CHANNEL: true,
  185. SEND_MESSAGES: true,
  186. ATTACH_FILES: true,
  187. READ_MESSAGE_HISTORY: true,
  188. })
  189. channel.updateOverwrite((await db.get(`Staff_${message.guild.id}.Moder`)), {
  190. VIEW_CHANNEL: true,
  191. SEND_MESSAGES: true,
  192. ATTACH_FILES: true,
  193. READ_MESSAGE_HISTORY: true,
  194. })
  195. channel.setName(`ticket-${await db.get(`ticket_${channel.id}_${message.guild.id}`).count}`)
  196. let log_embed = new Discord.MessageEmbed()
  197. .setTitle(`Ticket has reopened`)
  198. .addField(`Ticket`, `<#${channel.id}>`)
  199. .addField(`Action by`, `<@!${message.author.id}>`)
  200. .setTimestamp()
  201. .setColor(`GREEN`)
  202. .setFooter(message.guild.name, message.guild.iconURL())
  203. channelLog(log_embed)
  204. } catch (e) {
  205. return message.channel.send(`An error occurred, please try again!`);
  206. }
  207. }, 1000)
  208. }
  209. }
  210. if (command == prefix + 'rename' || command == prefix + 'setname') {
  211. if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.lineReply(`:x: This command requires \`MANAGE_MESSAGES\` permission.`);
  212. let channel = message.mentions.channels.first() || message.channel;
  213. const sfats = await db.get(`Staff_${message.guild.id}`)
  214. if (!sfats) return message.lineReply({ embed: { description: `this server needs to set up their staff roles first! \`{prefix}setstaff\``, color: `#33cd15` } })
  215. if (await db.get(`ticket_${channel.id}_${message.guild.id}`)) {
  216. let args = message.content.split(' ').slice(1).join(' ');
  217. if (!args) return message.lineReply({ embed: { description: `Please select the name you want for the ticket`, color: `#33cd15` } })
  218. channel.setName(args)
  219. message.delete()
  220. let log_embed = new Discord.MessageEmbed()
  221. .setTitle(`Ticket name change`)
  222. .addField(`New name`, args)
  223. .addField(`Ticket`, `<#${channel.id}>`)
  224. .addField(`by`, `<@!${message.author.id}>`)
  225. .setTimestamp()
  226. .setColor(`#33cd15`)
  227. .setFooter(message.guild.name, message.guild.iconURL())
  228. channelLog(log_embed)
  229. }
  230. }
  231. if (command == prefix + 'setstaff'){
  232. console.log(args)
  233. if (!message.member.hasPermission('ADMINISTRATOR')) return message.lineReply(`:x: This command requires \`ADMINISTRATOR\` permission.`);
  234. if (args.length != 2) return message.lineReply({ embed: { description: `Please provide an Admin role id, *then* a Mod role id with this command! `, color: `#33cd15` } })
  235. if (message.mentions.roles.length < 2 && !Number(args[0]) && !Number(args[1])) return message.lineReply({ embed: { description: `Please mention an Admin role (or iD) first, *then* a Mod role (or iD) with this command! `, color: `#33cd15` } })
  236. const Admin = message.guild.roles.cache.get(args[0]);
  237. const Moder = message.guild.roles.cache.get(args[1]);
  238. await db.set(`Staff_${message.guild.id}.Admin`, Admin.id)
  239. await db.set(`Staff_${message.guild.id}.Moder`, Moder.id)
  240. message.react("βœ…")
  241. }
  242. if (command == prefix + 'setchannels'){
  243. if (!message.member.hasPermission('ADMINISTRATOR')) return message.lineReply(`:x: This command requires \`ADMINISTRATOR\` permission.`);
  244. if (args.length != 2) return message.lineReply({ embed: { description: `Please mention a channelid, *then* a categoryid with this command! `, color: `#33cd15` } })
  245. if (message.mentions.roles.length < 2 && !Number(args[0]) && !Number(args[1])) return message.lineReply({ embed: { description: `Please mention an Log Channel (or iD), *then* a Category (or iD) with this command! `, color: `#33cd15` } })
  246. const txt = message.guild.channels.cache.get(args[0]);
  247. const cat = message.guild.channels.cache.get(args[1]);
  248. if (txt.type !== "text") return message.channel.send("The first input should be a text channel");
  249. if (cat.type !== "category") return message.channel.send("The second input should be a text category");
  250. await db.set(`Channels_${message.guild.id}.Log`, txt.id)
  251. await db.set(`Channels_${message.guild.id}.Cat`, cat.id)
  252. message.react("βœ…")
  253. }
  254. if (command == prefix + 'send' || command == prefix + 'ticket') {
  255. if (!message.member.hasPermission('ADMINISTRATOR')) return message.lineReply(`:x: This command requires \`ADMINISTRATOR\` permission.`);
  256. const sfats = await db.get(`Staff_${message.guild.id}`)
  257. const sfas = await db.get(`Channels_${message.guild.id}`)
  258. if (!sfats || sfats === null) return message.lineReply({ embed: { description: `This server needs to set up their staff roles first! \`${prefix}setstaff\``, color: `#33cd15` } })
  259. if (!sfas || sfas === null) return message.lineReply({ embed: { description: `This server needs to set up their ticket channels first! \`${prefix}setchannels\``, color: `#33cd15` } })
  260. let idd = randomstring.generate({ length: 20 })
  261. let args = message.content.split(' ').slice(1).join(' ');
  262. if (!args) args = `Tickets`
  263. let button1 = new MessageMenuOption()
  264. .setLabel('Special Support')
  265. .setEmoji('πŸ”΄')
  266. .setValue("men")
  267. .setDescription('Use this to contact Admins+ only!')
  268. let button3 = new MessageMenuOption()
  269. .setLabel('Claim Your Reward')
  270. .setEmoji('πŸŽ‰')
  271. .setValue("hlp")
  272. .setDescription('Use this to contact Helpers and higher ranks!')
  273. let select = new MessageMenu()
  274. .setID(idd)
  275. .setPlaceholder('Create A ticket!')
  276. .setMaxValues(1)
  277. .setMinValues(1)
  278. .addOptions(button1, button3)
  279. let embed = new Discord.MessageEmbed()
  280. .setTitle(args)
  281. .setDescription("To create a ticket, select one of the options below from the menu.")
  282. .setThumbnail(message.guild.iconURL())
  283. .setTimestamp()
  284. .setColor(`#33cd15`)
  285. .setFooter(message.guild.name, message.guild.iconURL())
  286. let msg = await message.channel.send({ embed: embed, component: select }).then(async msg => {
  287. msg.pin()
  288. let log_embed = new Discord.MessageEmbed()
  289. .setTitle(`A message has been sent to open new tickets`)
  290. .addField(`Channel`, `<#${message.channel.id}>`)
  291. .addField(`by`, `<@!` + message.author.id + `>`)
  292. .setTimestamp()
  293. .setColor(`#33cd15`)
  294. .setFooter(message.guild.name, message.guild.iconURL())
  295. channelLog(log_embed)
  296. await db.set(`tickets_${idd}_${message.guild.id}`, {
  297. reason: args,
  298. msgID: msg.id,
  299. id: idd,
  300. options: [button1, button3],
  301. guildName: message.guild.name,
  302. guildAvatar: message.guild.iconURL(),
  303. channelID: message.channel.id
  304. })
  305. })
  306. }
  307. })
  308.  
  309.  
  310. client.on('clickMenu', async (button) => {
  311. console.log(button.values)
  312. if (await db.get(`tickets_${button.id}_${button.message.guild.id}`)) {
  313. await button.reply.send(`Your ticket is being processed. Please wait `, true)
  314. await db.math(`counts_${button.message.id}_${button.message.guild.id}`, `+`, 1)
  315. let count = await db.get(`counts_${button.message.id}_${button.message.guild.id}`)
  316. let channel;
  317. await button.clicker.fetch();
  318. if (button.values[0] === "men") { // Admins +
  319. button.guild.channels.create(`ticket-${count}`, {
  320. permissionOverwrites: [
  321. {
  322. id: button.guild.roles.everyone,
  323. deny: ['VIEW_CHANNEL'],
  324. },
  325. {
  326. id: (await db.get(`Staff_${button.message.guild.id}.Admin`)),
  327. allow: ['VIEW_CHANNEL', `READ_MESSAGE_HISTORY`, `ATTACH_FILES`, `SEND_MESSAGES`,`MANAGE_MESSAGES`],
  328. },
  329. {
  330. id: button.clicker.user.id,
  331. allow: ['VIEW_CHANNEL', `READ_MESSAGE_HISTORY`, `ATTACH_FILES`, `SEND_MESSAGES`],
  332. },
  333. ], parent: (await db.get(`Channels_${button.message.guild.id}.Cat`)), position: 1, topic: `A Ticket : <@!${button.clicker.user.id}>`, reason: "All rights reserved to Visa2Code"
  334. }).then(async channel => {
  335. channel = channel
  336. await db.set(`ticket_${channel.id}_${button.message.guild.id}`, { count: count, ticket_by: button.clicker.user.id })
  337.  
  338. await button.reply.edit(`
  339. **Your ticket has been successfully opened** <#${channel.id}>`, true)
  340. let log_embed = new Discord.MessageEmbed()
  341. .setTitle(`New ticket opened`)
  342. .addField(`Ticket`, `<#${channel.id}>`)
  343. .addField(`Ticket by`, `<@!${button.clicker.user.id}>`)
  344. .addField(`Ticket number`, count)
  345. .setTimestamp()
  346. .setColor(`GREEN`)
  347. channelLog(log_embed)
  348. const embedticket = new Discord.MessageEmbed()
  349. .setTimestamp()
  350. .setTitle("Specialised Support")
  351. .setFooter(`Ticket opened at`)
  352. .setColor(`#33cd15`)
  353. .setDescription(`Support will be with you soon.\n
  354. To close this ticket, interact with πŸ”’`)
  355. let idd = randomstring.generate({ length: 25 })
  356. let bu1tton = new disbut.MessageButton()
  357. .setStyle(`gray`)
  358. .setEmoji(`πŸ”’`)
  359. .setLabel(`Close`)
  360. .setID(idd)
  361. channel.send(`Welcome <@!${button.clicker.user.id}>`, { embed: embedticket, component: bu1tton }).then(msg => {
  362. msg.pin()
  363. })
  364. })
  365. }
  366. if (button.values[0] === "hlp"){ // help +
  367. button.guild.channels.create(`ticket-${count}`, {
  368. permissionOverwrites: [
  369. {
  370. id: button.guild.roles.everyone,
  371. deny: ['VIEW_CHANNEL'],
  372. },
  373. {
  374. id: (await db.get(`Staff_${button.message.guild.id}.Admin`)),
  375. allow: ['VIEW_CHANNEL', `READ_MESSAGE_HISTORY`, `ATTACH_FILES`, `SEND_MESSAGES`,`MANAGE_MESSAGES`],
  376. },
  377. {
  378. id: (await db.get(`Staff_${button.message.guild.id}.Moder`)),
  379. allow: ['VIEW_CHANNEL', `READ_MESSAGE_HISTORY`, `ATTACH_FILES`, `SEND_MESSAGES`,`MANAGE_MESSAGES`],
  380. },
  381. {
  382. id: button.clicker.user.id,
  383. allow: ['VIEW_CHANNEL', `READ_MESSAGE_HISTORY`, `ATTACH_FILES`, `SEND_MESSAGES`],
  384. },
  385. ], parent: (await db.get(`Channels_${button.message.guild.id}.Cat`)), position: 1, topic: `A Ticket : <@!${button.clicker.user.id}>`, reason: "All rights reserved to Visa2Code"
  386. }).then(async channel => {
  387. channel = channel
  388. await db.set(`ticket_${channel.id}_${button.message.guild.id}`, { count: count, ticket_by: button.clicker.user.id })
  389.  
  390. await button.reply.edit(`
  391. **Your ticket has been successfully opened** <#${channel.id}>`, true)
  392. let log_embed = new Discord.MessageEmbed()
  393. .setTitle(`New ticket opened`)
  394. .addField(`Ticket`, `<#${channel.id}>`)
  395. .addField(`Ticket by`, `<@!${button.clicker.user.id}>`)
  396. .addField(`Ticket number`, count)
  397. .setTimestamp()
  398. .setColor(`GREEN`)
  399. channelLog(log_embed)
  400. const embedticket = new Discord.MessageEmbed()
  401. .setTimestamp()
  402. .setTitle("Claim Your Reward")
  403. .setFooter(`Ticket opened at`)
  404. .setColor(`#33cd15`)
  405. .setDescription(`Support will be with you soon.\n
  406. To close this ticket, interact with πŸ”’`)
  407. let idd = randomstring.generate({ length: 25 })
  408. await db.set(`close_${button.clicker.user.id}`, idd)
  409. let bu1tton = new disbut.MessageButton()
  410. .setStyle(`gray`)
  411. .setEmoji(`πŸ”’`)
  412. .setLabel(`Close`)
  413. .setID(idd)
  414. channel.send(`Welcome <@!${button.clicker.user.id}>`, { embed: embedticket, component: bu1tton }).then(msg => {
  415. msg.pin()
  416. })
  417. })
  418. }
  419. }
  420. });
  421. client.on('clickButton', async (button1) => {
  422. await button1.clicker.fetch()
  423. let idd = randomstring.generate({ length: 25 })
  424. await db.set(`close_${button1.clicker.user.id}_sure`, idd)
  425. if (button1.id == (await db.get(`close_${button1.clicker.user.id}`))) {
  426. let bu0tton = new disbut.MessageButton()
  427. .setStyle(`red`)
  428. .setLabel(`close`)
  429. .setID(idd)
  430. await button1.reply.send(`Are you sure you want to close this ticket?`, { component: bu0tton, ephemeral: true });
  431. }
  432. })
  433. client.on('clickButton', async (button) => {
  434. await button.clicker.fetch()
  435. if (button.id == (await db.get(`close_${button.clicker.user.id}_sure`))) {
  436. await button.reply.send(`Your order is executed after 5 seconds, and it will be closed`, true)
  437. let ch = button.channel
  438. if (!ch) return;
  439. setTimeout(async () => {
  440. try {
  441. await ch.send({ embed: { description: `The ticket has already been closed <@!${button.clicker.user.id}>`, color: `YELLOW` } });
  442. let type = 'member'
  443. await Promise.all(ch.permissionOverwrites.filter(o => o.type === type).map(o => o.delete()));
  444. ch.setName(`closed-ticket`)
  445. let log_embed = new Discord.MessageEmbed()
  446. .setTitle(`Ticket closed`)
  447. .addField(`Ticket`, `<#${ch.id}>`)
  448. .addField(`Action by`, `<@!${button.clicker.user.id}>`)
  449. .setTimestamp()
  450. .setColor(`YELLOW`)
  451. channelLog(log_embed)
  452. } catch (e) {
  453. return button.channel.send(`An error occurred, please try again!`);
  454. }
  455. }, 4000)
  456. }
  457. })
  458. client.login(process.env.TOKEN);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement