v3.4.0 push 1: fixed all currently known bugs

This commit is contained in:
DJj123dj
2023-04-29 09:15:56 +02:00
parent a6f67a9452
commit fb6b891835
22 changed files with 410 additions and 538 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ Support for Open Ticket is only available for the versions specified below!
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 3.3.3 | :white_check_mark: | | 3.4.0 | :white_check_mark: |
| 3.3.0 | 🟧 | | 3.3.0 | 🟧 |
| 3.2.2 | 🟧 | | 3.2.2 | 🟧 |
| < 3.2.2 | :x: | | < 3.2.2 | :x: |
+2 -2
View File
@@ -1,6 +1,6 @@
<img src="https://www.dj-dj.be/wp-content/uploads/2023/02/open-ticket-cropped.png" alt="Open Ticket" width="600px"> <img src="https://www.dj-dj.be/wp-content/uploads/2023/02/open-ticket-cropped.png" alt="Open Ticket" width="600px">
[![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-3.3.3-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v3.3.3) [![discord.js](https://img.shields.io/badge/discord.js-v14-CB3837.svg?style=flat-square&logo=npm)]() [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [![stars](https://img.shields.io/github/stars/djj123dj/open-ticket?color=yellow&label=stars&logo=github&style=flat-square)](https://docs.openticket.dj-dj.be) [![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-3.4.0-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v3.4.0) [![discord.js](https://img.shields.io/badge/discord.js-v14-CB3837.svg?style=flat-square&logo=npm)]() [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [![stars](https://img.shields.io/github/stars/djj123dj/open-ticket?color=yellow&label=stars&logo=github&style=flat-square)](https://docs.openticket.dj-dj.be)
### Open Ticket ### Open Ticket
Open Ticket is of the most customisable discord ticket bots of all time! Open Ticket is of the most customisable discord ticket bots of all time!
@@ -62,7 +62,7 @@ Translators
|Slovenian |n1kkec#5341 | |Slovenian |n1kkec#5341 |
## links ## links
current version: _v3.3.3_ current version: _v3.4.0_
</br>changelog: [click here](https://docs.openticket.dj-dj.be/other/changelog) </br>changelog: [click here](https://docs.openticket.dj-dj.be/other/changelog)
</br>documentation: [click here](https://docs.openticket.dj-dj.be/quick-start) </br>documentation: [click here](https://docs.openticket.dj-dj.be/quick-start)
+22 -31
View File
@@ -23,25 +23,21 @@ module.exports = () => {
return return
} }
msg.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
msg.channel.permissionOverwrites.create(user.id, { ViewChannel:true, AddReactions:true,AttachFiles:true, EmbedLinks:true, SendMessages:true}) msg.channel.permissionOverwrites.create(user.id, { ViewChannel:true, AddReactions:true,AttachFiles:true, EmbedLinks:true, SendMessages:true})
msg.channel.send({embeds:[bot.embeds.commands.addEmbed(user,msg.author)]}) msg.channel.send({embeds:[bot.embeds.commands.addEmbed(user,msg.author)]})
var loguser = msg.mentions.users.first() var loguser = msg.mentions.users.first()
log("command","someone used the 'add' command",[{key:"user",value:msg.author.tag}]) log("command","someone used the 'add' command",[{key:"user",value:msg.author.tag}])
log("system","user added to ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"added_user",value:loguser.tag}]) log("system","user added to ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"added_user",value:loguser.tag}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true) const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketAdd(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData}) APIEvents.onTicketAdd(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("add",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) APIEvents.onCommand("add",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
})
}) })
if (!DISABLE.commands.slash.add) client.on("interactionCreate",async (interaction) => { if (!DISABLE.commands.slash.add) client.on("interactionCreate",async (interaction) => {
@@ -57,25 +53,20 @@ module.exports = () => {
await interaction.deferReply() await interaction.deferReply()
interaction.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
interaction.channel.permissionOverwrites.create(user.id, { ViewChannel:true, AddReactions:true,AttachFiles:true, EmbedLinks:true, SendMessages:true}) interaction.channel.permissionOverwrites.create(user.id, { ViewChannel:true, AddReactions:true,AttachFiles:true, EmbedLinks:true, SendMessages:true})
interaction.editReply({embeds:[bot.embeds.commands.addEmbed(user,interaction.user)]}) interaction.editReply({embeds:[bot.embeds.commands.addEmbed(user,interaction.user)]})
var loguser = user var loguser = user
log("command","someone used the 'add' command",[{key:"user",value:interaction.user.tag}]) log("command","someone used the 'add' command",[{key:"user",value:interaction.user.tag}])
log("system","user added to ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"added_user",value:loguser.tag}]) log("system","user added to ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"added_user",value:loguser.tag}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketAdd(interaction.user,loguser,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("add",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
})
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketAdd(interaction.user,loguser,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("add",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
} }
+70 -77
View File
@@ -12,7 +12,7 @@ const DISABLE = require("../core/api/api.json").disable
module.exports = () => { module.exports = () => {
bot.errorLog.log("debug","COMMANDS: loaded change.js") bot.errorLog.log("debug","COMMANDS: loaded change.js")
if (!DISABLE.commands.text.change) client.on("messageCreate",msg => { if (!DISABLE.commands.text.change) client.on("messageCreate", async msg => {
if (!msg.content.startsWith(config.prefix+"change")) return if (!msg.content.startsWith(config.prefix+"change")) return
if (!msg.guild) return if (!msg.guild) return
@@ -21,39 +21,36 @@ module.exports = () => {
return return
} }
msg.channel.messages.fetchPinned().then(async msglist => { const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
const list = [] const list = []
config.options.forEach((o) => list.push(o.id)) config.options.forEach((o) => list.push(o.id))
var newtype = msg.content.split(config.prefix+"change")[1].substring(1) var newtype = msg.content.split(config.prefix+"change")[1].substring(1)
if (!newtype) return msg.channel.send({embeds:[bot.errorLog.invalidIdChooseFromList(list,l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]}) if (!newtype) return msg.channel.send({embeds:[bot.errorLog.invalidIdChooseFromList(list,l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]})
const newTicket = require("../core/utils/configParser").getTicketById(newtype) const newTicket = require("../core/utils/configParser").getTicketById(newtype)
if (!newTicket) return msg.channel.send({embeds:[bot.errorLog.invalidIdChooseFromList(list,l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]}) if (!newTicket) return msg.channel.send({embeds:[bot.errorLog.invalidIdChooseFromList(list,l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]})
/**@type {String} */ /**@type {String} */
var chName = msg.channel.name var chName = msg.channel.name
const splitted = chName.split("-") const splitted = chName.split("-")
const prefix = splitted.shift() const prefix = splitted.shift()
const name = (splitted.length > 0) ? splitted.join("-") : prefix const name = (splitted.length > 0) ? splitted.join("-") : prefix
if (newTicket.category){ if (newTicket.category){
const parent = await msg.guild.channels.fetch(newTicket.category,{cache:true}) const parent = await msg.guild.channels.fetch(newTicket.category,{cache:true})
if (parent && parent.type == discord.ChannelType.GuildCategory) msg.channel.setParent(parent) if (parent && parent.type == discord.ChannelType.GuildCategory) msg.channel.setParent(parent)
} }
msg.channel.setName(newTicket.channelprefix+name) msg.channel.setName(newTicket.channelprefix+name)
msg.channel.send({embeds:[bot.embeds.commands.changeEmbed(msg.author,newtype)]}) msg.channel.send({embeds:[bot.embeds.commands.changeEmbed(msg.author,newtype)]})
log("command","someone used the 'change' command",[{key:"user",value:msg.author.tag}]) log("command","someone used the 'change' command",[{key:"user",value:msg.author.tag}])
log("system","ticket type changed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}]) log("system","ticket type changed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}])
APIEvents.onCommand("change",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) APIEvents.onCommand("change",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
})
}) })
if (!DISABLE.commands.slash.change) client.on("interactionCreate",async (interaction) => { if (!DISABLE.commands.slash.change) client.on("interactionCreate",async (interaction) => {
@@ -67,59 +64,55 @@ module.exports = () => {
} }
await interaction.deferReply() await interaction.deferReply()
interaction.channel.messages.fetchPinned().then(async (msglist) => { const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
/**@type {discord.Message} */ if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
var firstmsg = msglist.last() const ticketId = hiddendata.find(d => d.key == "type").value
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
const list = [] const list = []
config.options.forEach((o) => list.push(o.id)) config.options.forEach((o) => list.push(o.id))
var newtype = interaction.options.getString("type",true) var newtype = interaction.options.getString("type",true)
const newTicket = require("../core/utils/configParser").getTicketById(newtype,true) const newTicket = require("../core/utils/configParser").getTicketById(newtype,true)
if (!newTicket) return interaction.editReply({embeds:[bot.errorLog.invalidIdChooseFromList(list,l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]}) if (!newTicket) return interaction.editReply({embeds:[bot.errorLog.invalidIdChooseFromList(list,l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]})
/**@type {discord.PermissionOverwriteManager} */ /**@type {discord.PermissionOverwriteManager} */
const prePermsManager = interaction.channel.permissionOverwrites const prePermsManager = interaction.channel.permissionOverwrites
const prePerms = prePermsManager.cache const prePerms = prePermsManager.cache
/**@type {String} */ /**@type {String} */
var chName = interaction.channel.name var chName = interaction.channel.name
const splitted = chName.split("-") const splitted = chName.split("-")
const prefix = splitted.shift() const prefix = splitted.shift()
const name = (splitted.length > 0) ? splitted.join("-") : prefix const name = (splitted.length > 0) ? splitted.join("-") : prefix
if (newTicket.category){ if (newTicket.category){
const parent = await interaction.guild.channels.fetch(newTicket.category,{cache:true}) const parent = await interaction.guild.channels.fetch(newTicket.category,{cache:true})
if (parent && parent.type == discord.ChannelType.GuildCategory) interaction.channel.setParent(parent) if (parent && parent.type == discord.ChannelType.GuildCategory) interaction.channel.setParent(parent)
}
await prePermsManager.set(prePerms)
interaction.channel.setName(newTicket.channelprefix+name)
var newHiddendata = hiddendata.data
newHiddendata.find((value,index) => {
if (value.key == "type"){
newHiddendata[index] = {key:"type",value:newtype}
} }
await prePermsManager.set(prePerms)
interaction.channel.setName(newTicket.channelprefix+name)
var newHiddendata = hiddendata.data
newHiddendata.find((value,index) => {
if (value.key == "type"){
newHiddendata[index] = {key:"type",value:newtype}
}
})
const prevDescription = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description).description
const newData = bot.hiddenData.writeHiddenData("ticketdata",newHiddendata)
const newDescription = prevDescription+newData
const newEmbed = new discord.EmbedBuilder(firstmsg.embeds[0].data)
.setDescription(newDescription)
firstmsg.edit({embeds:[newEmbed]})
interaction.editReply({embeds:[bot.embeds.commands.changeEmbed(interaction.user,newtype)]})
log("command","someone used the 'change' command",[{key:"user",value:interaction.user.tag}])
log("system","ticket type changed",[{key:"user",value:interaction.user.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}])
APIEvents.onCommand("change",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
const prevDescription = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description).description
const newData = bot.hiddenData.writeHiddenData("ticketdata",newHiddendata)
const newDescription = prevDescription+newData
const newEmbed = new discord.EmbedBuilder(firstmsg.embeds[0].data)
.setDescription(newDescription)
firstmsg.edit({embeds:[newEmbed]})
interaction.editReply({embeds:[bot.embeds.commands.changeEmbed(interaction.user,newtype)]})
log("command","someone used the 'change' command",[{key:"user",value:interaction.user.tag}])
log("system","ticket type changed",[{key:"user",value:interaction.user.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}])
APIEvents.onCommand("change",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
} }
+39 -44
View File
@@ -26,36 +26,31 @@ module.exports = () => {
return return
} }
msg.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
/**@type {discord.Message} */ if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
var firstmsg = msglist.last() const ticketId = hiddendata.find(d => d.key == "type").value
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
const hdraw = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description)
const hiddendata = hdraw.hiddenData
const ticketId = hiddendata.data.find(d => d.key == "type").value
hiddendata.data.push({key:"claimedby",value:claimingUser.id}) hiddendata.push({key:"claimedby",value:claimingUser.id})
storage.set("claimData",msg.channel.id,claimingUser.id) bot.hiddenData.writeHiddenData(msg.channel.id,hiddendata)
storage.set("claimData",msg.channel.id,claimingUser.id)
const newEmbed = new embed(firstmsg.embeds[0].data)
.setFooter({text:"claimed by: "+msg.author.tag,iconURL:msg.author.displayAvatarURL()}) const newEmbed = new embed(firstmsg.embeds[0].data)
.setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data)) .setFooter({text:"claimed by: "+msg.author.tag,iconURL:msg.author.displayAvatarURL()})
if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]})
}else{ }else{
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]}) firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]})
} }
msg.channel.send({embeds:[bot.embeds.commands.claimEmbed(claimingUser,msg.author)]}) msg.channel.send({embeds:[bot.embeds.commands.claimEmbed(claimingUser,msg.author)]})
log("command","someone used the 'claim' command",[{key:"user",value:msg.author.tag}]) log("command","someone used the 'claim' command",[{key:"user",value:msg.author.tag}])
log("system","user claimed to ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"claimed_user",value:claimingUser.tag}]) log("system","user claimed to ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"claimed_user",value:claimingUser.tag}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true) const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketClaim(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData}) APIEvents.onTicketClaim(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("claim",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) APIEvents.onCommand("claim",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
})
}) })
if (!DISABLE.commands.slash.claim) client.on("interactionCreate",async (interaction) => { if (!DISABLE.commands.slash.claim) client.on("interactionCreate",async (interaction) => {
@@ -71,35 +66,35 @@ module.exports = () => {
await interaction.deferReply() await interaction.deferReply()
interaction.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
/**@type {discord.Message} */ if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
var firstmsg = msglist.last() const ticketId = hiddendata.find(d => d.key == "type").value
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
const hdraw = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description)
const hiddendata = hdraw.hiddenData
const ticketId = hiddendata.data.find(d => d.key == "type").value
hiddendata.data.push({key:"claimedby",value:user.id}) hiddendata.push({key:"claimedby",value:user.id})
storage.set("claimData",interaction.channel.id,user.id) bot.hiddenData.writeHiddenData(interaction.channel.id,hiddendata)
storage.set("claimData",interaction.channel.id,user.id)
interaction.channel.messages.fetchPinned().then(msglist => {
var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
const newEmbed = new embed(firstmsg.embeds[0].data) const newEmbed = new embed(firstmsg.embeds[0].data)
.setFooter({text:"claimed by: "+user.tag,iconURL:user.displayAvatarURL()}) .setFooter({text:"claimed by: "+user.tag,iconURL:user.displayAvatarURL()})
.setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data))
if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]})
}else{ }else{
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]}) firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]})
} }
interaction.editReply({embeds:[bot.embeds.commands.claimEmbed(user,interaction.user)]})
log("command","someone used the 'claim' command",[{key:"user",value:interaction.user.tag}])
log("system","user claimed to ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"claimed_user",value:user.tag}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketClaim(interaction.user,user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("claim",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
interaction.editReply({embeds:[bot.embeds.commands.claimEmbed(user,interaction.user)]})
log("command","someone used the 'claim' command",[{key:"user",value:interaction.user.tag}])
log("system","user claimed to ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"claimed_user",value:user.tag}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketClaim(interaction.user,user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("claim",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
} }
+36 -45
View File
@@ -24,33 +24,28 @@ module.exports = () => {
} }
const reason = tempreason const reason = tempreason
msg.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
if (hiddendata.data.find(h => h.key == "pendingdelete")) return msg.channel.send({embeds:[bot.errorLog.warning("Warning!","You can't close a ticket while it's being deleted!")]}) if (hiddendata.find(h => h.key == "pendingdelete")) return msg.channel.send({embeds:[bot.errorLog.warning("Warning!","You can't close a ticket while it's being deleted!")]})
const descriptionReason = reason ? "**"+l.messages.reason+":** "+reason : false const descriptionReason = reason ? "**"+l.messages.reason+":** "+reason : false
msg.channel.send({embeds:[bot.embeds.commands.closeEmbed(msg.author,descriptionReason)],components:[bot.buttons.close.closeCommandRow]}) msg.channel.send({embeds:[bot.embeds.commands.closeEmbed(msg.author,descriptionReason)],components:[bot.buttons.close.closeCommandRow]})
var name = msg.channel.name var name = msg.channel.name
var prefix = "" var prefix = ""
const tickets = config.options const tickets = config.options
tickets.forEach((ticket) => { tickets.forEach((ticket) => {
if (name.startsWith(ticket.channelprefix)){ if (name.startsWith(ticket.channelprefix)){
prefix = ticket.channelprefix prefix = ticket.channelprefix
} }
})
require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"close",reason,true)
log("command","someone used the 'close' command",[{key:"user",value:msg.author.tag}])
APIEvents.onCommand("close",true,msg.author,msg.channel,msg.guild,new Date())
}) })
require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"close",reason,true)
log("command","someone used the 'close' command",[{key:"user",value:msg.author.tag}])
APIEvents.onCommand("close",true,msg.author,msg.channel,msg.guild,new Date())
}) })
@@ -64,31 +59,27 @@ module.exports = () => {
await interaction.deferReply() await interaction.deferReply()
interaction.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
if (hiddendata.data.find(h => h.key == "pendingdelete")) return interaction.editReply({embeds:[bot.errorLog.warning("Warning!","You can't close a ticket while it's being deleted!")]}) if (hiddendata.find(h => h.key == "pendingdelete")) return interaction.editReply({embeds:[bot.errorLog.warning("Warning!","You can't close a ticket while it's being deleted!")]})
const descriptionReason = reason ? "**"+l.messages.reason+":** "+reason : false const descriptionReason = reason ? "**"+l.messages.reason+":** "+reason : false
interaction.editReply({embeds:[bot.embeds.commands.closeEmbed(interaction.user,descriptionReason)],components:[bot.buttons.close.closeCommandRow]}) interaction.editReply({embeds:[bot.embeds.commands.closeEmbed(interaction.user,descriptionReason)],components:[bot.buttons.close.closeCommandRow]})
var name = interaction.channel.name var name = interaction.channel.name
var prefix = "" var prefix = ""
const tickets = config.options const tickets = config.options
tickets.forEach((ticket) => { tickets.forEach((ticket) => {
if (name.startsWith(ticket.channelprefix)){ if (name.startsWith(ticket.channelprefix)){
prefix = ticket.channelprefix prefix = ticket.channelprefix
} }
})
require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"close",false,true)
log("command","someone used the 'close' command",[{key:"user",value:interaction.user.tag}])
APIEvents.onCommand("close",true,interaction.user,interaction.channel,interaction.guild,new Date())
}) })
require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"close",false,true)
log("command","someone used the 'close' command",[{key:"user",value:interaction.user.tag}])
APIEvents.onCommand("close",true,interaction.user,interaction.channel,interaction.guild,new Date())
}) })
} }
+32 -40
View File
@@ -21,29 +21,25 @@ module.exports = () => {
return return
} }
msg.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
msg.channel.send({embeds:[bot.embeds.commands.deleteEmbed(msg.author)]}) msg.channel.send({embeds:[bot.embeds.commands.deleteEmbed(msg.author)]})
var name = msg.channel.name var name = msg.channel.name
var prefix = "" var prefix = ""
const tickets = config.options const tickets = config.options
tickets.forEach((ticket) => { tickets.forEach((ticket) => {
if (name.startsWith(ticket.channelprefix)){ if (name.startsWith(ticket.channelprefix)){
prefix = ticket.channelprefix prefix = ticket.channelprefix
} }
})
require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"delete",false,true)
log("command","someone used the 'delete' command",[{key:"user",value:msg.author.tag}])
APIEvents.onCommand("delete",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
}) })
require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"delete",false,true)
log("command","someone used the 'delete' command",[{key:"user",value:msg.author.tag}])
APIEvents.onCommand("delete",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
}) })
@@ -59,28 +55,24 @@ module.exports = () => {
await interaction.deferReply() await interaction.deferReply()
interaction.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
interaction.editReply({embeds:[bot.embeds.commands.deleteEmbed(interaction.user)]}) interaction.editReply({embeds:[bot.embeds.commands.deleteEmbed(interaction.user)]})
var name = interaction.channel.name var name = interaction.channel.name
var prefix = "" var prefix = ""
const tickets = config.options const tickets = config.options
tickets.forEach((ticket) => { tickets.forEach((ticket) => {
if (name.startsWith(ticket.channelprefix)){ if (name.startsWith(ticket.channelprefix)){
prefix = ticket.channelprefix prefix = ticket.channelprefix
} }
})
require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"delete",false,true)
log("command","someone used the 'delete' command",[{key:"user",value:interaction.user.tag}])
APIEvents.onCommand("delete",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"delete",false,true)
log("command","someone used the 'delete' command",[{key:"user",value:interaction.user.tag}])
APIEvents.onCommand("delete",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
} }
+24 -31
View File
@@ -23,25 +23,21 @@ module.exports = () => {
return return
} }
msg.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
msg.channel.permissionOverwrites.delete(user.id) msg.channel.permissionOverwrites.delete(user.id)
msg.channel.send({embeds:[bot.embeds.commands.removeEmbed(user,msg.author)]}) msg.channel.send({embeds:[bot.embeds.commands.removeEmbed(user,msg.author)]})
var loguser = msg.mentions.users.first() var loguser = msg.mentions.users.first()
log("command","someone used the 'remove' command",[{key:"user",value:msg.author.tag}])
log("system","user removed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"removed_user",value:loguser.tag}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketRemove(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("remove",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
})
log("command","someone used the 'remove' command",[{key:"user",value:msg.author.tag}])
log("system","user removed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"removed_user",value:loguser.tag}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketRemove(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("remove",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
}) })
if (!DISABLE.commands.slash.remove) client.on("interactionCreate",async (interaction) => { if (!DISABLE.commands.slash.remove) client.on("interactionCreate",async (interaction) => {
@@ -57,23 +53,20 @@ module.exports = () => {
await interaction.deferReply() await interaction.deferReply()
await interaction.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
interaction.channel.permissionOverwrites.delete(user.id) interaction.channel.permissionOverwrites.delete(user.id)
interaction.editReply({embeds:[bot.embeds.commands.removeEmbed(user,interaction.user)]}) interaction.editReply({embeds:[bot.embeds.commands.removeEmbed(user,interaction.user)]})
var loguser = user var loguser = user
log("command","someone used the 'remove' command",[{key:"user",value:interaction.user.tag}]) log("command","someone used the 'remove' command",[{key:"user",value:interaction.user.tag}])
log("system","user removed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"removed_user",value:loguser.tag}]) log("system","user removed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"removed_user",value:loguser.tag}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true) const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketRemove(interaction.user,loguser,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData}) APIEvents.onTicketRemove(interaction.user,loguser,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("remove",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date()) APIEvents.onCommand("remove",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
})
}) })
} }
+42 -50
View File
@@ -21,36 +21,31 @@ module.exports = () => {
return return
} }
msg.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
var newname = msg.content.split(config.prefix+"rename")[1].substring(1) var newname = msg.content.split(config.prefix+"rename")[1].substring(1)
if (!newname) return msg.channel.send({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<name>`:\n`"+config.prefix+"rename <name>`")]}) if (!newname) return msg.channel.send({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<name>`:\n`"+config.prefix+"rename <name>`")]})
var name = msg.channel.name var name = msg.channel.name
var prefix = "" var prefix = ""
const tickets = config.options const tickets = config.options
tickets.forEach((ticket) => { tickets.forEach((ticket) => {
if (name.startsWith(ticket.channelprefix)){ if (name.startsWith(ticket.channelprefix)){
prefix = ticket.channelprefix prefix = ticket.channelprefix
} }
})
if (!prefix) prefix = "noprefix-"
msg.channel.setName(prefix+newname)
msg.channel.send({embeds:[bot.embeds.commands.renameEmbed(msg.author,prefix+newname)]})
log("command","someone used the 'rename' command",[{key:"user",value:msg.author.tag}])
log("system","ticket renamed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newname",value:newname}])
APIEvents.onCommand("rename",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
}) })
if (!prefix) prefix = "noprefix-"
msg.channel.setName(prefix+newname)
msg.channel.send({embeds:[bot.embeds.commands.renameEmbed(msg.author,prefix+newname)]})
log("command","someone used the 'rename' command",[{key:"user",value:msg.author.tag}])
log("system","ticket renamed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newname",value:newname}])
APIEvents.onCommand("rename",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
}) })
if (!DISABLE.commands.slash.rename) client.on("interactionCreate",async (interaction) => { if (!DISABLE.commands.slash.rename) client.on("interactionCreate",async (interaction) => {
@@ -65,31 +60,28 @@ module.exports = () => {
await interaction.deferReply() await interaction.deferReply()
interaction.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
var newname = interaction.options.getString("name") var newname = interaction.options.getString("name")
var name = interaction.channel.name var name = interaction.channel.name
var prefix = "" var prefix = ""
const tickets = config.options const tickets = config.options
tickets.forEach((ticket) => { tickets.forEach((ticket) => {
if (name.startsWith(ticket.channelprefix)){ if (name.startsWith(ticket.channelprefix)){
prefix = ticket.channelprefix prefix = ticket.channelprefix
} }
})
if (!prefix) prefix = "noprefix-"
interaction.channel.setName(prefix+newname)
interaction.editReply({embeds:[bot.embeds.commands.renameEmbed(interaction.user,prefix+newname)]})
log("command","someone used the 'rename' command",[{key:"user",value:interaction.user.tag}])
log("system","ticket renamed",[{key:"user",value:interaction.user.tag},{key:"ticket",value:name},{key:"newname",value:newname}])
APIEvents.onCommand("rename",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
if (!prefix) prefix = "noprefix-"
interaction.channel.setName(prefix+newname)
interaction.editReply({embeds:[bot.embeds.commands.renameEmbed(interaction.user,prefix+newname)]})
log("command","someone used the 'rename' command",[{key:"user",value:interaction.user.tag}])
log("system","ticket renamed",[{key:"user",value:interaction.user.tag},{key:"ticket",value:name},{key:"newname",value:newname}])
APIEvents.onCommand("rename",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
} }
+17 -26
View File
@@ -15,22 +15,18 @@ module.exports = () => {
if (!DISABLE.commands.text.reopen) client.on("messageCreate",msg => { if (!DISABLE.commands.text.reopen) client.on("messageCreate",msg => {
if (!msg.content.startsWith(config.prefix+"reopen")) return if (!msg.content.startsWith(config.prefix+"reopen")) return
msg.channel.messages.fetchPinned().then(msglist => { const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
if (hiddendata.data.find(h => h.key == "pendingdelete")) return msg.channel.send({embeds:[bot.errorLog.warning("Warning!","You can't re-open a ticket while it's being deleted!")]}) if (hiddendata.find(h => h.key == "pendingdelete")) return msg.channel.send({embeds:[bot.errorLog.warning("Warning!","You can't re-open a ticket while it's being deleted!")]})
msg.channel.send({embeds:[bot.embeds.commands.reopenEmbed(msg.author)],components:[bot.buttons.close.openRowNormal]}) msg.channel.send({embeds:[bot.embeds.commands.reopenEmbed(msg.author)],components:[bot.buttons.close.openRowNormal]})
require("../core/ticketActions/ticketReopener").reopenTicket(msg.guild,msg.channel,msg.author) require("../core/ticketActions/ticketReopener").reopenTicket(msg.guild,msg.channel,msg.author)
log("command","someone used the 'reopen' command",[{key:"user",value:msg.author.tag}])
APIEvents.onCommand("reopen",true,msg.author,msg.channel,msg.guild,new Date())
})
log("command","someone used the 'reopen' command",[{key:"user",value:msg.author.tag}])
APIEvents.onCommand("reopen",true,msg.author,msg.channel,msg.guild,new Date())
}) })
if (!DISABLE.commands.slash.reopen) client.on("interactionCreate",async (interaction) => { if (!DISABLE.commands.slash.reopen) client.on("interactionCreate",async (interaction) => {
@@ -39,22 +35,17 @@ module.exports = () => {
await interaction.deferReply() await interaction.deferReply()
interaction.channel.messages.fetchPinned().then(async msglist => { const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) const ticketId = hiddendata.find(d => d.key == "type").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
if (hiddendata.data.find(h => h.key == "pendingdelete")) return interaction.editReply({embeds:[bot.errorLog.warning("Warning!","You can't re-open a ticket while it's being deleted!")]}) if (hiddendata.data.find(h => h.key == "pendingdelete")) return interaction.editReply({embeds:[bot.errorLog.warning("Warning!","You can't re-open a ticket while it's being deleted!")]})
await interaction.editReply({embeds:[bot.embeds.commands.reopenEmbed(interaction.user)],components:[bot.buttons.close.openRowNormal]}) await interaction.editReply({embeds:[bot.embeds.commands.reopenEmbed(interaction.user)],components:[bot.buttons.close.openRowNormal]})
require("../core/ticketActions/ticketReopener").reopenTicket(interaction.guild,interaction.channel,interaction.user) require("../core/ticketActions/ticketReopener").reopenTicket(interaction.guild,interaction.channel,interaction.user)
log("command","someone used the 'reopen' command",[{key:"user",value:interaction.user.tag}]) log("command","someone used the 'reopen' command",[{key:"user",value:interaction.user.tag}])
APIEvents.onCommand("reopen",true,interaction.user,interaction.channel,interaction.guild,new Date()) APIEvents.onCommand("reopen",true,interaction.user,interaction.channel,interaction.guild,new Date())
})
}) })
} }
+15 -14
View File
@@ -26,19 +26,20 @@ module.exports = () => {
const unclaimuser = storage.get("claimData",msg.channel.id) const unclaimuser = storage.get("claimData",msg.channel.id)
if (!unclaimuser || unclaimuser == "false") return msg.channel.send({embeds:[bot.errorLog.serverError("This ticket isn't claimed yet!")]}) if (!unclaimuser || unclaimuser == "false") return msg.channel.send({embeds:[bot.errorLog.serverError("This ticket isn't claimed yet!")]})
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
const ticketId = hiddendata.find(d => d.key == "type").value
hiddendata.push({key:"claimedby",value:"false"})
bot.hiddenData.writeHiddenData(msg.channel.id,hiddendata)
storage.set("claimData",msg.channel.id,"false")
msg.channel.messages.fetchPinned().then(msglist => { msg.channel.messages.fetchPinned().then(msglist => {
/**@type {discord.Message} */ /**@type {discord.Message} */
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
const hdraw = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description)
const hiddendata = hdraw.hiddenData
const ticketId = hiddendata.data.find(d => d.key == "type").value
hiddendata.data.push({key:"claimedby",value:"false"})
storage.set("claimData",msg.channel.id,"false")
const newEmbed = new embed(firstmsg.embeds[0].data) const newEmbed = new embed(firstmsg.embeds[0].data)
.setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data))
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true) const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
if (ticketData && ticketData.autoclose.enable){ if (ticketData && ticketData.autoclose.enable){
@@ -81,20 +82,20 @@ module.exports = () => {
const unclaimuser = storage.get("claimData",interaction.channel.id) const unclaimuser = storage.get("claimData",interaction.channel.id)
if (!unclaimuser || unclaimuser == "false") return interaction.editReply({embeds:[bot.errorLog.serverError("This ticket isn't claimed yet!")]}) if (!unclaimuser || unclaimuser == "false") return interaction.editReply({embeds:[bot.errorLog.serverError("This ticket isn't claimed yet!")]})
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
const ticketId = hiddendata.find(d => d.key == "type").value
hiddendata.push({key:"claimedby",value:"false"})
bot.hiddenData.writeHiddenData(interaction.channel.id,hiddendata)
storage.set("claimData",interaction.channel.id,"false")
interaction.channel.messages.fetchPinned().then(msglist => { interaction.channel.messages.fetchPinned().then(msglist => {
/**@type {discord.Message} */ /**@type {discord.Message} */
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
const hdraw = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description)
const hiddendata = hdraw.hiddenData
const ticketId = hiddendata.data.find(d => d.key == "type").value
hiddendata.data.push({key:"claimedby",value:"false"})
storage.set("claimData",interaction.channel.id,"false")
const newEmbed = new embed(firstmsg.embeds[0].data) const newEmbed = new embed(firstmsg.embeds[0].data)
.setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data))
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true) const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
if (ticketData && ticketData.autoclose.enable){ if (ticketData && ticketData.autoclose.enable){
+1 -1
View File
@@ -102,7 +102,7 @@
"dropdown":false, "dropdown":false,
"enableFooter":false, "enableFooter":false,
"footer":"Open Ticket v3.3.3 - I'm a footer!", "footer":"Open Ticket v3.4.0 - I'm a footer!",
"enableFooterImage":false, "enableFooterImage":false,
"footerImage":"https://www.example.com/catmemes/cat.png", "footerImage":"https://www.example.com/catmemes/cat.png",
@@ -7,7 +7,6 @@ const log = bot.errorLog.log
const permissionChecker = require("../../../utils/permisssionChecker") const permissionChecker = require("../../../utils/permisssionChecker")
const storage = bot.storage const storage = bot.storage
const hiddendata = bot.hiddenData
const embed = discord.EmbedBuilder const embed = discord.EmbedBuilder
const mc = config.color const mc = config.color
const permsChecker = require("../../../utils/permisssionChecker") const permsChecker = require("../../../utils/permisssionChecker")
@@ -32,20 +31,21 @@ module.exports = () => {
return return
} }
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
const ticketId = hiddendata.find(d => d.key == "type").value
hiddendata.push({key:"claimedby",value:interaction.user.id})
bot.hiddenData.writeHiddenData(interaction.channel.id,hiddendata)
storage.set("claimData",interaction.channel.id,interaction.user.id)
interaction.channel.messages.fetchPinned().then(msglist => { interaction.channel.messages.fetchPinned().then(msglist => {
/**@type {discord.Message} */ /**@type {discord.Message} */
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
const hdraw = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description)
const hiddendata = hdraw.hiddenData
const ticketId = hiddendata.data.find(d => d.key == "type").value
hiddendata.data.push({key:"claimedby",value:interaction.user.id})
storage.set("claimData",interaction.channel.id,interaction.user.id)
const newEmbed = new embed(firstmsg.embeds[0].data) const newEmbed = new embed(firstmsg.embeds[0].data)
.setFooter({text:"claimed by: "+interaction.user.tag,iconURL:interaction.user.displayAvatarURL()}) .setFooter({text:"claimed by: "+interaction.user.tag,iconURL:interaction.user.displayAvatarURL()})
.setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data))
if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]})
+39 -76
View File
@@ -73,26 +73,16 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
if (Number(storage.get("amountOfUserTickets",getuserID)) < 0) storage.set("amountOfUserTickets",getuserID,0) if (Number(storage.get("amountOfUserTickets",getuserID)) < 0) storage.set("amountOfUserTickets",getuserID,0)
//getID & send DM & send api event //getID & send DM & send api event
await channel.messages.fetchPinned().then(async msglist => {
var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value.value
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
require("../api/modules/events").onTicketDelete(user,channel,guild,new Date(),{name:channel.name,status:"deleted",ticketOptions:ticketData}) const hiddendata = bot.hiddenData.readHiddenData(channel.id)
if (hiddendata.length < 1) return channel.send({embeds:[bot.errorLog.notInATicket]})
const ticketId = hiddendata.find(d => d.key == "type").value
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
const id = hiddendata.data.find(d => d.key == "openerid").value require("../api/modules/events").onTicketDelete(user,channel,guild,new Date(),{name:channel.name,status:"deleted",ticketOptions:ticketData})
const sphd = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description) hiddendata.push({key:"pendingdelete",value:"true"})
sphd.hiddenData.data.push({key:"pendingdelete",value:"true"}) bot.hiddenData.writeHiddenData(channel.id,hiddendata)
const newEmbed = new discord.EmbedBuilder(firstmsg.embeds[0].data)
newEmbed.setDescription(sphd.description + bot.hiddenData.writeHiddenData(sphd.hiddenData.type,sphd.hiddenData.data))
await firstmsg.edit({embeds:[newEmbed]})
if (!id) return false
})
}else if (mode == "close"){ }else if (mode == "close"){
//close //close
@@ -143,54 +133,39 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
const ticketInfoError = bot.errorLog.serverError("Unable to detect ticket information.\n*(First message that this bot sends)*\n\n__**Possible reasons:**__\n- you unpinned the first message\n- the first message is deleted\n- it has been unpinned & repinned after another message has been pinned.\n\n__**Possible solutions:**__\n- unpin all messages in this channel & repin the first message that this bot sent.\nIf this doesn't work, just delete the ticket manually!") const ticketInfoError = bot.errorLog.serverError("Unable to detect ticket information.\n*(First message that this bot sends)*\n\n__**Possible reasons:**__\n- you unpinned the first message\n- the first message is deleted\n- it has been unpinned & repinned after another message has been pinned.\n\n__**Possible solutions:**__\n- unpin all messages in this channel & repin the first message that this bot sent.\nIf this doesn't work, just delete the ticket manually!")
//add ticket adminroles //add ticket adminroles
await channel.messages.fetchPinned().then(msglist => {
var firstmsg = msglist.last() const hiddendata = bot.hiddenData.readHiddenData(channel.id)
if (firstmsg == undefined || firstmsg.author.id != client.user.id){ if (hiddendata.length < 1) return channel.send({embeds:[bot.errorLog.notInATicket]})
var firstmsg = msglist.find((m => m.author.id == client.user.id)) const ticketId = hiddendata.find(d => d.key == "type").value
if (firstmsg == undefined || firstmsg.author.id != client.user.id){ const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
return channel.send({embeds:[ticketInfoError]})
} if (!ticketData) return
if (ticketData.closedCategory.enable){
/**@type {discord.CategoryChannel} */
const category = guild.channels.cache.find(c => c.id == ticketData.closedCategory.id && c.type == discord.ChannelType.GuildCategory)
try {
channel.setParent(category)
}catch{
bot.errorLog.log("system","failed to move channel to new category!")
} }
}
if (firstmsg.embeds.length < 1 || !firstmsg.embeds[0].description.includes("OTDATA")) return channel.send({embeds:[ticketInfoError]})
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description) ticketData.adminroles.forEach((role,index) => {
const ticketId = hiddendata.data.find(d => d.key == "type").value if (!config.adminRoles.includes(role)){
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
if (!ticketData) return
if (ticketData.closedCategory.enable){
/**@type {discord.CategoryChannel} */
const category = guild.channels.cache.find(c => c.id == ticketData.closedCategory.id && c.type == discord.ChannelType.GuildCategory)
try { try {
channel.setParent(category) const adminrole = guild.roles.cache.find(r => r.id == role)
if (!adminrole) return
permissionArray.push({
id:adminrole,
type:"role",
allow:[pfb.AddReactions,pfb.ViewChannel,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages],
deny:[]
})
}catch{ }catch{
bot.errorLog.log("system","failed to move channel to new category!") log("system","invalid role! At 'config.json => options/ticket/...:"+index)
} }
} }
/**
* @type {String[]}
*/
const ticketadmin = ticketData.adminroles
ticketadmin.forEach((role,index) => {
if (!config.adminRoles.includes(role)){
try {
const adminrole = guild.roles.cache.find(r => r.id == role)
if (!adminrole) return
permissionArray.push({
id:adminrole,
type:"role",
allow:[pfb.AddReactions,pfb.ViewChannel,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages],
deny:[]
})
}catch{
log("system","invalid role! At 'config.json => options/ticket/...:"+index)
}
}
})
}) })
channel.permissionOverwrites.set(permissionArray) channel.permissionOverwrites.set(permissionArray)
@@ -207,23 +182,8 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
log("system","closed a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}]) log("system","closed a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}])
//getID & send DM & send api event //send api event
await channel.messages.fetchPinned().then(msglist => { require("../api/modules/events").onTicketClose(user,channel,guild,new Date(),{name:channel.name,status:"closed",ticketOptions:ticketData},newReason)
var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
require("../api/modules/events").onTicketClose(user,channel,guild,new Date(),{name:channel.name,status:"closed",ticketOptions:ticketData},newReason)
const id = hiddendata.data.find(d => d.key == "openerid").value
if (!id) return false
})
} }
/** /**
@@ -263,6 +223,9 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
const deleteHandler = async () => { const deleteHandler = async () => {
if (deleteRequired){ if (deleteRequired){
pendingDelete.shift() pendingDelete.shift()
//delete HIDDENDATA
storage.delete("HIDDENDATA",channel.id)
await channel.delete() await channel.delete()
} }
} }
+19 -23
View File
@@ -132,25 +132,23 @@ module.exports = () => {
}) })
//add ticket adminroles //add ticket adminroles
/** if (currentTicketOptions.readonlyAdminroles){
* @type {String[]} currentTicketOptions.readonlyAdminroles.forEach((role,index) => {
*/ if (!config.adminRoles.includes(role) && !currentTicketOptions.adminroles.includes(role)){
const readonlyTicketadmin = currentTicketOptions.readonlyAdminroles try {
readonlyTicketadmin.forEach((role,index) => { const adminrole = guild.roles.cache.find(r => r.id == role)
if (!config.adminRoles.includes(role) && !currentTicketOptions.adminroles.includes(role)){ if (!adminrole) return
try {
const adminrole = guild.roles.cache.find(r => r.id == role) permissionsArray.push({
if (!adminrole) return id:adminrole,
type:"role",
permissionsArray.push({ allow:[pfb.AddReactions,pfb.ViewChannel],
id:adminrole, deny:[pfb.SendMessages,pfb.AttachFiles,pfb.EmbedLinks]
type:"role", })
allow:[pfb.AddReactions,pfb.ViewChannel], }catch{}
deny:[pfb.SendMessages,pfb.AttachFiles,pfb.EmbedLinks] }
}) })
}catch{} }
}
})
//add member role //add member role
if (config.system.memberRole && ![" ","0","false","null","undefined"].includes(config.system.memberRole)){ if (config.system.memberRole && ![" ","0","false","null","undefined"].includes(config.system.memberRole)){
@@ -178,7 +176,7 @@ module.exports = () => {
storage.set("userFromChannel",ticketChannel.id,interaction.member.id) storage.set("userFromChannel",ticketChannel.id,interaction.member.id)
if (currentTicketOptions.autoclose.enable) storage.set("autocloseTickets",ticketChannel.id,currentTicketOptions.autoclose.inactiveHours) if (currentTicketOptions.autoclose.enable) storage.set("autocloseTickets",ticketChannel.id,currentTicketOptions.autoclose.inactiveHours)
const hiddendata = bot.hiddenData.writeHiddenData("ticketdata",[{key:"type",value:currentTicketOptions.id},{key:"openerid",value:interaction.user.id},{key:"createdms",value:new Date().getTime()}]) bot.hiddenData.writeHiddenData(ticketChannel.id,[{key:"type",value:currentTicketOptions.id},{key:"openerid",value:interaction.user.id},{key:"createdms",value:new Date().getTime()}])
var ticketEmbed = new discord.EmbedBuilder() var ticketEmbed = new discord.EmbedBuilder()
//.setAuthor({name:interaction.user.id}) //.setAuthor({name:interaction.user.id})
@@ -191,9 +189,7 @@ module.exports = () => {
} }
if (currentTicketOptions.ticketmessage.length > 0){ if (currentTicketOptions.ticketmessage.length > 0){
ticketEmbed.setDescription(currentTicketOptions.ticketmessage+hiddendata) ticketEmbed.setDescription(currentTicketOptions.ticketmessage)
}else{
ticketEmbed.setDescription(hiddendata)
} }
if (currentTicketOptions.thumbnail.enable) ticketEmbed.setThumbnail(currentTicketOptions.thumbnail.url) if (currentTicketOptions.thumbnail.enable) ticketEmbed.setThumbnail(currentTicketOptions.thumbnail.url)
@@ -46,13 +46,9 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
}) })
msg.embeds.forEach((embed) => { msg.embeds.forEach((embed) => {
if (embed.description){
var desc = bot.hiddenData.removeHiddenData(embed.description).description
}else{var desc = false}
embedArray.push({ embedArray.push({
title:embed.title || false, title:embed.title || false,
description:desc, description:embed.description ? embed.description : false,
authorimg:((embed.author && embed.author.iconURL) ? embed.author.iconURL : false), authorimg:((embed.author && embed.author.iconURL) ? embed.author.iconURL : false),
authortext:(embed.author ? embed.author.name : false), authortext:(embed.author ? embed.author.name : false),
footerimg:((embed.footer && embed.footer.iconURL) ? embed.footer.iconURL : false), footerimg:((embed.footer && embed.footer.iconURL) ? embed.footer.iconURL : false),
@@ -1,6 +1,6 @@
{ {
"version":"1.0.0", "version":"1.0.0",
"otversion":"3.3.3", "otversion":"3.4.0",
"style":{ "style":{
"enableCustomBackground":false, "enableCustomBackground":false,
"backgroundModus":"color OR image", "backgroundModus":"color OR image",
+8 -10
View File
@@ -36,16 +36,14 @@ module.exports = async (messages,guild,channel,user,reason) => {
const chName = channel.name const chName = channel.name
const chId = channel.id const chId = channel.id
/**@param {discord.Collection<string, discord.Message<true>>} msglist*/ const asyncmanager = async () => {
const asyncmanager = async (msglist) => { const hiddendata = bot.hiddenData.readHiddenData(channel.id)
var firstmsg = msglist.last() if (hiddendata.length < 1) return
const ticketId = hiddendata.find(d => d.key == "type").value
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false const id = hiddendata.find(d => d.key == "openerid").value
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description) const opentime = new Date(Number(hiddendata.find(d => d.key == "createdms").value))
const ticketId = hiddendata.data.find(d => d.key == "type")
const id = hiddendata.data.find(d => d.key == "openerid").value
const opentime = new Date(Number(hiddendata.data.find(d => d.key == "createdms").value))
const ticketopener = client.users.cache.find(u => u.id == id) const ticketopener = client.users.cache.find(u => u.id == id)
@@ -148,5 +146,5 @@ module.exports = async (messages,guild,channel,user,reason) => {
} }
} }
} }
asyncmanager(msglist) asyncmanager()
} }
+29 -48
View File
@@ -1,68 +1,49 @@
const storage = require("../../index").storage
/**@typedef {{type:String,data:[{key:String,value:String}],status:Boolean}} hiddenData */ /**@typedef {[{key:String,value:String}]} hiddenData */
/** /**
* *
* @param {String} messageContent * @param {String} channelid
* @returns {hiddenData} * @returns {hiddenData}
*/ */
exports.readHiddenData = (messageContent) => { exports.readHiddenData = (channelid) => {
//ticketdata//type:123|userid:456) const content = storage.get("HIDDENDATA",channelid)
if (!messageContent.includes("[ ](https://OTDATA|")) return {type:"",data:[],status:false} if (!content) return {type:"",data:[],status:false}
const rawhidden = messageContent.split("[ ](https://OTDATA|")[1]
const rawhidden2 = rawhidden.split("//")
const datatype = rawhidden2[0] try {
var rawhiddendata = rawhidden2[1] return JSON.parse(content)
var rawhiddendataArray = rawhiddendata.split("") } catch {
rawhiddendataArray.pop() return []
}
rawhiddendata = rawhiddendataArray.join("")
const splittedData = rawhiddendata.split("|")
const resultData = []
splittedData.forEach((data) => {
// type:123
const dataresult = data.split(":")
resultData.push({key:dataresult[0],value:dataresult[1]})
})
return {type:datatype,data:resultData,status:true}
} }
/** /**
* *
* @param {String} type * @param {String} channelid
* @param {[{key:String,value:String}]} data * @param {[{key:String,value:String}]} data
* @returns {String} * @returns {Boolean}
*/ */
exports.writeHiddenData = (type,data) => { exports.writeHiddenData = (channelid,data) => {
const dataValues = [] try {
data.forEach((d) => { storage.set("HIDDENDATA",channelid,JSON.stringify(data))
dataValues.push(d.key+":"+d.value) return true
}) } catch {
return false
const datastring = dataValues.join("|") }
const result = "[ ](https://OTDATA|"+type+"//"+datastring+")"
return result
} }
/** /**
* *
* @param {String} description * @param {String} channelid
* @returns {{description:String,hiddenData:hiddenData}} * @returns {Boolean}
*/ */
exports.removeHiddenData = (description) => { exports.deleteHiddenData = (channelid) => {
if (!description.includes("[ ](https://OTDATA|")) return {description:description,hiddenData:[]} try {
storage.delete("HIDDENDATA",channelid)
const hiddenData = this.readHiddenData(description) return true
const splitted = description.split("[ ](https://OTDATA") } catch {
const original = splitted[0] return false
}
return {description:original,hiddenData:hiddenData}
} }
+1 -1
View File
@@ -28,7 +28,7 @@
INFORMATION: INFORMATION:
============ ============
Open Ticket v3.3.3 - © DJdj Development Open Ticket v3.4.0 - © DJdj Development
discord: https://discord.dj-dj.be discord: https://discord.dj-dj.be
website: https://www.dj-dj.be website: https://www.dj-dj.be
+1 -1
View File
@@ -36,7 +36,7 @@
"goToTicket":"Geh zu deinem Ticket", "goToTicket":"Geh zu deinem Ticket",
"ticketWarning":"Die Einbettung befindet sich in der Nachricht unten!", "ticketWarning":"Die Einbettung befindet sich in der Nachricht unten!",
"maxTicketWarning":"**Warnung:** _Sie können nur {0} ticket(s) erstellen zu einer Zeit!_" "maxTicketWarning":"**Warnung:** _Es können maximal {0} Tickets zur gleichen Zeit geöffnet sein!_"
}, },
"helpMenu":{ "helpMenu":{
"title":"Hilfe Menu:", "title":"Hilfe Menu:",
+2 -3
View File
@@ -1,6 +1,6 @@
{ {
"name": "open-ticket", "name": "open-ticket",
"version": "3.3.3", "version": "3.4.0",
"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": {
@@ -15,8 +15,7 @@
"dependencies": { "dependencies": {
"axios": "^0.27.2", "axios": "^0.27.2",
"chalk": "^5.0.1", "chalk": "^5.0.1",
"discord.js": "^14.8.0", "discord.js": "^14.9.0"
"node": "^16.10.0"
}, },
"repository": { "repository": {
"type": "git", "type": "git",