From c2307fd1ed6b460ce273f2e1e543100347ef3b9e Mon Sep 17 00:00:00 2001 From: DJj123dj <80536295+DJj123dj@users.noreply.github.com> Date: Sat, 17 Jun 2023 12:16:23 +0200 Subject: [PATCH] bug fix update v3.4.1 --- .github/SECURITY.md | 12 +- README.md | 49 ++++---- commands/add.js | 8 +- commands/change.js | 8 +- commands/claim.js | 12 +- commands/close.js | 4 +- commands/delete.js | 4 +- commands/help.js | 6 +- commands/remove.js | 8 +- commands/rename.js | 9 +- commands/reopen.js | 4 +- commands/ticket.js | 4 +- commands/unclaim.js | 8 +- config.json | 2 +- core/checker.js | 4 +- core/errorLogSystem.js | 4 +- core/interactionHandlers/embeds/commands.js | 20 ++-- .../handlers/accepted/claiming.js | 2 +- core/reactionRoles.js | 8 +- core/slashSystem/slashEnable.js | 2 +- core/ticketActions/ticketCloser.js | 4 +- core/ticketActions/ticketOpener.js | 14 ++- core/ticketActions/ticketReopener.js | 2 +- .../communication/compileJsonV1.js | 4 +- .../communication/compileJsonV2.js | 4 +- core/transcriptSystem/embeds.js | 6 +- core/transcriptSystem/manager.js | 2 +- core/transcriptSystem/oldTranscript.js | 2 +- core/utils/liveStatus.js | 20 ++-- index.js | 6 +- language/arabic.json | 2 +- language/custom.json | 2 +- language/czech.json | 2 +- language/danish.json | 2 +- language/dutch.json | 2 +- language/english.json | 2 +- language/french.json | 2 +- language/german.json | 2 +- language/greek.json | 4 +- language/italian.json | 2 +- language/norwegian.json | 2 +- language/polish.json | 2 +- language/portuguese.json | 2 +- language/romanian.json | 2 +- language/russian.json | 2 +- language/slovenian.json | 2 +- language/spanish.json | 2 +- language/thai.json | 106 +++++++++--------- language/turkish.json | 2 +- language/ukrainian.json | 101 +++++++++++++++++ otWIKI.png | Bin 66560 -> 0 bytes package.json | 2 +- 52 files changed, 300 insertions(+), 189 deletions(-) create mode 100644 language/ukrainian.json delete mode 100644 otWIKI.png diff --git a/.github/SECURITY.md b/.github/SECURITY.md index 03ec5d0..0052cb9 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -8,12 +8,12 @@ Support for Open Ticket is only available for the versions specified below! 🟧 Partially Supported ❌ Not Supported -| Version | Supported | -| ------- | ------------------ | -| 3.4.0 | :white_check_mark: | -| 3.3.0 | 🟧 | -| 3.2.2 | 🟧 | -| < 3.2.2 | :x: | +| Version | Supported | +|-----------|-------------------| +| 3.4.1 | ✅ | +| 3.4.0 | ✅ | +| 3.3.3 | 🟧 | +| < 3.3.3 | ❌ | ## Reporting a Vulnerability diff --git a/README.md b/README.md index dd28156..6a9b299 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@ 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.4.0-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v3.4.0) [![discord.js](https://img.shields.io/badge/discord.js-v14-CB3837.svg?style=flat-square&logo=npm)]() [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [![stars](https://img.shields.io/github/stars/djj123dj/open-ticket?color=yellow&label=stars&logo=github&style=flat-square)](https://docs.openticket.dj-dj.be) +[![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-3.4.1-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v3.4.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! -You have more than +100 options to customise in the config! This includes html transcripts, unlimited tickets, custom embeds & more! -We also have a great support service, we can solve every question you have about open ticket! We even provide free 24/7 hosting if you want! +Open Ticket is the most customisable discord ticket bot that you will ever find! There are more than 150 options to customise in the config! This includes html transcripts, unlimited amount of tickets, custom embeds & more! Did you know that even the html transcripts are highly customisable? Don't wait and check it out! If you're having trouble setting the bot up, feel free to join our support server and we will help you further! Take a look at all the features and discover the possibilities! ### [Documentation](https://docs.openticket.dj-dj.be/quick-start) @@ -13,7 +11,7 @@ Take a look at all the features and discover the possibilities! ## Features - **🎉 NEW! html transcripts V2!** - 🔒 close, ❌ delete & ✅ re-open tickets -- 🇬🇧 translation in 18 different languages +- 🇬🇧 translation in 19 different languages - 📄 very advanced customisation - 🆗 buttons or 🔽 dropdowns! - 🆒 plugins @@ -39,33 +37,34 @@ You can already see some images at our [documentation!](https://docs.openticket. ## credits DJdj Development Team -|Main Developer|Developer|Support Team|Designer| -|--------------|---------|-----------|---------| -|DJj123dj |Sanke |DJ-Lite |vuur_draak| +|Main Developer|Developer |Support Team|Designer| +|--------------|------------|-----------|---------| +|djj123dj |sankedev |DJ-Lite |vuur_draak| Translators |Language |Translator | |--------------|-------------------------| -|Dutch |DJj123dj#1706 | -|Romanian |Sanke#6086 | -|French |Sanke#6086 | -|Spanish |Redactado#1673 & josuens14#5267| -|German |david.#8276 | -|Italian |Maurizio#0268 | +|Dutch |djj123dj | +|Romanian |sankedev | +|French |sankedev | +|Spanish |redactado & josuens | +|German |david.3 | +|Italian |maurizio26 | |Czech |t0miiis#3022 | -|Arabic |ChilledBroke#9986 & M4#5882| -|Danish |the_gamer#5095 | -|Portuguese |QuirAddon#9778 | -|Russian |Apexo#0723 | -|Turkish |Hydrâelčhâvø#1575 | -|Polish |MKevas#8311 | -|Slovenian |n1kkec#5341 | -|Thai |Mods HD#0661 | -|Norwegian |NoOneNook#0266 | -|Greek |ꙅoᴎɒᎸɘƚꙅ#3744 | +|Arabic |Sarcastic#9318 | +|Danish |.the_gamer | +|Portuguese |quiradon | +|Russian |apexo | +|Turkish |Hydra#0009 | +|Polish |mkevas | +|Slovenian |n1kkec | +|Thai |modshd | +|Norwegian |noonenook | +|Greek |stefanos#5739 | +|Ukrainian |anderskiy | ## links -current version: _v3.4.0_ +current version: _v3.4.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/add.js b/commands/add.js index f69e223..643ccb3 100644 --- a/commands/add.js +++ b/commands/add.js @@ -31,8 +31,8 @@ module.exports = () => { msg.channel.send({embeds:[bot.embeds.commands.addEmbed(user,msg.author)]}) var loguser = msg.mentions.users.first() - 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("command","someone used the 'add' command",[{key:"user",value:msg.author.username}]) + log("system","user added to ticket",[{key:"user",value:msg.author.username},{key:"ticket",value:msg.channel.name},{key:"added_user",value:loguser.username}]) 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}) @@ -61,8 +61,8 @@ module.exports = () => { interaction.editReply({embeds:[bot.embeds.commands.addEmbed(user,interaction.user)]}) var loguser = user - 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("command","someone used the 'add' command",[{key:"user",value:interaction.user.username}]) + log("system","user added to ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"added_user",value:loguser.username}]) 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}) diff --git a/commands/change.js b/commands/change.js index a4619e8..e85f586 100644 --- a/commands/change.js +++ b/commands/change.js @@ -48,8 +48,8 @@ module.exports = () => { msg.channel.setName(newTicket.channelprefix+name) 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("system","ticket type changed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}]) + log("command","someone used the 'change' command",[{key:"user",value:msg.author.username}]) + log("system","ticket type changed",[{key:"user",value:msg.author.username},{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()) }) @@ -111,8 +111,8 @@ module.exports = () => { 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}]) + log("command","someone used the 'change' command",[{key:"user",value:interaction.user.username}]) + log("system","ticket type changed",[{key:"user",value:interaction.user.username},{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()) }) } \ No newline at end of file diff --git a/commands/claim.js b/commands/claim.js index f7984f8..21c35dd 100644 --- a/commands/claim.js +++ b/commands/claim.js @@ -35,7 +35,7 @@ module.exports = () => { 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()}) + .setFooter({text:"claimed by: "+msg.author.username,iconURL:msg.author.displayAvatarURL()}) if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) @@ -45,8 +45,8 @@ module.exports = () => { 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("system","user claimed to ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"claimed_user",value:claimingUser.tag}]) + log("command","someone used the 'claim' command",[{key:"user",value:msg.author.username}]) + log("system","user claimed to ticket",[{key:"user",value:msg.author.username},{key:"ticket",value:msg.channel.name},{key:"claimed_user",value:claimingUser.username}]) 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}) @@ -79,7 +79,7 @@ module.exports = () => { 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) - .setFooter({text:"claimed by: "+user.tag,iconURL:user.displayAvatarURL()}) + .setFooter({text:"claimed by: "+user.username,iconURL:user.displayAvatarURL()}) if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) @@ -90,8 +90,8 @@ module.exports = () => { 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}]) + log("command","someone used the 'claim' command",[{key:"user",value:interaction.user.username}]) + log("system","user claimed to ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"claimed_user",value:user.username}]) 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}) diff --git a/commands/close.js b/commands/close.js index 5c13fe3..d4a5750 100644 --- a/commands/close.js +++ b/commands/close.js @@ -44,7 +44,7 @@ module.exports = () => { 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}]) + log("command","someone used the 'close' command",[{key:"user",value:msg.author.username}]) APIEvents.onCommand("close",true,msg.author,msg.channel,msg.guild,new Date()) }) @@ -79,7 +79,7 @@ module.exports = () => { 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}]) + log("command","someone used the 'close' command",[{key:"user",value:interaction.user.username}]) APIEvents.onCommand("close",true,interaction.user,interaction.channel,interaction.guild,new Date()) }) } \ No newline at end of file diff --git a/commands/delete.js b/commands/delete.js index 00dbe8b..6606317 100644 --- a/commands/delete.js +++ b/commands/delete.js @@ -38,7 +38,7 @@ module.exports = () => { 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}]) + log("command","someone used the 'delete' command",[{key:"user",value:msg.author.username}]) APIEvents.onCommand("delete",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) }) @@ -72,7 +72,7 @@ module.exports = () => { 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}]) + log("command","someone used the 'delete' command",[{key:"user",value:interaction.user.username}]) APIEvents.onCommand("delete",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 cf31a32..e0ac3b8 100644 --- a/commands/help.js +++ b/commands/help.js @@ -32,7 +32,7 @@ module.exports = () => { if (msg.content == config.prefix || msg.content == config.prefix+" " || msg.content == otherprefix){ msg.channel.send({embeds:[helpEmbed]}) - log("command","someone used the 'help' command",[{key:"user",value:msg.author.tag}]) + log("command","someone used the 'help' command",[{key:"user",value:msg.author.username}]) APIEvents.onCommand("help",true,msg.author,msg.channel,msg.guild,new Date()) return } @@ -40,7 +40,7 @@ module.exports = () => { if (args[1]){ if (!args[1].startsWith("close") && !args[1].startsWith("delete") && !args[1].startsWith("remove") && !args[1].startsWith("add") && !args[1].startsWith("msg") && !args[1].startsWith("remove") && !args[1].startsWith("rename") && !args[1].startsWith("reopen")){ msg.channel.send({embeds:[helpEmbed]}) - log("command","someone used the 'help' command",[{key:"user",value:msg.author.tag}]) + log("command","someone used the 'help' command",[{key:"user",value:msg.author.username}]) APIEvents.onCommand("help",true,msg.author,msg.channel,msg.guild,new Date()) } } @@ -51,7 +51,7 @@ module.exports = () => { if (interaction.commandName != "help") return interaction.reply({embeds:[helpEmbed]}) - log("command","someone used the 'help' command",[{key:"user",value:interaction.user.tag}]) + log("command","someone used the 'help' command",[{key:"user",value:interaction.user.username}]) APIEvents.onCommand("help",true,interaction.user,interaction.channel,interaction.guild,new Date()) }) } \ No newline at end of file diff --git a/commands/remove.js b/commands/remove.js index 7fc6ef2..357ea25 100644 --- a/commands/remove.js +++ b/commands/remove.js @@ -32,8 +32,8 @@ module.exports = () => { 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}]) + log("command","someone used the 'remove' command",[{key:"user",value:msg.author.username}]) + log("system","user removed from ticket",[{key:"user",value:msg.author.username},{key:"ticket",value:msg.channel.name},{key:"removed_user",value:loguser.username}]) 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}) @@ -62,8 +62,8 @@ module.exports = () => { var loguser = user - 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("command","someone used the 'remove' command",[{key:"user",value:interaction.user.username}]) + log("system","user removed from ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"removed_user",value:loguser.username}]) 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}) diff --git a/commands/rename.js b/commands/rename.js index db14eb8..516644b 100644 --- a/commands/rename.js +++ b/commands/rename.js @@ -39,12 +39,11 @@ module.exports = () => { }) 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}]) + log("command","someone used the 'rename' command",[{key:"user",value:msg.author.username}]) + log("system","ticket renamed",[{key:"user",value:msg.author.username},{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()) }) @@ -79,8 +78,8 @@ module.exports = () => { 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}]) + log("command","someone used the 'rename' command",[{key:"user",value:interaction.user.username}]) + log("system","ticket renamed",[{key:"user",value:interaction.user.username},{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()) }) diff --git a/commands/reopen.js b/commands/reopen.js index 09d4678..d43082b 100644 --- a/commands/reopen.js +++ b/commands/reopen.js @@ -25,7 +25,7 @@ module.exports = () => { require("../core/ticketActions/ticketReopener").reopenTicket(msg.guild,msg.channel,msg.author) - log("command","someone used the 'reopen' command",[{key:"user",value:msg.author.tag}]) + log("command","someone used the 'reopen' command",[{key:"user",value:msg.author.username}]) APIEvents.onCommand("reopen",true,msg.author,msg.channel,msg.guild,new Date()) }) @@ -45,7 +45,7 @@ module.exports = () => { 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.username}]) APIEvents.onCommand("reopen",true,interaction.user,interaction.channel,interaction.guild,new Date()) }) } \ No newline at end of file diff --git a/commands/ticket.js b/commands/ticket.js index dc9b57b..2809c4c 100644 --- a/commands/ticket.js +++ b/commands/ticket.js @@ -38,7 +38,7 @@ module.exports = () => { msg.channel.send({embeds:[embed],components:componentRows}) - log("command","someone used the 'message' command",[{key:"user",value:msg.author.tag},{key:"id",value:id}]) + log("command","someone used the 'message' command",[{key:"user",value:msg.author.username},{key:"id",value:id}]) APIEvents.onCommand("message",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) } }) @@ -62,7 +62,7 @@ module.exports = () => { interaction.reply({content:l.commands.ticketWarning}) interaction.channel.send({embeds:[embed],components:componentRows}) - log("command","someone used the 'message' command",[{key:"user",value:interaction.user.tag},{key:"id",value:id}]) + log("command","someone used the 'message' command",[{key:"user",value:interaction.user.username},{key:"id",value:id}]) APIEvents.onCommand("message",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date()) diff --git a/commands/unclaim.js b/commands/unclaim.js index f591b35..c254238 100644 --- a/commands/unclaim.js +++ b/commands/unclaim.js @@ -57,8 +57,8 @@ module.exports = () => { msg.channel.send({embeds:[bot.embeds.commands.unclaimEmbed(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:unclaimuser}]) + log("command","someone used the 'unclaim' command",[{key:"user",value:msg.author.username}]) + log("system","user unclaimed from ticket",[{key:"user",value:msg.author.username},{key:"ticket",value:msg.channel.name},{key:"unclaimed_user",value:unclaimuser}]) APIEvents.onTicketUnclaim(msg.author,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData}) @@ -113,8 +113,8 @@ module.exports = () => { interaction.editReply({embeds:[bot.embeds.commands.unclaimEmbed(interaction.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:unclaimuser}]) + log("command","someone used the 'unclaim' command",[{key:"user",value:interaction.user.username}]) + log("system","user unclaimed from ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"unclaimed_user",value:unclaimuser}]) 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()) diff --git a/config.json b/config.json index 9b69ccb..9bd9b82 100644 --- a/config.json +++ b/config.json @@ -111,7 +111,7 @@ "dropdown":false, "enableFooter":false, - "footer":"Open Ticket v3.4.0 - I'm a footer!", + "footer":"Open Ticket v3.4.1 - I'm a footer!", "enableFooterImage":false, "footerImage":"https://www.example.com/catmemes/cat.png", diff --git a/core/checker.js b/core/checker.js index e44198c..cffeb44 100644 --- a/core/checker.js +++ b/core/checker.js @@ -179,7 +179,7 @@ exports.checker = async () => { checkType(option.description,"string",path+"/description") //icon - const emojiRegex = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/gi; + const emojiRegex = /(?:\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])|(?:)/gi if (option.icon.length > 0){ const isEmoji = emojiRegex.test(option.icon) @@ -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") && !lf.startsWith("slovenian") && !lf.startsWith("thai") && !lf.startsWith("norwegian") && !lf.startsWith("greek")){ + 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") && !lf.startsWith("thai") && !lf.startsWith("norwegian") && !lf.startsWith("greek") && !lf.startsWith("ukrainian")){ createError("'languagefile' | invalid language, more info in the wiki") } diff --git a/core/errorLogSystem.js b/core/errorLogSystem.js index d224156..f36b159 100644 --- a/core/errorLogSystem.js +++ b/core/errorLogSystem.js @@ -16,7 +16,7 @@ exports.noPermsMessage = (user) => { .setColor(c.Red) .setTitle(":x: "+l.errors.noPermsTitle) .setDescription(l.errors.noPermsDescription) - .setFooter({iconURL:user.displayAvatarURL(),text:user.tag}) + .setFooter({iconURL:user.displayAvatarURL(),text:user.username}) } /**@param {discord.User} user*/ @@ -25,7 +25,7 @@ exports.noPermsDelete = (user) => { .setColor(c.Red) .setTitle(":x: "+l.errors.noPermsTitle) .setDescription(l.errors.noPermsDelete) - .setFooter({iconURL:user.displayAvatarURL(),text:user.tag}) + .setFooter({iconURL:user.displayAvatarURL(),text:user.username}) } /**@param {String} message */ diff --git a/core/interactionHandlers/embeds/commands.js b/core/interactionHandlers/embeds/commands.js index 9b8c5ec..01985b8 100644 --- a/core/interactionHandlers/embeds/commands.js +++ b/core/interactionHandlers/embeds/commands.js @@ -19,7 +19,7 @@ exports.addEmbed = (addedUser,adder) => { return new embed() .setTitle("⬆️ "+l.commands.userAddedTitle.replace("{0}",addedUser.username)) .setColor(mc) - .setFooter({text:adder.tag,iconURL:adder.displayAvatarURL()}) + .setFooter({text:adder.username,iconURL:adder.displayAvatarURL()}) .setThumbnail(addedUser.displayAvatarURL({extension:"png"})) } @@ -33,7 +33,7 @@ exports.removeEmbed = (removedUser,remover) => { return new embed() .setTitle("⬇️ "+l.commands.userRemovedTitle.replace("{0}",removedUser.username)) .setColor(mc) - .setFooter({text:remover.tag,iconURL:remover.displayAvatarURL()}) + .setFooter({text:remover.username,iconURL:remover.displayAvatarURL()}) .setThumbnail(removedUser.displayAvatarURL({extension:"png"})) } @@ -47,7 +47,7 @@ exports.closeEmbed = (closer,description) => { const embd = new embed() .setTitle("🔒 "+l.commands.closeTitle) .setColor(mc) - .setFooter({text:closer.tag,iconURL:closer.displayAvatarURL()}) + .setFooter({text:closer.username,iconURL:closer.displayAvatarURL()}) if (description) embd.setDescription(description) return embd @@ -63,7 +63,7 @@ exports.autocloseSignalEmbed = (closer,time) => { const embd = new embed() .setTitle("⏰ This ticket got closed by Autoclose!") .setColor(mc) - .setFooter({text:closer.tag,iconURL:closer.displayAvatarURL()}) + .setFooter({text:closer.username,iconURL:closer.displayAvatarURL()}) .setDescription("This ticket has been inactive for `"+time+"h`!") return embd } @@ -77,7 +77,7 @@ exports.deleteEmbed = (deleter) => { return new embed() .setTitle("❌ "+l.commands.deleteTitle) .setColor(mc) - .setFooter({text:deleter.tag,iconURL:deleter.displayAvatarURL()}) + .setFooter({text:deleter.username,iconURL:deleter.displayAvatarURL()}) } /** @@ -90,7 +90,7 @@ exports.renameEmbed = (renamer,newname) => { return new embed() .setTitle("🔄 "+l.commands.renameTitle.replace("{0}",newname)) .setColor(mc) - .setFooter({text:renamer.tag,iconURL:renamer.displayAvatarURL()}) + .setFooter({text:renamer.username,iconURL:renamer.displayAvatarURL()}) } /** @@ -102,7 +102,7 @@ exports.renameEmbed = (renamer,newname) => { return new embed() .setTitle("🔓 "+l.commands.reopenTitle) .setColor(mc) - .setFooter({text:reopener.tag,iconURL:reopener.displayAvatarURL()}) + .setFooter({text:reopener.username,iconURL:reopener.displayAvatarURL()}) } /** @@ -115,7 +115,7 @@ exports.renameEmbed = (renamer,newname) => { return new embed() .setTitle("📌 "+l.commands.claimTitle.replace("{0}",claimer.username)) .setColor(mc) - .setFooter({text:user.tag,iconURL:user.displayAvatarURL()}) + .setFooter({text:user.username,iconURL:user.displayAvatarURL()}) } /** @@ -127,7 +127,7 @@ exports.renameEmbed = (renamer,newname) => { return new embed() .setTitle("🆓 "+l.commands.unclaimTitle) .setColor(mc) - .setFooter({text:unclaimer.tag,iconURL:unclaimer.displayAvatarURL()}) + .setFooter({text:unclaimer.username,iconURL:unclaimer.displayAvatarURL()}) } /** @@ -140,5 +140,5 @@ exports.changeEmbed = (changer,newtype) => { return new embed() .setTitle("🔄 "+l.commands.changeTitle.replace("{0}",newtype)) .setColor(mc) - .setFooter({text:changer.tag,iconURL:changer.displayAvatarURL()}) + .setFooter({text:changer.username,iconURL:changer.displayAvatarURL()}) } \ No newline at end of file diff --git a/core/interactionHandlers/handlers/accepted/claiming.js b/core/interactionHandlers/handlers/accepted/claiming.js index 0f9bcb1..e8fe982 100644 --- a/core/interactionHandlers/handlers/accepted/claiming.js +++ b/core/interactionHandlers/handlers/accepted/claiming.js @@ -45,7 +45,7 @@ module.exports = () => { if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]}) 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.username,iconURL:interaction.user.displayAvatarURL()}) if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){ firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]}) diff --git a/core/reactionRoles.js b/core/reactionRoles.js index c901154..56864bf 100644 --- a/core/reactionRoles.js +++ b/core/reactionRoles.js @@ -53,7 +53,7 @@ module.exports = async () => { option.roles.forEach((role) => { interaction.guild.members.cache.find(u => u.id == user.id).roles.add(role) - log("system","added role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}]) + log("system","added role (reaction roles)",[{key:"user",value:interaction.user.username},{key:"role",value:role}]) const apirole = interaction.guild.roles.cache.find(r => r.id == role) APIEvents.onReactionRole("add","add",apirole,interaction.user,interaction.channel,interaction.guild,new Date()) }) @@ -68,7 +68,7 @@ module.exports = async () => { option.roles.forEach((role) => { interaction.guild.members.cache.find(u => u.id == user.id).roles.remove(role) - log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}]) + log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.username},{key:"role",value:role}]) const apirole = interaction.guild.roles.cache.find(r => r.id == role) APIEvents.onReactionRole("remove","remove",apirole,interaction.user,interaction.channel,interaction.guild,new Date()) }) @@ -84,13 +84,13 @@ module.exports = async () => { if (!interaction.guild.members.cache.find(u => u.id == user.id).roles.cache.has(role)){ interaction.guild.members.cache.find(u => u.id == user.id).roles.add(role) - log("system","added role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}]) + log("system","added role (reaction roles)",[{key:"user",value:interaction.user.username},{key:"role",value:role}]) const apirole = interaction.guild.roles.cache.find(r => r.id == role) APIEvents.onReactionRole("add","add&remove",apirole,interaction.user,interaction.channel,interaction.guild,new Date()) }else { interaction.guild.members.cache.find(u => u.id == user.id).roles.remove(role) - log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}]) + log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.username},{key:"role",value:role}]) const apirole = interaction.guild.roles.cache.find(r => r.id == role) APIEvents.onReactionRole("remove","add&remove",apirole,interaction.user,interaction.channel,interaction.guild,new Date()) } diff --git a/core/slashSystem/slashEnable.js b/core/slashSystem/slashEnable.js index 85ab3c4..20e6f7d 100644 --- a/core/slashSystem/slashEnable.js +++ b/core/slashSystem/slashEnable.js @@ -33,7 +33,7 @@ module.exports = async (invisible) => { //process.stdout.write("[status] there are "+chalk.blue("0 out of 10")+" commands ready! (this can take up to 40 seconds)") if (!invisible){ setInterval(() => { - process.stdout.cursorTo(0) + if (process.stdout && process.stdout.cursorTo) process.stdout.cursorTo(0) process.stdout.write("[status] there are "+chalk.blue(readystats+" out of 13")+" commands ready! (this can take up to 40 seconds)") if (readystats >= 13){ console.log(chalk.green("\nready!")) diff --git a/core/ticketActions/ticketCloser.js b/core/ticketActions/ticketCloser.js index de4cbc0..8780c7b 100755 --- a/core/ticketActions/ticketCloser.js +++ b/core/ticketActions/ticketCloser.js @@ -63,7 +63,7 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => { if (!nomessage){ await channel.send({content:"**"+l.messages.gettingdeleted+"**"}) } - log("system","deleted a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}]) + log("system","deleted a ticket",[{key:"user",value:user.username},{key:"ticket",value:channel.name}]) pendingDelete.push(channel.id) if (!isDatabaseError) storage.set("amountOfUserTickets",getuserID,Number(storage.get("amountOfUserTickets",getuserID)) - 1) @@ -179,7 +179,7 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => { channel.send({embeds:[embed],components:[bot.buttons.close.closeCommandRow]}) } - log("system","closed a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}]) + log("system","closed a ticket",[{key:"user",value:user.username},{key:"ticket",value:channel.name}]) //send api event diff --git a/core/ticketActions/ticketOpener.js b/core/ticketActions/ticketOpener.js index 33e47b7..afe058b 100755 --- a/core/ticketActions/ticketOpener.js +++ b/core/ticketActions/ticketOpener.js @@ -54,7 +54,9 @@ module.exports = () => { await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen}) } catch{} }else if (interaction.isChatInputCommand()){ - await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen}) + try { + await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen}) + } catch{} }else if (interaction.isStringSelectMenu()){ try { await interaction.deferUpdate() @@ -209,7 +211,7 @@ module.exports = () => { firstmsg.pin() }) - log("system","created new ticket",[{key:"ticket",value:ticketName},{key:"user",value:interaction.user.tag}]) + log("system","created new ticket",[{key:"ticket",value:ticketName},{key:"user",value:interaction.user.username}]) require("../api/modules/events").onTicketOpen(interaction.user,ticketChannel,interaction.guild,new Date(),{name:ticketName,status:"open",ticketOptions:currentTicketOptions}) const channelbutton = new discord.ActionRowBuilder() @@ -227,7 +229,13 @@ module.exports = () => { } catch{log("system","failed to send DM")} - if ((interaction.isButton() && config.system.answerInEphemeralOnOpen) || interaction.isChatInputCommand()) interaction.editReply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]}) + if ((interaction.isButton() && config.system.answerInEphemeralOnOpen) || interaction.isChatInputCommand()){ + if (interaction.deferred){ + interaction.editReply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]}) + }else{ + interaction.reply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]}) + } + } }) }else{ diff --git a/core/ticketActions/ticketReopener.js b/core/ticketActions/ticketReopener.js index ee552f2..4e809fa 100755 --- a/core/ticketActions/ticketReopener.js +++ b/core/ticketActions/ticketReopener.js @@ -15,7 +15,7 @@ const pfb = discord.PermissionFlagsBits * @returns */ const reopenTicket = (guild,channel,user) => { - log("system","re-opened a ticket",[{key:"ticket",value:channel.name},{key:"user",value:user.tag}]) + log("system","re-opened a ticket",[{key:"ticket",value:channel.name},{key:"user",value:user.username}]) var permissionsArray = [] diff --git a/core/transcriptSystem/communication/compileJsonV1.js b/core/transcriptSystem/communication/compileJsonV1.js index d2be2cd..5d27012 100644 --- a/core/transcriptSystem/communication/compileJsonV1.js +++ b/core/transcriptSystem/communication/compileJsonV1.js @@ -71,7 +71,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => { const memberColor = msg.member ? msg.member.displayHexColor : "#ffffff" messagesArray.push({ author:{ - name:msg.author.tag, + name:msg.author.username, id:Number(msg.author.id), color:memberColor, pfp:msg.author.displayAvatarURL() @@ -106,7 +106,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => { creatorname:data.ticket.creatorname, creatorid:Number(data.ticket.creatorid), - closedbyname:user.tag, + closedbyname:user.username, closedbyid:Number(user.id), closedtime:data.ticket.closedtime, diff --git a/core/transcriptSystem/communication/compileJsonV2.js b/core/transcriptSystem/communication/compileJsonV2.js index 2a2acff..950b035 100644 --- a/core/transcriptSystem/communication/compileJsonV2.js +++ b/core/transcriptSystem/communication/compileJsonV2.js @@ -264,7 +264,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => { const authorColor = msg.member ? msg.member.displayHexColor.replace("#000000","#ffffff") : "#ffffff" messagesArray.push({ author:{ - name:msg.author.tag, + name:msg.author.username, id:msg.author.id, color:authorColor, pfp:msg.author.displayAvatarURL(), @@ -331,7 +331,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => { creatorid:data.ticket.creatorid, creatorpfp:data.ticket.creatorpfp, - closedbyname:user.tag, + closedbyname:user.username, closedbyid:user.id, closedbypfp:user.displayAvatarURL(), diff --git a/core/transcriptSystem/embeds.js b/core/transcriptSystem/embeds.js index 02e15ec..48f0b54 100644 --- a/core/transcriptSystem/embeds.js +++ b/core/transcriptSystem/embeds.js @@ -23,7 +23,7 @@ exports.beingprocessed = (name,id,rawprocesstime,user) => { const embed = new discord.EmbedBuilder() .setTitle("🧾 "+l.transcripts.title) .setColor(config.color) - .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()}) + .setAuthor({name:user.username,iconURL:user.displayAvatarURL()}) .setFooter({text:name}) .setDescription("`"+l.transcripts.processed+"...`\n"+l.transcripts.wait+"\n\n"+l.transcripts.estimated+": "+processtime) @@ -43,7 +43,7 @@ exports.tsready = (name,id,url,user) => { const embed = new discord.EmbedBuilder() .setTitle("🧾 "+l.transcripts.title) .setColor(config.color) - .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()}) + .setAuthor({name:user.username,iconURL:user.displayAvatarURL()}) .setFooter({text:name}) if (url){ @@ -67,7 +67,7 @@ exports.tserror = (name,id,user,err) => { const embed = new discord.EmbedBuilder() .setTitle("❌ "+l.transcripts.title) .setColor(discord.Colors.Red) - .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()}) + .setAuthor({name:user.username,iconURL:user.displayAvatarURL()}) .setFooter({text:name}) const errDesc = (typeof err == "string") ? "\n"+err : "" diff --git a/core/transcriptSystem/manager.js b/core/transcriptSystem/manager.js index 10cc01a..386b3cf 100644 --- a/core/transcriptSystem/manager.js +++ b/core/transcriptSystem/manager.js @@ -85,7 +85,7 @@ module.exports = async (messages,guild,channel,user,reason) => { }, ticket:{ creatorid:ticketopener.id, - creatorname:ticketopener.tag, + creatorname:ticketopener.username, creatorpfp:ticketopener.displayAvatarURL(), openedtime:opentime.getTime(), diff --git a/core/transcriptSystem/oldTranscript.js b/core/transcriptSystem/oldTranscript.js index 1d1861e..a6b02a2 100755 --- a/core/transcriptSystem/oldTranscript.js +++ b/core/transcriptSystem/oldTranscript.js @@ -47,7 +47,7 @@ exports.createTranscript = async (messagecollection,channel,backup) => { }) const filestring = fileurls.length > 0 ? fileurls.join("\n")+"\n" : "" const msgstats = "files: "+msg.attachments.size+", embeds: "+msg.embeds.length - filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+", "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+"|"+msg.author.tag+"] ["+msgstats+"]\n"+content+"\n"+filestring) + filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+", "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+"|"+msg.author.username+"] ["+msgstats+"]\n"+content+"\n"+filestring) }) if (filearray.length < 2) filearray.push("transcript is empty") diff --git a/core/utils/liveStatus.js b/core/utils/liveStatus.js index 472ab98..5bf3d4a 100644 --- a/core/utils/liveStatus.js +++ b/core/utils/liveStatus.js @@ -176,28 +176,30 @@ exports.liveStatusUploadManager = async (err) => { const result = await uploadLiveStatus({ bot:{ id:client.user.id, - name:client.user.tag, + name:client.user.username, pfp:client.user.displayAvatarURL() }, error:err, openticket:{ config:{ - messages:config.messages, - options:config.options, - transcripts:bot.tsconfig, - system:config.system + //TEMPORARY SOLUTION => AXIOS 414 ERROR! + //messages:config.messages, + //options:config.options, + //transcripts:bot.tsconfig, + //system:config.system }, language:config.languageFile, - version:"3.4.0", + version:"3.4.1", slashcmds:slashMode, transcripts:transcriptMode, plugins:fs.readdirSync("./plugins"), pluginload:globalPluginData }, details:{ - errortime:new Date().getTime(), - actions:this.actionRecorder, - database:fs.readFileSync("./storage/database.json").toString() + errortime:new Date().getTime() + //TEMPORARY SOLUTION => AXIOS 414 ERROR! + //actions:this.actionRecorder, + //database:fs.readFileSync("./storage/database.json").toString() } }) if (!result){ diff --git a/index.js b/index.js index fffbb54..0906a58 100644 --- a/index.js +++ b/index.js @@ -28,7 +28,7 @@ INFORMATION: ============ - Open Ticket v3.4.0 - © DJdj Development + Open Ticket v3.4.1 - © DJdj Development discord: https://discord.dj-dj.be website: https://www.dj-dj.be @@ -370,7 +370,9 @@ process.on("uncaughtException",async (error,origin) => { APIEvents.onError(error.name+": "+error.message,new Date()) //TEMPORARY INTEGRATION FOR LIVESTATUS ERROR UPLOADER: - await require("./core/utils/liveStatus").liveStatusUploadManager(error.name+": "+error.message+" | origin: "+origin+"\n"+error.stack) + try { + await require("./core/utils/liveStatus").liveStatusUploadManager(error.name+": "+error.message+" | origin: "+origin+"\n"+error.stack) + } catch {this.errorLog.log("info","FAILED TO AUTO-REPORT ERROR! (you can ignore this error)")} }) this.actionRecorder.push({ diff --git a/language/arabic.json b/language/arabic.json index 8b90660..558fa49 100644 --- a/language/arabic.json +++ b/language/arabic.json @@ -1,6 +1,6 @@ { "_CREDITS":"ChilledBroke#9986 & M4#5882", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors": { "missingArgsTitle": "قيمة غير صالحة!", diff --git a/language/custom.json b/language/custom.json index 9fcaf16..3e57402 100644 --- a/language/custom.json +++ b/language/custom.json @@ -1,6 +1,6 @@ { "_CREDITS":"DJdj Development", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Invalid Arguments!", diff --git a/language/czech.json b/language/czech.json index d9978ff..d3dea15 100644 --- a/language/czech.json +++ b/language/czech.json @@ -1,6 +1,6 @@ { "_CREDITS":"t0miiis#3022", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Neplatny Argument!", diff --git a/language/danish.json b/language/danish.json index 820bfb9..b4edef5 100644 --- a/language/danish.json +++ b/language/danish.json @@ -1,6 +1,6 @@ { "_CREDITS":"the_gamer#5095", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors": { "missingArgsTitle": "Ugyldigt Argument!", diff --git a/language/dutch.json b/language/dutch.json index decf929..8e7d98d 100644 --- a/language/dutch.json +++ b/language/dutch.json @@ -1,6 +1,6 @@ { "_CREDITS":"DJj123dj#1706", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Onjuiste parameters!", diff --git a/language/english.json b/language/english.json index de9eebc..16ff621 100644 --- a/language/english.json +++ b/language/english.json @@ -1,6 +1,6 @@ { "_CREDITS":"DJdj Development", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Invalid Arguments!", diff --git a/language/french.json b/language/french.json index 177a69f..cfa0a98 100644 --- a/language/french.json +++ b/language/french.json @@ -1,6 +1,6 @@ { "_CREDITS":"Sanke#6086", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Arguments invalides!", diff --git a/language/german.json b/language/german.json index 3f61a12..a43045e 100644 --- a/language/german.json +++ b/language/german.json @@ -1,6 +1,6 @@ { "_CREDITS":"david.#8276 ", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Ungültiges Argument!", diff --git a/language/greek.json b/language/greek.json index f21ef18..4cf2b4e 100644 --- a/language/greek.json +++ b/language/greek.json @@ -1,6 +1,6 @@ { "_CREDITS":"ꙅoᴎɒᎸɘƚꙅ#3744", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Invalid Arguments!", @@ -88,7 +88,7 @@ "deletedby":"Διεγράφη απο", "closedby":"Έκλεισε από", - "modalreason":"Ποιός είναι ο λόγος για να κλείσει το εισιτήριο?", + "modalreason":"Γιατι να κλείσει το εισιτήριο?", "chooseATicket": "Δίαλεξε ενα εισιτήριο" }, "transcripts":{ diff --git a/language/italian.json b/language/italian.json index 4e4e9cf..acf89ec 100644 --- a/language/italian.json +++ b/language/italian.json @@ -1,6 +1,6 @@ { "_CREDITS":"Maurizio#0268", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Argomenti non validi!", diff --git a/language/norwegian.json b/language/norwegian.json index 410e2d5..dfbb52c 100644 --- a/language/norwegian.json +++ b/language/norwegian.json @@ -1,6 +1,6 @@ { "_CREDITS":"NoOneNook#0266", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Ugyldige argumenter!", diff --git a/language/polish.json b/language/polish.json index 8d76c99..e9853c8 100644 --- a/language/polish.json +++ b/language/polish.json @@ -1,6 +1,6 @@ { "_CREDITS":"MKevas#8311", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Nieprawidłowe argumenty!", diff --git a/language/portuguese.json b/language/portuguese.json index 6168019..c906a64 100644 --- a/language/portuguese.json +++ b/language/portuguese.json @@ -1,6 +1,6 @@ { "_CREDITS":"QuirAddon#9778", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Argumentos inválidos!", diff --git a/language/romanian.json b/language/romanian.json index 20734b6..5d2e799 100644 --- a/language/romanian.json +++ b/language/romanian.json @@ -1,6 +1,6 @@ { "_CREDITS":"Sanke#6086", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Argumente Invalide", diff --git a/language/russian.json b/language/russian.json index e123f4b..884853a 100644 --- a/language/russian.json +++ b/language/russian.json @@ -1,6 +1,6 @@ { "_CREDITS":"Apexo#0723", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Неверные аргументы!", diff --git a/language/slovenian.json b/language/slovenian.json index 9fae12a..3dcb218 100644 --- a/language/slovenian.json +++ b/language/slovenian.json @@ -1,6 +1,6 @@ { "_CREDITS":"n1kkec#5341", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Napačen argument!", diff --git a/language/spanish.json b/language/spanish.json index 6bc1357..baa51f5 100644 --- a/language/spanish.json +++ b/language/spanish.json @@ -1,6 +1,6 @@ { "_CREDITS":"Redactado#1673 & josuens14#5267", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"¡Argumentos inválidos!", diff --git a/language/thai.json b/language/thai.json index 0c11f54..9985af3 100644 --- a/language/thai.json +++ b/language/thai.json @@ -1,101 +1,101 @@ { "_CREDITS":"Mods HD#0661", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"อาร์กิวเมนต์ไม่ถูกต้อง!", - "missingArgsDescription":"อาร์กิวเมนต์ไม่ครบ", + "missingArgsDescription":"ขาดอาร์กิวเมนต์", "noPermsTitle":"ไม่มีสิทธิ์!", - "noPermsDescription":"คุณต้องมีสิทธิ์ ADMINISTRATOR หรืออยู่ในรายชื่อบทบาทที่อนุญาต!", + "noPermsDescription":"คุณต้องมีสิทธิ์ `ADMINISTRATOR` หรืออยู่ในรายการบทบาทที่ได้รับอนุญาต!", "noPermsDelete":"เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถลบตั๋วได้!", "chooseFromListTitle":"ID ไม่ถูกต้อง", "chooseFromListDescription":"เลือกหนึ่งใน ID ด้านล่าง:", "boterror":"ข้อผิดพลาดของบอท!", "notInTicketTitle":"คุณไม่ได้อยู่ในตั๋ว!", - "notInTicketDescription":"คำสั่งนี้ไม่สามารถทำงานนอกตั๋วได้!", - "ticketDoesntExist":"ตั๋วนี้ไม่มีอยู่แล้ว!", - "roleDoesntExist":"บทบาทนี้ไม่มีอยู่แล้ว!", - "anotherOption":"ตัวเลือกนี้ไม่ใช่ตั๋วแต่เป็นประเภทอื่น!", - "maxAmountTitle":"จำนวนสูงสุดแล้ว!", - "maxAmountDescription":"คุณได้สร้างตั๋วครบจำนวนที่เราให้สร้างไว้แล้ว\nดังนั้นคุณไม่สามารถสร้างตั๋วใหม่ได้!", - "somethingWentWrong":"เกิดข้อผิดพลาดบางอย่าง!\nโปรดลองอีกครั้งในครั้งถัดไป!" + "notInTicketDescription":"คำสั่งนี้ไม่ทำงานนอกตั๋ว!", + "ticketDoesntExist":"ตั๋วนี้ไม่มีอีกแล้ว!", + "roleDoesntExist":"บทบาทนี้ไม่มีอีกแล้ว!", + "anotherOption":"ตัวเลือกนี้ไม่ใช่ตั๋ว แต่เป็นประเภทอื่น!", + "maxAmountTitle":"ถึงจำนวนสูงสุดแล้ว!", + "maxAmountDescription":"คุณได้ถึงจำนวนสูงสุดของตั๋วที่อนุญาต!\nดังนั้นคุณไม่สามารถสร้างใหม่ได้!", + "somethingWentWrong":"**มีบางอย่างผิดพลาด!**\nกรุณาลองอีกครั้งในภายหลัง!" }, "commands":{ - "userAddedTitle":"เพิ่ม {0} เข้าสู่ตั๋วนี้แล้ว!", - "userRemovedTitle":"นำ {0} ออกจากตั๋วนี้แล้ว!", + "userAddedTitle":"เพิ่ม {0} ในตั๋วนี้!", + "userRemovedTitle":"ลบ {0} ออกจากตั๋วนี้!", "renameTitle":"เปลี่ยนชื่อเป็น {0}!", "closeTitle":"ปิดตั๋วนี้!", "deleteTitle":"กำลังลบตั๋วนี้...", - "reopenTitle":"เปิดตั๋วนี้ใหม่!", - - "claimTitle":"ตั๋วนี้ถูกเรียกเก็บโดย {0}", - "unclaimTitle":"ไม่มีการเรียกเก็บตั๋วนี้อีกต่อไป!", + "reopenTitle":"เปิดตั๋วนี้อีกครั้ง!", + + "claimTitle":"ตั๋วนี้ถูกเรียกขึ้นโดย {0}", + "unclaimTitle":"ตั๋วนี้ไม่ได้ถูกเรียกขึ้นแล้ว!", "changeTitle":"เปลี่ยนประเภทตั๋วเป็น {0}!", - + "statsTitle":"นี่คือสถิติสำหรับ {0}!", "autocloseTitle":"ตั๋วนี้จะถูกปิดอัตโนมัติหลังจาก {0}!", "autocloseRejectTitle":"ตั๋วนี้จะไม่ถูกปิดอัตโนมัติอีกต่อไป!", - "autocloseWarn":"สิ่งนี้มีผลต่อตั๋วที่ไม่มีการเคลื่อนไหว!", - - "goToTicket":"ไปยังตั๋ว", - "ticketWarning":"Embed อยู่ในข้อความข้างล่าง", - "maxTicketWarning":"**คำเตือน:** _คุณสามารถสร้างตั๋วได้สูงสุด {0} ตั๋วต่อครั้ง!_" + "autocloseWarn":"ส่วนนี้มีผลกับตั๋วที่ไม่ได้ใช้งาน!", + + "goToTicket":"ไปที่ตั๋ว", + "ticketWarning":"Embed อยู่ในข้อความด้านล่าง!", + "maxTicketWarning":"**คำเตือน:** _คุณสามารถสร้างได้ {0} ตั๋วในครั้งเดียว!_" }, "helpMenu":{ - "title":"คำสั่งที่มีอยู่:", + "title":"คำสั่งที่ใช้ได้:", "header1":"**ไปที่ {0} เพื่อสร้างตั๋ว!**\n\n", "header2":"**ใช้คำสั่ง `/new` หรือ `/ticket` เพื่อสร้างตั๋ว!**\n\n", - - "msgCmd":"แสดง Embed พร้อมปุ่ม (สำหรับแอดมินเท่านั้น)", - "renameCmd":"เปลี่ยนชื่อตั๋ว (ห้ามมีช่องว่าง)", + + "msgCmd":"สร้าง embed พร้อมปุ่ม (เฉพาะผู้ดูแลระบบ)", + "renameCmd":"เปลี่ยนชื่อตั๋ว (ไม่มีช่องว่าง)", "closeCmd":"ปิดตั๋ว", "deleteCmd":"ลบตั๋ว", - "addCmd":"เพิ่มผู้ใช้เข้าสู่ตั๋ว", - "removeCmd":"นำผู้ใช้ออกจากตั๋ว", - "reopenCmd":"เปิดตั๋วใหม่หลังจากถูกปิด", + "addCmd":"เพิ่มผู้ใช้ในตั๋ว", + "removeCmd":"ลบผู้ใช้ออกจากตั๋ว", + "reopenCmd":"เปิดตั๋วอีกครั้งหลังจากถูกปิด", "changeCmd":"เปลี่ยนประเภทตั๋ว", - "claimCmd":"เรียกเก็บตั๋ว", - "unclaimCmd":"ยกเลิกการเรียกเก็บตั๋ว", - "statsCmd":"ดูสถิติของตั๋ว", - "autocloseCmd":"ตั้งเวลาปิดตั๋วโดยอัตโนมัติ" + "claimCmd":"เรียกขึ้นตั๋ว", + "unclaimCmd":"ยกเลิกการเรียกขึ้นตั๋ว", + "statsCmd":"ดูสถิติตั๋ว", + "autocloseCmd":"ตั้งค่าการปิดตั๋วอัตโนมัติ" }, "buttons":{ "close":"ปิดตั๋ว", "delete":"ลบตั๋ว", - "reopen":"เปิดตั๋วใหม่", - "closeWithReason":"ปิดตั๋วพร้อมเหตุผล" + "reopen":"เปิดตั๋วอีกครั้ง", + "closeWithReason":"ปิดด้วยเหตุผล" }, "messages":{ - "closedDescription":"ตอนนี้เฉพาะผู้ดูแลเท่านั้นที่สามารถพูดได้ในตั๋วนี้!\n\n*คลิกที่ปุ่มด้านล่างเพื่อลบหรือเปิดตั๋วใหม่!*", + "closedDescription":"เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถพูดคุยในตั๋วนี้ได้!\n\n*คลิกที่ปุ่มด้านล่างเพื่อลบหรือเปิดตั๋วนี้อีกครั้ง!*", "createdTitle":"สร้างตั๋วแล้ว!", - "createdDescription":"ตั๋วของคุณถูกสร้างเรียบร้อยแล้ว คุณจะได้รับการแจ้งเตือนด้วยการพิมพ์ข้อความด้วย @ ตามตั๋วของคุณ!", - + "createdDescription":"ตั๋วของคุณถูกสร้างแล้ว คุณสามารถตรวจสอบได้จากการแจ้งเตือน!", + "newTicketDmTitle":"ตั๋วใหม่!", - "closedTicketDmTitle":"ตั๋วถูกปิด!", - "deletedTicketDmTitle":"ตั๋วถูกลบ!", + "closedTicketDmTitle":"ปิดตั๋ว!", + "deletedTicketDmTitle":"ลบตั๋ว!", "closedTicketDmDescription":"ตั๋วของคุณถูกปิด!", "deletedTicketDmDescription":"ตั๋วของคุณถูกลบ!", - "reopenTicketDmTitle":"ตั๋วถูกเปิดใหม่!", - "reopenTicketDmDescription":"ตั๋วของคุณถูกเปิดใหม่!", - + "reopenTicketDmTitle":"เปิดตั๋วอีกครั้ง!", + "reopenTicketDmDescription":"ตั๋วของคุณถูกเปิดอีกครั้ง!", + "chooseCategory":"เลือกหมวดหมู่:", "gettingdeleted":"กำลังลบตั๋ว...", - + "none":"ไม่มี", "reason":"เหตุผล", "createdat":"สร้างเมื่อ", "openedby":"เปิดโดย", - "deletedby":"ลบโดย", - "closedby":"ปิดโดย", - - "modalreason":"เหตุผลที่ต้องการปิดตั๋ว?", - "chooseATicket": "เลือกตั๋ว" + "deletedby":"ถูกลบโดย", + "closedby":"ถูกปิดโดย", + + "modalreason":"เหตุผลในการปิดตั๋วนี้คืออะไร?", + "chooseATicket": "เลือกตั๋ว" }, "transcripts":{ - "title":"บันทึกข้อความ", - "processed":"กำลังประมวลผลบันทึกข้อความ", - "wait":"โปรดรอสักครู่!", + "title":"บันทึกการสนทนา", + "processed":"บันทึกการสนทนากำลังดำเนินการ", + "wait":"กรุณารอ!", "estimated":"เวลาโดยประมาณ", - "available":"บันทึกข้อความพร้อมใช้งานที่นี่" + "available":"บันทึกการสนทนาสามารถใช้งานได้ที่นี่" } } \ No newline at end of file diff --git a/language/turkish.json b/language/turkish.json index 459b42f..27718bf 100644 --- a/language/turkish.json +++ b/language/turkish.json @@ -1,6 +1,6 @@ { "_CREDITS":"Hydrâelčhâvø#1575", - "_INFO":"This file is a translation for open ticket 3.4.0", + "_INFO":"This file is a translation for open ticket 3.4.1", "errors":{ "missingArgsTitle":"Geçersiz argümanlar!", diff --git a/language/ukrainian.json b/language/ukrainian.json new file mode 100644 index 0000000..1ff55c2 --- /dev/null +++ b/language/ukrainian.json @@ -0,0 +1,101 @@ +{ + "_CREDITS":"Anderskiy#4093", + "_INFO":"Цей файл є перекладом для open ticket 3.4.1", + + "errors":{ + "missingArgsTitle":"Невірні аргументи!", + "missingArgsDescription":"Відсутні аргументи!", + "noPermsTitle":"Відсутні права!", + "noPermsDescription":"Вам потрібно право `ADMINISTRATOR` або бути в списку дозволених ролей!", + "noPermsDelete":"Тільки адміни можуть видаляти тікети!", + "chooseFromListTitle":"Недійсний ID", + "chooseFromListDescription":"Виберіть один із наведених нижче id:", + "boterror":"Помилка боту!", + "notInTicketTitle":"Вас немає в тікеті!", + "notInTicketDescription":"Ця команда не працює поза тікетами!", + "ticketDoesntExist":"Цей тікет більше не існує!", + "roleDoesntExist":"Ця роль більше не існує!", + "anotherOption":"Це не є тікетом, а є іншим типом!", + "maxAmountTitle":"Досягнуто максимальної кількості!", + "maxAmountDescription":"Ви досягли максимально дозволеної кількості тікетів!\nТож ви не можете створити новий!", + "somethingWentWrong":"**Щось пішло не так!**\nБудь ласка, спробуйте ще раз!" + }, + "commands":{ + "userAddedTitle":"Додано {0} до цього тікету!", + "userRemovedTitle":"Видалено {0} з цього тікету!", + "renameTitle":"Змінено ім'я на {0}!", + "closeTitle":"Тікет закритий!", + "deleteTitle":"Видаляємо тікет", + "reopenTitle":"Знову відкриваємо тікет!", + + "claimTitle":"Цей тікет узяв {0}", + "unclaimTitle":"Цей тікет ніким не зайнятий!", + "changeTitle":"Тип тікету змінено на {0}!", + + "statsTitle":"Ось статистика для {0}!", + "autocloseTitle":"Цей тікет буде автоматично закрито після {0}!", + "autocloseRejectTitle":"Цей тікет більше не закриватиметься автоматично!", + "autocloseWarn":"Це стосується лише неактивних тікетів!", + + "goToTicket":"перейти до тікету", + "ticketWarning":"Ембед знаходиться в повідомленні нижче!", + "maxTicketWarning":"**Попередження:** _Ви можете створити лише стільки квитків за раз: {0}!_" + }, + "helpMenu":{ + "title":"Доступні команди:", + "header1":"**Перейдіть до {0}, щоб створити тікет!**\n\n", + "header2":"**Виконайте команду `/new` або `/ticket`, щоб створити тікет!**\n\n", + + "msgCmd":"Створити ембед з кнопками. (тільки адміністратори)", + "renameCmd":"Перейменувати тікет. (без пробілів)", + "closeCmd":"Закрити тікет.", + "deleteCmd":"Видалити тікет.", + "addCmd":"Додати користувача до тікету.", + "removeCmd":"Видалити користувача з тікету.", + "reopenCmd":"Повторне відкриття тікету після його закриття.", + "changeCmd":"Змінити тіп тикету.", + "claimCmd":"Узяти тікет.", + "unclaimCmd":"Відмовитися від тікету.", + "statsCmd":"Переглянути статистику тікету.", + "autocloseCmd":"Встановіть таймер для автоматичного закриття квитка" + }, + "buttons":{ + "close":"Закрити тікет", + "delete":"Видалити тікет", + "reopen":"Відкрити тікет", + "closeWithReason":"Закрити з причиною" + }, + "messages":{ + "closedDescription":"Зараз лише адміністратори можуть говорити в цьому тікеті!\n\n*Натисніть кнопку нижче, щоб видалити або повторно відкрити цей тікет!*", + "createdTitle":"Тікет створено!", + "createdDescription":"Ваш тікет створено, ви можете визначити його за допомогою пінгу!", + + "newTicketDmTitle":"Новий тікет!", + "closedTicketDmTitle":"Тікет закрито!", + "deletedTicketDmTitle":"Тікет видалено!", + "closedTicketDmDescription":"Твій тікет закрито!", + "deletedTicketDmDescription":"Твій тікет видалено!", + "reopenTicketDmTitle":"Тікет відкритий!", + "reopenTicketDmDescription":"Твій тікет відкритий!", + + "chooseCategory":"виберіть категорію:", + "gettingdeleted":"Тікет видаляється...", + + "none":"пусто", + "reason":"причина", + "createdat":"створений", + "openedby":"відкритий", + "deletedby":"видалений", + "closedby":"закритий", + + "modalreason":"Яка причина закриття цього тікету?", + "chooseATicket": "Виберіть тікет" + }, + "transcripts":{ + "title":"Транскрипція", + "processed":"Ця транскрипція обробляється", + "wait":"Будь-ласка почекайте!", + "estimated":"Розрахунковий час", + "available":"Транскрипція доступна тут" + } +} \ No newline at end of file diff --git a/otWIKI.png b/otWIKI.png deleted file mode 100644 index eb0815a2e5086f3d07b3dd996bd38966e314b4fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66560 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 h7zWIk&2fJl& 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 diff --git a/package.json b/package.json index 43ff6f9..ff238b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-ticket", - "version": "3.4.0", + "version": "3.4.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": {