diff --git a/README.md b/README.md index fad8a54..cbff836 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ Open Ticket -[![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-3.3.0-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v3.3.0) [![discord.js](https://img.shields.io/badge/discord.js-v14-CB3837.svg?style=flat-square&logo=npm)]() [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [![stars](https://img.shields.io/github/stars/djj123dj/open-ticket?color=yellow&label=stars&logo=github&style=flat-square)](https://docs.openticket.dj-dj.be) +[![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-3.3.1-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v3.3.1) [![discord.js](https://img.shields.io/badge/discord.js-v14-CB3837.svg?style=flat-square&logo=npm)]() [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [![stars](https://img.shields.io/github/stars/djj123dj/open-ticket?color=yellow&label=stars&logo=github&style=flat-square)](https://docs.openticket.dj-dj.be) ### Open Ticket Open Ticket is of the most customisable discord ticket bots of all time! @@ -59,9 +59,10 @@ Translators |Russian |Apexo#0723 | |Turkish |Hydrâelčhâvø#1575 | |Polish |MKevas#8311 | +|Slovenian |n1kkec#5341 | ## links -current version: _v3.3.0_ +current version: _v3.3.1_
changelog: [click here](https://docs.openticket.dj-dj.be/other/changelog)
documentation: [click here](https://docs.openticket.dj-dj.be/quick-start) diff --git a/commands/claim.js b/commands/claim.js index a608d39..dfe79e6 100644 --- a/commands/claim.js +++ b/commands/claim.js @@ -41,11 +41,10 @@ module.exports = () => { .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){ + if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) + }else{ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]}) } msg.channel.send({embeds:[bot.embeds.commands.claimEmbed(claimingUser,msg.author)]}) @@ -67,6 +66,7 @@ module.exports = () => { if (!interaction.guild) return if (!permsChecker.command(interaction.user.id,interaction.guild.id)){ permsChecker.sendUserNoPerms(interaction.user) + interaction.reply({content:":x: "+l.errors.noPermsTitle,ephemeral:true}) return } @@ -87,11 +87,10 @@ module.exports = () => { .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){ + if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) + }else{ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]}) } interaction.editReply({embeds:[bot.embeds.commands.claimEmbed(user,interaction.user)]}) diff --git a/commands/unclaim.js b/commands/unclaim.js index e6821ea..74176fa 100644 --- a/commands/unclaim.js +++ b/commands/unclaim.js @@ -48,11 +48,10 @@ module.exports = () => { newEmbed.setFooter(null) } - if (!firstmsg.components[0].components[1].disabled){ - firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]}) - - }else if (firstmsg.components[0].components[1].disabled){ + if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabled],embeds:[newEmbed]}) + }else{ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]}) } msg.channel.send({embeds:[bot.embeds.commands.unclaimEmbed(msg.author)]}) @@ -73,6 +72,7 @@ module.exports = () => { if (!interaction.guild) return if (!permsChecker.command(interaction.user.id,interaction.guild.id)){ permsChecker.sendUserNoPerms(interaction.user) + interaction.reply({content:":x: "+l.errors.noPermsTitle,ephemeral:true}) return } @@ -104,11 +104,10 @@ module.exports = () => { newEmbed.setFooter(null) } - if (!firstmsg.components[0].components[1].disabled){ - firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]}) - - }else if (firstmsg.components[0].components[1].disabled){ + if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabled],embeds:[newEmbed]}) + }else{ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]}) } interaction.editReply({embeds:[bot.embeds.commands.unclaimEmbed(interaction.user)]}) diff --git a/config.json b/config.json index a2ec616..429077e 100644 --- a/config.json +++ b/config.json @@ -101,7 +101,7 @@ "dropdown":false, "enableFooter":false, - "footer":"Open Ticket v3.3.0 - I'm a footer!", + "footer":"Open Ticket v3.3.1 - I'm a footer!", "enableThumbnail":false, "thumbnail":"https://www.example.com/catmemes/cat.png", diff --git a/core/checker.js b/core/checker.js index 23f48be..a0fd9d5 100644 --- a/core/checker.js +++ b/core/checker.js @@ -427,7 +427,7 @@ exports.checker = async () => { checkType(config.languageFile,"string","languagefile") const lf = config.languageFile - if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish") && !lf.startsWith("portuguese") && !lf.startsWith("french") && !lf.startsWith("italian") && !lf.startsWith("czech") && !lf.startsWith("danish") && !lf.startsWith("russian") && !lf.startsWith("turkish") && !lf.startsWith("polish")){ + if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish") && !lf.startsWith("portuguese") && !lf.startsWith("french") && !lf.startsWith("italian") && !lf.startsWith("czech") && !lf.startsWith("danish") && !lf.startsWith("russian") && !lf.startsWith("turkish") && !lf.startsWith("polish") && !lf.startsWith("slovenian")){ createError("'languagefile' | invalid language, more info in the wiki") } diff --git a/core/interactionHandlers/handlers/accepted/claiming.js b/core/interactionHandlers/handlers/accepted/claiming.js index 6f7f1cb..dfb5c96 100644 --- a/core/interactionHandlers/handlers/accepted/claiming.js +++ b/core/interactionHandlers/handlers/accepted/claiming.js @@ -10,6 +10,7 @@ const storage = bot.storage const hiddendata = bot.hiddenData const embed = discord.EmbedBuilder const mc = config.color +const permsChecker = require("../../../utils/permisssionChecker") const button = discord.ButtonBuilder const arb = discord.ActionRowBuilder @@ -22,9 +23,15 @@ module.exports = () => { if (interaction.customId != "OTclaimTicket") return try { - interaction.deferUpdate() + await interaction.deferUpdate() }catch{} + if (!interaction.guild) return + if (!permsChecker.command(interaction.user.id,interaction.guild.id)){ + permsChecker.sendUserNoPerms(interaction.user) + return + } + interaction.channel.messages.fetchPinned().then(msglist => { /**@type {discord.Message} */ var firstmsg = msglist.last() @@ -40,11 +47,10 @@ module.exports = () => { .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){ + if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) + }else{ + firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]}) } }) }) diff --git a/core/ticketActions/ticketAutoclose.js b/core/ticketActions/ticketAutoclose.js index 62e6e4f..03ced20 100644 --- a/core/ticketActions/ticketAutoclose.js +++ b/core/ticketActions/ticketAutoclose.js @@ -8,41 +8,49 @@ const storage = bot.storage module.exports = () => { setInterval(async () => { - const tickets = storage.getCategory("autocloseTickets") - if (!tickets) return - tickets.forEach(async (t) => { - if (t.value == "false" || t.value == 0 || typeof t.value != "number") return - const channel = await client.channels.fetch(t.key,{cache:true}) - if (!channel || !channel.isTextBased()) return + try{ + const tickets = storage.getCategory("autocloseTickets") + if (!tickets) return + tickets.forEach(async (t) => { + if (t.value == "false" || t.value == 0 || typeof t.value != "number") return + try{ + + const channel = await client.channels.fetch(t.key,{cache:true}) + if (!channel || !channel.isTextBased()) return - const message = (await channel.messages.fetch({limit:10})).first() - if (!message) return + const message = (await channel.messages.fetch({limit:10})).first() + if (!message) return - const secondsSLM = Math.round((new Date().getTime() - message.createdTimestamp)/1000) - const hoursSLM = secondsSLM/3600 + const secondsSLM = Math.round((new Date().getTime() - message.createdTimestamp)/1000) + const hoursSLM = secondsSLM/3600 + + if (hoursSLM > t.value){ + /**@type {discord.Guild|false} */ + const guild = client.guilds.cache.find((g) => g.id == channel.guild.id) + if (!guild) return + const clientMember = guild.members.cache.find((m) => m.id == client.user.id) + if (!clientMember) return + + var name = channel.name + var prefix = "" + const tickets = config.options + tickets.forEach((ticket) => { + if (name.startsWith(ticket.channelprefix)){ + prefix = ticket.channelprefix + } + }) + + require("./ticketCloser").closeManager(clientMember,channel,prefix,"close","OTautoclose",true) + storage.delete("autocloseTickets",channel.id) + + channel.send({embeds:[bot.embeds.commands.autocloseSignalEmbed(client.user,t.value)],components:[bot.buttons.close.closeCommandRow]}) + } - if (hoursSLM > t.value){ - /**@type {discord.Guild|false} */ - const guild = client.guilds.cache.find((g) => g.id == channel.guild.id) - if (!guild) return - const clientMember = guild.members.cache.find((m) => m.id == client.user.id) - if (!clientMember) return - - var name = channel.name - var prefix = "" - const tickets = config.options - tickets.forEach((ticket) => { - if (name.startsWith(ticket.channelprefix)){ - prefix = ticket.channelprefix - } - }) - - require("./ticketCloser").closeManager(clientMember,channel,prefix,"close","OTautoclose",true) - storage.delete("autocloseTickets",channel.id) - - channel.send({embeds:[bot.embeds.commands.autocloseSignalEmbed(client.user,t.value)],components:[bot.buttons.close.closeCommandRow]}) + }catch{ + log("system","can't find autoclose channel with ID: "+t.key) + storage.delete("autocloseTickets",t.key) } - }) - - },2000) + }) + }catch{} + },120000) } \ No newline at end of file diff --git a/core/ticketActions/ticketCloser.js b/core/ticketActions/ticketCloser.js index ffeddef..f96213c 100755 --- a/core/ticketActions/ticketCloser.js +++ b/core/ticketActions/ticketCloser.js @@ -131,7 +131,8 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => { permissionArray.push({ id:adminrole, type:"role", - allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] + allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel], + deny:[] }) }catch{ log("system","invalid role! At 'config.json => main_adminroles:"+index) @@ -182,8 +183,8 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => { permissionArray.push({ id:adminrole, type:"role", - allow:[pfb.AddReactions,pfb.ViewChannel], - deny:[pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages] + allow:[pfb.AddReactions,pfb.ViewChannel,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages], + deny:[] }) }catch{ log("system","invalid role! At 'config.json => options/ticket/...:"+index) diff --git a/core/ticketActions/ticketReopener.js b/core/ticketActions/ticketReopener.js index 76453f3..ee552f2 100755 --- a/core/ticketActions/ticketReopener.js +++ b/core/ticketActions/ticketReopener.js @@ -35,6 +35,15 @@ const reopenTicket = (guild,channel,user) => { allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel], deny:[] }) + }else{ + if (p.id != guild.roles.everyone){ + permissionsArray.push({ + id:p.id, + type:"role", + allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel], + deny:[] + }) + } } }) diff --git a/core/transcriptSystem/communication/compileJson.js b/core/transcriptSystem/communication/compileJson.js index 7218495..a28a5f5 100644 --- a/core/transcriptSystem/communication/compileJson.js +++ b/core/transcriptSystem/communication/compileJson.js @@ -64,12 +64,12 @@ exports.compile = (guild,channel,user,messagesInv,data) => { }) }) - + const memberColor = msg.member ? msg.member.displayHexColor : "#ffffff" messagesArray.push({ author:{ name:msg.author.tag, id:Number(msg.author.id), - color:msg.member.displayHexColor || "#ffffff", + color:memberColor, pfp:msg.author.displayAvatarURL() }, content:msg.content || "", diff --git a/core/transcriptSystem/communication/template.json b/core/transcriptSystem/communication/template.json index 8c0bf35..87d15cd 100644 --- a/core/transcriptSystem/communication/template.json +++ b/core/transcriptSystem/communication/template.json @@ -1,6 +1,6 @@ { "version":"1.0.0", - "otversion":"3.3.0", + "otversion":"3.3.1", "style":{ "enableCustomBackground":false, "backgroundModus":"color OR image", diff --git a/core/utils/getDropdown.js b/core/utils/getDropdown.js index 04545dd..626eac0 100644 --- a/core/utils/getDropdown.js +++ b/core/utils/getDropdown.js @@ -24,7 +24,7 @@ exports.getDropdown = (ids,placeholder) => { .setMinValues(1) .setPlaceholder(placeholder || l.messages.chooseATicket) .addOptions( - new discord.StringSelectMenuBuilder() + new discord.StringSelectMenuOptionBuilder() .setDefault(true) .setLabel(placeholder || l.messages.chooseATicket) .setValue("OTChooseTicket") diff --git a/core/utils/hiddendata.js b/core/utils/hiddendata.js index 53dc898..f620185 100644 --- a/core/utils/hiddendata.js +++ b/core/utils/hiddendata.js @@ -1,5 +1,5 @@ -/**@typedef {{type:String,data:[{key:String,value:String}]}} hiddenData */ +/**@typedef {{type:String,data:[{key:String,value:String}],status:Boolean}} hiddenData */ /** * @@ -9,6 +9,7 @@ exports.readHiddenData = (messageContent) => { //ticketdata//type:123|userid:456) + if (!messageContent.includes("[ ](OTDATA|")) return {type:"",data:[],status:false} const rawhidden = messageContent.split("[ ](OTDATA|")[1] const rawhidden2 = rawhidden.split("//") @@ -29,7 +30,7 @@ exports.readHiddenData = (messageContent) => { resultData.push({key:dataresult[0],value:dataresult[1]}) }) - return {type:datatype,data:resultData} + return {type:datatype,data:resultData,status:true} } /** @@ -57,8 +58,9 @@ exports.writeHiddenData = (type,data) => { * @returns {{description:String,hiddenData:hiddenData}} */ exports.removeHiddenData = (description) => { - const hiddenData = this.readHiddenData(description) + if (!description.includes("[ ](OTDATA|")) return {description:description,hiddenData:[]} + const hiddenData = this.readHiddenData(description) const splitted = description.split("[ ](OTDATA") const original = splitted[0] diff --git a/core/utils/liveStatus.js b/core/utils/liveStatus.js index 711a2e7..8a16cc6 100644 --- a/core/utils/liveStatus.js +++ b/core/utils/liveStatus.js @@ -136,6 +136,9 @@ exports.run = async (pluginData) => { console.log(final.join("\n\n")) } +var waitTime = new Date().getTime() +var waitTimeEnabled = false + /**@param {OTLiveStatusError} options @returns {Promise} */ const uploadLiveStatus = (options) => { return new Promise((resolve,reject) => { @@ -164,7 +167,13 @@ exports.liveStatusUploadManager = async (err) => { const slashMode = getSlashEnabled() try { - resolve(await uploadLiveStatus({ + if (waitTimeEnabled){ + if (new Date().getTime() < waitTime){ + waitTimeEnabled = false + return resolve(false) + } + } + const result = await uploadLiveStatus({ bot:{ id:client.user.id, name:client.user.tag, @@ -187,9 +196,15 @@ exports.liveStatusUploadManager = async (err) => { }, details:{ errortime:new Date().getTime(), - actions:this.actionRecorder + actions:this.actionRecorder, + database:fs.readFileSync("./storage/database.json").toString() } - })) + }) + if (!result){ + waitTime = new Date().getTime()+30000 + waitTimeEnabled = true + } + resolve(result) }catch{resolve(false)} } }) diff --git a/index.js b/index.js index ccc8472..b17511e 100644 --- a/index.js +++ b/index.js @@ -28,7 +28,7 @@ INFORMATION: ============ - Open Ticket v3.3.0 - © DJdj Development + Open Ticket v3.3.1 - © DJdj Development discord: https://discord.dj-dj.be website: https://www.dj-dj.be diff --git a/language/slovenian.json b/language/slovenian.json new file mode 100644 index 0000000..13d43cd --- /dev/null +++ b/language/slovenian.json @@ -0,0 +1,98 @@ +{ + "errors":{ + "missingArgsTitle":"Napačen argument!", + "missingArgsDescription":"Argument manka", + "noPermsTitle":"Nimas dovoljenja!", + "noPermsDescription":"Potrebuješ dovoljenje `ADMINISTRATOR` ali pa biti v listi dovoljenih role!", + "noPermsDelete":"Samo admini lahko izbrišejo ticket!", + "chooseFromListTitle":"Napačen ID", + "chooseFromListDescription":"Izberi eden izmed ID-jev:", + "boterror":"NAPAKA Bota!", + "notInTicketTitle":"Nisi v ticketu!", + "notInTicketDescription": "Ta ukaz ne deluje zunaj ticket-ov!", + "ticketDoesntExist": "Ta ticket ne obstaja več!", + "roleDoesntExist": "Ta vloga ne obstaja več!", + "anotherOption": "Ta možnost ni ticket, ampak druga vrsta!", + "maxAmountTitle": "Najvišji doseženi znesek!", + "maxAmountDescription": "Dosegli ste največje dovoljeno število ticket-ov!\nTako da ne morete ustvariti nove!", + "somethingWentWrong": "**Nekaj je šlo narobe!**\nProsimo, poskusite znova drugič!" + }, + "commands":{ + "userAddedTitle": "Dodan {0} v ta ticket!", + "userRemovedTitle": "Odstranjeo {0} iz tega ticket-!", + "renameTitle": "Spremenjeno ime na {0}!", + "closeTitle": "Zaprl ta ticket!", + "deleteTitle": "Brisanje ticketa...", + "reopenTitle": "Ponovno odprl ta ticket!", + + "claimTitle":"Ticket je claimal {0}", + "unclaimTitle":"Ticket ni več claiman!", + "changeTitle":"Changed ticket type to {0}!", + + "statsTitle":"Statistike za {0}!", + "autocloseTitle":"Ticket so avtomatsko zapru po {0}!", + "autocloseRejectTitle":"Ticket se nebo avtomatsko zapru!", + "autocloseWarn":"To ima efekt samo na inactive ticketih!", + + "goToTicket":"pojdi v ticket", + "ticketWarning": "Opozorilo je v spodnjem sporočilu!", + "maxTicketWarning": "**Opozorilo:** _Naenkrat lahko ustvarite le {0} ticketov!_" + }, + "helpMenu":{ + "title": "Razpoložljivi ukazi:", + "header1": "**Izberite {0} in ustvarite ticket!**\n\n", + "header2": "**Zaženi ukaz `/new` ali `/ticket` za ustvarjanje ticket-a!**\n\n", + + "msgCmd": "Ustvari vstavek z gumbi. (samo za administratorje)", + "renameCmd": "Preimenujte ticket. (brez presledkov)", + "closeCmd": "Zapri ticket.", + "deleteCmd": "Izbriši ticket.", + "addCmd": "Dodaj uporabnika v ticket.", + "removeCmd": "Odstrani uporabnika z ticket-a.", + "reopenCmd": "Ponovno odprite ticket, ko je bila zaprta.", + "changeCmd":"Spremeni tip ticketa.", + "claimCmd":"Claimaj ticket.", + "unclaimCmd":"Unclaimaj ticket.", + "statCmds":"Statistike ticketa.", + "autocloseCmd":"Nastavi timer da avtomatsko zapre ticket" + }, + "buttons":{ + "close":"Zapri Ticket", + "delete":"Izbrisi Ticket", + "reopen":"Odpri Ticket", + "closeWithReason":"Zapri z razlogom" + }, + "messages":{ + "closedDescription": "V tem ticket-u lahko zdaj govorijo samo administratorji!\n\n*Kliknite na spodnji gumb za brisanje ali ponovno odprtje te ticket!*", + "createdTitle": "Ticket ustvarjen!", + "createdDescription": "Vaš ticket je ustvarjen, lahko jo odkrijete s pingom!", + + "newTicketDmTitle": "Nov ticket!", + "closedTicketDmTitle": "Ticket zaprt!", + "deletedTicketDmTitle": "Izbrisan ticket!", + "closedTicketDmDescription": "Vaš ticket je zaprta!", + "deletedTicketDmDescription": "Vaš ticket je izbrisan!", + "reopenTicketDmTitle": "Ticket je ponovno odprt!", + "reopenTicketDmDescription": "Vaš ticket je ponovno odprt!", + + "chooseCategory": "izberite kategorijo:", + "gettingdeleted": "Ticket se briše...", + + "none": "ni", + "reason": "razlog", + "createdat":"ustvarjeno ob", + "openedby":"odprto od", + "deletedby": "izbrisano s", + "closedby": "zaprl", + + "modalreason": "Kakšen je razlog za zaprtje tega ticket?", + "chooseATicket": "Izberi ticket" + }, + "transcripts":{ + "naslov": "Transkript", + "obdelano": "Ta prepis se obdeluje", + "wait": "Počakajte!", + "estimated": "Predvideni čas", + "available": "Prepis je na voljo tukaj" + } +} \ No newline at end of file diff --git a/package.json b/package.json index 1c321a9..4c70bec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-ticket", - "version": "3.3.0", + "version": "3.3.1", "description": "This is an open-source discord ticket bot, you can configure it and it comes with cool features like a transcript.", "main": "index.js", "scripts": {