diff --git a/.eggs/README.md b/.eggs/README.md index 0342bc9..2982f9d 100644 --- a/.eggs/README.md +++ b/.eggs/README.md @@ -2,7 +2,7 @@ Open Ticket Logo [![discord](https://img.shields.io/badge/discord-support%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) -[![version](https://img.shields.io/badge/version-4.0.5-brightgreen.svg?style=flat-square)](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.5) +[![version](https://img.shields.io/badge/version-4.0.6-brightgreen.svg?style=flat-square)](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.6) [![Sponsor DJj123dj](https://img.shields.io/badge/sponsor-DJj123dj-ea4aaa?style=flat-square&logo=githubsponsors)](https://github.com/sponsors/DJj123dj) [![Open Ticket supports Pterodactyl Eggs!](https://img.shields.io/badge/pterodactyl-supported-10539F?style=flat-square&logo=pterodactyl)](.eggs/README.md) @@ -20,6 +20,9 @@ It's recommended to provide at least `1GB` of **Memory/RAM** and `5GB` of **disk [**`openticket-egg-main.json` (Recommended)**](openticket-egg-main.json) - This egg will use the `main` branch of Open Ticket. +[**`openticket-egg-v4.0.6.json`**](openticket-egg-v4.0.6.json) +- This egg will always use Open Ticket `v4.0.6`. Open Ticket updates will not have an effect on this egg. + [**`openticket-egg-v4.0.5.json`**](openticket-egg-v4.0.5.json) - This egg will always use Open Ticket `v4.0.5`. Open Ticket updates will not have an effect on this egg. diff --git a/.eggs/openticket-egg-v4.0.6.json b/.eggs/openticket-egg-v4.0.6.json new file mode 100644 index 0000000..51d01cb --- /dev/null +++ b/.eggs/openticket-egg-v4.0.6.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-03-16T18:10:18+01:00", + "name": "Open Ticket (v4.0.6)", + "author": "support@dj-dj.be", + "description": "This is the official Pterodactyl egg for Open Ticket v4.0.6, the most advanced & customisable discord ticket bot that you will ever find! You can customise up to 300+ variables! This includes Html Transcripts, Advanced Plugins, Custom Embeds, Questions\/Modals, Stats & more!", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:nodejs_20": "ghcr.io\/parkervcp\/yolks:nodejs_20" + }, + "file_denylist": [], + "startup": "if [[ ! -z ${NODE_PACKAGES} ]]; then npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then npm install; fi; node \"\/home\/container\/index.js\" ${NODE_FLAGS};", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"STARTUP INFO:\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.0.6)\r\n# Inspired by: Node.js Installation Script\r\n# \u00a9 DJdj Development\r\n\r\necho -e \"[OT INSTALLER] installing dependencies. please wait...\"\r\napt update\r\napt install -y git curl\r\n\r\necho -e \"[OT INSTALLER] updating npm. please wait...\"\r\nnpm install npm@latest --location=global\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBRANCH=\"v4.0.6\"\r\n\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"[OT INSTALLER] \/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \"[OT INSTALLER] .git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"[OT INSTALLER] loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"[OT INSTALLER] files found with no git config\"\r\n echo -e \"[OT INSTALLER] closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"https:\/\/github.com\/open-discord-bots\/open-ticket.git\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"[OT INSTALLER] \/mnt\/server is empty.\"\r\n echo -e \"[OT INSTALLER] cloning files into repo.\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"[OT INSTALLER] cloning default branch\"\r\n git clone https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n else\r\n echo -e \"[OT INSTALLER] cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n fi\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing Open Ticket node.js packages.\"\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --omit=dev\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing custom node.js packages.\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\necho -e \"[OT INSTALLER] install complete!\"\r\nexit 0", + "container": "node:latest", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Additional Npm Packages", + "description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.", + "env_variable": "NODE_PACKAGES", + "default_value": "", + "user_viewable": false, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Startup Flags", + "description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.", + "env_variable": "NODE_FLAGS", + "default_value": "", + "user_viewable": false, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Uninstall Npm Packages", + "description": "A list of npm packages to uninstall. Separate by spaces.", + "env_variable": "UNNODE_PACKAGES", + "default_value": "", + "user_viewable": false, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 953ff77..211afa5 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,7 +1,7 @@ # Contributing Guidelines Open Ticket Logo -[![discord](https://img.shields.io/badge/discord-support%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-4.0.5-brightgreen.svg?style=flat-square)](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.5) [![Sponsor DJj123dj](https://img.shields.io/badge/sponsor-DJj123dj-ea4aaa?style=flat-square&logo=githubsponsors)](https://github.com/sponsors/DJj123dj) +[![discord](https://img.shields.io/badge/discord-support%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-4.0.6-brightgreen.svg?style=flat-square)](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.6) [![Sponsor DJj123dj](https://img.shields.io/badge/sponsor-DJj123dj-ea4aaa?style=flat-square&logo=githubsponsors)](https://github.com/sponsors/DJj123dj) These are the Contributing Guidelines of Open Ticket!
Here you can find everything you need to know about contributing to Open Ticket.
diff --git a/.github/SECURITY.md b/.github/SECURITY.md index cda1f14..5dac9d6 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -20,14 +20,14 @@ This list will be updated on every release. | Version | Supported | Notes | |------------|-----------|------------------------------------------| | 4.1.0 | 🟦 | | +| 4.0.6 | ✅ | | | 4.0.5 | ✅ | | -| 4.0.4 | ✅ | | -| 4.0.3 | ✅ | Transcripts v2.0 (Offline August 2025) | -| 4.0.2 | 🚧 | Major discord.js bug | -| 4.0.1 | 🚧 | | -| 4.0.0 | 🚧 | Supported until June 2025 (LTS) | -| 3.5.9 | 🟧 | Documentation Only | -| < 3.5.9 | ❌ | | +| 4.0.4 | ✅ | Supported until July 2025 (LTS) | +| 4.0.3 | 🚧 | Transcripts v2.0 (Offline August 2025) | +| 4.0.2 | 🟧 | Documentation Only (discord.js bug) | +| 4.0.1 | 🟧 | Documentation Only | +| 4.0.0 | 🟧 | Documentation Only | +| < 4.0.0 | ❌ | | ### 🕷️ Reporting Vulnerabilities You can report vulnerabilities, errors & bugs using one of the following methods: diff --git a/README.md b/README.md index 2ce9e70..f3e92ef 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@
Powered By
Open Ticket
Discord Invite Link -Open Ticket Version +Open Ticket Version Open Ticket Documentation Open Ticket License Open Ticket Stars @@ -20,7 +20,7 @@

Open Ticket is the most advanced & customisable discord ticket bot available! You are able to customise up to 300+ settings and aspects! This includes Html Transcripts, Advanced Plugins, Custom Embeds, Questions/Modals, Stats & more! -The bot is translated in more than 27 Languages and has been battle tested in large Discord servers! If you need any help, feel free to join our discord server! +The bot is translated in more than 28 Languages and has been battle tested in large Discord servers! If you need any help, feel free to join our discord server!

⭐️ Help us grow by giving a star! ⭐️

@@ -32,7 +32,7 @@ The bot is translated in more than 27 Languages and has been battle - **📈 scalable** - Open Ticket is made to handle huge servers! (Already tested in **servers with 100k members**) - **📄 HTML transcripts** - Make use of the most customisable, beautiful and easy-to-use HTML Transcripts! - **✅ ticket actions** - Close, Reopen, Delete, Claim, Pin, Rename & Move all your tickets! -- **🇬🇧 translation** - Open Ticket has been translated in more than **27 languages** by our community! +- **🇬🇧 translation** - Open Ticket has been translated in more than **28 languages** by our community! - **🎨 customisation** - Open Ticket has been created around customisation, everything can be customised! - **🖥️ interactions** - The bot has full support for Buttons, Dropdowns, Slash Commands and Modals! - **∞ unlimited** - Create an infinite amount of tickets & panels! @@ -93,6 +93,13 @@ A big thanks to all our sponsors! Without them, it wouldn't be possible to creat > - Fix these errors and restart the bot. > 6. Enjoy using Open Ticket! > ### [📔 Visit Documentation](https://otdocs.dj-dj.be) +> +> ### 🖥️ Recommended Hostings +> - [⭐ **Peakhosting.nl**](https://peakhosting.nl/) - Official support for Open Ticket pterodactyl eggs. +> - **Any Pterodactyl-Based Panel** - Easy installation & configuration. +> - **A Virtual Private Server (VPS)** - Extra customisation & more stability. Recommended for large servers. +> +> *❤️ Want to display your hosting here? Contact us in our [Discord server](https://discord.dj-dj.be)!* ## 📸 Preview An example of a panel. @@ -147,6 +154,7 @@ Without our translators, it wouldn't be possible to translate Open Ticket in so |🟢 |🇵🇱 Polish |danoglez | |🟢 |🇳🇴 Norwegian |NoOneNook | |🟢 |🇸🇪 Swedish |NoOneNook | +|🟢 |🇮🇷 Persian |dysashop & zhavis | |🤖 |🇪🇪 Estonian |iamnotmega | |🤖 |🇫🇮 Finnish |iamnotmega | |🤖 |🇷🇺 Russian |NoOneNook | @@ -159,7 +167,6 @@ Without our translators, it wouldn't be possible to translate Open Ticket in so |🔴 |🇸🇮 Slovenian |[⭐ Contribute!](.github/CONTRIBUTING.md)| |🔴 |🇬🇷 Greek |[⭐ Contribute!](.github/CONTRIBUTING.md)| |🔴 |❓ Kurdish |[⭐ Contribute!](.github/CONTRIBUTING.md)| -|🔴 |❓ Persian |[⭐ Contribute!](.github/CONTRIBUTING.md)| ## ⭐️ Star History Please give this repository a star if you like it. diff --git a/config/general.json b/config/general.json index 2d8fe37..0ef5399 100644 --- a/config/general.json +++ b/config/general.json @@ -2,7 +2,7 @@ "_INFO":{ "support":"https://otdocs.dj-dj.be", "discord":"https://discord.dj-dj.be", - "version":"open-ticket-v4.0.5" + "version":"open-ticket-v4.0.6" }, "token":"your bot token here! (or leave empty when using 'tokenFromENV')", diff --git a/config/panels.json b/config/panels.json index 3017154..04032b2 100644 --- a/config/panels.json +++ b/config/panels.json @@ -17,7 +17,7 @@ "image":"https://www.example.com/image.png (or leave empty)", "thumbnail":"https://www.example.com/image.png (or leave empty)", - "footer":"Open Ticket v4.0.5 (or leave empty)", + "footer":"Open Ticket v4.0.6 (or leave empty)", "fields":[ {"name":"field name","value":"field value","inline":false} ], diff --git a/index.js b/index.js index 8480e05..3da4c05 100644 --- a/index.js +++ b/index.js @@ -14,7 +14,7 @@ process.argv.push(...flags) ██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██║██║ ██╔═██╗ ██╔══╝ ██║ ╚██████╔╝██║ ███████╗██║ ╚████║ ██║ ██║╚██████╗██║ ██╗███████╗ ██║ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝ - v4.0.5 - Made by DJj123dj & Contributors + v4.0.6 - Made by DJj123dj & Contributors Discord: https://discord.dj-dj.be Docs: https://otdocs.dj-dj.be diff --git a/languages/arabic.json b/languages/arabic.json index 57b279b..3983fb2 100644 --- a/languages/arabic.json +++ b/languages/arabic.json @@ -1,6 +1,6 @@ { "_TRANSLATION": { - "otversion": "v4.0.5", + "otversion": "v4.0.6", "translators": ["palestinian"], "lastedited": "06/12/2024", "language": "Arabic", diff --git a/languages/catalan.json b/languages/catalan.json index f41e694..7ddfb07 100644 --- a/languages/catalan.json +++ b/languages/catalan.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["guillee3"], "lastedited":"21/08/2024", "language":"Catalan", diff --git a/languages/custom.json b/languages/custom.json index dda25a6..a8d5948 100644 --- a/languages/custom.json +++ b/languages/custom.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["DJj123dj"], "lastedited":"21/08/2024", "language":"Custom", diff --git a/languages/czech.json b/languages/czech.json index f71e5c9..31645e1 100644 --- a/languages/czech.json +++ b/languages/czech.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["spyeye_"], "lastedited":"21/08/2024", "language":"Czech", diff --git a/languages/danish.json b/languages/danish.json index 557e8f6..d9d09d1 100644 --- a/languages/danish.json +++ b/languages/danish.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["the_gamer"], "lastedited":"26/09/2024", "language":"Danish", diff --git a/languages/dutch.json b/languages/dutch.json index 5a24d34..ff24178 100644 --- a/languages/dutch.json +++ b/languages/dutch.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["DJj123dj"], "lastedited":"21/08/2024", "language":"Dutch", diff --git a/languages/english.json b/languages/english.json index afb861e..9508ac9 100644 --- a/languages/english.json +++ b/languages/english.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["DJj123dj"], "lastedited":"21/08/2024", "language":"English", diff --git a/languages/estonian.json b/languages/estonian.json index 7572e45..65fa34e 100644 --- a/languages/estonian.json +++ b/languages/estonian.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["iamnotmega","ChatGPT"], "lastedited":"21/10/2024", "language":"Estonian", diff --git a/languages/finnish.json b/languages/finnish.json index 94f514d..d337f18 100644 --- a/languages/finnish.json +++ b/languages/finnish.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["iamnotmega","ChatGPT"], "lastedited":"21/10/2024", "language":"Finnish", diff --git a/languages/french.json b/languages/french.json index 1c4452e..e7ec744 100644 --- a/languages/french.json +++ b/languages/french.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["guillee3"], "lastedited":"04/12/2024", "language":"French", diff --git a/languages/german.json b/languages/german.json index 0242724..bfedcf0 100644 --- a/languages/german.json +++ b/languages/german.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["benzorich"], "lastedited":"06/10/2024", "language":"German", diff --git a/languages/hindi.json b/languages/hindi.json index f6183d8..ebcdbb0 100644 --- a/languages/hindi.json +++ b/languages/hindi.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["an_developer"], "lastedited":"14/12/2024", "language":"Hindi", diff --git a/languages/hungarian.json b/languages/hungarian.json index fd3e653..1005a93 100644 --- a/languages/hungarian.json +++ b/languages/hungarian.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["Kornel0706"], "lastedited":"22/08/2024", "language":"Hungarian", diff --git a/languages/indonesian.json b/languages/indonesian.json index 938e53b..e68dbaa 100644 --- a/languages/indonesian.json +++ b/languages/indonesian.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["erxg"], "lastedited":"25/08/2024", "language":"Indonesian", diff --git a/languages/italian.json b/languages/italian.json index 1a82891..e27f75c 100644 --- a/languages/italian.json +++ b/languages/italian.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["fraden1mvp."], "lastedited":"08/10/2024", "language":"Italian", diff --git a/languages/latvian.json b/languages/latvian.json index dde15dc..6e1b6ee 100644 --- a/languages/latvian.json +++ b/languages/latvian.json @@ -1,6 +1,6 @@ { "_TRANSLATION": { - "otversion": "v4.0.5", + "otversion": "v4.0.6", "translators": ["NoOneNook"], "lastedited": "25/03/2025", "language": "Latvian", diff --git a/languages/lithuanian.json b/languages/lithuanian.json index c6b594d..8433162 100644 --- a/languages/lithuanian.json +++ b/languages/lithuanian.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["TsgIndrius"], "lastedited":"26/01/2025", "language":"Lithuanian", diff --git a/languages/norwegian.json b/languages/norwegian.json index 09817d4..da570fa 100644 --- a/languages/norwegian.json +++ b/languages/norwegian.json @@ -1,6 +1,6 @@ { "_TRANSLATION": { - "otversion": "v4.0.5", + "otversion": "v4.0.6", "translators": ["NoOneNook"], "lastedited": "25/03/2025", "language": "Norwegian", @@ -92,138 +92,138 @@ "dropdownOption": "Et panel med nedtrekksmeny aktivert kan kun inneholde alternativer av typen 'sak'!" } }, - "actions": { - "buttons": { - "create": "Opprett Sak", - "close": "Lukk Sak", - "delete": "Slett Sak", - "reopen": "Gjenåpne Sak", - "claim": "Ta Sak", - "unclaim": "Frigi Sak", - "pin": "Fest Sak", - "unpin": "Løsne Sak", - "clear": "Slett Saker", - "helpSwitchSlash": "Vis Skråstrekskommandoer", - "helpSwitchText": "Vis Tekstkommandoer", - "helpPage": "Side {0}", - "withReason": "Med Årsak", - "withoutTranscript": "Uten Utskrift" - }, - "titles": { - "created": "Sak Opprettet", - "close": "Sak Lukket", - "delete": "Sak Slettet", - "reopen": "Sak Gjenåpnet", - "claim": "Sak Tatt", - "unclaim": "Sak Frigitt", - "pin": "Sak Festet", - "unpin": "Sak Løsnet", - "rename": "Sak Omdøpt", - "move": "Sak Flyttet", - "add": "Bruker Lagt Til Sak", - "remove": "Bruker Fjernet Fra Sak", - - "help": "Tilgjengelige Kommandoer", - "statsReset": "Tilbakestill Statistikk", - "blacklistAdd": "Bruker Svartelistet", - "blacklistRemove": "Bruker Fjernet Fra Svarteliste", - "blacklistGet": "Svartelistet Bruker", - "blacklistView": "Gjeldende Svarteliste", - "blacklistAddDm": "Lagt Til Svarteliste", - "blacklistRemoveDm": "Fjernet Fra Svarteliste", - "clear": "Saker Slettet", - "roles": "Roller Oppdatert", - - "autoclose": "Sak Autolukket", - "autocloseEnabled": "Autolukking Aktivert", - "autocloseDisabled": "Autolukking Deaktivert", - "autodelete": "Sak Autoslettet", - "autodeleteEnabled": "Autosletting Aktivert", - "autodeleteDisabled": "Autosletting Deaktivert" - }, - "descriptions": { - "create": "Din sak er blitt opprettet. Klikk på knappen nedenfor for å få tilgang til den!", - "close": "Saken er blitt lukket vellykket!", - "delete": "Saken er blitt slettet vellykket!", - "reopen": "Saken er blitt gjenåpnet vellykket!", - "claim": "Saken er blitt tatt vellykket!", - "unclaim": "Saken er blitt frigitt vellykket!", - "pin": "Saken er blitt festet vellykket!", - "unpin": "Saken er blitt løsnet vellykket!", - "rename": "Saken er blitt omdøpt til {0} vellykket!", - "move": "Saken er blitt flyttet til {0} vellykket!", - "add": "{0} er blitt lagt til saken vellykket!", - "remove": "{0} er blitt fjernet fra saken vellykket!", - - "helpExplanation": "`` => påkrevd parameter\n`[navn]` => valgfri parameter", - "statsReset": "Botens statistikk er blitt tilbakestilt vellykket!", - "statsError": "Kan ikke vise saksstatistikk!\n{0} er ikke en sak!", - "blacklistAdd": "{0} er blitt svartelistet vellykket!", - "blacklistRemove": "{0} er blitt fjernet fra svartelisten vellykket!", - "blacklistGetSuccess": "{0} er for øyeblikket svartelistet!", - "blacklistGetEmpty": "{0} er for øyeblikket ikke svartelistet!", - "blacklistViewEmpty": "Ingen er svartelistet ennå!", - "blacklistViewTip": "Bruk \"/blacklist add\" for å svarteliste en bruker!", - "clearVerify": "Er du sikker på at du vil slette flere saker?\nDenne handlingen kan ikke angres!", - "clearReady": "{0} saker er blitt slettet vellykket!", - "rolesEmpty": "Ingen roller er blitt oppdatert!", - - "autocloseLeave": "Denne saken er blitt autolukket fordi oppretteren forlot serveren!", - "autocloseTimeout": "Denne saken er blitt autolukket fordi den har vært inaktiv i mer enn `{0}t`!", - "autodeleteLeave": "Denne saken er blitt autoslettet fordi oppretteren forlot serveren!", - "autodeleteTimeout": "Denne saken er blitt autoslettet fordi den har vært inaktiv i mer enn `{0} dager`!", - "autocloseEnabled": "Autolukking er blitt aktivert i denne saken!\nDen vil bli lukket når den er inaktiv i mer enn `{0}t`!", - "autocloseDisabled": "Autolukking er blitt deaktivert i denne saken!\nDen vil ikke lenger bli lukket automatisk!", - "autodeleteEnabled": "Autosletting er blitt aktivert i denne saken!\nDen vil bli slettet når den er inaktiv i mer enn `{0} dager`!", - "autodeleteDisabled": "Autosletting er blitt deaktivert i denne saken!\nDen vil ikke lenger bli slettet automatisk!", - - "ticketMessageLimit": "Du kan kun opprette {0} sak(er) om gangen!", - "ticketMessageAutoclose": "Denne saken vil bli autolukket når den er inaktiv i {0}t!", - "ticketMessageAutodelete": "Denne saken vil bli autoslettet når den er inaktiv i {0} dager!", - "panelReady": "Du finner panelet nedenfor!\nDenne meldingen kan nå slettes!" - }, - "modal": { - "closePlaceholder": "Hvorfor lukket du denne saken?", - "deletePlaceholder": "Hvorfor slettet du denne saken?", - "reopenPlaceholder": "Hvorfor gjenåpnet du denne saken?", - "claimPlaceholder": "Hvorfor tok du denne saken?", - "unclaimPlaceholder": "Hvorfor frigjorde du denne saken?", - "pinPlaceholder": "Hvorfor festet du denne saken?", - "unpinPlaceholder": "Hvorfor løsnet du denne saken?" - }, - "logs": { - "createLog": "En ny sak er blitt opprettet av {0}!", - "closeLog": "Denne saken er blitt lukket av {0}!", - "closeDm": "Din sak er blitt lukket på vår server!", - "deleteLog": "Denne saken er blitt slettet av {0}!", - "deleteDm": "Din sak er blitt slettet på vår server!", - "reopenLog": "Denne saken er blitt gjenåpnet av {0}!", - "reopenDm": "Din sak er blitt gjenåpnet på vår server!", - "claimLog": "Denne saken er blitt tatt av {0}!", - "claimDm": "Din sak er blitt tatt på vår server!", - "unclaimLog": "Denne saken er blitt frigitt av {0}!", - "unclaimDm": "Din sak er blitt frigitt på vår server!", - "pinLog": "Denne saken er blitt festet av {0}!", - "pinDm": "Din sak er blitt festet på vår server!", - "unpinLog": "Denne saken er blitt løsnet av {0}!", - "unpinDm": "Din sak er blitt løsnet på vår server!", - "renameLog": "Denne saken er blitt omdøpt til {0} av {1}!", - "renameDm": "Din sak er blitt omdøpt til {0} på vår server!", - "moveLog": "Denne saken er blitt flyttet til {0} av {1}!", - "moveDm": "Din sak er blitt flyttet til {0} på vår server!", - "addLog": "{0} er blitt lagt til denne saken av {1}!", - "addDm": "{0} er blitt lagt til din sak på vår server!", - "removeLog": "{0} er blitt fjernet fra denne saken av {1}!", - "removeDm": "{0} er blitt fjernet fra din sak på vår server!", - - "blacklistAddLog": "{0} er blitt svartelistet av {1}!", - "blacklistRemoveLog": "{0} er blitt fjernet fra svartelisten av {1}!", - "blacklistAddDm": "Du er blitt svartelistet på vår server!\nFra nå av kan du ikke opprette en sak!", - "blacklistRemoveDm": "Du er blitt fjernet fra svartelisten på vår server!\nNå kan du opprette saker igjen!", - "clearLog": "{0} saker er blitt slettet av {1}!" + "actions": { + "buttons": { + "create": "Opprett Sak", + "close": "Lukk Sak", + "delete": "Slett Sak", + "reopen": "Gjenåpne Sak", + "claim": "Ta Sak", + "unclaim": "Frigi Sak", + "pin": "Fest Sak", + "unpin": "Løsne Sak", + "clear": "Slett Saker", + "helpSwitchSlash": "Vis Skråstrekskommandoer", + "helpSwitchText": "Vis Tekstkommandoer", + "helpPage": "Side {0}", + "withReason": "Med Årsak", + "withoutTranscript": "Uten Utskrift" + }, + "titles": { + "created": "Sak Opprettet", + "close": "Sak Lukket", + "delete": "Sak Slettet", + "reopen": "Sak Gjenåpnet", + "claim": "Sak Tatt", + "unclaim": "Sak Frigitt", + "pin": "Sak Festet", + "unpin": "Sak Løsnet", + "rename": "Sak Omdøpt", + "move": "Sak Flyttet", + "add": "Bruker Lagt Til Sak", + "remove": "Bruker Fjernet Fra Sak", + + "help": "Tilgjengelige Kommandoer", + "statsReset": "Tilbakestill Statistikk", + "blacklistAdd": "Bruker Svartelistet", + "blacklistRemove": "Bruker Fjernet Fra Svarteliste", + "blacklistGet": "Svartelistet Bruker", + "blacklistView": "Gjeldende Svarteliste", + "blacklistAddDm": "Lagt Til Svarteliste", + "blacklistRemoveDm": "Fjernet Fra Svarteliste", + "clear": "Saker Slettet", + "roles": "Roller Oppdatert", + + "autoclose": "Sak Autolukket", + "autocloseEnabled": "Autolukking Aktivert", + "autocloseDisabled": "Autolukking Deaktivert", + "autodelete": "Sak Autoslettet", + "autodeleteEnabled": "Autosletting Aktivert", + "autodeleteDisabled": "Autosletting Deaktivert" + }, + "descriptions": { + "create": "Din sak er blitt opprettet. Klikk på knappen nedenfor for å få tilgang til den!", + "close": "Saken er blitt lukket vellykket!", + "delete": "Saken er blitt slettet vellykket!", + "reopen": "Saken er blitt gjenåpnet vellykket!", + "claim": "Saken er blitt tatt vellykket!", + "unclaim": "Saken er blitt frigitt vellykket!", + "pin": "Saken er blitt festet vellykket!", + "unpin": "Saken er blitt løsnet vellykket!", + "rename": "Saken er blitt omdøpt til {0} vellykket!", + "move": "Saken er blitt flyttet til {0} vellykket!", + "add": "{0} er blitt lagt til saken vellykket!", + "remove": "{0} er blitt fjernet fra saken vellykket!", + + "helpExplanation": "`` => påkrevd parameter\n`[navn]` => valgfri parameter", + "statsReset": "Botens statistikk er blitt tilbakestilt vellykket!", + "statsError": "Kan ikke vise saksstatistikk!\n{0} er ikke en sak!", + "blacklistAdd": "{0} er blitt svartelistet vellykket!", + "blacklistRemove": "{0} er blitt fjernet fra svartelisten vellykket!", + "blacklistGetSuccess": "{0} er for øyeblikket svartelistet!", + "blacklistGetEmpty": "{0} er for øyeblikket ikke svartelistet!", + "blacklistViewEmpty": "Ingen er svartelistet ennå!", + "blacklistViewTip": "Bruk \"/blacklist add\" for å svarteliste en bruker!", + "clearVerify": "Er du sikker på at du vil slette flere saker?\nDenne handlingen kan ikke angres!", + "clearReady": "{0} saker er blitt slettet vellykket!", + "rolesEmpty": "Ingen roller er blitt oppdatert!", + + "autocloseLeave": "Denne saken er blitt autolukket fordi oppretteren forlot serveren!", + "autocloseTimeout": "Denne saken er blitt autolukket fordi den har vært inaktiv i mer enn `{0}t`!", + "autodeleteLeave": "Denne saken er blitt autoslettet fordi oppretteren forlot serveren!", + "autodeleteTimeout": "Denne saken er blitt autoslettet fordi den har vært inaktiv i mer enn `{0} dager`!", + "autocloseEnabled": "Autolukking er blitt aktivert i denne saken!\nDen vil bli lukket når den er inaktiv i mer enn `{0}t`!", + "autocloseDisabled": "Autolukking er blitt deaktivert i denne saken!\nDen vil ikke lenger bli lukket automatisk!", + "autodeleteEnabled": "Autosletting er blitt aktivert i denne saken!\nDen vil bli slettet når den er inaktiv i mer enn `{0} dager`!", + "autodeleteDisabled": "Autosletting er blitt deaktivert i denne saken!\nDen vil ikke lenger bli slettet automatisk!", + + "ticketMessageLimit": "Du kan kun opprette {0} sak(er) om gangen!", + "ticketMessageAutoclose": "Denne saken vil bli autolukket når den er inaktiv i {0}t!", + "ticketMessageAutodelete": "Denne saken vil bli autoslettet når den er inaktiv i {0} dager!", + "panelReady": "Du finner panelet nedenfor!\nDenne meldingen kan nå slettes!" + }, + "modal": { + "closePlaceholder": "Hvorfor lukket du denne saken?", + "deletePlaceholder": "Hvorfor slettet du denne saken?", + "reopenPlaceholder": "Hvorfor gjenåpnet du denne saken?", + "claimPlaceholder": "Hvorfor tok du denne saken?", + "unclaimPlaceholder": "Hvorfor frigjorde du denne saken?", + "pinPlaceholder": "Hvorfor festet du denne saken?", + "unpinPlaceholder": "Hvorfor løsnet du denne saken?" + }, + "logs": { + "createLog": "En ny sak er blitt opprettet av {0}!", + "closeLog": "Denne saken er blitt lukket av {0}!", + "closeDm": "Din sak er blitt lukket på vår server!", + "deleteLog": "Denne saken er blitt slettet av {0}!", + "deleteDm": "Din sak er blitt slettet på vår server!", + "reopenLog": "Denne saken er blitt gjenåpnet av {0}!", + "reopenDm": "Din sak er blitt gjenåpnet på vår server!", + "claimLog": "Denne saken er blitt tatt av {0}!", + "claimDm": "Din sak er blitt tatt på vår server!", + "unclaimLog": "Denne saken er blitt frigitt av {0}!", + "unclaimDm": "Din sak er blitt frigitt på vår server!", + "pinLog": "Denne saken er blitt festet av {0}!", + "pinDm": "Din sak er blitt festet på vår server!", + "unpinLog": "Denne saken er blitt løsnet av {0}!", + "unpinDm": "Din sak er blitt løsnet på vår server!", + "renameLog": "Denne saken er blitt omdøpt til {0} av {1}!", + "renameDm": "Din sak er blitt omdøpt til {0} på vår server!", + "moveLog": "Denne saken er blitt flyttet til {0} av {1}!", + "moveDm": "Din sak er blitt flyttet til {0} på vår server!", + "addLog": "{0} er blitt lagt til denne saken av {1}!", + "addDm": "{0} er blitt lagt til din sak på vår server!", + "removeLog": "{0} er blitt fjernet fra denne saken av {1}!", + "removeDm": "{0} er blitt fjernet fra din sak på vår server!", + + "blacklistAddLog": "{0} er blitt svartelistet av {1}!", + "blacklistRemoveLog": "{0} er blitt fjernet fra svartelisten av {1}!", + "blacklistAddDm": "Du er blitt svartelistet på vår server!\nFra nå av kan du ikke opprette en sak!", + "blacklistRemoveDm": "Du er blitt fjernet fra svartelisten på vår server!\nNå kan du opprette saker igjen!", + "clearLog": "{0} saker er blitt slettet av {1}!" } - }, - "transcripts": { + }, + "transcripts": { "success": { "visit": "Besøk Utskrift", "ready": "Utskrift Opprettet", diff --git a/languages/persian.json b/languages/persian.json new file mode 100644 index 0000000..f402a04 --- /dev/null +++ b/languages/persian.json @@ -0,0 +1,478 @@ +{ + "_TRANSLATION":{ + "otversion":"v4.0.6", + "translators":["dysashop","zhavis"], + "lastedited":"28/05/2025", + "language":"Persian", + "automated":false + }, + "checker":{ + "system":{ + "typeError":"[خطا]", + "headerOpenTicket":"بازکردن تیکت", + "typeWarning":"[اخطار]", + "typeInfo":"[اطلاعات]", + "headerConfigChecker":"جستجوگر پیکربندی", + "headerDescription":"برای خطاها فایل پیکربندی ( کانفیگ ) خود را چک کنید", + "footerError":"ربات تا تمام مدت شروع نمی شود {0}'s ثابت هستند!", + "footerWarning":"توصیه میشه همه رو تعمیر کنید {0}'s قبل از شروع کردن!", + "footerSupport":"پشتیبانی: {0} - اسناد: {1}", + "compactInformation":"استفاده کنید {0} برای اطلاعات بیشتر!", + "dataPath":"path", + "dataDocs":"docs", + "dataMessages":"message" + }, + "messages":{ + "stringTooShort":"این رشته نمیتواند کوتاه تر از این باشد {0} شخصیت ها!", + "stringTooLong":"این رشته نمیتواند طولانی تر از این باشد {0} شخصیت ها!", + "stringLengthInvalid":"این رشته باید باشد {0} شخصیت های طولانی!", + "stringStartsWith":"این رشته باید با آن شروع شود {0}!", + "stringEndsWith":"این رشته باید به پایان برسد {0}!", + "stringContains":"این رشته باید حاوی باشد {0}!", + "stringChoices":"این رشته فقط می تواند یکی از مقادیر زیر باشد: {0}!", + "stringRegex":"این رشته اشتباه است!", + + "numberTooShort":"این عدد نمی‌تواند کوتاه‌تر از {0} کاراکتر باشد!", + "numberTooLong":"این عدد نمی‌تواند طولانی‌تر از {0} کاراکتر باشد!", + "numberLengthInvalid":"این عدد باید دقیقاً {0} کاراکتر طول داشته باشد!", + "numberTooSmall":"این عدد باید حداقل {0} باشد!", + "numberTooLarge":"این عدد باید حداکثر {0} باشد!", + "numberNotEqual":"این عدد باید برابر با {0} باشد!", + "numberStep": "این عدد باید مضربی از {0} باشد!", + "numberStepOffset": "این عدد باید مضربی از {0} باشد و با {1} شروع شود!", + "numberStartsWith": "این عدد باید با {0} شروع شود!", + "numberEndsWith": "این عدد باید با {0} پایان یابد!", + "numberContains": "این عدد باید شامل {0} باشد!", + "numberChoices": "این عدد فقط می‌تواند یکی از مقادیر زیر باشد: {0}!", + "numberFloat": "این عدد نمی‌تواند اعشاری باشد!", + "numberNegative": "این عدد نمی‌تواند منفی باشد!", + "numberPositive": "این عدد نمی‌تواند مثبت باشد!", + "numberZero": "این عدد نمی‌تواند صفر باشد!", + + "booleanTrue": "این مقدار بولین نمی‌تواند درست (true) باشد!", + "booleanFalse": "این مقدار بولین نمی‌تواند نادرست (false) باشد!", + + "arrayEmptyDisabled": "این آرایه نمی‌تواند خالی باشد!", + "arrayEmptyRequired": "این آرایه باید خالی باشد!", + "arrayTooShort": "طول این آرایه باید حداقل {0} باشد!", + "arrayTooLong": "طول این آرایه باید حداکثر {0} باشد!", + "arrayLengthInvalid": "طول این آرایه باید دقیقاً {0} باشد!", + "arrayInvalidTypes": "این آرایه فقط می‌تواند شامل انواع زیر باشد: {0}!", + "arrayDouble": "این آرایه نمی‌تواند مقادیر تکراری داشته باشد!", + + "discordInvalidId": "این شناسه دیسکورد {0} نامعتبر است!", + "discordInvalidIdOptions": "این شناسه دیسکورد {0} نامعتبر است! می‌توانید از یکی از این موارد استفاده کنید: {1}!", + "discordInvalidToken": "این توکن دیسکورد از نظر ساختاری نامعتبر است!", + "colorInvalid": "این کد رنگ هگزادسیمال نامعتبر است!", + "emojiTooShort": "این رشته باید حداقل {0} ایموجی داشته باشد!", + "emojiTooLong": "این رشته باید حداکثر {0} ایموجی داشته باشد!", + "emojiCustom": "این ایموجی نمی‌تواند یک ایموجی سفارشی دیسکورد باشد!", + "emojiInvalid": "این ایموجی نامعتبر است!", + "urlInvalid": "این آدرس URL نامعتبر است!", + "urlInvalidHttp": "این آدرس URL فقط می‌تواند از پروتکل https:// استفاده کند!", + "urlInvalidProtocol": "این آدرس URL فقط می‌تواند از پروتکل‌های http:// و https:// استفاده کند!", + "urlInvalidHostname": "این آدرس URL دارای نام میزبان غیرمجازی است!", + "urlInvalidExtension": "این آدرس URL دارای پسوند نامعتبر است! یکی از موارد زیر را انتخاب کنید: {0}!", + "urlInvalidPath": "این آدرس URL دارای مسیر نامعتبر است!", + "idNotUnique": "این شناسه یکتا نیست، لطفاً از شناسه دیگری استفاده کنید!", + "idNonExistent": "شناسه {0} وجود ندارد!", + + "invalidType": "این ویژگی باید از نوع {0} باشد!", + "propertyMissing": "ویژگی {0} در این شیء وجود ندارد!", + "propertyOptional": "ویژگی {0} در این شیء اختیاری است!", + "objectDisabled": "این شیء غیرفعال است، آن را با استفاده از {0} فعال کنید!", + "nullInvalid": "این ویژگی نمی‌تواند null باشد!", + "switchInvalidType": "این باید یکی از انواع زیر باشد: {0}!", + "objectSwitchInvalid": "این شیء باید یکی از انواع زیر باشد: {0}!", + + "invalidLanguage": "این زبان نامعتبر است!", + "invalidButton": "این دکمه باید حداقل شامل یک {0} یا {1} باشد!", + "unusedOption": "گزینه {0} در هیچ جایی استفاده نشده است!", + "unusedQuestion": "سوال {0} در هیچ جایی استفاده نشده است!", + "dropdownOption": "پنلی که منوی کشویی آن فعال است، فقط می‌تواند شامل گزینه‌هایی از نوع 'تیکت' باشد!" + } + }, + "actions":{ + "buttons":{ + "create": "بازدید از تیکت", + "close": "بستن تیکت", + "delete": "حذف تیکت", + "reopen": "بازگشایی تیکت", + "claim": "اختصاص تیکت", + "unclaim": "لغو اختصاص تیکت", + "pin": "پین کردن تیکت", + "unpin": "لغو پین تیکت", + "clear": "حذف تیکت‌ها", + "helpSwitchSlash": "مشاهده دستورات اسلش", + "helpSwitchText": "مشاهده دستورات متنی", + "helpPage": "صفحه {0}", + "withReason": "با دلیل", + "withoutTranscript": "بدون رونوشت" + }, + "titles":{ + "created": "تیکت ایجاد شد", + "close": "تیکت بسته شد", + "delete": "تیکت حذف شد", + "reopen": "تیکت بازگشایی شد", + "claim": "تیکت اختصاص یافت", + "unclaim": "اختصاص تیکت لغو شد", + "pin": "تیکت پین شد", + "unpin": "پین تیکت لغو شد", + "rename": "نام تیکت تغییر یافت", + "move": "تیکت منتقل شد", + "add": "کاربر به تیکت اضافه شد", + "remove": "کاربر از تیکت حذف شد", + + "help": "دستورات موجود", + "statsReset": "بازنشانی آمار", + "blacklistAdd": "کاربر به لیست سیاه اضافه شد", + "blacklistRemove": "کاربر از لیست سیاه آزاد شد", + "blacklistGet": "کاربر لیست سیاه", + "blacklistView": "لیست سیاه کنونی", + "blacklistAddDm": "به لیست سیاه اضافه شد", + "blacklistRemoveDm": "از لیست سیاه حذف شد", + "clear": "تیکت‌ها پاکسازی شدند", + "roles": "نقش‌ها به‌روزرسانی شدند", + + "autoclose": "تیکت به‌صورت خودکار بسته شد", + "autocloseEnabled": "بسته شدن خودکار فعال شد", + "autocloseDisabled": "بسته شدن خودکار غیرفعال شد", + "autodelete": "تیکت به‌صورت خودکار حذف شد", + "autodeleteEnabled": "حذف خودکار فعال شد", + "autodeleteDisabled": "حذف خودکار غیرفعال شد" + }, + "descriptions":{ + "create": "تیکت شما با موفقیت ایجاد شد. برای دسترسی به آن، روی دکمه زیر کلیک کنید!", + "close": "تیکت با موفقیت بسته شد!", + "delete": "تیکت با موفقیت حذف شد!", + "reopen": "تیکت با موفقیت دوباره باز شد!", + "claim": "تیکت با موفقیت به شما اختصاص یافت!", + "unclaim": "تیکت با موفقیت از حالت اختصاص‌یافته خارج شد!", + "pin": "تیکت با موفقیت پین شد!", + "unpin": "تیکت با موفقیت از حالت پین خارج شد!", + "rename": "نام تیکت با موفقیت به {0} تغییر یافت!", + "move": "تیکت با موفقیت به {0} منتقل شد!", + "add": "کاربر {0} با موفقیت به تیکت اضافه شد!", + "remove": "کاربر {0} با موفقیت از تیکت حذف شد!", + + "helpExplanation": "``: پارامتر اجباری\n`[name]`: پارامتر اختیاری", + "statsReset": "آمار ربات با موفقیت بازنشانی شد!", + "statsError": "امکان مشاهده آمار تیکت وجود ندارد!\n{0} یک تیکت معتبر نیست!", + "blacklistAdd": "کاربر {0} با موفقیت به لیست سیاه اضافه شد!", + "blacklistRemove": "کاربر {0} با موفقیت از لیست سیاه آزاد شد!", + "blacklistGetSuccess": "کاربر {0} در حال حاضر در لیست سیاه قرار دارد!", + "blacklistGetEmpty": "کاربر {0} در حال حاضر در لیست سیاه نیست!", + "blacklistViewEmpty": "هنوز هیچ کاربری به لیست سیاه اضافه نشده است!", + "blacklistViewTip": "برای افزودن کاربر به لیست سیاه از دستور `/blacklist add` استفاده کنید!", + "clearVerify": "آیا مطمئن هستید که می‌خواهید چندین تیکت را حذف کنید؟\nاین اقدام قابل بازگشت نیست!", + "clearReady": "{0} تیکت با موفقیت حذف شدند!", + "rolesEmpty": "هیچ نقشی به‌روزرسانی نشد!", + + "autocloseLeave": "این تیکت به‌طور خودکار بسته شد زیرا ایجادکننده آن سرور را ترک کرده است!", + "autocloseTimeout": "این تیکت به‌طور خودکار بسته شد زیرا بیش از {0} ساعت غیرفعال بوده است!", + "autodeleteLeave": "این تیکت به‌طور خودکار حذف شد زیرا ایجادکننده آن سرور را ترک کرده است!", + "autodeleteTimeout": "این تیکت به‌طور خودکار حذف شد زیرا بیش از {0} روز غیرفعال بوده است!", + "autocloseEnabled": "قابلیت بسته شدن خودکار برای این تیکت فعال شد!\nتیکت پس از {0} ساعت غیرفعال بودن بسته خواهد شد!", + "autocloseDisabled": "قابلیت بسته شدن خودکار برای این تیکت غیرفعال شد!\nتیکت دیگر به‌صورت خودکار بسته نخواهد شد!", + "autodeleteEnabled": "قابلیت حذف خودکار برای این تیکت فعال شد!\nتیکت پس از {0} روز غیرفعال بودن حذف خواهد شد!", + "autodeleteDisabled": "قابلیت حذف خودکار برای این تیکت غیرفعال شد!\nتیکت دیگر به‌صورت خودکار حذف نخواهد شد!", + + "ticketMessageLimit": "شما تنها می‌توانید همزمان {0} تیکت ایجاد کنید!", + "ticketMessageAutoclose": "این تیکت پس از {0} ساعت غیرفعال بودن به‌صورت خودکار بسته خواهد شد!", + "ticketMessageAutodelete": "این تیکت پس از {0} روز غیرفعال بودن به‌صورت خودکار حذف خواهد شد!", + "panelReady": "پنل در زیر قابل مشاهده است!\nاکنون می‌توانید این پیام را حذف کنید!" + }, + "modal":{ + "closePlaceholder": "چرا این تیکت را بستید؟", + "deletePlaceholder": "چرا این تیکت را حذف کردید؟", + "reopenPlaceholder": "چرا این تیکت را دوباره باز کردید؟", + "claimPlaceholder": "چرا این تیکت را به خود اختصاص دادید؟", + "unclaimPlaceholder": "چرا اختصاص این تیکت را لغو کردید؟", + "pinPlaceholder": "چرا این تیکت را پین کردید؟", + "unpinPlaceholder": "چرا پین این تیکت را لغو کردید؟" + }, + "logs":{ + "createLog": "تیکت جدیدی توسط {0} ایجاد شد!", + "closeLog": "این تیکت توسط {0} بسته شد!", + "closeDm": "تیکت شما در سرور ما بسته شد!", + "deleteLog": "این تیکت توسط {0} حذف شد!", + "deleteDm": "تیکت شما در سرور ما حذف شد!", + "reopenLog": "این تیکت توسط {0} دوباره باز شد!", + "reopenDm": "تیکت شما در سرور ما دوباره باز شد!", + "claimLog": "این تیکت توسط {0} اختصاص یافت!", + "claimDm": "تیکت شما در سرور ما اختصاص یافت!", + "unclaimLog": "اختصاص این تیکت توسط {0} لغو شد!", + "unclaimDm": "اختصاص تیکت شما در سرور ما لغو شد!", + "pinLog": "این تیکت توسط {0} پین شد!", + "pinDm": "تیکت شما در سرور ما پین شد!", + "unpinLog": "پین این تیکت توسط {0} لغو شد!", + "unpinDm": "پین تیکت شما در سرور ما لغو شد!", + "renameLog": "این تیکت توسط {1} به {0} تغییر نام یافت!", + "renameDm": "تیکت شما در سرور ما به {0} تغییر نام یافت!", + "moveLog": "این تیکت توسط {1} به {0} منتقل شد!", + "moveDm": "تیکت شما در سرور ما به {0} منتقل شد!", + "addLog": "کاربر {0} توسط {1} به این تیکت اضافه شد!", + "addDm": "کاربر {0} به تیکت شما در سرور ما اضافه شد!", + "removeLog": "کاربر {0} توسط {1} از این تیکت حذف شد!", + "removeDm": "کاربر {0} از تیکت شما در سرور ما حذف شد!", + + "blacklistAddLog": "کاربر {0} توسط {1} به لیست سیاه اضافه شد!", + "blacklistRemoveLog": "کاربر {0} توسط {1} از لیست سیاه حذف شد!", + "blacklistAddDm": "شما در سرور ما به لیست سیاه اضافه شدید!\nاز این پس نمی‌توانید تیکت ایجاد کنید!", + "blacklistRemoveDm": "شما از لیست سیاه در سرور ما حذف شدید!\nاکنون می‌توانید دوباره تیکت ایجاد کنید!", + "clearLog": "{0} تیکت توسط {1} حذف شدند!" + } + }, + "transcripts":{ + "success":{ + "visit": "بازدید از رونوشت", + "ready": "رونوشت ایجاد شد", + "textFileDescription": "این فایل متنی، رونوشت یک تیکت حذف‌شده است!", + "htmlProgress": "لطفاً صبر کنید تا این رونوشت HTML پردازش شود...", + + "createdChannel": "یک رونوشت {0} جدید در سرور ایجاد شد!", + "createdCreator": "یک رونوشت {0} جدید برای یکی از تیکت‌های شما ایجاد شد!", + "createdParticipant": "یک رونوشت {0} جدید در یکی از تیکت‌هایی که در آن مشارکت داشتید ایجاد شد!", + "createdActiveAdmin": "یک رونوشت {0} جدید در یکی از تیکت‌هایی که به‌عنوان مدیر در آن مشارکت داشتید ایجاد شد!", + "createdEveryAdmin": "یک رونوشت {0} جدید در یکی از تیکت‌هایی که شما مدیر آن بودید ایجاد شد!", + "createdOther": "یک رونوشت {0} جدید ایجاد شد!" + }, + "errors":{ + "retry": "دوباره تلاش کنید", + "continue": "حذف بدون رونوشت", + "backup": "ایجاد رونوشت پشتیبان", + "error": "مشکلی در هنگام ایجاد رونوشت رخ داد.\nمی‌خواهید چه کاری انجام دهید؟\n\nاین تیکت تا زمانی که یکی از این دکمه‌ها را کلیک نکنید حذف نخواهد شد." + } + }, + "errors":{ + "titles":{ + "internalError": "خطای داخلی", + "optionMissing": "گزینه دستور غایب است", + "optionInvalid": "گزینه دستور نامعتبر است", + "unknownCommand": "دستور ناشناخته", + "noPermissions": "بدون مجوز", + "unknownTicket": "تیکت ناشناخته", + "deprecatedTicket": "تیکت منسوخ‌شده", + "unknownOption": "گزینه ناشناخته", + "unknownPanel": "پنل ناشناخته", + "notInGuild": "خارج از سرور", + "channelRename": "عدم امکان تغییر نام کانال", + "busy": "تیکت مشغول است" + }, + "descriptions":{ + "askForInfo": "برای اطلاعات بیشتر با صاحب این ربات تماس بگیرید!", + "askForInfoResolve": "اگر این مشکل پس از چند بار تلاش برطرف نشد، با صاحب این ربات تماس بگیرید.", + "internalError": "به دلیل خطای داخلی، امکان پاسخ به این {0} وجود نداشت!", + "optionMissing": "یک پارامتر ضروری در این دستور وجود ندارد!", + "optionInvalid": "یک پارامتر در این دستور نامعتبر است!", + "optionInvalidChoose": "یکی از موارد زیر را انتخاب کنید:", + "unknownCommand": "برای اطلاعات بیشتر، منوی راهنما را بررسی کنید!", + "noPermissions": "شما اجازه استفاده از این {0} را ندارید!", + "noPermissionsList": "مجوزهای مورد نیاز: (یکی از آنها)", + "noPermissionsCooldown": "به دلیل وجود محدودیت زمانی، اجازه استفاده از این {0} را ندارید!", + "noPermissionsBlacklist": "چون در لیست سیاه قرار دارید، اجازه استفاده از این {0} را ندارید!", + "noPermissionsLimitGlobal": "به دلیل رسیدن سرور به حداکثر تعداد تیکت، نمی‌توانید تیکت ایجاد کنید!", + "noPermissionsLimitGlobalUser": "به دلیل رسیدن شما به حداکثر تعداد تیکت، نمی‌توانید تیکت ایجاد کنید!", + "noPermissionsLimitOption": "به دلیل رسیدن سرور به حداکثر تعداد تیکت برای این گزینه، نمی‌توانید تیکت ایجاد کنید!", + "noPermissionsLimitOptionUser": "به دلیل رسیدن شما به حداکثر تعداد تیکت برای این گزینه، نمی‌توانید تیکت ایجاد کنید!", + "unknownTicket": "این دستور را دوباره در یک تیکت معتبر امتحان کنید!", + "deprecatedTicket": "کانال کنونی یک تیکت معتبر نیست! ممکن است این تیکت از نسخه قدیمی Open Ticket باشد!", + "notInGuild": "این {0} در پیام‌های مستقیم (DM) کار نمی‌کند! لطفاً دوباره در یک سرور امتحان کنید!", + "channelRename": "به دلیل محدودیت‌های نرخ دیسکورد، ربات در حال حاضر نمی‌تواند نام کانال را تغییر دهد. اگر ربات ری‌استارت نشود، نام کانال ظرف 10 دقیقه به‌طور خودکار تغییر خواهد کرد.", + "channelRenameSource": "منبع این خطا: {0}", + "busy": "امکان استفاده از این {0} وجود ندارد!\nتیکت در حال پردازش توسط ربات است.\n\nلطفاً چند ثانیه دیگر دوباره امتحان کنید!" + }, + "optionInvalidReasons":{ + "stringRegex": "مقدار با الگوی مورد نظر مطابقت ندارد!", + "stringMinLength": "مقدار باید حداقل {0} کاراکتر باشد!", + "stringMaxLength": "مقدار باید حداکثر {0} کاراکتر باشد!", + "numberInvalid": "عدد نامعتبر است!", + "numberMin": "عدد باید حداقل {0} باشد!", + "numberMax": "عدد باید حداکثر {0} باشد!", + "numberDecimal": "عدد نمی‌تواند اعشاری باشد!", + "numberNegative": "عدد نمی‌تواند منفی باشد!", + "numberPositive": "عدد نمی‌تواند مثبت باشد!", + "numberZero": "عدد نمی‌تواند صفر باشد!", + "channelNotFound": "کانال یافت نشد!", + "userNotFound": "کاربر یافت نشد!", + "roleNotFound": "نقش یافت نشد!", + "memberNotFound": "کاربر یافت نشد!", + "mentionableNotFound": "کاربر یا نقش یافت نشد!", + "channelType": "نوع کانال نامعتبر است!", + "notInGuild": "این گزینه نیازمند حضور شما در یک سرور است!" + }, + "permissions":{ + "developer": "شما باید توسعه‌دهنده این ربات باشید.", + "owner": "شما باید صاحب سرور باشید.", + "admin": "شما باید مدیر سرور باشید.", + "moderator": "شما باید ناظم (مدراتور) باشید.", + "support": "شما باید عضو تیم پشتیبانی باشید.", + "member": "شما باید عضو سرور باشید.", + "discord-administrator": "شما باید مجوز `ADMINISTRATOR` را داشته باشید." + }, + "actionInvalid":{ + "close": "تیکت قبلاً بسته شده است!", + "reopen": "تیکت هنوز بسته نشده است!", + "claim": "تیکت قبلاً اختصاص یافته است!", + "unclaim": "تیکت هنوز اختصاص نیافته است!", + "pin": "تیکت قبلاً پین شده است!", + "unpin": "تیکت هنوز پین نشده است!", + "add": "این کاربر قبلاً به تیکت دسترسی دارد!", + "remove": "امکان حذف این کاربر از تیکت وجود ندارد!" + } + }, + "params":{ + "uppercase":{ + "ticket": "تیکت", + "tickets": "تیکت‌ها", + "reason": "دلیل", + "creator": "ایجادکننده", + "remaining": "زمان باقی‌مانده", + "added": "اضافه‌شده", + "removed": "حذف‌شده", + "filter": "فیلتر", + "claimedBy": "اختصاص‌یافته به {0}", + "method": "روش", + "type": "نوع", + "blacklisted": "در لیست سیاه", + "panel": "پنل", + "command": "دستور", + "system": "سیستم", + "true": "درست", + "false": "نادرست", + "syntax": "نحوه نگارش", + "originalName": "نام اصلی", + "newName": "نام جدید", + "until": "تا", + "validOptions": "گزینه‌های معتبر", + "validPanels": "پنل‌های معتبر", + "autoclose": "بسته شدن خودکار", + "autodelete": "حذف خودکار", + "startupDate": "تاریخ راه‌اندازی", + "version": "نسخه", + "name": "نام", + "role": "نقش", + "status": "وضعیت", + "claimed": "اختصاص‌یافته", + "pinned": "پین‌شده", + "creationDate": "تاریخ ایجاد" + }, + "lowercase":{ + "text": "متن", + "html": "اچ‌تی‌ام‌ال", + "command": "دستور", + "modal": "پنجره بازشو", + "button": "دکمه", + "dropdown": "منوی کشویی", + "method": "روش" + } + }, + "commands":{ + "reason": "یک دلیل اختیاری مشخص کنید که در لاگ‌ها قابل مشاهده خواهد بود.", + "help": "لیستی از تمام دستورات موجود را دریافت کنید.", + "panel": "یک پیام با منوی کشویی یا دکمه‌ها ایجاد کنید (برای ساخت تیکت).", + "panelId": "شناسه پنلی که می‌خواهید ایجاد کنید.", + "panelAutoUpdate": "آیا می‌خواهید این پنل هنگام ویرایش به‌صورت خودکار به‌روزرسانی شود؟", + "ticket": "فوراً یک تیکت ایجاد کنید.", + "ticketId": "شناسه تیکتی که می‌خواهید ایجاد کنید.", + "close": "یک تیکت را ببندید.", + "delete": "یک تیکت را حذف کنید.", + "deleteNoTranscript": "این تیکت را بدون ایجاد رونوشت حذف کنید.", + "reopen": "یک تیکت را دوباره باز کنید.", + "claim": "یک تیکت را به خود اختصاص دهید.", + "claimUser": "این تیکت را به جای خودتان به شخص دیگری اختصاص دهید.", + "unclaim": "اختصاص یک تیکت را لغو کنید.", + "pin": "یک تیکت را پین کنید.", + "unpin": "پین یک تیکت را لغو کنید.", + "move": "یک تیکت را منتقل کنید.", + "moveId": "شناسه گزینه‌ای که می‌خواهید تیکت به آن منتقل شود.", + "rename": "نام یک تیکت را تغییر دهید.", + "renameName": "نام جدید برای این تیکت.", + "add": "یک کاربر را به تیکت اضافه کنید.", + "addUser": "کاربری که می‌خواهید اضافه کنید.", + "remove": "یک کاربر را از تیکت حذف کنید.", + "removeUser": "کاربری که می‌خواهید حذف کنید.", + "blacklist": "لیست سیاه تیکت‌ها را مدیریت کنید.", + "blacklistView": "لیستی از لیست سیاه کنونی را مشاهده کنید.", + "blacklistAdd": "یک کاربر را به لیست سیاه اضافه کنید.", + "blacklistRemove": "یک کاربر را از لیست سیاه حذف کنید.", + "blacklistGet": "جزئیات یک کاربر در لیست سیاه را دریافت کنید.", + "blacklistGetUser": "کاربری که می‌خواهید جزئیاتش را دریافت کنید.", + "stats": "آمار ربات، یک عضو یا یک تیکت را مشاهده کنید.", + "statsReset": "تمام آمار ربات را بازنشانی کنید (و شمارش را از صفر شروع کنید).", + "statsGlobal": "آمار کلی را مشاهده کنید.", + "statsUser": "آمار یک کاربر در سرور را مشاهده کنید.", + "statsUserUser": "کاربری که می‌خواهید آمارش را مشاهده کنید.", + "statsTicket": "آمار یک تیکت در سرور را مشاهده کنید.", + "statsTicketTicket": "تیکتی که می‌خواهید آمارش را مشاهده کنید.", + "clear": "چندین تیکت را به‌صورت همزمان حذف کنید.", + "clearFilter": "فیلتر برای حذف تیکت‌ها.", + "clearFilters": { + "all": "همه", + "open": "باز", + "close": "بسته", + "claim": "اختصاص‌یافته", + "unclaim": "بدون اختصاص", + "pin": "پین‌شده", + "unpin": "بدون پین", + "autoclose": "بسته‌شده خودکار" + }, + "autoclose": "مدیریت بسته شدن خودکار در یک تیکت.", + "autocloseDisable": "غیرفعال کردن بسته شدن خودکار در این تیکت.", + "autocloseEnable": "فعال کردن بسته شدن خودکار در این تیکت.", + "autocloseEnableTime": "تعداد ساعاتی که این تیکت باید غیرفعال باشد تا بسته شود.", + "autodelete": "مدیریت حذف خودکار در یک تیکت.", + "autodeleteDisable": "غیرفعال کردن حذف خودکار در این تیکت.", + "autodeleteEnable": "فعال کردن حذف خودکار در این تیکت.", + "autodeleteEnableTime": "تعداد روزهایی که این تیکت باید غیرفعال باشد تا حذف شود." + }, + "helpMenu":{ + "help": "لیستی از تمام دستورات موجود را دریافت کنید.", + "ticket": "فوراً یک تیکت ایجاد کنید.", + "close": "یک تیکت را ببندید، این کار نوشتن در این کانال را غیرفعال می‌کند.", + "delete": "یک تیکت را حذف کنید، این کار در صورت فعال بودن، یک رونوشت ایجاد می‌کند.", + "reopen": "یک تیکت را دوباره باز کنید، این کار نوشتن در این کانال را دوباره فعال می‌کند.", + "pin": "یک تیکت را پین کنید. این کار تیکت را به بالای لیست منتقل می‌کند و ایموجی '📌' به نام آن اضافه می‌شود.", + "unpin": "پین یک تیکت را لغو کنید. تیکت در جایگاه فعلی خود باقی می‌ماند اما ایموجی '📌' از نام آن حذف می‌شود.", + "move": "یک تیکت را منتقل کنید. این کار نوع تیکت را تغییر می‌دهد.", + "rename": "نام یک تیکت را تغییر دهید. این کار نام کانال تیکت را تغییر می‌دهد.", + "claim": "یک تیکت را به خود اختصاص دهید. با این کار به تیم خود اطلاع می‌دهید که شما این تیکت را مدیریت می‌کنید.", + "unclaim": "اختصاص یک تیکت را لغو کنید. با این کار به تیم خود اطلاع می‌دهید که این تیکت دوباره آزاد است.", + "add": "یک کاربر را به تیکت اضافه کنید. این کار به کاربر امکان خواندن و نوشتن در تیکت را می‌دهد.", + "remove": "یک کاربر را از تیکت حذف کنید. این کار امکان خواندن و نوشتن کاربر در تیکت را حذف می‌کند.", + "panel": "یک پیام با منوی کشویی یا دکمه‌ها ایجاد کنید (برای ساخت تیکت).", + "blacklistView": "لیستی از لیست سیاه کنونی را مشاهده کنید.", + "blacklistAdd": "یک کاربر را به لیست سیاه اضافه کنید.", + "blacklistRemove": "یک کاربر را از لیست سیاه حذف کنید.", + "blacklistGet": "جزئیات یک کاربر در لیست سیاه را دریافت کنید.", + "statsGlobal": "آمار کلی را مشاهده کنید.", + "statsTicket": "آمار یک تیکت در سرور را مشاهده کنید.", + "statsUser": "آمار یک کاربر در سرور را مشاهده کنید.", + "statsReset": "تمام آمار ربات را بازنشانی کنید (و شمارش را از صفر شروع کنید).", + "autocloseDisable": "بسته شدن خودکار را در این تیکت غیرفعال کنید.", + "autocloseEnable": "بسته شدن خودکار را در این تیکت فعال کنید.", + "autodeleteDisable": "حذف خودکار را در این تیکت غیرفعال کنید.", + "autodeleteEnable": "حذف خودکار را در این تیکت فعال کنید." + }, + "stats":{ + "scopes":{ + "global": "آمار کلی", + "system": "آمار سیستم", + "user": "آمار کاربر", + "ticket": "آمار تیکت", + "participants": "مشارکت‌کنندگان" + }, + "properties":{ + "ticketsCreated": "تیکت‌های ایجادشده", + "ticketsClosed": "تیکت‌های بسته‌شده", + "ticketsDeleted": "تیکت‌های حذف‌شده", + "ticketsReopened": "تیکت‌های دوباره بازشده", + "ticketsAutoclosed": "تیکت‌های بسته‌شده خودکار", + "ticketsClaimed": "تیکت‌های اختصاص‌ یافته", + "ticketsPinned": "تیکت‌های پین‌ شده", + "ticketsMoved": "تیکت‌های منتقل‌ شده", + "usersBlacklisted": "کاربران در لیست سیاه", + "transcriptsCreated": "رونوشت‌های ایجادشده" + } + } +} \ No newline at end of file diff --git a/languages/polish.json b/languages/polish.json index fc28051..33d29d0 100644 --- a/languages/polish.json +++ b/languages/polish.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["DanoGlez"], "lastedited":"28/01/2025", "language":"Polish", diff --git a/languages/portuguese.json b/languages/portuguese.json index ea8c74e..22ee662 100644 --- a/languages/portuguese.json +++ b/languages/portuguese.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["quiradon"], "lastedited":"20/08/2024", "language":"Portuguese", diff --git a/languages/romanian.json b/languages/romanian.json index 509a8ec..f3b1380 100644 --- a/languages/romanian.json +++ b/languages/romanian.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["SankeDev"], "lastedited":"27/08/2024", "language":"Romanian", diff --git a/languages/russian.json b/languages/russian.json index bc8d1c5..0a8694d 100644 --- a/languages/russian.json +++ b/languages/russian.json @@ -1,6 +1,6 @@ { "_TRANSLATION": { - "otversion": "v4.0.5", + "otversion": "v4.0.6", "translators": ["NoOneNook"], "lastedited": "25/03/2025", "language": "Russian", diff --git a/languages/spanish.json b/languages/spanish.json index 1eaf6cd..14b3eee 100644 --- a/languages/spanish.json +++ b/languages/spanish.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["Redactado","Josuens"], "lastedited":"22/08/2024", "language":"Spanish", diff --git a/languages/swedish.json b/languages/swedish.json index e71c76c..73414d5 100644 --- a/languages/swedish.json +++ b/languages/swedish.json @@ -1,6 +1,6 @@ { "_TRANSLATION": { - "otversion": "v4.0.5", + "otversion": "v4.0.6", "translators": ["NoOneNook"], "lastedited": "25/03/2025", "language": "Svenska", diff --git a/languages/thai.json b/languages/thai.json index 41ebb65..94686e8 100644 --- a/languages/thai.json +++ b/languages/thai.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["modshd"], "lastedited":"13/11/2024", "language":"Thai", diff --git a/languages/turkish.json b/languages/turkish.json index dcb7ce7..ca89e4b 100644 --- a/languages/turkish.json +++ b/languages/turkish.json @@ -1,6 +1,6 @@ { "_TRANSLATION": { - "otversion": "v4.0.5", + "otversion": "v4.0.6", "translators": ["palestinian"], "lastedited": "26/11/2024", "language": "Turkish", diff --git a/languages/ukrainian.json b/languages/ukrainian.json index 02b191b..9ffc3c5 100644 --- a/languages/ukrainian.json +++ b/languages/ukrainian.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["Anderskiy"], "lastedited":"31/08/2024", "language":"Ukrainian", diff --git a/languages/vietnamese.json b/languages/vietnamese.json index 3881160..48b536b 100644 --- a/languages/vietnamese.json +++ b/languages/vietnamese.json @@ -1,6 +1,6 @@ { "_TRANSLATION":{ - "otversion":"v4.0.5", + "otversion":"v4.0.6", "translators":["ngocdiep2006"], "lastedited":"07/04/2025", "language":"Vietnamese", diff --git a/package.json b/package.json index 5b3b49b..b5def6e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "open-ticket", "author": "DJdj Development", - "version": "4.0.5", + "version": "4.0.6", "description": "The most advanced open-source discord ticket bot with HTML transcripts, plugins, questions, claiming, pinning & more! Using discord.js v14 & JSON database! ", "keywords": [ "ticket-bot", @@ -28,7 +28,7 @@ "@types/node": "^22.5.0", "@types/terminal-kit": "^2.5.7", "ansis": "^2.3.0", - "discord.js": "^14.19.1", + "discord.js": "^14.19.3", "formatted-json-stringify": "^1.2.1", "terminal-kit": "^3.1.2", "typescript": "^5.5.4" diff --git a/src/core/api/defaults/language.ts b/src/core/api/defaults/language.ts index 183cc93..0ec7b7e 100644 --- a/src/core/api/defaults/language.ts +++ b/src/core/api/defaults/language.ts @@ -472,6 +472,7 @@ export interface ODLanguageManagerIds_Default { "opendiscord:russian":ODLanguage, "opendiscord:swedish":ODLanguage, "opendiscord:vietnamese":ODLanguage, + "opendiscord:persian":ODLanguage, //ADD NEW LANGUAGES HERE!!! } diff --git a/src/core/api/main.ts b/src/core/api/main.ts index 65fbd57..9054456 100644 --- a/src/core/api/main.ts +++ b/src/core/api/main.ts @@ -130,7 +130,7 @@ export class ODMain { constructor(){ this.versions = new ODVersionManager_Default() - this.versions.add(ODVersion.fromString("opendiscord:version","v4.0.5")) + this.versions.add(ODVersion.fromString("opendiscord:version","v4.0.6")) this.versions.add(ODVersion.fromString("opendiscord:api","v1.0.0")) this.versions.add(ODVersion.fromString("opendiscord:transcripts","v2.0.0")) this.versions.add(ODVersion.fromString("opendiscord:livestatus","v2.0.0")) diff --git a/src/core/api/modules/base.ts b/src/core/api/modules/base.ts index 37a0e55..f82482f 100644 --- a/src/core/api/modules/base.ts +++ b/src/core/api/modules/base.ts @@ -560,8 +560,8 @@ export class ODHTTPGetRequest { this.throwOnError = throwOnError const newConfig = config ?? {} newConfig.method = "GET" - if (newConfig.headers) Object.assign(newConfig.headers,{"User-Agent":"OpenDiscordBots-OpenTicket/4.0.5"}) - else newConfig.headers = {"User-Agent":"OpenDiscordBots-OpenTicket/4.0.5"} + if (newConfig.headers) Object.assign(newConfig.headers,{"User-Agent":"OpenDiscordBots-OpenTicket/4.0.6"}) + else newConfig.headers = {"User-Agent":"OpenDiscordBots-OpenTicket/4.0.6"} this.config = newConfig } @@ -615,8 +615,8 @@ export class ODHTTPPostRequest { this.throwOnError = throwOnError const newConfig = config ?? {} newConfig.method = "POST" - if (newConfig.headers) Object.assign(newConfig.headers,{"User-Agent":"OpenDiscordBots-OpenTicket/4.0.5"}) - else newConfig.headers = {"User-Agent":"OpenDiscordBots-OpenTicket/4.0.5"} + if (newConfig.headers) Object.assign(newConfig.headers,{"User-Agent":"OpenDiscordBots-OpenTicket/4.0.6"}) + else newConfig.headers = {"User-Agent":"OpenDiscordBots-OpenTicket/4.0.6"} this.config = newConfig } diff --git a/src/core/api/modules/client.ts b/src/core/api/modules/client.ts index 94e8667..9d0ea07 100644 --- a/src/core/api/modules/client.ts +++ b/src/core/api/modules/client.ts @@ -578,8 +578,8 @@ export class ODSlashCommandComparator { } } /**Convert a `ODSlashCommandBuilder` to a universal Open Ticket slash command object for comparison. */ - convertBuilder(builder:ODSlashCommandBuilder,guildId:string|null): ODSlashCommandUniversalCommand { - if (builder.type != discord.ApplicationCommandType.ChatInput) throw new ODSystemError("ODSlashCommandComparator:convertBuilder() is not supported for other types than 'ChatInput'!") + convertBuilder(builder:ODSlashCommandBuilder,guildId:string|null): ODSlashCommandUniversalCommand|null { + if (builder.type != discord.ApplicationCommandType.ChatInput) return null //throw new ODSystemError("ODSlashCommandComparator:convertBuilder() is not supported for other types than 'ChatInput'!") const nameLoc = builder.nameLocalizations ?? {} const descLoc = builder.descriptionLocalizations ?? {} return { @@ -598,8 +598,8 @@ export class ODSlashCommandComparator { } } /**Convert a `discord.ApplicationCommand` to a universal Open Ticket slash command object for comparison. */ - convertCommand(cmd:discord.ApplicationCommand): ODSlashCommandUniversalCommand { - if (cmd.type != discord.ApplicationCommandType.ChatInput) throw new ODSystemError("ODSlashCommandComparator:convertCommand() is not supported for other types than 'ChatInput'!") + convertCommand(cmd:discord.ApplicationCommand): ODSlashCommandUniversalCommand|null { + if (cmd.type != discord.ApplicationCommandType.ChatInput) return null //throw new ODSystemError("ODSlashCommandComparator:convertCommand() is not supported for other types than 'ChatInput'!") const nameLoc = cmd.nameLocalizations ?? {} const descLoc = cmd.descriptionLocalizations ?? {} return { @@ -811,6 +811,10 @@ export class ODSlashCommandManager extends ODManager { //command is registered (and may need to be updated) const universalBuilder = this.comparator.convertBuilder(instance.builder,instance.guildId) const universalCmd = this.comparator.convertCommand(cmd) + + //command is not of the type 'chatinput' + if (!universalBuilder || !universalCmd) return + const didChange = !this.comparator.compare(universalBuilder,universalCmd) const requiresUpdate = didChange || (instance.requiresUpdate ? instance.requiresUpdate(universalCmd) : false) registered.push({instance,cmd:universalCmd,requiresUpdate}) @@ -820,8 +824,10 @@ export class ODSlashCommandManager extends ODManager { }) cmds.forEach((cmd) => { - //command does not exist in the manager - unused.push({instance:null,cmd:this.comparator.convertCommand(cmd),requiresUpdate:false}) + //command does not exist in the manager (only append to unused when type == 'chatinput') + const universalCmd = this.comparator.convertCommand(cmd) + if (!universalCmd) return + unused.push({instance:null,cmd:universalCmd,requiresUpdate:false}) }) return {registered,unregistered,unused} diff --git a/src/core/startup/migration.ts b/src/core/startup/migration.ts index 65a8852..80afc8a 100644 --- a/src/core/startup/migration.ts +++ b/src/core/startup/migration.ts @@ -25,5 +25,8 @@ export const migrations = [ new utilities.ODVersionMigration(api.ODVersion.fromString("opendiscord:version","v4.0.4"),async () => {},async () => {}), //MIGRATE TO v4.0.5 - new utilities.ODVersionMigration(api.ODVersion.fromString("opendiscord:version","v4.0.5"),async () => {},async () => {}) + new utilities.ODVersionMigration(api.ODVersion.fromString("opendiscord:version","v4.0.5"),async () => {},async () => {}), + + //MIGRATE TO v4.0.6 + new utilities.ODVersionMigration(api.ODVersion.fromString("opendiscord:version","v4.0.6"),async () => {},async () => {}) ] \ No newline at end of file diff --git a/src/data/framework/languageLoader.ts b/src/data/framework/languageLoader.ts index 868c534..42b5dd2 100644 --- a/src/data/framework/languageLoader.ts +++ b/src/data/framework/languageLoader.ts @@ -30,6 +30,7 @@ export const loadAllLanguages = async () => { opendiscord.languages.add(new api.ODJsonLanguage("opendiscord:russian","russian.json")) opendiscord.languages.add(new api.ODJsonLanguage("opendiscord:swedish","swedish.json")) opendiscord.languages.add(new api.ODJsonLanguage("opendiscord:vietnamese","vietnamese.json")) + opendiscord.languages.add(new api.ODJsonLanguage("opendiscord:persian","persian.json")) /** How to add more languages? * - Register the language to the manager (see above) diff --git a/src/index.ts b/src/index.ts index a1fe50f..7f368f0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,7 +20,7 @@ INFORMATION: ============ - Open Ticket v4.0.5 - © DJdj Development + Open Ticket v4.0.6 - © DJdj Development support us: https://github.com/sponsors/DJj123dj discord: https://discord.dj-dj.be