From 9638179d451522ab7664ee91498424c6fc36177c Mon Sep 17 00:00:00 2001 From: DJj123dj <80536295+DJj123dj@users.noreply.github.com> Date: Thu, 21 Jul 2022 10:32:36 +0200 Subject: [PATCH] v2.3.1 push 1 --- README.md | 6 ++-- config.json | 2 +- core/ticketCloser.js | 24 +++++++++----- core/ticketOpener.js | 74 +++++++++++++++++++++++++++--------------- core/ticketReopener.js | 18 +++++----- core/transcript.js | 4 +-- language/arabic.json | 5 +-- language/custom.json | 3 +- language/dutch.json | 3 +- language/english.json | 3 +- language/french.json | 3 +- language/german.json | 3 +- language/romanian.json | 3 +- language/spanish.json | 3 +- package.json | 4 +-- 15 files changed, 99 insertions(+), 59 deletions(-) mode change 100644 => 100755 core/ticketCloser.js mode change 100644 => 100755 core/ticketOpener.js mode change 100644 => 100755 core/ticketReopener.js mode change 100644 => 100755 core/transcript.js diff --git a/README.md b/README.md index 8b6a5fd..30aef22 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ make a ticket in our server to start! *if you translate, you will come in the credits* # open-ticket -[![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-2.3.0%20stable-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v2.3.0) [![npm](https://img.shields.io/badge/npm-external%20libraries%20needed-CB3837.svg?style=flat-square&logo=npm)](#packages) [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) +[![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-2.3.1%20stable-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v2.3.1) [![npm](https://img.shields.io/badge/npm-external%20libraries%20needed-CB3837.svg?style=flat-square&logo=npm)](#packages) [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) This is an open-source discord ticket bot, you can configure it and it comes with cool features like transcripts & custom options! @@ -62,7 +62,7 @@ if there are any errors, you can open an **issue on github** or **contact me in ### config Our config documentation is moved to another file: -[click here to view](https://www.github.com/DJj123dj/open-ticket/wiki/config-v2.3.0) +[click here to view](https://www.github.com/DJj123dj/open-ticket/wiki/config-v2.3.1) ### intents & permissions In the discord developer portal in the "bot" panel you will find 3 switches under the title "Gateaway Intents". The following switches should always be turned on @@ -74,7 +74,7 @@ You can also configure your own permissions ## information -_v2.3.0 stable_ +_v2.3.1 stable_ changelog: [click here](https://www.github.com/DJj123dj/open-ticket/wiki/Changelog) diff --git a/config.json b/config.json index eea4dab..3f36002 100644 --- a/config.json +++ b/config.json @@ -79,7 +79,7 @@ "name":"Choose Your Ticket", "description":"You can click one of the buttons below!\nYou can also customize all the embeds now!", "enableFooter":true, - "footer":"Open Ticket v2.3.0 - I'm a footer!", + "footer":"Open Ticket v2.3.1 - I'm a footer!", "enableThumbnail":false, "thumbnail":"https://www.example.com/catmemes/cat.png", "color":"#ffffff", diff --git a/core/ticketCloser.js b/core/ticketCloser.js old mode 100644 new mode 100755 index 140a151..ec99f11 --- a/core/ticketCloser.js +++ b/core/ticketCloser.js @@ -41,6 +41,7 @@ exports.closeTicket = async (interaction,prefix,mode) => { } var enableTranscript = true + var deleteRequired = false if (mode == "delete"){ const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id) @@ -48,8 +49,8 @@ exports.closeTicket = async (interaction,prefix,mode) => { interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]}) return } - - interaction.channel.delete() + deleteRequired = true + interaction.channel.send({content:"**"+l.messages.gettingdeleted+"**"}) log("system","deleted a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}]) if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1) @@ -84,17 +85,19 @@ exports.closeTicket = async (interaction,prefix,mode) => { } var permissionArray = [] + const pfb = discord.PermissionFlagsBits + if (!isDatabaseError) permissionArray.push({ - id:getusernameStep1.id, + id:getusernameStep1, type:"member", - allow:["VIEW_CHANNEL"], - deny:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES"] + allow:[pfb.ViewChannel], + deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages] }) permissionArray.push({ - id:interaction.guild.id, + id:interaction.guild.roles.everyone, type:"role", - deny:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] + deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] }) interaction.channel.permissionOverwrites.set(permissionArray) @@ -162,7 +165,8 @@ exports.closeTicket = async (interaction,prefix,mode) => { } enableTranscript = false - interaction.channel.delete() + deleteRequired = true + interaction.channel.send({content:"**"+l.messages.gettingdeleted+"**"}) log("system","deleted a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}]) if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1) @@ -222,6 +226,10 @@ exports.closeTicket = async (interaction,prefix,mode) => { }) } } + + if (deleteRequired){ + interaction.channel.delete() + } } exports.runThis = () => { diff --git a/core/ticketOpener.js b/core/ticketOpener.js old mode 100644 new mode 100755 index 29d71bd..48a6b63 --- a/core/ticketOpener.js +++ b/core/ticketOpener.js @@ -44,6 +44,7 @@ module.exports = () => { } } } + if (getconfigoptions.getTicketValues("id").includes(customId)){ @@ -67,7 +68,6 @@ module.exports = () => { } catch{log("system","can't send DM to member, member doesn't allow dm's")} - //update storage storage.set("ticketStorage",interaction.member.id,Number(storage.get("ticketStorage",interaction.member.id))+1) @@ -85,17 +85,19 @@ module.exports = () => { } var permissionsArray = [] + const pfb = discord.PermissionFlagsBits + const guild = client.guilds.cache.find(g => g.id == interaction.guild.id) //set everyone allowed if (config.system['has@everyoneaccess']){ - var everyoneAllowPerms = ["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] + var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] var everyoneDenyPerms = [] }else{ var everyoneAllowPerms = [] - var everyoneDenyPerms = ["VIEW_CHANNEL"] + var everyoneDenyPerms = [pfb.ViewChannel] } permissionsArray.push({ - id:interaction.guild.id, + id:interaction.guild.roles.everyone, type:"role", allow:everyoneAllowPerms, deny:everyoneDenyPerms @@ -103,18 +105,25 @@ module.exports = () => { //add the user that created the ticket permissionsArray.push({ - id:interaction.member.id, + id:interaction.member.user, type:"member", - allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] + allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] }) //add main adminroles - config.main_adminroles.forEach((role) => { - permissionsArray.push({ - id:role, - type:"role", - allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] - }) + config.main_adminroles.forEach((role,index) => { + try { + const adminrole = guild.roles.cache.find(r => r.id == role) + if (!adminrole) return + + permissionsArray.push({ + id:adminrole, + type:"role", + allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] + }) + }catch{ + log("system","invalid role! At 'config.json => main_adminroles:"+index) + } }) //add ticket adminroles @@ -122,29 +131,42 @@ module.exports = () => { * @type {String[]} */ const ticketadmin = currentTicketOptions.adminroles - ticketadmin.forEach((role) => { + ticketadmin.forEach((role,index) => { if (!config.main_adminroles.includes(role)){ - permissionsArray.push({ - id:role, - type:"role", - allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] - }) + try { + const adminrole = guild.roles.cache.find(r => r.id == role) + if (!adminrole) return + + permissionsArray.push({ + id:adminrole, + type:"role", + allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] + }) + }catch{ + log("system","invalid role! At 'config.json => options/ticket/...:"+index) + } } }) //add member role if (config.system.member_role != "" && config.system.member_role != " " && config.system.member_role != "false" && config.system.member_role != "null" && config.system.member_role != "0"){ - permissionsArray.push({ - id:config.system.member_role, - type:"role", - deny:["VIEW_CHANNEL"] - }) + try { + const userrole = guild.roles.cache.find(r => r.id == config.system.member_role) + if (!userrole) return + permissionsArray.push({ + id:userrole, + type:"role", + deny:[pfb.ViewChannel] + }) + }catch{ + log("system","invalid role! At 'config.json => system/member_role") + } } - //create the channel - interaction.guild.channels.create(ticketName,{ - type:"GUILD_TEXT", + interaction.guild.channels.create({ + name:ticketName, + type:discord.ChannelType.GuildText, parent:newTicketCategory, reason:"A new ticket is created", permissionOverwrites:permissionsArray diff --git a/core/ticketReopener.js b/core/ticketReopener.js old mode 100644 new mode 100755 index 3af7c04..4e57739 --- a/core/ticketReopener.js +++ b/core/ticketReopener.js @@ -111,6 +111,8 @@ module.exports = () => { }) + const pfb = discord.PermissionFlagsBits + client.on("interactionCreate",(interaction) => { if (!interaction.isButton()) return if (interaction.customId != "reopenTicketTrue") return @@ -131,14 +133,14 @@ module.exports = () => { //set everyone allowed if (config.system['has@everyoneaccess']){ - var everyoneAllowPerms = ["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] + var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] var everyoneDenyPerms = [] }else{ var everyoneAllowPerms = [] - var everyoneDenyPerms = ["VIEW_CHANNEL"] + var everyoneDenyPerms = [pfb.ViewChannel] } permissionsArray.push({ - id:interaction.guild.id, + id:interaction.guild.roles.everyone, type:"role", allow:everyoneAllowPerms, deny:everyoneDenyPerms @@ -149,7 +151,7 @@ module.exports = () => { permissionsArray.push({ id:p.id, type:"member", - allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"], + allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel], deny:[] }) } @@ -198,14 +200,14 @@ module.exports = () => { //set everyone allowed if (config.system['has@everyoneaccess']){ - var everyoneAllowPerms = ["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] + var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] var everyoneDenyPerms = [] }else{ var everyoneAllowPerms = [] - var everyoneDenyPerms = ["VIEW_CHANNEL"] + var everyoneDenyPerms = [pfb.ViewChannel] } permissionsArray.push({ - id:interaction.guild.id, + id:interaction.guild.roles.everyone, type:"role", allow:everyoneAllowPerms, deny:everyoneDenyPerms @@ -216,7 +218,7 @@ module.exports = () => { permissionsArray.push({ id:p.id, type:"member", - allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"], + allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel], deny:[] }) } diff --git a/core/transcript.js b/core/transcript.js old mode 100644 new mode 100755 index e1a9308..2cb6468 --- a/core/transcript.js +++ b/core/transcript.js @@ -39,7 +39,7 @@ const getUserInfo = (channel) => { * * @param {discord.Message[]} messagecollection * @param {discord.Channel} channel - * @returns new `discord.messageAttachment` + * @returns new `discord.attachmentBuilder` */ exports.createTranscript = async (messagecollection,channel) => { @@ -64,7 +64,7 @@ exports.createTranscript = async (messagecollection,channel) => { if (filearray.length < 2) filearray.push("transcript is empty") const filestring = filearray.join("\n") const filebuff = Buffer.from(filestring,"utf-8") - return new discord.MessageAttachment(filebuff,"transcript_"+ticketuserdata.ticketname+".txt") + return new discord.AttachmentBuilder(filebuff,{name:"transcript_"+ticketuserdata.ticketname+".txt",description:"An Open Ticket transcript"}) }catch(err){ console.log("[error] "+err) return false diff --git a/language/arabic.json b/language/arabic.json index 2ed635e..9d30d8b 100644 --- a/language/arabic.json +++ b/language/arabic.json @@ -3,7 +3,7 @@ "missingArgsTitle":"حجج باطلة", "missingArgsDescription":"حجة مفقودة", "noPermsTitle":"ليس لديك إذن", - "noPermsDescription":"ليس لديك إذن لاستخدام هذا\nأنت بحاجة إلى إذن "ADMINISTRATOR" أو أن تكون في قائمة الأدوار المسموح بها!", + "noPermsDescription":"ليس لديك إذن لاستخدام هذا\nأنت بحاجة إلى إذن 'ADMINISTRATOR' أو أن تكون في قائمة الأدوار المسموح بها!", "chooseFromListTitle":"بطاقة التعريف غير صالحة", "chooseFromListDescription":"اختر أحد المعرفات أدناه:", "boterror":"مشكلة في الروبوت", @@ -74,6 +74,7 @@ "newTranscriptDescription":"يمكنك العثور على النص في الملف النصي أعلاه!", "hereIsTheTranscript":"هذا هو النص:", - "chooseCategory":"اختر فئة:" + "chooseCategory":"اختر فئة:", + "gettingdeleted":"Ticket is getting deleted..." } } \ No newline at end of file diff --git a/language/custom.json b/language/custom.json index 7c36997..963520c 100644 --- a/language/custom.json +++ b/language/custom.json @@ -74,6 +74,7 @@ "newTranscriptDescription":"You can find the transcript in the text file above!", "hereIsTheTranscript":"Here is the transcript:", - "chooseCategory":"choose a category:" + "chooseCategory":"choose a category:", + "gettingdeleted":"Ticket is getting deleted..." } } \ No newline at end of file diff --git a/language/dutch.json b/language/dutch.json index 2604cc5..42e3ffc 100644 --- a/language/dutch.json +++ b/language/dutch.json @@ -74,6 +74,7 @@ "newTranscriptDescription":"Je kan het transcript vinden in het bestand hierboven!", "hereIsTheTranscript":"Hier is het transcript:", - "chooseCategory":"kies een categorie:" + "chooseCategory":"kies een categorie:", + "gettingdeleted":"Ticket wordt verwijderd..." } } \ No newline at end of file diff --git a/language/english.json b/language/english.json index 7c36997..963520c 100644 --- a/language/english.json +++ b/language/english.json @@ -74,6 +74,7 @@ "newTranscriptDescription":"You can find the transcript in the text file above!", "hereIsTheTranscript":"Here is the transcript:", - "chooseCategory":"choose a category:" + "chooseCategory":"choose a category:", + "gettingdeleted":"Ticket is getting deleted..." } } \ No newline at end of file diff --git a/language/french.json b/language/french.json index 0aebe76..5b10cdb 100644 --- a/language/french.json +++ b/language/french.json @@ -68,6 +68,7 @@ "newTranscriptDescription":"Vous pouvez trouver la transcription dans le fichier texte ci-dessus !", "hereIsTheTranscript":"Voici la transcription :", - "chooseCategory":"choisissez une catégorie:" + "chooseCategory":"choisissez une catégorie:", + "gettingdeleted":"Le ticket est en cours de suppression..." } } \ No newline at end of file diff --git a/language/german.json b/language/german.json index 50258cd..7086bf3 100644 --- a/language/german.json +++ b/language/german.json @@ -74,6 +74,7 @@ "newTranscriptDescription":"Die Abschrift finden Sie in der obigen Textdatei!", "hereIsTheTranscript":"Hier ist das Transscript:", - "chooseCategory":"Wähle eine Kategorie:" + "chooseCategory":"Wähle eine Kategorie:", + "gettingdeleted":"Ticket wird gelöscht..." } } \ No newline at end of file diff --git a/language/romanian.json b/language/romanian.json index a33d6a5..9755af1 100644 --- a/language/romanian.json +++ b/language/romanian.json @@ -74,6 +74,7 @@ "newTranscriptDescription":"Poti vedea copia ticket-ului in fisierul .txt de mai sus!", "hereIsTheTranscript":"Aceasta este copia ticket-ului:", - "chooseCategory":"Alege o categorie:" + "chooseCategory":"Alege o categorie:", + "gettingdeleted":"Ticket-ul se sterge..." } } \ No newline at end of file diff --git a/language/spanish.json b/language/spanish.json index 127c510..59dadd9 100644 --- a/language/spanish.json +++ b/language/spanish.json @@ -74,6 +74,7 @@ "newTranscriptDescription":"¡Puedes encontrar el transcript en el archivo de texto que se muestra arriba!", "hereIsTheTranscript":"Aquí está el transcript:", - "chooseCategory":"elije una categoría:" + "chooseCategory":"elije una categoría:", + "gettingdeleted":"El ticket se está viendo eliminado..." } } \ No newline at end of file diff --git a/package.json b/package.json index ee2b307..5db266b 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "open-ticket", - "version": "2.3.0", + "version": "2.3.1", "description": "This is an open-source discord ticket bot, you can configure it and it comes with cool features like a transcript.", "main": "index.js", "scripts": { "start": "node index.js", - "test": "echo \"Error: no test specified\" && exit 1", + "test": "node index.js d", "slashEnable": "node index.js slash enable", "slashDisable": "node index.js slash disable", "cleardata": "node ./core/dynamicdatabase/cleardata.js"