v3.4.0 push 1: fixed all currently known bugs
This commit is contained in:
+1
-1
@@ -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: |
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|
||||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v3.3.3) []() [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [](https://docs.openticket.dj-dj.be)
|
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v3.4.0) []() [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [](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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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]})
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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
@@ -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}
|
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user