Merge branch 'dev' into dev-v4.1.0

This commit is contained in:
DJj123dj
2025-05-31 11:07:36 +02:00
45 changed files with 751 additions and 190 deletions
+4 -1
View File
@@ -2,7 +2,7 @@
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
[![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.
+62
View File
@@ -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"
}
]
}
+1 -1
View File
@@ -1,7 +1,7 @@
# Contributing Guidelines
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
[![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!<br>
Here you can find everything you need to know about contributing to Open Ticket.<br>
+7 -7
View File
@@ -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:
+11 -4
View File
@@ -8,7 +8,7 @@
<br>Powered By<br>
<img src="https://apis.dj-dj.be/cdn/opendiscord/logo.png" alt="Open Ticket" width="170px"><br>
<a href="https://discord.com/invite/26vT9wt3n3"><img alt="Discord Invite Link" src="https://img.shields.io/badge/discord-support%20server-5865F2.svg?style=flat-square&logo=discord"></img></a>
<a href="https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.5"><img alt="Open Ticket Version" src="https://img.shields.io/badge/version-4.0.5-brightgreen.svg?style=flat-square"></img></a>
<a href="https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.6"><img alt="Open Ticket Version" src="https://img.shields.io/badge/version-4.0.6-brightgreen.svg?style=flat-square"></img></a>
<a href="https://otdocs.dj-dj.be"><img alt="Open Ticket Documentation" src="https://img.shields.io/badge/discord.js-v14-CB3837.svg?style=flat-square&logo=npm"></img></a>
<a href="https://github.com/open-discord-bots/open-ticket/blob/main/LICENSE"><img alt="Open Ticket License" src="https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square"></img></a>
<a href="https://otdocs.dj-dj.be"><img alt="Open Ticket Stars" src="https://img.shields.io/github/stars/djj123dj/open-ticket?color=yellow&label=stars&logo=github&style=flat-square"></img></a>
@@ -20,7 +20,7 @@
<p align="center">
Open Ticket is the most advanced & customisable discord ticket bot available! You are able to customise up to 300+ settings and aspects! This includes <code>Html Transcripts</code>, <code>Advanced Plugins</code>, <code>Custom Embeds</code>, <code>Questions/Modals</code>, <code>Stats</code> & more!
The bot is translated in more than <code>27 Languages</code> and has been battle tested in large Discord servers! If you need any help, feel free to join our <a href="https://discord.dj-dj.be">discord server</a>!
The bot is translated in more than <code>28 Languages</code> and has been battle tested in large Discord servers! If you need any help, feel free to join our <a href="https://discord.dj-dj.be">discord server</a>!
</p>
<h3 align="center"><b>⭐️ Help us grow by giving a star! ⭐️</b></h3>
@@ -32,7 +32,7 @@ The bot is translated in more than <code>27 Languages</code> 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
<img alt="An example of a panel." src="https://apis.dj-dj.be/cdn/openticket/preview-v4/panel-examples.png">
@@ -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.
+1 -1
View File
@@ -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')",
+1 -1
View File
@@ -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}
],
+1 -1
View File
@@ -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
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION": {
"otversion": "v4.0.5",
"otversion": "v4.0.6",
"translators": ["palestinian"],
"lastedited": "06/12/2024",
"language": "Arabic",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["guillee3"],
"lastedited":"21/08/2024",
"language":"Catalan",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["DJj123dj"],
"lastedited":"21/08/2024",
"language":"Custom",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["spyeye_"],
"lastedited":"21/08/2024",
"language":"Czech",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["the_gamer"],
"lastedited":"26/09/2024",
"language":"Danish",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["DJj123dj"],
"lastedited":"21/08/2024",
"language":"Dutch",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["DJj123dj"],
"lastedited":"21/08/2024",
"language":"English",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["iamnotmega","ChatGPT"],
"lastedited":"21/10/2024",
"language":"Estonian",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["iamnotmega","ChatGPT"],
"lastedited":"21/10/2024",
"language":"Finnish",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["guillee3"],
"lastedited":"04/12/2024",
"language":"French",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["benzorich"],
"lastedited":"06/10/2024",
"language":"German",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["an_developer"],
"lastedited":"14/12/2024",
"language":"Hindi",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["Kornel0706"],
"lastedited":"22/08/2024",
"language":"Hungarian",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["erxg"],
"lastedited":"25/08/2024",
"language":"Indonesian",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["fraden1mvp."],
"lastedited":"08/10/2024",
"language":"Italian",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION": {
"otversion": "v4.0.5",
"otversion": "v4.0.6",
"translators": ["NoOneNook"],
"lastedited": "25/03/2025",
"language": "Latvian",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["TsgIndrius"],
"lastedited":"26/01/2025",
"language":"Lithuanian",
+126 -126
View File
@@ -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",
"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",
"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!",
"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": "`<navn>` => 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!",
"helpExplanation": "`<navn>` => 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!",
"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!",
"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}!"
"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",
+478
View File
@@ -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": "`<name>`: پارامتر اجباری\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": "رونوشت‌های ایجادشده"
}
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["DanoGlez"],
"lastedited":"28/01/2025",
"language":"Polish",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["quiradon"],
"lastedited":"20/08/2024",
"language":"Portuguese",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["SankeDev"],
"lastedited":"27/08/2024",
"language":"Romanian",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION": {
"otversion": "v4.0.5",
"otversion": "v4.0.6",
"translators": ["NoOneNook"],
"lastedited": "25/03/2025",
"language": "Russian",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["Redactado","Josuens"],
"lastedited":"22/08/2024",
"language":"Spanish",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION": {
"otversion": "v4.0.5",
"otversion": "v4.0.6",
"translators": ["NoOneNook"],
"lastedited": "25/03/2025",
"language": "Svenska",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["modshd"],
"lastedited":"13/11/2024",
"language":"Thai",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION": {
"otversion": "v4.0.5",
"otversion": "v4.0.6",
"translators": ["palestinian"],
"lastedited": "26/11/2024",
"language": "Turkish",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["Anderskiy"],
"lastedited":"31/08/2024",
"language":"Ukrainian",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"_TRANSLATION":{
"otversion":"v4.0.5",
"otversion":"v4.0.6",
"translators":["ngocdiep2006"],
"lastedited":"07/04/2025",
"language":"Vietnamese",
+2 -2
View File
@@ -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"
+1
View File
@@ -472,6 +472,7 @@ export interface ODLanguageManagerIds_Default {
"opendiscord:russian":ODLanguage,
"opendiscord:swedish":ODLanguage,
"opendiscord:vietnamese":ODLanguage,
"opendiscord:persian":ODLanguage,
//ADD NEW LANGUAGES HERE!!!
}
+1 -1
View File
@@ -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"))
+4 -4
View File
@@ -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
}
+12 -6
View File
@@ -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<ODSlashCommand> {
//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<ODSlashCommand> {
})
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}
+4 -1
View File
@@ -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 () => {})
]
+1
View File
@@ -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)
+1 -1
View File
@@ -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