diff --git a/commands/claim.js b/commands/claim.js index 408de47..a608d39 100644 --- a/commands/claim.js +++ b/commands/claim.js @@ -5,6 +5,8 @@ const config = bot.config const log = bot.errorLog.log const l = bot.language const permsChecker = require("../core/utils/permisssionChecker") +const embed = discord.EmbedBuilder +const storage = bot.storage const APIEvents = require("../core/api/modules/events") const DISABLE = require("../core/api/api.json").disable @@ -25,24 +27,36 @@ module.exports = () => { } msg.channel.messages.fetchPinned().then(msglist => { + /**@type {discord.Message} */ var firstmsg = msglist.last() if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) - const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description) + 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) - //msg.channel.send({embeds:[bot.embeds.commands.claimEmbed(claimingUser,msg.author)]}) - msg.channel.send({embeds:[bot.errorLog.warning("Coming soon!","This feature isn't ready yet!\nIt will become active in the next update!")]}) + const newEmbed = new embed(firstmsg.embeds[0].data) + .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].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]}) + + }else if (firstmsg.components[0].components[1].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) + } + + msg.channel.send({embeds:[bot.embeds.commands.claimEmbed(claimingUser,msg.author)]}) - var loguser = claimingUser 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}]) 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.onCommand("add",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) - }) - + 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()) + }) }) if (!DISABLE.commands.slash.claim) client.on("interactionCreate",async (interaction) => { @@ -59,24 +73,35 @@ module.exports = () => { await interaction.deferReply() interaction.channel.messages.fetchPinned().then(msglist => { + /**@type {discord.Message} */ var firstmsg = msglist.last() 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 hdraw = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description) + const hiddendata = hdraw.hiddenData const ticketId = hiddendata.data.find(d => d.key == "type").value - //interaction.editReply({embeds:[bot.embeds.commands.claimEmbed(user,interaction.user)]}) - interaction.editReply({embeds:[bot.errorLog.warning("Coming soon!","This feature isn't ready yet!\nIt will become active in the next update!")]}) + 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) + .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].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]}) + + }else if (firstmsg.components[0].components[1].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) + } + + interaction.editReply({embeds:[bot.embeds.commands.claimEmbed(user,interaction.user)]}) - var loguser = 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:loguser.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.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()) - + 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()) }) - - }) } \ No newline at end of file diff --git a/commands/help.js b/commands/help.js index 98ba63b..cf31a32 100644 --- a/commands/help.js +++ b/commands/help.js @@ -19,7 +19,10 @@ module.exports = () => { .setTitle("❔ "+l.helpMenu.title) const header = l.helpMenu.header2 - helpEmbed.setDescription(header+"`"+prefix+msgName+" ` ➜ _"+l.helpMenu.msgCmd+"_\n\n`"+prefix+"rename ` ➜ _"+l.helpMenu.renameCmd+"_\n`"+prefix+"close` ➜ _"+l.helpMenu.closeCmd+"_\n`"+prefix+"delete` ➜ _"+l.helpMenu.deleteCmd+"_\n`"+prefix+"reopen` ➜ _"+l.helpMenu.reopenCmd+"_\n\n`"+prefix+"add ` ➜ _"+l.helpMenu.addCmd+"_\n`"+prefix+"remove ` ➜ _"+l.helpMenu.removeCmd+"_\n\n`"+prefix+"change ` ➜ _Change ticket type._") + helpEmbed.setDescription(header+"`"+prefix+msgName+" ` ➜ _"+l.helpMenu.msgCmd+"_\n\n`"+prefix+"rename ` ➜ _"+l.helpMenu.renameCmd+"_\n`"+prefix+"close [reason]` ➜ _"+l.helpMenu.closeCmd+"_\n`"+prefix+"delete` ➜ _"+l.helpMenu.deleteCmd+"_\n`"+prefix+"reopen` ➜ _"+l.helpMenu.reopenCmd+"_\n\n`"+prefix+"add ` ➜ _"+l.helpMenu.addCmd+"_\n`"+prefix+"remove ` ➜ _"+l.helpMenu.removeCmd+"_\n\n`"+prefix+"change ` ➜ _"+l.helpMenu.changeCmd+"_\n`"+prefix+"claim [user]` ➜ _"+l.helpMenu.claimCmd+"_\n`"+prefix+"unclaim` ➜ _"+l.helpMenu.unclaimCmd+"_") + helpEmbed.addFields([ + {name:"Autoclose",value:l.helpMenu.autocloseCmd+"\n`"+prefix+"autoclose enable `\n`"+prefix+"autoclose disable`"} + ]) var otherprefix = prefix.endsWith(" ") ? prefix.substring(0,prefix.length-1) : prefix diff --git a/commands/unclaim.js b/commands/unclaim.js index 61ac194..f031916 100644 --- a/commands/unclaim.js +++ b/commands/unclaim.js @@ -5,6 +5,8 @@ const config = bot.config const log = bot.errorLog.log const l = bot.language const permsChecker = require("../core/utils/permisssionChecker") +const embed = discord.EmbedBuilder +const storage = bot.storage const APIEvents = require("../core/api/modules/events") const DISABLE = require("../core/api/api.json").disable @@ -21,31 +23,45 @@ module.exports = () => { return } + 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!")]}) + msg.channel.messages.fetchPinned().then(msglist => { + /**@type {discord.Message} */ var firstmsg = msglist.last() if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) - const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description) + 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") - //msg.channel.send({embeds:[bot.embeds.commands.unclaimEmbed(msg.author)]}) - msg.channel.send({embeds:[bot.errorLog.warning("Coming soon!","This feature isn't ready yet!\nIt will become active in the next update!")]}) + const newEmbed = new embed(firstmsg.embeds[0].data) + .setFooter(null) + .setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data)) + + if (!firstmsg.components[0].components[1].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]}) + + }else if (firstmsg.components[0].components[1].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabled],embeds:[newEmbed]}) + } + + msg.channel.send({embeds:[bot.embeds.commands.unclaimEmbed(msg.author)]}) - var loguser = msg.author log("command","someone used the 'unclaim' command",[{key:"user",value:msg.author.tag}]) - log("system","user unclaimed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"unclaimed_user",value:msg.author.tag}]) + log("system","user unclaimed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"unclaimed_user",value:unclaimuser}]) 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.onCommand("add",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) - }) - + APIEvents.onTicketUnclaim(msg.author,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData}) + APIEvents.onCommand("unclaim",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) + }) }) if (!DISABLE.commands.slash.unclaim) client.on("interactionCreate",async (interaction) => { if (!interaction.isChatInputCommand()) return if (interaction.commandName != "unclaim") return - const user = interaction.user if (!interaction.guild) return if (!permsChecker.command(interaction.user.id,interaction.guild.id)){ @@ -55,25 +71,40 @@ module.exports = () => { await interaction.deferReply() + 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!")]}) + + interaction.channel.messages.fetchPinned().then(msglist => { + /**@type {discord.Message} */ var firstmsg = msglist.last() 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 hdraw = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description) + const hiddendata = hdraw.hiddenData const ticketId = hiddendata.data.find(d => d.key == "type").value - //interaction.editReply({embeds:[bot.embeds.commands.unclaimEmbed(interaction.user)]}) - interaction.editReply({embeds:[bot.errorLog.warning("Coming soon!","This feature isn't ready yet!\nIt will become active in the next update!")]}) + hiddendata.data.push({key:"claimedby",value:"false"}) + storage.set("claimData",interaction.channel.id,"false") + + const newEmbed = new embed(firstmsg.embeds[0].data) + .setFooter(null) + .setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data)) + + if (!firstmsg.components[0].components[1].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]}) + + }else if (firstmsg.components[0].components[1].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabled],embeds:[newEmbed]}) + } + + interaction.editReply({embeds:[bot.embeds.commands.unclaimEmbed(interaction.user)]}) - var loguser = user log("command","someone used the 'unclaim' command",[{key:"user",value:interaction.user.tag}]) - log("system","user unclaimed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"unclaimed_user",value:loguser.tag}]) + log("system","user unclaimed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"unclaimed_user",value:unclaimuser}]) 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()) - + APIEvents.onTicketUnclaim(interaction.user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData}) + APIEvents.onCommand("unclaim",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date()) }) - - }) } \ No newline at end of file diff --git a/core/interactionHandlers/buttons/firstmsg.js b/core/interactionHandlers/buttons/firstmsg.js index c5c979d..37200e8 100644 --- a/core/interactionHandlers/buttons/firstmsg.js +++ b/core/interactionHandlers/buttons/firstmsg.js @@ -15,6 +15,13 @@ const bs = discord.ButtonStyle exports.firstmsgRowNormal = new arb() + .addComponents( + new button() + .setCustomId("OTclaimTicket") + .setDisabled(false) + .setStyle(bs.Success) + .setLabel("Claim Ticket") + ) .addComponents( new button() .setCustomId("OTcloseTicket") @@ -33,6 +40,63 @@ exports.firstmsgRowNormal = new arb() ) exports.firstmsgRowDisabled = new arb() + .addComponents( + new button() + .setCustomId("OTclaimTicket") + .setDisabled(false) + .setStyle(bs.Success) + .setLabel("Claim Ticket") + ) + .addComponents( + new button() + .setCustomId("OTcloseTicket") + .setDisabled(true) + .setStyle(bs.Secondary) + .setLabel(l.buttons.close) + .setEmoji("🔒") + ) + .addComponents( + new button() + .setCustomId("OTdeleteTicket") + .setDisabled(true) + .setStyle(bs.Danger) + .setLabel(l.buttons.delete) + .setEmoji("✖️") + ) + +exports.firstmsgRowNormalNoClaim = new arb() + .addComponents( + new button() + .setCustomId("OTclaimTicket") + .setDisabled(true) + .setStyle(bs.Secondary) + .setLabel("Claim Ticket") + ) + .addComponents( + new button() + .setCustomId("OTcloseTicket") + .setDisabled(false) + .setStyle(bs.Secondary) + .setLabel(l.buttons.close) + .setEmoji("🔒") + ) + .addComponents( + new button() + .setCustomId("OTdeleteTicket") + .setDisabled(false) + .setStyle(bs.Danger) + .setLabel(l.buttons.delete) + .setEmoji("✖️") + ) + +exports.firstmsgRowDisabledNoClaim = new arb() + .addComponents( + new button() + .setCustomId("OTclaimTicket") + .setDisabled(true) + .setStyle(bs.Secondary) + .setLabel("Claim Ticket") + ) .addComponents( new button() .setCustomId("OTcloseTicket") diff --git a/core/interactionHandlers/handlers/accepted/claiming.js b/core/interactionHandlers/handlers/accepted/claiming.js new file mode 100644 index 0000000..6f7f1cb --- /dev/null +++ b/core/interactionHandlers/handlers/accepted/claiming.js @@ -0,0 +1,51 @@ +const discord = require('discord.js') +const bot = require('../../../../index') +const client = bot.client +const config = bot.config +const l = bot.language +const log = bot.errorLog.log + +const permissionChecker = require("../../../utils/permisssionChecker") +const storage = bot.storage +const hiddendata = bot.hiddenData +const embed = discord.EmbedBuilder +const mc = config.color + +const button = discord.ButtonBuilder +const arb = discord.ActionRowBuilder +const bs = discord.ButtonStyle + +module.exports = () => { + //CLAIM + client.on("interactionCreate",async interaction => { + if (!interaction.isButton()) return + if (interaction.customId != "OTclaimTicket") return + + try { + interaction.deferUpdate() + }catch{} + + interaction.channel.messages.fetchPinned().then(msglist => { + /**@type {discord.Message} */ + var firstmsg = msglist.last() + 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) + .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].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]}) + + }else if (firstmsg.components[0].components[1].disabled){ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) + } + }) + }) +} \ No newline at end of file diff --git a/core/interactionHandlers/handlers/accepted/closing.js b/core/interactionHandlers/handlers/accepted/closing.js index 87bce25..38517d1 100644 --- a/core/interactionHandlers/handlers/accepted/closing.js +++ b/core/interactionHandlers/handlers/accepted/closing.js @@ -41,8 +41,18 @@ module.exports = () => { return } } + if (interaction.message.pinned && interaction.message.author.id == client.user.id){ + const claimdata = storage.get("claimData",interaction.channel.id) + console.log(claimdata) + if (claimdata && claimdata != "false"){ + interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim]}) + }else{ + interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabled]}) + } + }else{ + interaction.message.edit({components:[bot.buttons.close.openRowDisabled]}) + } - interaction.message.edit({components:[bot.buttons.close.openRowDisabled]}) /** * @type {String} diff --git a/core/interactionHandlers/handlers/handlers.js b/core/interactionHandlers/handlers/handlers.js index c2c015b..da7dc3c 100644 --- a/core/interactionHandlers/handlers/handlers.js +++ b/core/interactionHandlers/handlers/handlers.js @@ -7,4 +7,5 @@ module.exports = () => { require("./accepted/reopening")() require("./accepted/deleting")() require("./accepted/closingReason")() + require("./accepted/claiming")() } \ No newline at end of file diff --git a/core/startscreen.js b/core/startscreen.js index 9a86f0d..710aac9 100644 --- a/core/startscreen.js +++ b/core/startscreen.js @@ -16,6 +16,7 @@ const showFlags = async (chalk) => { if (process.argv.some((v) => v == "--debug")) console.log(chalk.blue("[FLAGS] => enabled DEBUG mode")); isFlag = true if (process.argv.some((v) => v == "--noslash")) console.log(chalk.blue("[FLAGS] => slash commands disabled")); isFlag = true if (process.argv.some((v) => v == "--localstatus")) console.log(chalk.blue("[FLAGS] => using local livestatus.json")); isFlag = true + if (process.argv.some((v) => v == "--noerrorupload")) console.log(chalk.blue("[FLAGS] => not uploading errors to liveStatus")); isFlag = true if (!isFlag) console.log(chalk.blue("no flags!")) } diff --git a/core/ticketActions/ticketCloser.js b/core/ticketActions/ticketCloser.js index 09a7615..a5241ae 100755 --- a/core/ticketActions/ticketCloser.js +++ b/core/ticketActions/ticketCloser.js @@ -35,7 +35,7 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) => const ticketOpenerChannelName = channelname.split(prefix)[1] //get user that opened the ticket - var getuserID = storage.get("userTicketStorage",channel.id) + var getuserID = storage.get("userFromChannel",channel.id) try { var ticketOpener = client.users.cache.find(u => u.id === getuserID) var isDatabaseError = false @@ -66,7 +66,9 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) => log("system","deleted a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}]) pendingDelete.push(channel.id) - if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1) + if (!isDatabaseError) storage.set("amountOfUserTickets",getuserID,Number(storage.get("amountOfUserTickets",getuserID)) - 1) + storage.delete("userFromChannel",channel.id) + storage.delete("claimData",channel.id) //getID & send DM & send api event await channel.messages.fetchPinned().then(async msglist => { @@ -191,30 +193,12 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) => channel.permissionOverwrites.set(permissionArray) if (!nomessage){ - //message - var closeButtonRow = new discord.ActionRowBuilder() - .addComponents( - new discord.ButtonBuilder() - .setCustomId("OTdeleteTicket1") - .setDisabled(false) - .setStyle(discord.ButtonStyle.Danger) - .setLabel(l.buttons.delete) - .setEmoji("✖️") - ) - .addComponents( - new discord.ButtonBuilder() - .setCustomId("OTreopenTicket") - .setDisabled(false) - .setStyle(discord.ButtonStyle.Success) - .setLabel(l.buttons.reopen) - .setEmoji("✔") - ) - + //message const embed = new discord.EmbedBuilder() .setColor(config.color) .setTitle(":lock: "+l.commands.closeTitle+" :lock:") .setDescription(l.messages.closedDescription) - channel.send({embeds:[embed],components:[closeButtonRow]}) + channel.send({embeds:[embed],components:[bot.buttons.close.closeCommandRow]}) } log("system","closed a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}]) diff --git a/core/ticketActions/ticketOpener.js b/core/ticketActions/ticketOpener.js index 683b3fb..9799f2d 100755 --- a/core/ticketActions/ticketOpener.js +++ b/core/ticketActions/ticketOpener.js @@ -63,10 +63,10 @@ module.exports = () => { } catch{} } - if (storage.get("ticketStorage",interaction.member.id) == null || storage.get("ticketStorage",interaction.member.id) == "false"|| Number(storage.get("ticketStorage",interaction.member.id)) < config.system.maxAmountOfTickets){ + if (storage.get("amountOfUserTickets",interaction.member.id) == null || storage.get("amountOfUserTickets",interaction.member.id) == "false"|| Number(storage.get("amountOfUserTickets",interaction.member.id)) < config.system.maxAmountOfTickets){ //update storage - storage.set("ticketStorage",interaction.member.id,Number(storage.get("ticketStorage",interaction.member.id))+1) + storage.set("amountOfUserTickets",interaction.member.id,Number(storage.get("amountOfUserTickets",interaction.member.id))+1) var ticketNumber = interaction.member.user.username //set ticketName @@ -162,7 +162,7 @@ module.exports = () => { permissionOverwrites:permissionsArray }).then((ticketChannel) => { - storage.set("userTicketStorage",ticketChannel.id,interaction.member.id) + storage.set("userFromChannel",ticketChannel.id,interaction.member.id) const hiddendata = bot.hiddenData.writeHiddenData("ticketdata",[{key:"type",value:currentTicketOptions.id},{key:"openerid",value:interaction.user.id},{key:"createdms",value:new Date().getTime()}]) @@ -198,7 +198,7 @@ module.exports = () => { .setStyle(discord.ButtonStyle.Link) .setDisabled(false) .setEmoji("🎫") - .setLabel("go to ticket") + .setLabel(l.commands.goToTicket) .setURL(ticketChannel.url) ]) diff --git a/core/utils/liveStatus.js b/core/utils/liveStatus.js index 4aa92ab..711a2e7 100644 --- a/core/utils/liveStatus.js +++ b/core/utils/liveStatus.js @@ -139,6 +139,7 @@ exports.run = async (pluginData) => { /**@param {OTLiveStatusError} options @returns {Promise} */ const uploadLiveStatus = (options) => { return new Promise((resolve,reject) => { + if (process.argv.some((v) => v == "--noerrorupload")) return resolve(true) try { var data = encodeURIComponent(JSON.stringify(options)) axios.get("https://livestatus.dj-dj.be/openticket?auth=openticketLIVESTATUS1234&data="+data).then((res) => { @@ -154,40 +155,42 @@ const uploadLiveStatus = (options) => { /**@param {String} err @returns {Promise}*/ exports.liveStatusUploadManager = async (err) => { return new Promise(async (resolve) => { - //use globalPluginData for (some) plugin details + + if (process.argv.some((v) => v == "--noerrorupload")) return resolve(true) + else{ + var tsenabled = (bot.tsconfig.sendTranscripts.enableChannel || bot.tsconfig.sendTranscripts.enableDM) + var tsmode = bot.tsconfig.sendTranscripts.useHTMLtranscripts ? "html" : "text" + const transcriptMode = tsenabled ? tsmode : false + const slashMode = getSlashEnabled() - var tsenabled = (bot.tsconfig.sendTranscripts.enableChannel || bot.tsconfig.sendTranscripts.enableDM) - var tsmode = bot.tsconfig.sendTranscripts.useHTMLtranscripts ? "html" : "text" - const transcriptMode = tsenabled ? tsmode : false - const slashMode = getSlashEnabled() - - try { - resolve(await uploadLiveStatus({ - bot:{ - id:client.user.id, - name:client.user.tag, - pfp:client.user.displayAvatarURL() - }, - error:err, - openticket:{ - config:{ - messages:config.messages, - options:config.options, - transcripts:bot.tsconfig, - system:config.system + try { + resolve(await uploadLiveStatus({ + bot:{ + id:client.user.id, + name:client.user.tag, + pfp:client.user.displayAvatarURL() }, - language:config.languageFile, - version:require("../../package.json").version, - slashcmds:slashMode, - transcripts:transcriptMode, - plugins:fs.readdirSync("./plugins"), - pluginload:globalPluginData - }, - details:{ - errortime:new Date().getTime(), - actions:this.actionRecorder - } - })) - }catch{resolve(false)} + error:err, + openticket:{ + config:{ + messages:config.messages, + options:config.options, + transcripts:bot.tsconfig, + system:config.system + }, + language:config.languageFile, + version:require("../../package.json").version, + slashcmds:slashMode, + transcripts:transcriptMode, + plugins:fs.readdirSync("./plugins"), + pluginload:globalPluginData + }, + details:{ + errortime:new Date().getTime(), + actions:this.actionRecorder + } + })) + }catch{resolve(false)} + } }) } \ No newline at end of file diff --git a/language/arabic.json b/language/arabic.json index cf269e9..57f9b40 100644 --- a/language/arabic.json +++ b/language/arabic.json @@ -1,76 +1,90 @@ { - "errors": { - "missingArgsTitle": "قيمة غير صالحة!", - "missingArgsDescription": "قيمة مفقودة", - "noPermsTitle": "ليس لديك برمشنات !", - "noPermsDescription": "أنت بحاجة الى برمشن `ADMINISTRATOR` او أن تكون في قائمة المسموح بهم!", - "noPermsDelete": "فقط الإداريين يمكنهم حذف التكت!", - "chooseFromListTitle": "Invalid ID", - "chooseFromListDescription": "قم بأختيار أحد من الأيديات من الأسفل:", - "boterror": "خلل في البوت !", - "notInTicketTitle": "انت لست في تكت!", - "notInTicketDescription": "هذا الأمر لا يعمل خارج التكت!", - "ticketDoesntExist": "هذا التكت لم يعد فعال!", - "roleDoesntExist": "خطاً ,لم تعد الرتبة موجوده!", - "anotherOption": "هذا الخيار ليس التكت و لكنه شيء أخر!", - "maxAmountTitle": "خطأ , تم الوصول الى الحد الأقصى!", - "maxAmountDescription": "لقد وصلت الى الحد الأقصى لعدد التكتات المسموحة بها!\nSo لا يمكنك فتح واحدة أخرى!", - "somethingWentWrong": "**هناك خطاً!**\nأعد المحاولة لاحقاً!" - }, - "commands": { - "userAddedTitle": "تم أضافة {0} من المستخدمين في التكت!", - "userRemovedTitle": "تم أزالة {0} من المستخدمين من التكت!", - "renameTitle": "تم تغيير أسم التكت الى {0}!", - "closeTitle": "تم أغلاق التكت!", - "deleteTitle": " جاري حذف التكت...", - - "claimTitle":"This ticket is now claimed to {0}", - "unclaimTitle":"This ticket isn't claimed anymore!", - "changeTitle":"Changed ticket type to {0}!", + "errors": { + "missingArgsTitle": "قيمة غير صالحة!", + "missingArgsDescription": "قيمة مفقودة", + "noPermsTitle": "ليس لديك برمشنات !", + "noPermsDescription": "أنت بحاجة الى برمشن `ADMINISTRATOR` او أن تكون في قائمة المسموح بهم!", + "noPermsDelete": "فقط الإداريين يمكنهم حذف التكت!", + "chooseFromListTitle": "Invalid ID", + "chooseFromListDescription": "قم بأختيار أحد من الأيديات من الأسفل:", + "boterror": "خلل في البوت !", + "notInTicketTitle": "انت لست في تكت!", + "notInTicketDescription": "هذا الأمر لا يعمل خارج التكت!", + "ticketDoesntExist": "هذا التكت لم يعد فعال!", + "roleDoesntExist": "خطاً ,لم تعد الرتبة موجوده!", + "anotherOption": "هذا الخيار ليس التكت و لكنه شيء أخر!", + "maxAmountTitle": "خطأ , تم الوصول الى الحد الأقصى!", + "maxAmountDescription": "لقد وصلت الى الحد الأقصى لعدد التكتات المسموحة بها!\nSo لا يمكنك فتح واحدة أخرى!", + "somethingWentWrong": "**هناك خطاً!**\nأعد المحاولة لاحقاً!" + }, + "commands": { + "userAddedTitle": "تم أضافة {0} من المستخدمين في التكت!", + "userRemovedTitle": "تم أزالة {0} من المستخدمين من التكت!", + "renameTitle": "تم تغيير أسم التكت الى {0}!", + "closeTitle": "تم أغلاق التكت!", + "deleteTitle": " جاري حذف التكت...", + "reopenTitle": "إعادة فتح التكت!", + + "claimTitle":"This ticket is now claimed to {0}", + "unclaimTitle":"This ticket isn't claimed anymore!", + "changeTitle":"Changed ticket type to {0}!", - "ticketWarning": "هذا الأمبد موجود بالفعل في الرسالة بالأسفل!", - "maxTicketWarning": "**تحذير:** _يمكنك فقط فتح {0} تكت في الوقت!_" - }, - "helpMenu": { - "title": "الأوامر المتاحة:", - "header1": "**أذهب الى {0} لإنشاء تذكرة!**\n\n", - "header2": "**قم بكتابة أمر `/new` او `/ticket` لفتح تكت!**\n\n", + "statsTitle":"Here are the stats for {0}!", + "autocloseTitle":"This ticket will be closed automatically after {0}!", + "autocloseRejectTitle":"This ticket will no longer be closed automatically!", + "autocloseWarn":"This only affects inactive tickets!", - "msgCmd": "أنشاء أيمبد مع الأزرار. (الأداريين فقط)", - "renameCmd": "إعادة تسمية التكت. (بدون مسافات)", - "closeCmd": "أغلاق التكت.", - "deleteCmd": "حذف التكت.", - "addCmd": "إضافة مستخدم الى التكت.", - "removeCmd": "إزالة مستخدم من التكت.", - "reopenCmd": "إعادة فتح تكت بعد إغلاقة." - }, - "buttons": { - "close": "إغلاق التكت", - "delete": "حذف التكت", - "reopen": "إعادة فتح التكت", - "closeWithReason":"close with reason" - }, - "messages": { - "closedDescription": "فقط الأداريين يمكنهم التحدث في هذا التكت الأن!\n\n*أضغط على الزر بالأسفل لحذف التكت او إعادة فتحة مجدداً!*", - "createdTitle": "تم إنشاء تكت!", - "createdDescription": "تم أنشاء تكت , قم بأنتظار الدعم في الطريق!", + "goToTicket":"go to ticket", + "ticketWarning": "هذا الأمبد موجود بالفعل في الرسالة بالأسفل!", + "maxTicketWarning": "**تحذير:** _يمكنك فقط فتح {0} تكت في الوقت!_" + }, + "helpMenu": { + "title": "الأوامر المتاحة:", + "header1": "**أذهب الى {0} لإنشاء تذكرة!**\n\n", + "header2": "**قم بكتابة أمر `/new` او `/ticket` لفتح تكت!**\n\n", - "newTicketDmTitle": "تكت جديد!", - "closedTicketDmTitle": "تم إغلاق التكت!", - "deletedTicketDmTitle": "تم حذف التكت!", - "closedTicketDmDescription": "تم أغلاق تذكرتك من قبل إداري", - "deletedTicketDmDescription": "تم حذف تذكرتك من قبل إداري!", - "reopenTicketDmTitle": "تم إعادة فتح تذكرتك!", - "reopenTicketDmDescription": "تم إعادة فتح التكت!", - - "chooseCategory": "أختر الكتقاجوري:", - "gettingdeleted": "يتم حذف التكت...", + "msgCmd": "أنشاء أيمبد مع الأزرار. (الأداريين فقط)", + "renameCmd": "إعادة تسمية التكت. (بدون مسافات)", + "closeCmd": "أغلاق التكت.", + "deleteCmd": "حذف التكت.", + "addCmd": "إضافة مستخدم الى التكت.", + "removeCmd": "إزالة مستخدم من التكت.", + "reopenCmd": "إعادة فتح تكت بعد إغلاقة.", + "changeCmd":"Change ticket type.", + "claimCmd":"Claim a ticket.", + "unclaimCmd":"Unclaim a ticket.", + "statsCmd":"View ticket stats.", + "autocloseCmd":"Set timer to automatically close ticket" + }, + "buttons": { + "close": "إغلاق التكت", + "delete": "حذف التكت", + "reopen": "إعادة فتح التكت", + "closeWithReason":"close with reason" + }, + "messages": { + "closedDescription": "فقط الأداريين يمكنهم التحدث في هذا التكت الأن!\n\n*أضغط على الزر بالأسفل لحذف التكت او إعادة فتحة مجدداً!*", + "createdTitle": "تم إنشاء تكت!", + "createdDescription": "تم أنشاء تكت , قم بأنتظار الدعم في الطريق!", - "none": "لا يوجد", - "reason": "سبب", + "newTicketDmTitle": "تكت جديد!", + "closedTicketDmTitle": "تم إغلاق التكت!", + "deletedTicketDmTitle": "تم حذف التكت!", + "closedTicketDmDescription": "تم أغلاق تذكرتك من قبل إداري", + "deletedTicketDmDescription": "تم حذف تذكرتك من قبل إداري!", + "reopenTicketDmTitle": "تم إعادة فتح تذكرتك!", + "reopenTicketDmDescription": "تم إعادة فتح التكت!", + + "chooseCategory": "أختر الكتقاجوري:", + "gettingdeleted": "يتم حذف التكت...", - "deletedby":"deleted by", + "none": "لا يوجد", + "reason": "سبب", + "createdat":"created at", + "openedby":"opened by", + "deletedby":"deleted by", "closedby":"closed by", + "modalreason":"What is the reason for closing this ticket?", "chooseATicket": "Choose a ticket" }, diff --git a/language/custom.json b/language/custom.json index 7bbbe9e..9282e7a 100644 --- a/language/custom.json +++ b/language/custom.json @@ -23,11 +23,18 @@ "renameTitle":"Changed the name to {0}!", "closeTitle":"Closed this ticket!", "deleteTitle":"Deleting this ticket...", + "reopenTitle":"Re-Opened this ticket!", "claimTitle":"This ticket is now claimed to {0}", "unclaimTitle":"This ticket isn't claimed anymore!", "changeTitle":"Changed ticket type to {0}!", + "statsTitle":"Here are the stats for {0}!", + "autocloseTitle":"This ticket will be closed automatically after {0}!", + "autocloseRejectTitle":"This ticket will no longer be closed automatically!", + "autocloseWarn":"This only affects inactive tickets!", + + "goToTicket":"go to ticket", "ticketWarning":"The embed is in the message below!", "maxTicketWarning":"**Warning:** _You can only create {0} ticket(s) at a time!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Delete a ticket.", "addCmd":"Add a user to the ticket.", "removeCmd":"Remove a user from the ticket.", - "reopenCmd":"Re-Open a ticket after it was closed." + "reopenCmd":"Re-Open a ticket after it was closed.", + "changeCmd":"Change ticket type.", + "claimCmd":"Claim a ticket.", + "unclaimCmd":"Unclaim a ticket.", + "statsCmd":"View ticket stats.", + "autocloseCmd":"Set timer to automatically close ticket" }, "buttons":{ "close":"Close Ticket", @@ -68,9 +80,11 @@ "none":"none", "reason":"reason", - + "createdat":"created at", + "openedby":"opened by", "deletedby":"deleted by", "closedby":"closed by", + "modalreason":"What is the reason for closing this ticket?", "chooseATicket": "Choose a ticket" }, diff --git a/language/czech.json b/language/czech.json index f8bff18..f3d23d9 100644 --- a/language/czech.json +++ b/language/czech.json @@ -23,11 +23,18 @@ "renameTitle":"Změnit jmeno na {0}!", "closeTitle":"Zavři tenhle ticket!", "deleteTitle":"Mažu ticket...", + "reopenTitle":"Znovu otevíram ticket", - "claimTitle":"Nyní jsi převzal ticket {0}", - "unclaimTitle":"Tento ticketu už je převzatý!", - "changeTitle":"Změnil jsi typ ticketu na {0}!", + "claimTitle":"Ticket nyní převzal {0}", + "unclaimTitle":"Ticket už není převzaný", + "changeTitle":"Změněn typ ticketu {0}!", + "statsTitle":"Tady je info o ticketu {0}!", + "autocloseTitle":"Tento ticketu bude automaticky uzavřen za {0}!", + "autocloseRejectTitle":"Tento ticketu už nebude automaticky uzavřen!", + "autocloseWarn":"Toto zavře pouze neaktivní tickety!", + + "goToTicket":"běž do ticketu", "ticketWarning":"The embed is in the message below!", "maxTicketWarning":"**Warning:** _Můžeš vytvořit pouze {0} v tuhle chvíli!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Odstranit ticket.", "addCmd":"Pridat uživatele do ticketu.", "removeCmd":"Odebrat uživatele z ticketu.", - "reopenCmd":"Re-Open a ticket after it was closed." + "reopenCmd":"Re-Open a ticket after it was closed.", + "changeCmd":"Změnit typ ticketu.", + "claimCmd":"Převzi ticket.", + "unclaimCmd":"Uvolnit ticket.", + "statsCmd":"Zobrazit info o ticketu.", + "autocloseCmd":"Nastavit automatické uzavření ticketu" }, "buttons":{ "close":"Zavřit ticket", @@ -68,9 +80,11 @@ "none":"žádný", "reason":"důvod", - + "createdat":"otevřeno v", + "openedby":"otevřel", "deletedby":"smazano uzivatelem", "closedby":"zavreno uzivatelem", + "modalreason":"Jakž byl důvod k zavření toho ticketu?", "chooseATicket": "Vyber ticket" }, diff --git a/language/danish.json b/language/danish.json index fd24656..4988ef8 100644 --- a/language/danish.json +++ b/language/danish.json @@ -23,11 +23,18 @@ "renameTitle": "Ændrede navnet til {0}!", "closeTitle": "Lukket denne ticket!", "deleteTitle": "Sletter denne ticket...", + "reopenTitle": "Genåbnede denne ticket!", - "claimTitle": "Denne ticket er nu krævet til {0}", - "unclaimTitle": "Der gøres ikke krav på denne ticket længere!", - "changeTitle": "Ændrede ticket type til {0}!", + "claimTitle": "Denne ticket bliver nu håndteret af {0}", + "unclaimTitle": "Denne ticket bliver ikke håndteret længere!", + "changeTitle": "Ændrede ticket-type til {0}!", + "statsTitle": "Her er statestikerne til {0}!", + "autocloseTitle": "Denne ticket lukker automatisk om {0}!", + "autocloseRejectTitle": "Denne ticket lukker ikke længere automatisk!", + "autocloseWarn": "Dette har kun effekt på inaktive tickets!", + + "goToTicket": "gå til ticket", "ticketWarning": "Embedet er i meddelelsen nedenfor!", "maxTicketWarning": "**Warning:** _Du kan kun oprette {0} ticket(s) ad gangen!_" }, @@ -42,7 +49,12 @@ "deleteCmd": "Slet en ticket.", "addCmd": "Tilføj en bruger til ticketen.", "removeCmd": "Fjern en bruger fra ticketen.", - "reopenCmd": "Genåbn en ticket, efter at den var lukket." + "reopenCmd": "Genåbn en ticket, efter at den var lukket.", + "changeCmd": "Skift ticket type.", + "claimCmd": "Håndter en ticket.", + "unclaimCmd": "Afhåndter en ticket.", + "statsCmd": "Se ticket statestiker.", + "autocloseCmd": "Angiv tiden til automatisk at lukke en ticket" }, "buttons": { "close": "Luk Ticket", @@ -68,9 +80,11 @@ "none": "intet", "reason": "grundlag", - + "createdat": "lavet af", + "openedby": "åbnet af", "deletedby": "slettet af", "closedby": "lukket af", + "modalreason": "Hvad er grunden til at lukke denne ticket?", "chooseATicket": "Vælg en ticket" }, diff --git a/language/dutch.json b/language/dutch.json index d735a5c..fb9dca4 100644 --- a/language/dutch.json +++ b/language/dutch.json @@ -23,11 +23,18 @@ "renameTitle":"De naam is veranderd naar {0}!", "closeTitle":"Ticket gesloten!", "deleteTitle":"Ticket aan het verwijderen...", + "reopenTitle":"Ticket heropend!", "claimTitle":"Dit ticket is geclaimed door {0}", "unclaimTitle":"Dit ticket is niet meer geclaimed!", "changeTitle":"Ticket type veranderd naar {0}!", + "statsTitle":"Hier zijn de stats voor {0}!", + "autocloseTitle":"Dit ticket wordt automatisch gesloten na {0}!", + "autocloseRejectTitle":"Dit ticket wordt niet langer automatisch gesloten!", + "autocloseWarn":"Dit geldt alleen voor inactieve tickets!", + + "goToTicket":"ga naar ticket", "ticketWarning":"De embed is in het bericht hier onder!", "maxTicketWarning":"**Waarschuwing:** _Je kan maar {0} ticket(s) tegelijkertijd maken!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Verijder een ticket.", "addCmd":"Voeg een user aan een ticket.", "removeCmd":"Verwijder een user van een ticket.", - "reopenCmd":"Heropen een ticket nadat het gesloten is." + "reopenCmd":"Heropen een ticket nadat het gesloten is.", + "changeCmd":"Verander ticket type.", + "claimCmd":"Claim een ticket.", + "unclaimCmd":"Unclaim een ticket.", + "statsCmd":"Bekijk ticket stats.", + "autocloseCmd":"Zet een timer om het ticket automatisch te sluiten" }, "buttons":{ "close":"Sluit Ticket", @@ -68,9 +80,11 @@ "none":"geen", "reason":"reden", - + "createdat":"gecreëerd op", + "openedby":"geopend door", "deletedby":"verwijderd door", "closedby":"gesloten door", + "modalreason":"Wat is de reden om dit ticket te sluiten?", "chooseATicket": "Kies een ticket" }, diff --git a/language/english.json b/language/english.json index 7bbbe9e..295b127 100644 --- a/language/english.json +++ b/language/english.json @@ -23,11 +23,18 @@ "renameTitle":"Changed the name to {0}!", "closeTitle":"Closed this ticket!", "deleteTitle":"Deleting this ticket...", + "reopenTitle":"Re-Opened this ticket!", "claimTitle":"This ticket is now claimed to {0}", "unclaimTitle":"This ticket isn't claimed anymore!", "changeTitle":"Changed ticket type to {0}!", + "statsTitle":"Here are the stats for {0}!", + "autocloseTitle":"This ticket will be closed automatically after {0}!", + "autocloseRejectTitle":"This ticket will no longer be closed automatically!", + "autocloseWarn":"This only affects inactive tickets!", + + "goToTicket":"go to ticket", "ticketWarning":"The embed is in the message below!", "maxTicketWarning":"**Warning:** _You can only create {0} ticket(s) at a time!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Delete a ticket.", "addCmd":"Add a user to the ticket.", "removeCmd":"Remove a user from the ticket.", - "reopenCmd":"Re-Open a ticket after it was closed." + "reopenCmd":"Re-Open a ticket after it was closed.", + "changeCmd":"Change ticket type.", + "claimCmd":"Claim a ticket.", + "unclaimCmd":"Unclaim a ticket.", + "statsCmd":"View ticket stats.", + "autocloseCmd":"Set timer to automatically close ticket" }, "buttons":{ "close":"Close Ticket", @@ -68,9 +80,11 @@ "none":"none", "reason":"reason", - + "createdat":"created at", + "openedby":"opened by", "deletedby":"deleted by", "closedby":"closed by", + "modalreason":"What is the reason for closing this ticket?", "chooseATicket": "Choose a ticket" }, diff --git a/language/french.json b/language/french.json index 16fbc70..2c99628 100644 --- a/language/french.json +++ b/language/french.json @@ -23,11 +23,18 @@ "renameTitle":"Changement du nom en {0}!", "closeTitle":"Fermé ce ticket!", "deleteTitle":"Suppression de ce ticket...", + "reopenTitle":"A rouvert ce ticket!", "claimTitle":"This ticket is now claimed to {0}", "unclaimTitle":"This ticket isn't claimed anymore!", "changeTitle":"Changed ticket type to {0}!", + "statsTitle":"Here are the stats for {0}!", + "autocloseTitle":"This ticket will be closed automatically after {0}!", + "autocloseRejectTitle":"This ticket will no longer be closed automatically!", + "autocloseWarn":"This only affects inactive tickets!", + + "goToTicket":"go to ticket", "ticketWarning":"L'intégration est dans le message ci-dessous!", "maxTicketWarning":"**Attention :** _Vous ne pouvez créer que {0} ticket(s) à la fois !_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Supprimer un billet.", "addCmd":"Ajouter un utilisateur au ticket.", "removeCmd":"Supprimer un utilisateur du ticket.", - "reopenCmd":"Rouvrir un ticket après sa clôture." + "reopenCmd":"Rouvrir un ticket après sa clôture.", + "changeCmd":"Change ticket type.", + "claimCmd":"Claim a ticket.", + "unclaimCmd":"Unclaim a ticket.", + "statsCmd":"View ticket stats.", + "autocloseCmd":"Set timer to automatically close ticket" }, "buttons":{ "close":"Fermer le ticket", @@ -68,9 +80,11 @@ "none":"rien", "reason":"raison", - + "createdat":"created at", + "openedby":"opened by", "deletedby":"supprimé par", "closedby":"fermé par", + "modalreason":"Qu’elle est la raison pour fermer ce ticket?", "chooseATicket": "Choisir un ticket" }, diff --git a/language/german.json b/language/german.json index f85b18b..d8e1d12 100644 --- a/language/german.json +++ b/language/german.json @@ -23,11 +23,18 @@ "renameTitle":"Der Name wurde geändert!", "closeTitle":"Dieses Ticket schließen!", "deleteTitle":"Löschen Sie dieses Ticket!", + "reopenTitle":"Öffne dieses Ticket erneut!", - "claimTitle":"Das Ticket wurde beansprucht von {0}", - "unclaimTitle":"Das Ticket wrid nicht mehr beansprucht", - "changeTitle":"Ticket Typ wurde geändert auf {0}!", + "claimTitle":"Dieses Ticket wurde beansprucht von {0}", + "unclaimTitle":"Dieses Ticket wird nichtmehr beansprucht.", + "changeTitle":"Ticket Typ wurde geändert zu {0}!", + "statsTitle":"Hier sind die Stats für {0}!", + "autocloseTitle":"Dieses Ticket wird automatisch geschlossen in {0}!", + "autocloseRejectTitle":"Dieses Ticket wird nichtmehr automatisch geschlossen", + "autocloseWarn":"Dies betrifft nur inaktive Tickets!", + + "goToTicket":"Geh zu deinem Ticket", "ticketWarning":"Die Einbettung befindet sich in der Nachricht unten!", "maxTicketWarning":"**Warnung:** _Sie können nur {0} ticket(s) erstellen zu einer Zeit!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Ein Ticket löschen.", "addCmd":"Fügen Sie dem Ticket einen Benutzer hinzu.", "removeCmd":"Entfernen eines Benutzers aus dem Ticket.", - "reopenCmd":"Öffnen Sie ein Ticket erneut, nachdem es geschlossen wurde." + "reopenCmd":"Öffnen Sie ein Ticket erneut, nachdem es geschlossen wurde.", + "changeCmd":"Ticket Typ ändern", + "claimCmd":"Ticket beanspruchen", + "unclaimCmd":"Ticket nicht mehr beanspruchen.", + "statsCmd":"Ticket Stats", + "autocloseCmd":"Timer wurde gesetzt auf automatisches schließen des Tickets" }, "buttons":{ "close":"Ticket schließen", @@ -68,9 +80,11 @@ "none":"none", "reason":"Grund", - + "createdat":"Erstellt um", + "openedby":"Geöffnet um", "deletedby":"Gelöscht von", "closedby":"Geschlossen von", + "modalreason":"Was ist der Grund?", "chooseATicket": "Wähle ein passendes Thema!" }, diff --git a/language/italian.json b/language/italian.json index b79cba8..8a9624e 100644 --- a/language/italian.json +++ b/language/italian.json @@ -23,11 +23,18 @@ "renameTitle":"Cambiato il nome a {0}!", "closeTitle":"Ticket chiuso!", "deleteTitle":"Eliminando questo ticket...", + "reopenTitle":"Ri-aperto questo ticket!", - "claimTitle":"Questo ticket è ora gestito da {0}", + "claimTitle":"Questo ticket adesso è gestito da {0}", "unclaimTitle":"Questo ticket non è più gestito!", - "changeTitle":"Cambiato il tipo di ticket in {0}!", + "changeTitle":"Ticket cambiato in {0}!", + "statsTitle":"Queste sono le stats per {0}!", + "autocloseTitle":"Questo ticket sarà eliminato direttamente dopo {0}!", + "autocloseRejectTitle":"Questo ticket non sarà più chiuso automaticamente!", + "autocloseWarn":"Questo vale solo per i ticket inattivi!", + + "goToTicket":"vai al ticket", "ticketWarning":"L'embed è nel messaggio sotto!", "maxTicketWarning":"*Attenzione:* Tu puoi creare solo {0} ticket alla volta!" }, @@ -42,7 +49,12 @@ "deleteCmd":"Elimina un ticket.", "addCmd":"Aggiungi un utente al ticket.", "removeCmd":"Rimuovi un utente da un ticket.", - "reopenCmd":"Ri-apri un ticket dopo averlo chiuso." + "reopenCmd":"Ri-apri un ticket dopo averlo chiuso.", + "changeCmd":"Cambia tipo di ticket.", + "claimCmd":"Gestisci un ticket.", + "unclaimCmd":"Lascia la gestione del ticket.", + "statsCmd":"Vedi le statistiche dei ticket.", + "autocloseCmd":"Imposta il timer dell'autochiusura dei ticket" }, "buttons":{ "close":"Chiudi", @@ -68,9 +80,11 @@ "none":"nessuno", "reason":"motivo", - + "createdat":"creato il", + "openedby":"aperto da", "deletedby":"eliminato da", "closedby":"chiuso da", + "modalreason":"Quale è il motivo per chiudere questo ticket?", "chooseATicket": "Scegli un ticket" }, diff --git a/language/polish.json b/language/polish.json index 33116c9..97f9728 100644 --- a/language/polish.json +++ b/language/polish.json @@ -23,11 +23,18 @@ "renameTitle":"Zmieniono nazwę na {0}!", "closeTitle":"Zamknięto ten ticket!", "deleteTitle":"Usuwanie tego zgłoszenia..", + "reopenTitle":"Ponownie otwarto ten ticket!", - "claimTitle":"Tym ticketem zajmuje się {0}", - "unclaimTitle":"Ten ticket nie jest już odbierany!", - "changeTitle":"Zmieniono typ biletu na {0}!", + "claimTitle":"Ten ticket został odebrany przez {0}", + "unclaimTitle":"Nie można już odebrać tego biletu!", + "changeTitle":"Changed ticket type to {0}!", + "statsTitle":"Oto statystyki dotyczące {0}!", + "autocloseTitle":"Ten ticket zostanie automatycznie zamknięty po {0}!", + "autocloseRejectTitle":"Ten ticket nie będzie już automatycznie zamykany!", + "autocloseWarn":"Dotyczy to tylko nieaktywnych biletów!", + + "goToTicket":"Przejdź do ticketa", "ticketWarning":"Osadzenie znajduje się w wiadomości poniżej!", "maxTicketWarning":"**Ostrzeżenie:** _Możesz utworzyć tylko {0} bilet(ów) na raz!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Skasuj ticket.", "addCmd":"Dodaj użytkownika do zgłoszenia.", "removeCmd":"Usuń użytkownika ze zgłoszenia.", - "reopenCmd":"Otwórz ponownie ticket po jego zamknięciu." + "reopenCmd":"Otwórz ponownie ticket po jego zamknięciu.", + "changeCmd":"Zmień typ ticketa.", + "claimCmd":"Odbierz ticket.", + "unclaimCmd":"Zrezygnuj z ticketa.", + "statsCmd":"Pokaż statystyki zgłoszenia.", + "autocloseCmd":"Ustaw timer, aby automatycznie zamykał ticket." }, "buttons":{ "close":"Zamknij", @@ -68,9 +80,11 @@ "none":"brak", "reason":"powód", - + "createdat":"utworzony", + "openedby":"otwarte przez", "deletedby":"skasowane przez", "closedby":"zamknięte przez", + "modalreason":"Jaki jest powód zamknięcia tego zgłoszenia?", "chooseATicket": "Wybierz zgłoszenie" }, diff --git a/language/portuguese.json b/language/portuguese.json index 2e9da59..b06c2c4 100644 --- a/language/portuguese.json +++ b/language/portuguese.json @@ -23,11 +23,18 @@ "renameTitle":"Mudou o nome para {0}!", "closeTitle":"Fechado este ticket!", "deleteTitle":"Excluindo este ticket...", + "reopenTitle":"Reabriu este ticket!", - "claimTitle":"This ticket is now claimed to {0}", - "unclaimTitle":"This ticket isn't claimed anymore!", - "changeTitle":"Changed ticket type to {0}!", + "claimTitle":"Esse ticket foi reinvidicado {0}", + "unclaimTitle":"Esse ticket não foi reinvidicado!", + "changeTitle":"Tipo de ticket alterado para {0}!", + "statsTitle":"Aqui estão as estatísticas para {0}!", + "autocloseTitle":"Este ticket vai fechar altomaticamente após {0}!", + "autocloseRejectTitle":"Este ticket não será mais fechado automaticamente!", + "autocloseWarn":"Isso apenas afeta tickets inativos!", + + "goToTicket":"ir para ticket", "ticketWarning":"A incorporação está na mensagem abaixo!", "maxTicketWarning":"**Cuidado:** _Você só pode criar {0} ticket(s) de cada vez!!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Excluir um ticket.", "addCmd":"Adicionar um usuário ao ticket.", "removeCmd":"Remover um usuário do ticket.", - "reopenCmd":"Reabra um ticket depois que ele foi fechado." + "reopenCmd":"Reabra um ticket depois que ele foi fechado.", + "changeCmd":"Mudar tipo de ticket", + "claimCmd":"Resgatar Ticket", + "unclaimCmd":"Desresgatar Ticket", + "statsCmd":"Olhar status do ticket", + "autocloseCmd":"Definir tempo para fechar ticket automaticamente." }, "buttons":{ "close":"Fechar Ticket", @@ -68,11 +80,12 @@ "none":"vazio", "reason":"motivo", - + "createdat":"Criado por:", + "openedby":"Aberto por:", "deletedby":"deletado por", "closedby":"fechado por", + "modalreason":"Qual o motivo de fechar o ticket?", - "chooseATicket": "Fechar Ticket" }, "transcripts":{ diff --git a/language/romanian.json b/language/romanian.json index 800b3ee..c38ecd1 100644 --- a/language/romanian.json +++ b/language/romanian.json @@ -23,11 +23,18 @@ "renameTitle":"Nume schimbat in {0}!", "closeTitle":"Ticket inchis!", "deleteTitle":"Se sterge ticket-ul...", - - "claimTitle":"This ticket is now claimed to {0}", - "unclaimTitle":"This ticket isn't claimed anymore!", - "changeTitle":"Changed ticket type to {0}!", + "reopenTitle":"Ticket Re-deschis!", + "claimTitle":"Acest ticket a primit claim de la {0}", + "unclaimTitle":"Acest ticket nu mai este detinut!", + "changeTitle":"A fost schimbat tipul ticket-ului la {0}!", + + "statsTitle":"Acestea sunt informatiile pentru {0}!", + "autocloseTitle":"Acest ticket va fi inchis automat dupa {0}!", + "autocloseRejectTitle":"Acest ticket nu va mai fi inchis automat!", + "autocloseWarn":"Aceasta optiune afecteaza numai ticketele inactive!", + + "goToTicket":"Mergi la ticket", "ticketWarning":"Embed-ul se afla in mesajul de mai jos!", "maxTicketWarning":"**Avertizare:** _Poti creea doar {0} tickete active!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Sterge un ticket.", "addCmd":"Adauga un utilizator in ticket.", "removeCmd":"Sterge un utilizator din ticket.", - "reopenCmd":"Re-deschide un ticket dupa ce a fost deschis." + "reopenCmd":"Re-deschide un ticket dupa ce a fost deschis.", + "changeCmd":"Schimba categoria ticket-ului.", + "claimCmd":"Revendica un ticket", + "unclaimCmd":"Anuleaza revendicarea unui ticket.", + "statsCmd":"Afiseasa informatiile ticket-ului.", + "autocloseCmd":"Seteaza un cronometru pentru inchiderea ticket-ului." }, "buttons":{ "close":"Inchide ticket-ul", @@ -68,9 +80,11 @@ "none":"niciunul", "reason":"Motiv", - + "createdat":"Creat la", + "openedby":"Deschis de", "deletedby":"Sters de", "closedby":"Inchis de", + "modalreason":"Care este motivul pentru inchiderea acestui ticket?", "chooseATicket": "Alege un ticket" }, diff --git a/language/russian.json b/language/russian.json index f996d3a..d64d275 100644 --- a/language/russian.json +++ b/language/russian.json @@ -23,11 +23,18 @@ "renameTitle":"Изменено имя на {0}!", "closeTitle":"Закрыл этот тикет!", "deleteTitle":"Удаляем этот тикет...", + "reopenTitle":"Открываем заново этот тикет!", "claimTitle":"Этот тикет теперь взят {0}", "unclaimTitle":"Этот тикет никем не взят!", "changeTitle":"Изменён тип тикета на {0}!", + "statsTitle":"Here are the stats for {0}!", + "autocloseTitle":"This ticket will be closed automatically after {0}!", + "autocloseRejectTitle":"This ticket will no longer be closed automatically!", + "autocloseWarn":"This only affects inactive tickets!", + + "goToTicket":"go to ticket", "ticketWarning":"embed ниже сообщения!", "maxTicketWarning":"**Предупреждение:** _Вы можете создать только {0} тикет(а/ов) в этот раз!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Удалить тикет.", "addCmd":"Добавить пользователя в тикет.", "removeCmd":"Удалить пользователя из тикета.", - "reopenCmd":"Открыть заново тикет после того, как он был закрыт." + "reopenCmd":"Открыть заново тикет после того, как он был закрыт.", + "changeCmd":"Change ticket type.", + "claimCmd":"Claim a ticket.", + "unclaimCmd":"Unclaim a ticket.", + "statsCmd":"View ticket stats.", + "autocloseCmd":"Set timer to automatically close ticket" }, "buttons":{ "close":"Закрыть тикет", @@ -68,9 +80,11 @@ "none":"отсутствует", "reason":"причина", - + "createdat":"created at", + "openedby":"opened by", "deletedby":"удалён", "closedby":"закрыт", + "modalreason":"Какая причина закрытия этого тикета?", "chooseATicket": "Выберите тикет" }, diff --git a/language/spanish.json b/language/spanish.json index 82505bb..44b9901 100644 --- a/language/spanish.json +++ b/language/spanish.json @@ -23,11 +23,18 @@ "renameTitle":"Cambió el nombre a {0}!", "closeTitle":"Cerró este ticket!", "deleteTitle":"Eliminando este ticket...", + "reopenTitle":"Re-abrió este boleto!", - "claimTitle":"Este ticket será atendido por {0}", - "unclaimTitle":"¡Este ticket ya no está reservado!", - "changeTitle":"¡Cambiando el tipo de ticket a {0}!", + "claimTitle":"Este ticket fué reclamado por {0}", + "unclaimTitle":"¡Este ticket se encuentra desatendido!", + "changeTitle":"¡Cambiado el tipo de ticket a {0}!", + "statsTitle":"¡Aquí están las estadísticas para {0}!", + "autocloseTitle":"¡Este ticket será cerrado después de {0}!", + "autocloseRejectTitle":"¡Cierre automático del ticket desactivado!", + "autocloseWarn":"¡Esto solo afecta tickets inactivos!", + + "goToTicket":"ir al ticket", "ticketWarning":"La inserción está en el mensaje a continuación!", "maxTicketWarning":"**Advertencia:** _Solo puedes crear {0} ticket(s) a la vez!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Eliminar un ticket.", "addCmd":"Agregar un usuario al ticket.", "removeCmd":"Eliminar un usuario del ticket.", - "reopenCmd":"Re-Abre un ticket después de que este se vea cerrado." + "reopenCmd":"Re-Abre un ticket después de que este se vea cerrado.", + "changeCmd":"Cambia el tipo de ticket.", + "claimCmd":"Reclama un ticket.", + "unclaimCmd":"Desatiende un ticket.", + "statsCmd":"Mira las estadísticas de los tickets.", + "autocloseCmd":"Establece un temporizador para cerrar el ticket." }, "buttons":{ "close":"Cerrar ticket.", @@ -68,9 +80,11 @@ "none":"Ninguna.", "reason":"Razón", - + "createdat":"creado el", + "openedby":"abierto por", "deletedby":"eliminado por", "closedby":"cerrado por", + "modalreason":"Cúal es la razón para cerrar este ticket?", "chooseATicket": "Elije un ticket" }, diff --git a/language/turkish.json b/language/turkish.json index 8b47274..e09a912 100644 --- a/language/turkish.json +++ b/language/turkish.json @@ -23,11 +23,18 @@ "renameTitle":"Bilet ismi {0} olarak değştirildi!", "closeTitle":"Bilet Kapatıldı!", "deleteTitle":"Bilet siliniyor...", + "reopenTitle":"Bilet Yeniden Açıldı!", "claimTitle":"Bu bilet artık talep edildi. {0}", "unclaimTitle":"Tu bilet artık talep edilmiyor!", "changeTitle":"Bu bilet türü {0} olarak değiştirildi!", + "statsTitle":"Here are the stats for {0}!", + "autocloseTitle":"This ticket will be closed automatically after {0}!", + "autocloseRejectTitle":"This ticket will no longer be closed automatically!", + "autocloseWarn":"This only affects inactive tickets!", + + "goToTicket":"go to ticket", "ticketWarning":"Gömme aşağıdaki mesajda yer almaktadır!", "maxTicketWarning":"**Uyarı:** _You can only create {0} ticket(s) at a time!_" }, @@ -42,7 +49,12 @@ "deleteCmd":"Bileti siler.", "addCmd":"Bilete kullanıcı ekler.", "removeCmd":"Biletten kullanıcı çıkarır.", - "reopenCmd":"Bilet kapandıktan sonra tekrar açar." + "reopenCmd":"Bilet kapandıktan sonra tekrar açar.", + "changeCmd":"Change ticket type.", + "claimCmd":"Claim a ticket.", + "unclaimCmd":"Unclaim a ticket.", + "statsCmd":"View ticket stats.", + "autocloseCmd":"Set timer to automatically close ticket" }, "buttons":{ "close":"Bileti Kapat", @@ -68,9 +80,11 @@ "none":"yok", "reason":"sebep", - + "createdat":"created at", + "openedby":"opened by", "deletedby":"Silen kişi", "closedby":"Kapatan kişi", + "modalreason":"Bu biletin kapanmasının sebebi nedir?", "chooseATicket": "Bir bilet seçin" },