Compare commits

...
2 Commits
Author SHA1 Message Date
Jasper d282a516e6 Merge pull request #19 from DJj123dj/dev
v2.3.1
2022-07-21 11:57:04 +02:00
DJj123dj 9638179d45 v2.3.1 push 1 2022-07-21 10:32:36 +02:00
15 changed files with 99 additions and 59 deletions
+3 -3
View File
@@ -7,7 +7,7 @@ make a ticket in our server to start!
*if you translate, you will come in the credits* *if you translate, you will come in the credits*
# open-ticket # 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! 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 ### config
Our config documentation is moved to another file: 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 ### 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 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 ## information
_v2.3.0 stable_ _v2.3.1 stable_
changelog: [click here](https://www.github.com/DJj123dj/open-ticket/wiki/Changelog) changelog: [click here](https://www.github.com/DJj123dj/open-ticket/wiki/Changelog)
+1 -1
View File
@@ -79,7 +79,7 @@
"name":"Choose Your Ticket", "name":"Choose Your Ticket",
"description":"You can click one of the buttons below!\nYou can also customize all the embeds now!", "description":"You can click one of the buttons below!\nYou can also customize all the embeds now!",
"enableFooter":true, "enableFooter":true,
"footer":"Open Ticket v2.3.0 - I'm a footer!", "footer":"Open Ticket v2.3.1 - I'm a footer!",
"enableThumbnail":false, "enableThumbnail":false,
"thumbnail":"https://www.example.com/catmemes/cat.png", "thumbnail":"https://www.example.com/catmemes/cat.png",
"color":"#ffffff", "color":"#ffffff",
Regular → Executable
+16 -8
View File
@@ -41,6 +41,7 @@ exports.closeTicket = async (interaction,prefix,mode) => {
} }
var enableTranscript = true var enableTranscript = true
var deleteRequired = false
if (mode == "delete"){ if (mode == "delete"){
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id) 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]}) interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
return return
} }
deleteRequired = true
interaction.channel.delete() interaction.channel.send({content:"**"+l.messages.gettingdeleted+"**"})
log("system","deleted a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}]) 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) if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1)
@@ -84,17 +85,19 @@ exports.closeTicket = async (interaction,prefix,mode) => {
} }
var permissionArray = [] var permissionArray = []
const pfb = discord.PermissionFlagsBits
if (!isDatabaseError) permissionArray.push({ if (!isDatabaseError) permissionArray.push({
id:getusernameStep1.id, id:getusernameStep1,
type:"member", type:"member",
allow:["VIEW_CHANNEL"], allow:[pfb.ViewChannel],
deny:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES"] deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages]
}) })
permissionArray.push({ permissionArray.push({
id:interaction.guild.id, id:interaction.guild.roles.everyone,
type:"role", 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) interaction.channel.permissionOverwrites.set(permissionArray)
@@ -162,7 +165,8 @@ exports.closeTicket = async (interaction,prefix,mode) => {
} }
enableTranscript = false 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}]) 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) 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 = () => { exports.runThis = () => {
Regular → Executable
+39 -17
View File
@@ -45,6 +45,7 @@ module.exports = () => {
} }
} }
if (getconfigoptions.getTicketValues("id").includes(customId)){ if (getconfigoptions.getTicketValues("id").includes(customId)){
//ticketoptions from config //ticketoptions from config
@@ -68,7 +69,6 @@ module.exports = () => {
catch{log("system","can't send DM to member, member doesn't allow dm's")} catch{log("system","can't send DM to member, member doesn't allow dm's")}
//update storage //update storage
storage.set("ticketStorage",interaction.member.id,Number(storage.get("ticketStorage",interaction.member.id))+1) storage.set("ticketStorage",interaction.member.id,Number(storage.get("ticketStorage",interaction.member.id))+1)
var ticketNumber = interaction.member.user.username var ticketNumber = interaction.member.user.username
@@ -85,17 +85,19 @@ module.exports = () => {
} }
var permissionsArray = [] var permissionsArray = []
const pfb = discord.PermissionFlagsBits
const guild = client.guilds.cache.find(g => g.id == interaction.guild.id)
//set everyone allowed //set everyone allowed
if (config.system['has@everyoneaccess']){ 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 = [] var everyoneDenyPerms = []
}else{ }else{
var everyoneAllowPerms = [] var everyoneAllowPerms = []
var everyoneDenyPerms = ["VIEW_CHANNEL"] var everyoneDenyPerms = [pfb.ViewChannel]
} }
permissionsArray.push({ permissionsArray.push({
id:interaction.guild.id, id:interaction.guild.roles.everyone,
type:"role", type:"role",
allow:everyoneAllowPerms, allow:everyoneAllowPerms,
deny:everyoneDenyPerms deny:everyoneDenyPerms
@@ -103,18 +105,25 @@ module.exports = () => {
//add the user that created the ticket //add the user that created the ticket
permissionsArray.push({ permissionsArray.push({
id:interaction.member.id, id:interaction.member.user,
type:"member", 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 //add main adminroles
config.main_adminroles.forEach((role) => { config.main_adminroles.forEach((role,index) => {
try {
const adminrole = guild.roles.cache.find(r => r.id == role)
if (!adminrole) return
permissionsArray.push({ permissionsArray.push({
id:role, id:adminrole,
type:"role", type:"role",
allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] 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 //add ticket adminroles
@@ -122,29 +131,42 @@ module.exports = () => {
* @type {String[]} * @type {String[]}
*/ */
const ticketadmin = currentTicketOptions.adminroles const ticketadmin = currentTicketOptions.adminroles
ticketadmin.forEach((role) => { ticketadmin.forEach((role,index) => {
if (!config.main_adminroles.includes(role)){ if (!config.main_adminroles.includes(role)){
try {
const adminrole = guild.roles.cache.find(r => r.id == role)
if (!adminrole) return
permissionsArray.push({ permissionsArray.push({
id:role, id:adminrole,
type:"role", type:"role",
allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] 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 //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"){ if (config.system.member_role != "" && config.system.member_role != " " && config.system.member_role != "false" && config.system.member_role != "null" && config.system.member_role != "0"){
try {
const userrole = guild.roles.cache.find(r => r.id == config.system.member_role)
if (!userrole) return
permissionsArray.push({ permissionsArray.push({
id:config.system.member_role, id:userrole,
type:"role", type:"role",
deny:["VIEW_CHANNEL"] deny:[pfb.ViewChannel]
}) })
}catch{
log("system","invalid role! At 'config.json => system/member_role")
}
} }
//create the channel //create the channel
interaction.guild.channels.create(ticketName,{ interaction.guild.channels.create({
type:"GUILD_TEXT", name:ticketName,
type:discord.ChannelType.GuildText,
parent:newTicketCategory, parent:newTicketCategory,
reason:"A new ticket is created", reason:"A new ticket is created",
permissionOverwrites:permissionsArray permissionOverwrites:permissionsArray
Regular → Executable
+10 -8
View File
@@ -111,6 +111,8 @@ module.exports = () => {
}) })
const pfb = discord.PermissionFlagsBits
client.on("interactionCreate",(interaction) => { client.on("interactionCreate",(interaction) => {
if (!interaction.isButton()) return if (!interaction.isButton()) return
if (interaction.customId != "reopenTicketTrue") return if (interaction.customId != "reopenTicketTrue") return
@@ -131,14 +133,14 @@ module.exports = () => {
//set everyone allowed //set everyone allowed
if (config.system['has@everyoneaccess']){ 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 = [] var everyoneDenyPerms = []
}else{ }else{
var everyoneAllowPerms = [] var everyoneAllowPerms = []
var everyoneDenyPerms = ["VIEW_CHANNEL"] var everyoneDenyPerms = [pfb.ViewChannel]
} }
permissionsArray.push({ permissionsArray.push({
id:interaction.guild.id, id:interaction.guild.roles.everyone,
type:"role", type:"role",
allow:everyoneAllowPerms, allow:everyoneAllowPerms,
deny:everyoneDenyPerms deny:everyoneDenyPerms
@@ -149,7 +151,7 @@ module.exports = () => {
permissionsArray.push({ permissionsArray.push({
id:p.id, id:p.id,
type:"member", 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:[] deny:[]
}) })
} }
@@ -198,14 +200,14 @@ module.exports = () => {
//set everyone allowed //set everyone allowed
if (config.system['has@everyoneaccess']){ 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 = [] var everyoneDenyPerms = []
}else{ }else{
var everyoneAllowPerms = [] var everyoneAllowPerms = []
var everyoneDenyPerms = ["VIEW_CHANNEL"] var everyoneDenyPerms = [pfb.ViewChannel]
} }
permissionsArray.push({ permissionsArray.push({
id:interaction.guild.id, id:interaction.guild.roles.everyone,
type:"role", type:"role",
allow:everyoneAllowPerms, allow:everyoneAllowPerms,
deny:everyoneDenyPerms deny:everyoneDenyPerms
@@ -216,7 +218,7 @@ module.exports = () => {
permissionsArray.push({ permissionsArray.push({
id:p.id, id:p.id,
type:"member", 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:[] deny:[]
}) })
} }
Regular → Executable
+2 -2
View File
@@ -39,7 +39,7 @@ const getUserInfo = (channel) => {
* *
* @param {discord.Message[]} messagecollection * @param {discord.Message[]} messagecollection
* @param {discord.Channel} channel * @param {discord.Channel} channel
* @returns new `discord.messageAttachment` * @returns new `discord.attachmentBuilder`
*/ */
exports.createTranscript = async (messagecollection,channel) => { exports.createTranscript = async (messagecollection,channel) => {
@@ -64,7 +64,7 @@ exports.createTranscript = async (messagecollection,channel) => {
if (filearray.length < 2) filearray.push("transcript is empty") if (filearray.length < 2) filearray.push("transcript is empty")
const filestring = filearray.join("\n") const filestring = filearray.join("\n")
const filebuff = Buffer.from(filestring,"utf-8") 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){ }catch(err){
console.log("[error] "+err) console.log("[error] "+err)
return false return false
+3 -2
View File
@@ -3,7 +3,7 @@
"missingArgsTitle":"حجج باطلة", "missingArgsTitle":"حجج باطلة",
"missingArgsDescription":"حجة مفقودة", "missingArgsDescription":"حجة مفقودة",
"noPermsTitle":"ليس لديك إذن", "noPermsTitle":"ليس لديك إذن",
"noPermsDescription":"ليس لديك إذن لاستخدام هذا\nأنت بحاجة إلى إذن "ADMINISTRATOR" أو أن تكون في قائمة الأدوار المسموح بها!", "noPermsDescription":"ليس لديك إذن لاستخدام هذا\nأنت بحاجة إلى إذن 'ADMINISTRATOR' أو أن تكون في قائمة الأدوار المسموح بها!",
"chooseFromListTitle":"بطاقة التعريف غير صالحة", "chooseFromListTitle":"بطاقة التعريف غير صالحة",
"chooseFromListDescription":"اختر أحد المعرفات أدناه:", "chooseFromListDescription":"اختر أحد المعرفات أدناه:",
"boterror":"مشكلة في الروبوت", "boterror":"مشكلة في الروبوت",
@@ -74,6 +74,7 @@
"newTranscriptDescription":"يمكنك العثور على النص في الملف النصي أعلاه!", "newTranscriptDescription":"يمكنك العثور على النص في الملف النصي أعلاه!",
"hereIsTheTranscript":"هذا هو النص:", "hereIsTheTranscript":"هذا هو النص:",
"chooseCategory":"اختر فئة:" "chooseCategory":"اختر فئة:",
"gettingdeleted":"Ticket is getting deleted..."
} }
} }
+2 -1
View File
@@ -74,6 +74,7 @@
"newTranscriptDescription":"You can find the transcript in the text file above!", "newTranscriptDescription":"You can find the transcript in the text file above!",
"hereIsTheTranscript":"Here is the transcript:", "hereIsTheTranscript":"Here is the transcript:",
"chooseCategory":"choose a category:" "chooseCategory":"choose a category:",
"gettingdeleted":"Ticket is getting deleted..."
} }
} }
+2 -1
View File
@@ -74,6 +74,7 @@
"newTranscriptDescription":"Je kan het transcript vinden in het bestand hierboven!", "newTranscriptDescription":"Je kan het transcript vinden in het bestand hierboven!",
"hereIsTheTranscript":"Hier is het transcript:", "hereIsTheTranscript":"Hier is het transcript:",
"chooseCategory":"kies een categorie:" "chooseCategory":"kies een categorie:",
"gettingdeleted":"Ticket wordt verwijderd..."
} }
} }
+2 -1
View File
@@ -74,6 +74,7 @@
"newTranscriptDescription":"You can find the transcript in the text file above!", "newTranscriptDescription":"You can find the transcript in the text file above!",
"hereIsTheTranscript":"Here is the transcript:", "hereIsTheTranscript":"Here is the transcript:",
"chooseCategory":"choose a category:" "chooseCategory":"choose a category:",
"gettingdeleted":"Ticket is getting deleted..."
} }
} }
+2 -1
View File
@@ -68,6 +68,7 @@
"newTranscriptDescription":"Vous pouvez trouver la transcription dans le fichier texte ci-dessus !", "newTranscriptDescription":"Vous pouvez trouver la transcription dans le fichier texte ci-dessus !",
"hereIsTheTranscript":"Voici la transcription :", "hereIsTheTranscript":"Voici la transcription :",
"chooseCategory":"choisissez une catégorie:" "chooseCategory":"choisissez une catégorie:",
"gettingdeleted":"Le ticket est en cours de suppression..."
} }
} }
+2 -1
View File
@@ -74,6 +74,7 @@
"newTranscriptDescription":"Die Abschrift finden Sie in der obigen Textdatei!", "newTranscriptDescription":"Die Abschrift finden Sie in der obigen Textdatei!",
"hereIsTheTranscript":"Hier ist das Transscript:", "hereIsTheTranscript":"Hier ist das Transscript:",
"chooseCategory":"Wähle eine Kategorie:" "chooseCategory":"Wähle eine Kategorie:",
"gettingdeleted":"Ticket wird gelöscht..."
} }
} }
+2 -1
View File
@@ -74,6 +74,7 @@
"newTranscriptDescription":"Poti vedea copia ticket-ului in fisierul .txt de mai sus!", "newTranscriptDescription":"Poti vedea copia ticket-ului in fisierul .txt de mai sus!",
"hereIsTheTranscript":"Aceasta este copia ticket-ului:", "hereIsTheTranscript":"Aceasta este copia ticket-ului:",
"chooseCategory":"Alege o categorie:" "chooseCategory":"Alege o categorie:",
"gettingdeleted":"Ticket-ul se sterge..."
} }
} }
+2 -1
View File
@@ -74,6 +74,7 @@
"newTranscriptDescription":"¡Puedes encontrar el transcript en el archivo de texto que se muestra arriba!", "newTranscriptDescription":"¡Puedes encontrar el transcript en el archivo de texto que se muestra arriba!",
"hereIsTheTranscript":"Aquí está el transcript:", "hereIsTheTranscript":"Aquí está el transcript:",
"chooseCategory":"elije una categoría:" "chooseCategory":"elije una categoría:",
"gettingdeleted":"El ticket se está viendo eliminado..."
} }
} }
+2 -2
View File
@@ -1,11 +1,11 @@
{ {
"name": "open-ticket", "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.", "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", "main": "index.js",
"scripts": { "scripts": {
"start": "node index.js", "start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1", "test": "node index.js d",
"slashEnable": "node index.js slash enable", "slashEnable": "node index.js slash enable",
"slashDisable": "node index.js slash disable", "slashDisable": "node index.js slash disable",
"cleardata": "node ./core/dynamicdatabase/cleardata.js" "cleardata": "node ./core/dynamicdatabase/cleardata.js"