Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddae7b5e46 | ||
|
|
32c9a6b4f3 | ||
|
|
0ad24ba89f | ||
|
|
5412416166 | ||
|
|
78a937d4e9 | ||
|
|
5b45dc265b | ||
|
|
4b210fe793 | ||
|
|
8891320bdf | ||
|
|
8ccfd5c4eb | ||
|
|
44074004e4 | ||
|
|
2f1c885b4f | ||
|
|
c94867280d | ||
|
|
138f7fa2bb | ||
|
|
465eda1c24 | ||
|
|
c821e7dd6d | ||
|
|
f9ce496cc5 | ||
|
|
3989fb5f76 | ||
|
|
779efca39a | ||
|
|
4976aa3d45 | ||
|
|
9cdff2c1de | ||
|
|
2e29947ba5 | ||
|
|
0aa3dca63b | ||
|
|
90851f881d | ||
|
|
b972c97871 | ||
|
|
db94f226fb | ||
|
|
6a4f40d862 | ||
|
|
1f402a848e | ||
|
|
24d98aeaeb | ||
|
|
b95b8f239e | ||
|
|
488b5fce53 | ||
|
|
c2117a67ed |
@@ -643,7 +643,7 @@ for (const language of fs.readdirSync(".docs/languages/")){
|
||||
}
|
||||
}
|
||||
original["_TRANSLATION"]["lastedited"] = new Date().toLocaleDateString("nl-BE",{day:"2-digit",month:"2-digit",year:"numeric"})
|
||||
original["_TRANSLATION"]["otversion"] = "v4.1.1"
|
||||
original["_TRANSLATION"]["otversion"] = "v4.1.3"
|
||||
const finalText = formatter.stringify(original)
|
||||
fs.writeFileSync("./languages/"+language,finalText)
|
||||
}
|
||||
+8
-2
@@ -2,7 +2,7 @@
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
|
||||
|
||||
[](https://discord.com/invite/26vT9wt3n3)
|
||||
[](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.1.1)
|
||||
[](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.1.3)
|
||||
[](https://github.com/sponsors/DJj123dj)
|
||||
[](.eggs/README.md)
|
||||
|
||||
@@ -20,6 +20,12 @@ 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.1.3.json`**](openticket-egg-v4.1.3.json)
|
||||
- This egg will always use Open Ticket `v4.1.3`. Open Ticket updates will not have an effect on this egg.
|
||||
|
||||
[**`openticket-egg-v4.1.2.json`**](openticket-egg-v4.1.2.json)
|
||||
- This egg will always use Open Ticket `v4.1.2`. Open Ticket updates will not have an effect on this egg.
|
||||
|
||||
[**`openticket-egg-v4.1.1.json`**](openticket-egg-v4.1.1.json)
|
||||
- This egg will always use Open Ticket `v4.1.1`. Open Ticket updates will not have an effect on this egg.
|
||||
|
||||
@@ -41,4 +47,4 @@ It's recommended to provide at least `1GB` of **Memory/RAM** and `5GB` of **disk
|
||||
**Pterodactyl Eggs**<br>
|
||||
[Changelog](https://otgithub.dj-dj.be/releases) - [Documentation](https://otdocs.dj-dj.be) - [Website](https://openticket.dj-dj.be) - [Support Server](https://discord.dj-dj.be) - [License](./LICENSE.md)<br>
|
||||
|
||||
© 2025 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
© 2021 - 2026 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
@@ -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.1.2)",
|
||||
"author": "support@dj-dj.be",
|
||||
"description": "This is the official Pterodactyl egg for Open Ticket v4.1.2, 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.1.2)\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.1.2\"\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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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.1.3)",
|
||||
"author": "support@dj-dj.be",
|
||||
"description": "This is the official Pterodactyl egg for Open Ticket v4.1.3, 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.1.3)\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.1.3\"\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,7 +1,7 @@
|
||||
# Contributing Guidelines
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
|
||||
|
||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.1.1) [](https://github.com/sponsors/DJj123dj)
|
||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.1.3) [](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>
|
||||
@@ -89,4 +89,4 @@ you are **REQUIRED to send the bug privately via one of the following methods:**
|
||||
**Contributing Guidelines**<br>
|
||||
[Changelog](https://otgithub.dj-dj.be/releases) - [Documentation](https://otdocs.dj-dj.be) - [Website](https://openticket.dj-dj.be) - [Support Server](https://discord.dj-dj.be) - [License](./LICENSE.md)<br>
|
||||
|
||||
© 2025 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
© 2021 - 2026 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
+12
-10
@@ -14,20 +14,22 @@ This list will be updated on every release.
|
||||
- 🟦 In Development **(ideas, bugs, support, html transcripts)**
|
||||
- ✅ Supported **(features, bugs, support, docs, html transcripts)**
|
||||
- 🚧 Maintenance **(support, docs, html transcripts)**
|
||||
- 🟧 Deprecated **(docs)**
|
||||
- 🟧 Deprecated **(docs only)**
|
||||
- ❌ Fully Deprecated
|
||||
|
||||
| Version | Supported | Notes |
|
||||
|------------|-----------|---------------------------------------------------------------|
|
||||
| 4.2.0 | 🟦 | Transcripts v2.0 will be inaccessible when v4.2 is released. |
|
||||
| 4.1.2 | 🟦 | |
|
||||
| 4.1.1 | ✅ | |
|
||||
| 4.1.0 | ✅ | |
|
||||
| 4.0.7 | ✅ | Supported Until December 2025 (LTS) |
|
||||
| 4.2.0 | 🟦 | In Development |
|
||||
| 4.1.x | 🟦 | In Development |
|
||||
| 4.1.3 | ✅ | |
|
||||
| 4.1.2 | ✅ | |
|
||||
| 4.1.1 | ✅ | Supported Until April 2026 (LTS) |
|
||||
| 4.1.0 | 🚧 | |
|
||||
| 4.0.7 | 🚧 | |
|
||||
| 4.0.6 | 🚧 | |
|
||||
| 4.0.5 | 🚧 | |
|
||||
| 4.0.4 | 🚧 | |
|
||||
| < 4.0.4 | 🟧 | Deprecated Transcripts v2.0, Documentation Only |
|
||||
| 4.0.5 | 🟧 | Deprecated |
|
||||
| 4.0.4 | 🟧 | Deprecated |
|
||||
| < 4.0.4 | 🟧 | Deprecated, Transcripts v2.0, Documentation Only |
|
||||
| < 4.0.0 | ❌ | |
|
||||
|
||||
### 🕷️ Reporting Vulnerabilities
|
||||
@@ -50,4 +52,4 @@ If possible, try to provide screenshots!
|
||||
**Security Policy**<br>
|
||||
[Changelog](https://otgithub.dj-dj.be/releases) - [Documentation](https://otdocs.dj-dj.be) - [Website](https://openticket.dj-dj.be) - [Support Server](https://discord.dj-dj.be) - [License](./LICENSE.md)<br>
|
||||
|
||||
© 2025 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
© 2021 - 2026 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
<!-- omit from toc -->
|
||||
# Open Ticket (License)
|
||||
© 2025 - DJj123dj & Contributors
|
||||
© 2021 - 2026 - DJj123dj & Contributors
|
||||
|
||||
#### Table Of Contents
|
||||
- [General License](#general-license)
|
||||
@@ -11,7 +11,7 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Copyright (C) 2026 DJdj Development. <https://www.dj-dj.be/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
> ### 🎥 Content Creators
|
||||
> Hey there! We're searching for content creators that would like to create a tutorial or setup guide for Open Ticket!<br>
|
||||
> [📌 More Information](.github/CONTENT_CREATORS.md)
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket" width="650px">
|
||||
<br>Powered By<br>
|
||||
<img src="https://apis.dj-dj.be/cdn/opendiscord/logo.png" alt="Open Ticket" width="170px"><br>
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket" width="650px"><br>
|
||||
<span align="center"><b>The most advanced self-hosted ticket bot for Discord</b></span><br>
|
||||
<sub align="center">Related Projects:</sub><br>
|
||||
<a href="https://odplugins.dj-dj.be"><img src="https://apis.dj-dj.be/cdn/opendiscord/logo.png" alt="Open Discord" height="55px"></a><br><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.1.1"><img alt="Open Ticket Version" src="https://img.shields.io/badge/version-4.1.1-brightgreen.svg?style=flat-square"></img></a>
|
||||
<a href="https://github.com/open-discord-bots/open-ticket/releases/tag/v4.1.3"><img alt="Open Ticket Version" src="https://img.shields.io/badge/version-4.1.3-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>
|
||||
@@ -19,11 +15,19 @@
|
||||
</p>
|
||||
|
||||
<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>36 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>!
|
||||
Open Ticket is the most <b>advanced and customizable</b> Discord ticket bot available. With <b>350+ configurable settings</b>, you have full control over every aspect of your ticket system!
|
||||
From <code>HTML transcripts</code> and <code>Advanced Plugins</code> to <code>Claiming & Pinning</code>, <code>Questions & Modals</code>, <code>Detailed Statistics</code>, and much more.<br><br>
|
||||
The bot is fully translated into <b>36+ languages</b> and has been battle-tested in large Discord servers.<br>
|
||||
Need help or want to get involved? Feel free to join our <a href="https://discord.dj-dj.be"><b>Discord server</b></a>.
|
||||
</p>
|
||||
|
||||
<h3 align="center"><b>⭐️ Help us grow by giving a star! ⭐️</b></h3>
|
||||
<h3 align="center"><b>⭐️ Support Open Ticket’s growth by starring this repo! ⭐️</b></h3>
|
||||
<p align="center"><sup>❤️ Love Open Ticket? <a href="https://github.com/sponsors/DJj123dj">Sponsorships</a> help fuel our HTML transcript servers and future features! ❤️</sup></p>
|
||||
|
||||
---
|
||||
> **[-> Navigate to (⏱️ Quick Setup)](#️-quick-start-using-cli)**
|
||||
> **[-> Navigate to (📚 Documentation)](https://otdocs.dj-dj.be)**
|
||||
> **[-> Navigate to (📞 Support Server)](https://discord.dj-dj.be)**
|
||||
|
||||
### 📌 Features
|
||||
- **⏳ Quick Setup** - Using the interactive Quick Setup CLI, you can **configure Open Ticket in less than 5min!**
|
||||
@@ -59,21 +63,38 @@ The bot is translated in more than <code>36 Languages</code> and has been battle
|
||||
- **🎨 Customisation** - Yep, you heard it right. Even more customisation!
|
||||
- **😁 And so much more...**
|
||||
|
||||
> ### 📦 Resources
|
||||
> These resources will help with configuration and usage of the bot:<br>
|
||||
> <!--<a href="https://openticket.dj-dj.be/message.html?msg=The%20current%20tutorial%20is%20outdated,%20we%27re%20still%20working%20on%20a%20new%20one!"><img src="https://apis.dj-dj.be/cdn/openticket/open-ticket-tutorial.png" alt="Open Ticket Tutorial" width="180px"></a>-->
|
||||
> <a href="https://otdocs.dj-dj.be"><img src="https://apis.dj-dj.be/cdn/openticket/open-ticket-docs.png" alt="Open Ticket Docs" width="180px"></a>
|
||||
> <a href="https://github.com/open-discord-bots/plugins"><img src="https://apis.dj-dj.be/cdn/openticket/open-ticket-plugins.png" alt="Open Ticket Plugins" width="180px"></a>
|
||||
### ⏱️ Quick Start (Using Interactive CLI Tool)
|
||||
> 1. Download the latest version of Open Ticket on [Github](https://github.com/open-discord-bots/open-ticket).
|
||||
> 2. Make sure Node.js & Npm are installed using `node -v` (minimum `v20`).
|
||||
> 3. Install any required dependencies using `npm install`.
|
||||
> 4. Start the **Quick Setup CLI** using `npm run setup`.
|
||||
> 5. Click on `> ⏱️ Quick Setup` and follow the instructions.
|
||||
> 6. Start the bot using `npm start` or `node index.js`
|
||||
> - If required, the bot will give a report of errors that must be solved.
|
||||
> - Follow the instructions and restart the bot.
|
||||
> 7. Enjoy using Open Ticket!
|
||||
>
|
||||
> #### 🚦 Navigation
|
||||
> **[-> Navigate to (📚 Documentation)](https://otdocs.dj-dj.be)**
|
||||
> **[-> Navigate to (📞 Support Server)](https://discord.dj-dj.be)**
|
||||
> **[-> Navigate to (🧩 Download Plugins)](https://odplugins.dj-dj.be)**
|
||||
>
|
||||
> #### 🖥️ Recommended Hosting
|
||||
> - **A VPS (Virtual Private Server)** - Extra customisation & more stability. Recommended for most servers.
|
||||
> - **Any Pterodactyl-Based Panel** - Easy installation & configuration.
|
||||
|
||||
### ❤️ Sponsors
|
||||
A big thanks to all our sponsors! Without them, it wouldn't be possible to create this project!
|
||||
|
||||
Huge thanks to our sponsors for making this project possible. Your support means everything to us.
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="https://github.com/guillee3.png" alt="Profile Picture" width="100px"></td>
|
||||
<td><img src="https://github.com/yeeetSK.png" alt="Profile Picture" width="100px"></td>
|
||||
<td><img src="https://github.com/jacobhumston.png" alt="Profile Picture" width="100px"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/guillee3"><b>guillee3</b></a></td>
|
||||
<td align="center"><a href="https://github.com/yeeetSK"><b>yeeetSK</b></a></td>
|
||||
<td align="center"><a href="https://github.com/jacobhumston"><b>jacobhumston</b></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -85,24 +106,6 @@ A big thanks to all our sponsors! Without them, it wouldn't be possible to creat
|
||||
<img src="https://github.com/BENZORICH.png" alt="BENZORICH" width="40px">
|
||||
</a>
|
||||
|
||||
### ⏱️ Quick Setup (Using CLI)
|
||||
> 1. Download the latest version of Open Ticket on [Github](https://github.com/open-discord-bots/open-ticket).
|
||||
> 2. Make sure node.js & npm are installed using `node -v` (minimum `v20`).
|
||||
> 3. Install any required dependencies using `npm install`.
|
||||
> 4. Start the **Quick Setup CLI** using `npm run setup`.
|
||||
> 5. Click on `> ⏱️ Quick Setup` and follow the instructions.
|
||||
> 6. Start the bot using `npm start` or `node index.js`
|
||||
> - The bot will let you know any existing config errors.
|
||||
> - Fix these errors and restart the bot.
|
||||
> 7. Enjoy using Open Ticket!
|
||||
> ### [📔 Visit Documentation](https://otdocs.dj-dj.be)
|
||||
>
|
||||
> ### 🖥️ Recommended Hostings
|
||||
> - **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">
|
||||
<img alt="An example of a ticket message." src="https://apis.dj-dj.be/cdn/openticket/preview-v4/ticket-example.png">
|
||||
@@ -110,21 +113,23 @@ A big thanks to all our sponsors! Without them, it wouldn't be possible to creat
|
||||
|
||||
## 🛠️ Contributors
|
||||
### 🖥️ Team & Contributors
|
||||
A list of people that contributed or provided the most support for Open Ticket.
|
||||
A list of amazing people who have contributed or provided supported for **Open Ticket** and **Open Discord**.
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><img src="https://github.com/DJj123dj.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/guillee3.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/smetsliam.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/FrankVissers.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/Sank34.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/guillee3.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/SKaranjaN.png" alt="Profile Picture" width="80px"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="https://github.com/DJj123dj">💻 DJj123dj</a></th>
|
||||
<th><a href="https://github.com/DJj123dj">💻🧩💬 DJj123dj</a></th>
|
||||
<th><a href="https://github.com/guillee3">🧩💬 Guillee3</a></th>
|
||||
<th><a href="https://github.com/smetsliam">💬 smetsliam</a></th>
|
||||
<th><a href="https://github.com/FrankVissers">💬 Frank Vissers</a></th>
|
||||
<th><a href="https://github.com/Sank34">💬 Sanke</a></th>
|
||||
<th><a href="https://github.com/guillee3">🧩 Guillee3</a></th>
|
||||
<th><a href="https://github.com/SKaranjaN">🧩 SKaranjaN</a></th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -132,8 +137,7 @@ A list of people that contributed or provided the most support for Open Ticket.
|
||||
With the amazing support of our translators, we've been able to translate Open Ticket in more than **36 languages**!
|
||||
#### Categories:
|
||||
- **🟢 Available**
|
||||
- **⏳ In Progress (Incomplete)**
|
||||
- **🤖 Made Using AI**
|
||||
- **🤖 Partially Made Using AI**
|
||||
- **🟠 Incomplete**
|
||||
- **🔴 Unavailable/Outdated**
|
||||
|
||||
@@ -141,28 +145,28 @@ With the amazing support of our translators, we've been able to translate Open T
|
||||
|----|---------------------|--------------------------------|
|
||||
|🟢 |🇬🇧 English |djj123dj |
|
||||
|🟢 |🇳🇱 Dutch |djj123dj |
|
||||
|🟢 |❓ Catalan |guillee3 |
|
||||
|🟢 |🇮🇩 Indonesian |erxg |
|
||||
|🟢 |🇩🇪 German |benzorich |
|
||||
|🟢 |🇫🇷 French |guillee.3 |
|
||||
|🟢 |🇪🇸 Spanish |redactado & josuens |
|
||||
|🟢 |🇵🇹 Portuguese |quiradon |
|
||||
|🟢 |🇮🇹 Italian |fraden1mvp. & imperatorix_17 |
|
||||
|🟢 |🇸🇪 Swedish |NoOneNook |
|
||||
|🟢 |🇳🇴 Norwegian |NoOneNook |
|
||||
|🟢 |🇹🇭 Thai |modshd |
|
||||
|🟢 |🇮🇳 Hindi |challenger_nova |
|
||||
|🟢⏳ |🇩🇪 German |benzorich |
|
||||
|🟢⏳ |🇪🇸 Spanish |redactado & josuens |
|
||||
|🟢⏳ |🇫🇷 French |guillee.3 |
|
||||
|🟢⏳ |🇵🇹 Portuguese |quiradon |
|
||||
|🟢⏳ |🇨🇿 Czech |spyeye_ |
|
||||
|🟢⏳ |🇭🇺 Hungarian |kornel0706 |
|
||||
|🟢⏳ |🇷🇴 Romanian |sankedev |
|
||||
|🟢⏳ |🇺🇦 Ukrainian |anderskiy |
|
||||
|🟢⏳ |🇮🇹 Italian |fraden1mvp. |
|
||||
|🟢⏳ |🇩🇰 Danish |the_gamer |
|
||||
|🟢⏳ |🇹🇭 Thai |modshd |
|
||||
|🟢⏳ |🇹🇷 Turkish |palestinian |
|
||||
|🟢⏳ |🇦🇪 Arabic |palestinian |
|
||||
|🟢⏳ |🇱🇹 Lithuanian |tsgindrius |
|
||||
|🟢⏳ |🇵🇱 Polish |danoglez |
|
||||
|🟢⏳ |🇳🇴 Norwegian |NoOneNook |
|
||||
|🟢⏳ |🇸🇪 Swedish |NoOneNook |
|
||||
|🟢⏳ |🇮🇷 Persian |dysashop & zhavis |
|
||||
|🟢⏳ |🇧🇩 Bengali |HanumeshGupta |
|
||||
|🟢 |🇭🇺 Hungarian |kornel0706 |
|
||||
|🟢 |🇮🇩 Indonesian |erxg |
|
||||
|🟢 |🇱🇹 Lithuanian |tsgindrius |
|
||||
|🟢 |🇺🇦 Ukrainian |anderskiy |
|
||||
|🟢 |🇨🇿 Czech |spyeye_ |
|
||||
|🟢 |🇷🇴 Romanian |sankedev |
|
||||
|🟢 |🇩🇰 Danish |the_gamer |
|
||||
|🟢 |🇹🇷 Turkish |palestinian |
|
||||
|🟢 |🇦🇪 Arabic |palestinian |
|
||||
|🟢 |🇵🇱 Polish |danoglez |
|
||||
|🟢 |🇮🇷 Persian |dysashop & zhavis |
|
||||
|🟢 |🇧🇩 Bengali |HanumeshGupta |
|
||||
|🟢 |❓ Catalan |guillee3 |
|
||||
|🤖 |🇪🇪 Estonian |iamnotmega |
|
||||
|🤖 |🇫🇮 Finnish |iamnotmega |
|
||||
|🤖 |🇯🇵 Japanese |HanumeshGupta |
|
||||
@@ -172,9 +176,9 @@ With the amazing support of our translators, we've been able to translate Open T
|
||||
|🤖 |🇮🇳 Tamil |HanumeshGupta |
|
||||
|🤖 |🇨🇳 Simplified Chinese |HanumeshGupta |
|
||||
|🤖 |❓ Kurdish |HanumeshGupta |
|
||||
|🤖⏳ |🇷🇺 Russian |NoOneNook |
|
||||
|🤖⏳ |🇱🇻 Latvian |NoOneNook |
|
||||
|🤖⏳ |🇻🇳 Vietnamese |ngocdiep2006 |
|
||||
|🤖 |🇷🇺 Russian |NoOneNook |
|
||||
|🤖 |🇱🇻 Latvian |NoOneNook |
|
||||
|🤖 |🇻🇳 Vietnamese |ngocdiep2006 |
|
||||
|🔴 |🇨🇳 Traditional Chinese|[⭐ Contribute!](.github/CONTRIBUTING.md)|
|
||||
<!--[⭐ Contribute!](.github/CONTRIBUTING.md) -->
|
||||
|
||||
@@ -215,17 +219,17 @@ This will help us grow and reach even more people!
|
||||
|[`example-command`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/example-command/) |📄 Example |Sample custom command using the Open Discord system. |
|
||||
|[`ot-jump-to-top`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-jump-to-top/) |📢 Command |Add a simple command to jump to the top of the ticket. |
|
||||
|[`ot-kill-switch`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-kill-switch/) |📢 Command |Temporarily disable the ticket system using a kill switch. |
|
||||
|[`od-hosting-status`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/od-hosting-status/) |📢 Command |A simple command to send hosting status updates to a channel. |
|
||||
|[`od-shutdown`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/od-shutdown/) |📢 Command |A simple command to turn off the bot from a slash command (server & bot owner only). |
|
||||
|[`ot-hosting-status`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-hosting-status/) |📢 Command |A simple command to send hosting status updates to a channel. |
|
||||
|[`ot-shutdown`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-shutdown/) |📢 Command |A simple command to turn off the bot from a slash command (server & bot owner only). |
|
||||
|[`ot-sqlite-database`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-sqlite-database/) |⚙️ Utility |With this plugin, the database will be an SQLite file. It's a must-have for large servers! |
|
||||
|[`od-no-slash-clear`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/od-no-slash-clear/) |⚙️ Utility |Disable the automatic removal of slash commands that aren't used by Open Ticket. |
|
||||
|[`ot-no-slash-clear`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-no-slash-clear/) |⚙️ Utility |Disable the automatic removal of slash commands that aren't used by Open Ticket. |
|
||||
|[`ot-migrate-v3`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-migrate-v3/) |⚙️ Utility |Use this plugin to migrate all tickets from Open Ticket v3 to v4. |
|
||||
|[`ot-ticket-message-extras`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-ticket-message-extras/) |🎨 Customisation |A plugin which adds a few little features to the ticket message. |
|
||||
|[`ot-rename-keep-prefix`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-rename-keep-prefix/) |🎨 Customisation |Simple plugin to keep the channel prefix when using the /rename command. |
|
||||
|[`ot-customise-buttons`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-customise-buttons/) |🎨 Customisation |Customise almost all built-in buttons. This includes the claim, reopen, close & delete buttons. |
|
||||
|[`ot-ephemeral-messages`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-ephemeral-messages/) |🎨 Customisation |Customise for every messages if it needs to be ephemeral or not. |
|
||||
|[`ot-footers`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-footers/) |🎨 Customisation |A simple plugin to add footers in all Open Ticket embeds. |
|
||||
|[`od-alt-detector`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/od-alt-detector/) |💼 Management |Use the discord-alt-detector npm package by DJdj Development in your ticket bot. |
|
||||
|[`ot-alt-detector`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-alt-detector/) |💼 Management |Use the discord-alt-detector npm package by DJdj Development in your ticket bot. |
|
||||
|[`ot-embeds`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-embeds/) |💼 Management |Create custom premade embeds in the config or use the command to create one from scratch. |
|
||||
|[`ot-move-actions`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-move-actions/) |💼 Management |Automatically unclaim/unpin a ticket when it's moved using `/move`. |
|
||||
|[`ot-reviews`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-reviews/) |💼 Management |Review system for Open Ticket! It is very customisable and has lots of features. |
|
||||
@@ -239,14 +243,16 @@ This will help us grow and reach even more people!
|
||||
|Name |Author |Category |Description |
|
||||
|---------------------------------------------------------------------|----------------------------|----------------------------|-------------------------|
|
||||
|[`ot-config-reload`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-config-reload/) |guillee.3 |⚙️ Utility |This plugin adds a new command that allows reloading the Open Ticket config files without the need for a restart. |
|
||||
|[`ot-ticket-forms`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-ticket-forms/) |guillee.3 |💼 Management |An advanced forms plugin for Open Ticket. |
|
||||
|[`ot-feedback`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-feedback/) |an_developer |💼 Management |A plugin to gather feedback of your support service. |
|
||||
|[`ot-assign-role`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-assign-role/) |rapid.fast |💼 Management |This plugin assigns a predefined role to a user upon creating a ticket. |
|
||||
|[`ot-moderation`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-moderation/) |NotMukundOP |💼 Management |A simple moderation plugin for Open Discord with ban, kick & warnings. |
|
||||
|[`ot-template-system`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-template-system/) |DanoGlez |💼 Management |Predefined template system for sending quick messages. |
|
||||
|[`ot-volume-warning`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-volume-warning/) |guillee.3 |💼 Management |Alerts ticket creators when too many tickets are open, indicating possible response delays. |
|
||||
|[`od-reminders`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/od-reminders/) |guillee.3 |💼 Management |Set reminders that will be sent to a channel every specified time. |
|
||||
|[`od-moderation`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/od-moderation/) |NotMukundOP |💼 Management |A simple moderation plugin for Open Discord with ban, kick & warnings. |
|
||||
|[`ot-reminders`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-reminders/) |guillee.3 |💼 Management |Set reminders that will be sent to a channel every specified time. |
|
||||
|[`ot-ticket-forms`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-ticket-forms/) |guillee.3 |💼 Management |An advanced forms plugin for Open Ticket. |
|
||||
|[`ot-followups`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-followups/) |guillee.3 |💼 Management |Send additional follow-up messages to a ticket. |
|
||||
|[`ot-translate-cmds`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-translate-cmds/) |guillee.3 |🤖 Client |Translate all built-in command names, descriptions & options. |
|
||||
|[`ot-twitch-notifier`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-twitch-notifier/) |guillee.3 |💼 Management |Get notified when your favorite Twitch streamers go live. |
|
||||
|[`ot-translate-cmds`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-translate-cmds/) |guillee.3 |🤖 Client |Translate all built-in command names, descriptions & options. |
|
||||
|
||||
---
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="170px">
|
||||
@@ -254,4 +260,4 @@ This will help us grow and reach even more people!
|
||||
**README.md**<br>
|
||||
[Changelog](https://otgithub.dj-dj.be/releases) - [Documentation](https://otdocs.dj-dj.be) - [Website](https://openticket.dj-dj.be) - [Support Server](https://discord.dj-dj.be) - [License](./LICENSE.md)<br>
|
||||
|
||||
© 2025 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
© 2021 - 2026 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
"_INFO":{
|
||||
"support":"https://otdocs.dj-dj.be",
|
||||
"discord":"https://discord.dj-dj.be",
|
||||
"version":"open-ticket-v4.1.1"
|
||||
"version":"open-ticket-v4.1.3"
|
||||
},
|
||||
|
||||
"token":"insert your bot token here! (or leave empty when using 'tokenFromENV')",
|
||||
|
||||
+1
-1
@@ -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.1.1 (or leave empty)",
|
||||
"footer":"Open Ticket v4.1.3 (or leave empty)",
|
||||
"fields":[
|
||||
{"name":"field name","value":"field value","inline":false}
|
||||
],
|
||||
|
||||
@@ -14,7 +14,7 @@ process.argv.push(...flags)
|
||||
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██║██║ ██╔═██╗ ██╔══╝ ██║
|
||||
╚██████╔╝██║ ███████╗██║ ╚████║ ██║ ██║╚██████╗██║ ██╗███████╗ ██║
|
||||
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝
|
||||
v4.1.1 - Made by DJj123dj & Contributors
|
||||
v4.1.3 - Made by DJj123dj & Contributors
|
||||
|
||||
Discord: https://discord.dj-dj.be
|
||||
Docs: https://otdocs.dj-dj.be
|
||||
@@ -28,6 +28,7 @@ const fs = require("fs")
|
||||
const ts = require("typescript")
|
||||
const {createHash,Hash} = require("crypto")
|
||||
const nodepath = require('path')
|
||||
const ansis = require("ansis")
|
||||
|
||||
/** ## What is this?
|
||||
* This is a function which compares `./src/` with a hash stored in `./dist/hash.txt`.
|
||||
@@ -84,6 +85,51 @@ function saveNewCompilationHash(){
|
||||
}
|
||||
|
||||
if (!process.argv.includes("--no-compile")){
|
||||
const requiredDependencies = new Set()
|
||||
if (fs.existsSync("./plugins")){
|
||||
console.log("OT: Reading plugin.json files...")
|
||||
for (const pluginDir of fs.readdirSync("./plugins")){
|
||||
if (pluginDir === ".DS_Store") continue
|
||||
const pluginPath = nodepath.join("./plugins", pluginDir)
|
||||
if (!fs.statSync(pluginPath).isDirectory()) continue
|
||||
|
||||
const pluginJsonPath = nodepath.join(pluginPath, "plugin.json")
|
||||
if (fs.existsSync(pluginJsonPath)){
|
||||
try{
|
||||
const pluginData = JSON.parse(fs.readFileSync(pluginJsonPath).toString())
|
||||
if (pluginData.npmDependencies && Array.isArray(pluginData.npmDependencies)){
|
||||
pluginData.npmDependencies.forEach((dep) => {
|
||||
if (typeof dep === "string" && dep.trim()){
|
||||
requiredDependencies.add(dep.trim())
|
||||
}
|
||||
})
|
||||
}
|
||||
}catch(err){
|
||||
// skip invalid plugin.json files, will be caught later
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (requiredDependencies.size > 0){
|
||||
console.log("OT: Checking plugin npm dependencies...")
|
||||
/**@type {string[]} */
|
||||
const missingDeps = []
|
||||
for (const dep of requiredDependencies){
|
||||
try{
|
||||
require.resolve(dep)
|
||||
}catch(err){
|
||||
missingDeps.push(dep)
|
||||
}
|
||||
}
|
||||
|
||||
if (missingDeps.length > 0){
|
||||
console.log(ansis.red("OT: ❌ Fatal Error --> Missing npm dependencies required by plugins:\n\n")+ansis.cyan(missingDeps.map((dep) => " - "+dep).join("\n")+"\n"))
|
||||
console.log("OT: Please install missing dependencies using the following command:\n> "+ansis.bold.green("npm install " + missingDeps.join(" "))+"\n")
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (requiresCompilation()){
|
||||
console.log("OT: Compilation Required...")
|
||||
|
||||
|
||||
+607
-477
File diff suppressed because it is too large
Load Diff
+560
-430
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["guillee3"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Catalan",
|
||||
"automated":false
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["DJj123dj"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Custom",
|
||||
"automated":false
|
||||
},
|
||||
|
||||
+157
-27
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["spyeye_"],
|
||||
"lastedited":"21/08/2024",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Czech",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,7 +31,15 @@
|
||||
"stringContains":"Tento string musí obsahovat {0}!",
|
||||
"stringChoices":"Tento string může být pouze jednou z následujících možností: {0}!",
|
||||
"stringRegex":"Tento string je neplatný!",
|
||||
|
||||
"stringInvertedContains":"Tento řetězec nesmí obsahovat {0}!",
|
||||
"stringLowercase":"Tento řetězec musí být napsán pouze malými písmeny!",
|
||||
"stringUppercase":"Tento řetězec musí být napsán pouze velkými písmeny!",
|
||||
"stringSpecialCharacters":"Tento řetězec nesmí obsahovat žádné speciální znaky! (pouze a-z, 0-9 a mezery)",
|
||||
"stringNoSpaces":"Tento řetězec nesmí obsahovat mezery!",
|
||||
"stringCapitalWord":"Doporučuje se, aby každé slovo v tomto řetězci začínalo velkým písmenem!",
|
||||
"stringCapitalSentence":"Zdá se, že některé věty v tomto řetězci nezačínají velkým písmenem!",
|
||||
"stringPunctuation":"Zdá se, že věta v tomto řetězci nekončí interpunkčním znaménkem!",
|
||||
|
||||
"numberTooShort":"Toto číslo nesmí být kratší než {0} znaků!",
|
||||
"numberTooLong":"Toto číslo nesmí být delší než {0} znaků.!",
|
||||
"numberLengthInvalid":"Toto číslo musí mít délku {0} znaků.!",
|
||||
@@ -48,10 +56,12 @@
|
||||
"numberNegative":"Toto číslo nemůže být záporné!",
|
||||
"numberPositive":"Toto číslo nemůže být kladné!",
|
||||
"numberZero":"Toto číslo nemůže být nula!",
|
||||
|
||||
"numberNan":"Toto číslo nemůže být NaN (není číslo)!",
|
||||
"numberInvertedContains":"Toto číslo nesmí obsahovat {0}!",
|
||||
|
||||
"booleanTrue":"Tento boolean nemůže být true!",
|
||||
"booleanFalse":"Tento boolean nemůže být false!",
|
||||
|
||||
|
||||
"arrayEmptyDisabled":"Toto pole nesmí být prázdné.!",
|
||||
"arrayEmptyRequired":"Toto pole musí být prázdné!",
|
||||
"arrayTooShort":"Toto pole musí mít délku alespoň {0}!",
|
||||
@@ -59,7 +69,7 @@
|
||||
"arrayLengthInvalid":"Toto pole musí mít délku {0}!",
|
||||
"arrayInvalidTypes":"Toto pole může obsahovat pouze následující typy: {0}!",
|
||||
"arrayDouble":"Toto pole neumožňuje zadat stejnou hodnotu dvakrát.!",
|
||||
|
||||
|
||||
"discordInvalidId":"Toto je neplatné discord {0} id!",
|
||||
"discordInvalidIdOptions":"Toto je neplatné Discord ID {0}! Můžete také použít jeden z těchto: {1}!",
|
||||
"discordInvalidToken":"Toto je neplatný discord token (syntakticky)!",
|
||||
@@ -76,7 +86,7 @@
|
||||
"urlInvalidPath":"Tato url má neplatnou cestu!",
|
||||
"idNotUnique":"Toto id není jedinečné, místo něj použijte jiné id!",
|
||||
"idNonExistent":"Id {0} neexistuje!",
|
||||
|
||||
|
||||
"invalidType":"Toto nastavení musí být typu: {0}!",
|
||||
"propertyMissing":"U tohoto objektu chybí vlastnost {0}!",
|
||||
"propertyOptional":"Vlastnost {0} je v tomto objektu nepovinná!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Tato vlastnost nemůže být nulová!",
|
||||
"switchInvalidType":"Musí se jednat o jeden z následujících typů: {0}!",
|
||||
"objectSwitchInvalid":"Tento objekt musí být jednoho z následujících typů: {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"Jedná se o neplatný jazyk!",
|
||||
"invalidButton":"Toto tlačítko musí mít alespoň {0} nebo {1}!",
|
||||
"unusedOption":"Možnost {0} se nikde nepoužívá!",
|
||||
"unusedQuestion":"Otázka {0} není nikde použita!",
|
||||
"dropdownOption":"Panel s povoleným rozevíracím seznamem může obsahovat pouze možnosti typu „ticketu“!"
|
||||
"dropdownOption":"Panel s povoleným rozevíracím seznamem může obsahovat pouze možnosti typu „ticketu“!",
|
||||
"customInvalidVersion":"Verze uvedená ve vaší konfiguraci neodpovídá! Ujistěte se, že jste konfiguraci aktualizovali na nejnovější verzi!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Přidán na blacklistu",
|
||||
"blacklistRemoveDm":"Odebrán z blacklistu",
|
||||
"clear":"Tickety vyčištěny",
|
||||
"clearTickets":"Vymazat tikety",
|
||||
"roles":"Role aktualizovány",
|
||||
|
||||
"autoclose":"Ticket automaticky uzavřen",
|
||||
@@ -139,7 +151,12 @@
|
||||
"autocloseDisabled":"Automatické uzavření zakázáno",
|
||||
"autodelete":"Ticket automaticky vymazán",
|
||||
"autodeleteEnabled":"Automatické mazání povoleno",
|
||||
"autodeleteDisabled":"Automatické mazání zakázáno"
|
||||
"autodeleteDisabled":"Automatické mazání zakázáno",
|
||||
|
||||
"topicSet":"Téma změněno",
|
||||
"prioritySet":"Priorita změněna",
|
||||
"priorityGet":"Priorita tiketu",
|
||||
"transfer":"Ticket přenesen"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"Tvůj ticket byl vytvořen. Klikni na tlačítko pod zprávou pro zobrazení!",
|
||||
@@ -154,7 +171,7 @@
|
||||
"move":"Ticket byl úspěšně přesunut do {0}!",
|
||||
"add":"{0} byl úspěšně přidán do ticketu!",
|
||||
"remove":"{0} byl úspěšně odstraněn z ticketu!",
|
||||
|
||||
|
||||
"helpExplanation":"`<name>` => povinný parametr\n`[name]` => nepovinný parametr",
|
||||
"statsReset":"Statistiky bota byly úspěšně resetovány!",
|
||||
"statsError":"Nelze zobrazit statistiky ticketu!\n{0} není ticket!",
|
||||
@@ -167,7 +184,7 @@
|
||||
"clearVerify":"Opravdu chcete smazat více ticketů?\nTuto akci nelze vrátit zpět!",
|
||||
"clearReady":"{0} ticketů bylo úspěšně smazány!",
|
||||
"rolesEmpty":"Žádné role nebyly aktualizovány!",
|
||||
|
||||
|
||||
"autocloseLeave":"Tento ticket byl automaticky uzavřen, protože jeho autor opustil server.!",
|
||||
"autocloseTimeout":"Tento ticket byl automaticky uzavřen, protože byl neaktivní déle než `{0}h`!",
|
||||
"autodeleteLeave":"Tento ticket byl automaticky smazán, protože jeho autor opustil server!",
|
||||
@@ -176,11 +193,16 @@
|
||||
"autocloseDisabled":"U tohoto ticketu bylo vypnuto automatické zavírání!\nUž se nebude automaticky zavírat!",
|
||||
"autodeleteEnabled":"U tohoto ticketu bylo povoleno automatické mazání!\nBude smazán, pokud je neaktivní déle než `{0} dní`!",
|
||||
"autodeleteDisabled":"Automatické mazání bylo v tomto zakázáno!\nUž se nebude automaticky mazat!",
|
||||
|
||||
|
||||
"ticketMessageLimit":"Současně lze vytvořit pouze {0} ticketu!",
|
||||
"ticketMessageAutoclose":"Tento ticket se automaticky uzavře, pokud je neaktivní po dobu {0}h!",
|
||||
"ticketMessageAutodelete":"Tento ticket bude automaticky smazán, pokud bude neaktivní po dobu {0} dnů!",
|
||||
"panelReady":"Panel najdete níže!\nTuto zprávu lze nyní smazat!"
|
||||
"panelReady":"Panel je k dispozici ve zprávě následně!\nTato zpráva může být nyní smazána!",
|
||||
|
||||
"topicSet":"Téma kanálu bylo úspěšně změněno {0}!",
|
||||
"prioritySet":"Priorita tiketu byla úspěšně změněna na {0} {1}!",
|
||||
"priorityGet":"Aktuální priorita tohoto tiketu je {0}.",
|
||||
"transfer":"Vlastnictví tiketu bylo úspěšně převedeno z {0} na {1} {2}!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"Proč jste tento ticket uzavřel?",
|
||||
@@ -215,12 +237,19 @@
|
||||
"addDm":"{0} byl přidán do tvého ticketu na našem serveru!",
|
||||
"removeLog":"{0} byl odstraněn z tohoto ticketu uživatelem {1}!",
|
||||
"removeDm":"{0} byl odstraněn z tvého ticketu na našem serveru!",
|
||||
|
||||
|
||||
"blacklistAddLog":"{0} byl přidán na blacklist uživatelem {1}!",
|
||||
"blacklistRemoveLog":"{0} byl odstraněn z blacklistu uživatelem {1}!",
|
||||
"blacklistAddDm":"Byl jsi přidán na blacklist na našem serveru!\nOd teď nemůžeš vytvářet tickety!",
|
||||
"blacklistRemoveDm":"Byl jsi odstraněn z blacklistu na našem serveru!\nNyní můžeš opět vytvářet tickety!",
|
||||
"clearLog":"{0} ticketů bylo smazáno uživatelem {1}!"
|
||||
"clearLog":"{0} ticketů bylo smazáno uživatelem {1}!",
|
||||
|
||||
"transferLog":"Vlastnictví tohoto tiketu bylo převedeno z {0} na {1} {2}!",
|
||||
"transferDm":"Vlastnictví vašeho tiketu bylo převedeno z {0} na {1} na našem serveru!",
|
||||
"prioritySetLog":"Priorita tohoto tiketu byla změněna na {0} {1}!",
|
||||
"prioritySetDm":"Priorita vašeho tiketu byla změněna na {0} na našem serveru!",
|
||||
"roleUpdateLog":"{0} aktualizoval své role!",
|
||||
"roleUpdateDm":"Vaše role na našem serveru byly aktualizovány!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
@@ -229,7 +258,7 @@
|
||||
"ready":"Přepis vytvořen",
|
||||
"textFileDescription":"Toto je textový přepis smazaného ticketu!",
|
||||
"htmlProgress":"Prosím, počkejte, zatímco se zpracovává HTML přepis...",
|
||||
|
||||
|
||||
"createdChannel":"Na serveru byl vytvořen nový přepis {0}!",
|
||||
"createdCreator":"Byl vytvořen nový přepis {0} pro jeden z tvých ticketů!",
|
||||
"createdParticipant":"Byl vytvořen nový přepis {0} v jednom z ticketů, kterých ses účastnil!",
|
||||
@@ -241,7 +270,19 @@
|
||||
"retry":"Zkusit Znovu",
|
||||
"continue":"Vymazat bez přepisu",
|
||||
"backup":"Vytvořit záložní přepis",
|
||||
"error":"Při pokusu o vytvoření přepisu se něco pokazilo.\nCo chcete udělat?\n\nTento ticket nebude smazán, dokud nekliknete na jedno z těchto tlačítek."
|
||||
"error":"Při pokusu o vytvoření přepisu se něco pokazilo.\nCo chcete udělat?\n\nTento ticket nebude smazán, dokud nekliknete na jedno z těchto tlačítek.",
|
||||
"title":"Chyba přepisu"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"ZPRÁVY",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"SOUBOR",
|
||||
"fieldsTitle":"POLE",
|
||||
"reactionsTitle":"REAKCE",
|
||||
"statsTitle":"STATISTIKY",
|
||||
"emptyContent":"<obsah prázdný>",
|
||||
"noTitle":"<bez názvu>",
|
||||
"noDesc":"<bez popisu>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
@@ -257,7 +298,8 @@
|
||||
"unknownPanel":"Neznámý panel",
|
||||
"notInGuild":"Nejsi na serveru",
|
||||
"channelRename":"Nepodařilo se přejmenovat kanál",
|
||||
"busy":"Ticket je zaneprázdněn"
|
||||
"busy":"Ticket je zaneprázdněn",
|
||||
"permissionError":"Chyba oprávnění"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Pro více informací kontaktuj vlastníka tohoto bota!",
|
||||
@@ -280,7 +322,10 @@
|
||||
"notInGuild":"Tento {0} nefunguje v DM! Zkus to znovu na serveru!",
|
||||
"channelRename":"Kvůli ratelimitům Discordu není momentálně možné, aby bot přejmenoval kanál. Kanál bude automaticky přejmenován do 10 minut, pokud nedojde k restartu bota.",
|
||||
"channelRenameSource":"Zdroj této chyby je: {0}",
|
||||
"busy":"Nelze použít tento {0}!\nTicket je momentálně zpracováván botem.\n\nZkus to prosím znovu za několik sekund!"
|
||||
"busy":"Nelze použít tento {0}!\nTicket je momentálně zpracováván botem.\n\nZkus to prosím znovu za několik sekund!",
|
||||
"closeBeforeMessage":"Tento tiket nelze uzavřít/smazat, dokud uživatel neodešle zprávu.",
|
||||
"closeBeforeAdminMessage":"Tento tiket nelze uzavřít/smazat, dokud admin tiketu nebo člen podpory neodešle zprávu.",
|
||||
"unableToCreateTicket":"Nemůžete vytvořit tiket."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"Hodnota neodpovídá vzoru!",
|
||||
@@ -331,7 +376,6 @@
|
||||
"added":"Přidáno",
|
||||
"removed":"Odstraněno",
|
||||
"filter":"Filtr",
|
||||
"claimedBy":"Přiděleno uživatelem {0}",
|
||||
"method":"Metoda",
|
||||
"type":"Typ",
|
||||
"blacklisted":"Na blacklistu",
|
||||
@@ -352,10 +396,30 @@
|
||||
"version":"Verze",
|
||||
"name":"Jméno",
|
||||
"role":"Role",
|
||||
"status":"Stav",
|
||||
"status":"STAV",
|
||||
"claimed":"Přiděleno",
|
||||
"pinned":"Připnuto",
|
||||
"creationDate":"Datum vytvoření"
|
||||
"creationDate":"Datum vytvoření",
|
||||
|
||||
"noone":"Nikdo",
|
||||
"open":"OTEVŘENO",
|
||||
"closed":"UZAVŘENO",
|
||||
"priority":"PRIORITA",
|
||||
"participants":"ÚČASTNÍCI",
|
||||
"yes":"Ano",
|
||||
"no":"Ne",
|
||||
"option":"Možnost",
|
||||
"topic":"Téma",
|
||||
"uptime":"Doba provozu systému",
|
||||
"messages":"Zprávy",
|
||||
"embeds":"Embeds",
|
||||
"files":"Soubory",
|
||||
"components":"Komponenty",
|
||||
"cooldown":"Cooldown",
|
||||
"maxTickets":"Maximální tikety",
|
||||
"admins":"Admini",
|
||||
"roles":"Role",
|
||||
"size":"Velikost"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"text",
|
||||
@@ -384,6 +448,7 @@
|
||||
"unclaim":"Odeber přidělení ticketu.",
|
||||
"pin":"Připni ticket.",
|
||||
"unpin":"Odepni ticket.",
|
||||
|
||||
"move":"Přesuň ticket.",
|
||||
"moveId":"Identifikátor možnost, na který chceš přesunout.",
|
||||
"rename":"Přejmenuj ticket.",
|
||||
@@ -392,6 +457,7 @@
|
||||
"addUser":"Uživatel k přidání.",
|
||||
"remove":"Odstraň uživatele z ticketu.",
|
||||
"removeUser":"Uživatel k odstranění.",
|
||||
|
||||
"blacklist":"Spravuj blacklist ticketů.",
|
||||
"blacklistView":"Zobraz seznam aktuálního blacklistu.",
|
||||
"blacklistAdd":"Přidej uživatele na blacklist.",
|
||||
@@ -405,6 +471,7 @@
|
||||
"statsUserUser":"Uživatel, jehož statistiky chceš zobrazit.",
|
||||
"statsTicket":"Zobraz statistiky ticketu na serveru.",
|
||||
"statsTicketTicket":"Ticket, jehož statistiky chceš zobrazit.",
|
||||
|
||||
"clear":"Smaž více ticketů najednou. Lze zadat volitelný filtr.",
|
||||
"clearFilter":"Filtr pro vymazání tiketů.",
|
||||
"clearFilters":{
|
||||
@@ -417,6 +484,7 @@
|
||||
"unpin":"Nepřipnuté",
|
||||
"autoclose":"Automaticky uzavřené"
|
||||
},
|
||||
|
||||
"autoclose":"Spravuj automatické uzavření ticketu.",
|
||||
"autocloseDisable":"Deaktivuj automatické uzavření v tomto ticketu.",
|
||||
"autocloseEnable":"Aktivuj automatické uzavření v tomto ticketu.",
|
||||
@@ -424,7 +492,19 @@
|
||||
"autodelete":"Spravuj automatické smazání ticketu.",
|
||||
"autodeleteDisable":"Deaktivuj automatické smazání v tomto ticketu.",
|
||||
"autodeleteEnable":"Aktivuj automatické smazání v tomto ticketu.",
|
||||
"autodeleteEnableTime":"Počet dnů neaktivity, po kterých se ticket smaže."
|
||||
"autodeleteEnableTime":"Počet dnů neaktivity, po kterých se ticket smaže.",
|
||||
|
||||
"topic":"Spravujte téma kanálu tiketu.",
|
||||
"topicSet":"Nastavte téma kanálu tiketu.",
|
||||
"topicValue":"Nové téma kanálu.",
|
||||
"topicList":"Získejte seznam všech tiketů s jejich tématy a statistikami.",
|
||||
"priority":"Spravujte prioritu tiketu.",
|
||||
"prioritySet":"Nastavte prioritu tiketu.",
|
||||
"priorityValue":"Priorita kanálu.",
|
||||
"priorityGet":"Získejte prioritu tiketu.",
|
||||
"priorityList":"Získejte seznam všech tiketů s jejich prioritou.",
|
||||
"transfer":"Přeneste vlastnictví tiketu od jednoho uživatele k druhému.",
|
||||
"transferUser":"Uživatel, na kterého se přenáší."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Získej seznam všech dostupných příkazů.",
|
||||
@@ -452,7 +532,16 @@
|
||||
"autocloseDisable":"Deaktivuj automatické uzavření v tomto ticketu.",
|
||||
"autocloseEnable":"Aktivuj automatické uzavření v tomto ticketu.",
|
||||
"autodeleteDisable":"Deaktivuj automatické smazání v tomto ticketu.",
|
||||
"autodeleteEnable":"Aktivuj automatické smazání v tomto ticketu."
|
||||
"autodeleteEnable":"Aktivuj automatické smazání v tomto ticketu.",
|
||||
"categories":{
|
||||
"general":"Obecné příkazy",
|
||||
"basicTicket":"Základní příkazy tiketu",
|
||||
"advancedTicket":"Pokročilé příkazy tiketu",
|
||||
"userTicket":"Příkazy uživatelského tiketu",
|
||||
"admin":"Admin příkazy",
|
||||
"advanced":"Pokročilé příkazy",
|
||||
"extra":"Extra příkazy"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
@@ -460,7 +549,8 @@
|
||||
"system":"Statistiky systému",
|
||||
"user":"Statistiky uživatele",
|
||||
"ticket":"Statistiky ticketu",
|
||||
"participants":"Účastníci"
|
||||
"participants":"Účastníci",
|
||||
"messages":"Zprávy"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Vytvořené tickety",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Připnuté tickety",
|
||||
"ticketsMoved":"Přesunuté tickety",
|
||||
"usersBlacklisted":"Uživatelé na blacklistu",
|
||||
"transcriptsCreated":"Vytvořené přepisy"
|
||||
"transcriptsCreated":"Vytvořené přepisy",
|
||||
"ticketsAutodeleted":"Automaticky smazané tikety",
|
||||
"ticketsTransferred":"Přenesené tikety",
|
||||
"ticketVolume":"Objem tiketů",
|
||||
"averageTickets":"Průměr tiketů/uživatel",
|
||||
"currentTickets":"Aktuální tikety",
|
||||
"age":"Věk tiketu",
|
||||
"responseTime":"Doba odezvy",
|
||||
"resolutionTime":"Doba vyřešení",
|
||||
"createdOn":"Vytvořeno dne",
|
||||
"createdBy":"Vytvořil",
|
||||
"closedOn":"Uzavřeno dne",
|
||||
"closedBy":"Uzavřel",
|
||||
"claimedOn":"Převzato dne",
|
||||
"claimedBy":"Převzal",
|
||||
"pinnedOn":"Připnuto dne",
|
||||
"pinnedBy":"Připnul",
|
||||
"deletedOn":"Smazáno dne",
|
||||
"deletedBy":"Smazal"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Vývojář",
|
||||
"serverOwner":"Vlastník serveru",
|
||||
"serverAdmin":"Server Admin",
|
||||
"moderator":"Moderátorský tým",
|
||||
"support":"Podpůrný tým",
|
||||
"member":"Člen"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Vyberte svůj tiket",
|
||||
"selectRole":"Vyberte svou roli",
|
||||
"selectOption":"Vyberte svou možnost"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Naléhavé",
|
||||
"veryHigh":"Velmi vysoké",
|
||||
"high":"Vysoké",
|
||||
"normal":"Normální",
|
||||
"low":"Nízké",
|
||||
"veryLow":"Velmi nízké",
|
||||
"none":"Žádné"
|
||||
}
|
||||
}
|
||||
+576
-446
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["DJj123dj"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Dutch",
|
||||
"automated":false
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["DJj123dj"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"English",
|
||||
"automated":false
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["iamnotmega","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Estonian",
|
||||
"automated":true
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["iamnotmega","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Finnish",
|
||||
"automated":true
|
||||
},
|
||||
|
||||
+156
-26
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["guillee3"],
|
||||
"lastedited":"04/12/2024",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"French",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,7 +31,15 @@
|
||||
"stringContains":"Cette chaîne doit contenir {0}!",
|
||||
"stringChoices":"Cette chaîne ne peut être que l'une des valeurs suivantes : {0}!",
|
||||
"stringRegex":"Cette chaîne est invalide!",
|
||||
|
||||
"stringInvertedContains":"Cette chaîne ne peut pas contenir {0}!",
|
||||
"stringLowercase":"Cette chaîne doit être écrite uniquement en minuscules!",
|
||||
"stringUppercase":"Cette chaîne doit être écrite uniquement en majuscules!",
|
||||
"stringSpecialCharacters":"Cette chaîne ne peut pas contenir de caractères spéciaux! (a-z, 0-9 et espace uniquement)",
|
||||
"stringNoSpaces":"Cette chaîne ne peut pas contenir d'espaces!",
|
||||
"stringCapitalWord":"Il est recommandé que chaque mot de cette chaîne commence par une majuscule!",
|
||||
"stringCapitalSentence":"Il semble que certaines phrases dans cette chaîne ne commencent pas par une majuscule!",
|
||||
"stringPunctuation":"Il semble que la phrase dans cette chaîne ne se termine pas par un signe de ponctuation!",
|
||||
|
||||
"numberTooShort":"Ce nombre ne peut pas être plus court que {0} caractères!",
|
||||
"numberTooLong":"Ce nombre ne peut pas être plus long que {0} caractères!",
|
||||
"numberLengthInvalid":"Ce nombre doit comporter {0} caractères!",
|
||||
@@ -48,10 +56,12 @@
|
||||
"numberNegative":"Ce nombre ne peut pas être négatif!",
|
||||
"numberPositive":"Ce nombre ne peut pas être positif!",
|
||||
"numberZero":"Ce nombre ne peut pas être zéro!",
|
||||
|
||||
"numberNan":"Ce nombre ne peut pas être NaN (Not A Number)!",
|
||||
"numberInvertedContains":"Ce nombre ne peut pas contenir {0}!",
|
||||
|
||||
"booleanTrue":"Ce booléen ne peut pas être vrai!",
|
||||
"booleanFalse":"Ce booléen ne peut pas être faux!",
|
||||
|
||||
|
||||
"arrayEmptyDisabled":"Ce tableau ne peut pas être vide!",
|
||||
"arrayEmptyRequired":"Ce tableau doit être vide!",
|
||||
"arrayTooShort":"Ce tableau doit avoir une longueur d'au moins {0}!",
|
||||
@@ -59,7 +69,7 @@
|
||||
"arrayLengthInvalid":"Ce tableau doit avoir une longueur de {0}!",
|
||||
"arrayInvalidTypes":"Ce tableau ne peut contenir que les types suivants : {0}!",
|
||||
"arrayDouble":"Ce tableau n'autorise pas la même valeur deux fois!",
|
||||
|
||||
|
||||
"discordInvalidId":"Ceci est un identifiant de {0} Discord invalide!",
|
||||
"discordInvalidIdOptions":"Ceci est un identifiant de {0} Discord invalide! Vous pouvez également utiliser l'un de ceux-ci: {1}!",
|
||||
"discordInvalidToken":"Ceci est un token Discord invalide (syntactiquement)!",
|
||||
@@ -76,7 +86,7 @@
|
||||
"urlInvalidPath":"Cette URL a un chemin invalide!",
|
||||
"idNotUnique":"Cet identifiant n'est pas unique, utilisez un autre identifiant à la place!",
|
||||
"idNonExistent":"L'identifiant {0} n'existe pas!",
|
||||
|
||||
|
||||
"invalidType":"Cette propriété doit être du type: {0}!",
|
||||
"propertyMissing":"La propriété {0} est manquante dans cet objet!",
|
||||
"propertyOptional":"La propriété {0} est optionnelle dans cet objet!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Cette propriété ne peut pas être nulle!",
|
||||
"switchInvalidType":"Cela doit être l'un des types suivants: {0}!",
|
||||
"objectSwitchInvalid":"Cet objet doit être l'un des types suivants : {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"Ceci est une langue invalide!",
|
||||
"invalidButton":"Ce bouton doit avoir au moins un {0} ou {1}!",
|
||||
"unusedOption":"L'option {0} n'est utilisée nulle part!",
|
||||
"unusedQuestion":"La question {0} n'est utilisée nulle part!",
|
||||
"dropdownOption":"Un panneau avec un menu déroulant activé ne peut contenir que des options du type 'ticket'!"
|
||||
"dropdownOption":"Un panneau avec un menu déroulant activé ne peut contenir que des options du type 'ticket'!",
|
||||
"customInvalidVersion":"La version spécifiée dans votre config ne correspond pas! Assurez-vous d'avoir mis à jour la config vers la dernière version!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Ajouté à la Liste Noire",
|
||||
"blacklistRemoveDm":"Retiré de la Liste Noire",
|
||||
"clear":"Tickets Supprimés",
|
||||
"clearTickets":"Effacer les tickets",
|
||||
"roles":"Rôles Mis à Jour",
|
||||
|
||||
"autoclose":"Ticket Fermé Automatiquement",
|
||||
@@ -139,7 +151,12 @@
|
||||
"autocloseDisabled":"Fermeture Automatique Désactivée",
|
||||
"autodelete":"Ticket Supprimé Automatiquement",
|
||||
"autodeleteEnabled":"Suppression Automatique Activée",
|
||||
"autodeleteDisabled":"Suppression Automatique Désactivée"
|
||||
"autodeleteDisabled":"Suppression Automatique Désactivée",
|
||||
|
||||
"topicSet":"Sujet modifié",
|
||||
"prioritySet":"Priorité modifiée",
|
||||
"priorityGet":"Priorité du ticket",
|
||||
"transfer":"Ticket transféré"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"Votre ticket a été créé. Cliquez sur le bouton ci-dessous pour y accéder!",
|
||||
@@ -154,7 +171,7 @@
|
||||
"move":"Le ticket a été déplacé vers {0} avec succès!",
|
||||
"add":"{0} a été ajouté au ticket avec succès!",
|
||||
"remove":"{0} a été retiré du ticket avec succès!",
|
||||
|
||||
|
||||
"helpExplanation":"`<nom>` => paramètre requis\n`[nom]` => paramètre optionnel",
|
||||
"statsReset":"Les statistiques du bot ont été réinitialisées avec succès!",
|
||||
"statsError":"Impossible de visualiser les statistiques du ticket!\n{0} n'est pas un ticket!",
|
||||
@@ -167,7 +184,7 @@
|
||||
"clearVerify":"Êtes-vous sûr de vouloir supprimer plusieurs tickets?\nCette action est irréversible!",
|
||||
"clearReady":"{0} tickets ont été supprimés avec succès!",
|
||||
"rolesEmpty":"Aucun rôle n'a été mis à jour!",
|
||||
|
||||
|
||||
"autocloseLeave":"Ce ticket a été fermé automatiquement parce que le créateur a quitté le serveur!",
|
||||
"autocloseTimeout":"Ce ticket a été fermé automatiquement car il est resté inactif pendant plus de `{0}h`!",
|
||||
"autodeleteLeave":"Ce ticket a été supprimé automatiquement parce que le créateur a quitté le serveur!",
|
||||
@@ -176,11 +193,16 @@
|
||||
"autocloseDisabled":"La fermeture automatique a été désactivée dans ce ticket!\nIl ne sera plus fermé automatiquement!",
|
||||
"autodeleteEnabled":"La suppression automatique a été activée dans ce ticket!\nIl sera supprimé lorsqu'il restera inactif pendant plus de `{0} jours`!",
|
||||
"autodeleteDisabled":"La suppression automatique a été désactivée dans ce ticket!\nIl ne sera plus supprimé automatiquement!",
|
||||
|
||||
|
||||
"ticketMessageLimit":"Vous ne pouvez créer que {0} ticket(s) en même temps!",
|
||||
"ticketMessageAutoclose":"Ce ticket sera fermé automatiquement après {0}h d'inactivité!",
|
||||
"ticketMessageAutodelete":"Ce ticket sera supprimé automatiquement après {0} jours d'inactivité!",
|
||||
"panelReady":"Vous pouvez trouver le panneau ci-dessous!\nCe message peut maintenant être supprimé!"
|
||||
"panelReady":"Le panneau est disponible dans le message suivant!\nCe message peut maintenant être supprimé!",
|
||||
|
||||
"topicSet":"Le sujet du salon a été modifié par {0} avec succès!",
|
||||
"prioritySet":"La priorité du ticket a été modifiée en {0} par {1} avec succès!",
|
||||
"priorityGet":"La priorité actuelle de ce ticket est {0}.",
|
||||
"transfer":"La propriété de ce ticket a été transférée de {0} à {1} par {2} avec succès!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"Pourquoi avez-vous fermé ce ticket?",
|
||||
@@ -215,12 +237,19 @@
|
||||
"addDm":"{0} a été ajouté à votre ticket sur notre serveur!",
|
||||
"removeLog":"{0} a été retiré de ce ticket par {1}!",
|
||||
"removeDm":"{0} a été retiré de votre ticket sur notre serveur!",
|
||||
|
||||
|
||||
"blacklistAddLog":"{0} a été ajouté à la liste noire par {1}!",
|
||||
"blacklistRemoveLog":"{0} a été retiré de la liste noire par {1}!",
|
||||
"blacklistAddDm":"Vous avez été ajouté à la liste noire sur notre serveur!\nDésormais, vous ne pouvez pas créer de ticket!",
|
||||
"blacklistRemoveDm":"Vous avez été retiré de la liste noire sur notre serveur!\nVous pouvez désormais créer des tickets à nouveau!",
|
||||
"clearLog":"{0} tickets ont été supprimés par {1}!"
|
||||
"clearLog":"{0} tickets ont été supprimés par {1}!",
|
||||
|
||||
"transferLog":"La propriété de ce ticket a été transférée de {0} à {1} par {2}!",
|
||||
"transferDm":"La propriété de votre ticket a été transférée de {0} à {1} sur notre serveur!",
|
||||
"prioritySetLog":"La priorité de ce ticket a été modifiée en {0} par {1}!",
|
||||
"prioritySetDm":"La priorité de votre ticket a été modifiée en {0} sur notre serveur!",
|
||||
"roleUpdateLog":"{0} a mis à jour ses rôles!",
|
||||
"roleUpdateDm":"Vos rôles sur notre serveur ont été mis à jour!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
@@ -229,7 +258,7 @@
|
||||
"ready":"Transcription Créée",
|
||||
"textFileDescription":"Ceci est la transcription textuelle d'un ticket supprimé!",
|
||||
"htmlProgress":"Veuillez patienter pendant que cette transcription HTML est en cours de traitement...",
|
||||
|
||||
|
||||
"createdChannel":"Une nouvelle transcription {0} a été créée sur le serveur!",
|
||||
"createdCreator":"Une nouvelle transcription {0} a été créée pour l'un de vos tickets!",
|
||||
"createdParticipant":"Une nouvelle transcription {0} a été créée dans l'un des tickets auxquels vous avez participé!",
|
||||
@@ -241,7 +270,19 @@
|
||||
"retry":"Réessayer",
|
||||
"continue":"Supprimer Sans Transcription",
|
||||
"backup":"Créer une Transcription de Sauvegarde",
|
||||
"error":"Une erreur s'est produite lors de la création de la transcription.\nQue souhaitez-vous faire?\n\nCe ticket ne sera pas supprimé tant que vous n'aurez pas cliqué sur l'un de ces boutons."
|
||||
"error":"Une erreur s'est produite lors de la création de la transcription.\nQue souhaitez-vous faire?\n\nCe ticket ne sera pas supprimé tant que vous n'aurez pas cliqué sur l'un de ces boutons.",
|
||||
"title":"Erreur de transcription"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"MESSAGES",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"FICHIER",
|
||||
"fieldsTitle":"CHAMPS",
|
||||
"reactionsTitle":"RÉACTIONS",
|
||||
"statsTitle":"STATS",
|
||||
"emptyContent":"<contenu vide>",
|
||||
"noTitle":"<sans-titre>",
|
||||
"noDesc":"<sans-description>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
@@ -257,7 +298,8 @@
|
||||
"unknownPanel":"Panneau Inconnu",
|
||||
"notInGuild":"Pas Dans le Serveur",
|
||||
"channelRename":"Impossible de Renommer le Canal",
|
||||
"busy":"Ticket Occupé"
|
||||
"busy":"Ticket Occupé",
|
||||
"permissionError":"Erreur de permission"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Contactez le propriétaire de ce bot pour plus d'informations!",
|
||||
@@ -280,7 +322,10 @@
|
||||
"notInGuild":"Ce {0} ne fonctionne pas en DM! Veuillez réessayer dans un serveur!",
|
||||
"channelRename":"En raison des limitations de taux de Discord, il est actuellement impossible pour le bot de renommer le canal. Le canal sera automatiquement renommé après 10 minutes si le bot n'est pas redémarré.",
|
||||
"channelRenameSource":"La source de cette erreur est : {0}",
|
||||
"busy":"Impossible d'utiliser ce {0}!\nLe ticket est actuellement en cours de traitement par le bot.\n\nVeuillez réessayer dans quelques secondes!"
|
||||
"busy":"Impossible d'utiliser ce {0}!\nLe ticket est actuellement en cours de traitement par le bot.\n\nVeuillez réessayer dans quelques secondes!",
|
||||
"closeBeforeMessage":"Ce ticket ne peut pas être fermé/supprimé avant qu'un utilisateur ait envoyé un message.",
|
||||
"closeBeforeAdminMessage":"Ce ticket ne peut pas être fermé/supprimé avant qu'un admin de ticket ou un membre du support ait envoyé un message.",
|
||||
"unableToCreateTicket":"Vous ne pouvez pas créer de ticket."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"La valeur ne correspond pas au modèle!",
|
||||
@@ -331,7 +376,6 @@
|
||||
"added":"Ajouté",
|
||||
"removed":"Retiré",
|
||||
"filter":"Filtre",
|
||||
"claimedBy":"Pris en charge par {0}",
|
||||
"method":"Méthode",
|
||||
"type":"Type",
|
||||
"blacklisted":"Liste Noire",
|
||||
@@ -355,7 +399,27 @@
|
||||
"status":"Statut",
|
||||
"claimed":"Pris en Charge",
|
||||
"pinned":"Épinglé",
|
||||
"creationDate":"Date de Création"
|
||||
"creationDate":"Date de Création",
|
||||
|
||||
"noone":"Personne",
|
||||
"open":"Ouvert",
|
||||
"closed":"Fermé",
|
||||
"priority":"Priorité",
|
||||
"participants":"Participants",
|
||||
"yes":"Oui",
|
||||
"no":"Non",
|
||||
"option":"Option",
|
||||
"topic":"Sujet",
|
||||
"uptime":"Temps de fonctionnement",
|
||||
"messages":"Messages",
|
||||
"embeds":"Embeds",
|
||||
"files":"Fichiers",
|
||||
"components":"Composants",
|
||||
"cooldown":"Délai",
|
||||
"maxTickets":"Tickets max",
|
||||
"admins":"Admins",
|
||||
"roles":"Rôles",
|
||||
"size":"Taille"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"texte",
|
||||
@@ -384,6 +448,7 @@
|
||||
"unclaim":"Libérer un ticket.",
|
||||
"pin":"Épinglez un ticket.",
|
||||
"unpin":"Désépingler un ticket.",
|
||||
|
||||
"move":"Déplacez un ticket.",
|
||||
"moveId":"L'identifiant de l'option vers laquelle vous souhaitez déplacer.",
|
||||
"rename":"Renommez un ticket.",
|
||||
@@ -392,6 +457,7 @@
|
||||
"addUser":"L'utilisateur à ajouter.",
|
||||
"remove":"Retirez un utilisateur d'un ticket.",
|
||||
"removeUser":"L'utilisateur à retirer.",
|
||||
|
||||
"blacklist":"Gérez la liste noire des tickets.",
|
||||
"blacklistView":"Voir la liste noire actuelle.",
|
||||
"blacklistAdd":"Ajoutez un utilisateur à la liste noire.",
|
||||
@@ -405,6 +471,7 @@
|
||||
"statsUserUser":"L'utilisateur à afficher.",
|
||||
"statsTicket":"Voir les statistiques d'un ticket dans le serveur.",
|
||||
"statsTicketTicket":"Le ticket à afficher.",
|
||||
|
||||
"clear":"Supprimez plusieurs tickets en même temps.",
|
||||
"clearFilter":"Le filtre pour supprimer les tickets.",
|
||||
"clearFilters":{
|
||||
@@ -417,6 +484,7 @@
|
||||
"unpin":"Désépinglés",
|
||||
"autoclose":"Fermés automatiquement"
|
||||
},
|
||||
|
||||
"autoclose":"Gérez la fermeture automatique dans un ticket.",
|
||||
"autocloseDisable":"Désactivez la fermeture automatique dans ce ticket.",
|
||||
"autocloseEnable":"Activez la fermeture automatique dans ce ticket.",
|
||||
@@ -424,7 +492,19 @@
|
||||
"autodelete":"Gérez la suppression automatique dans un ticket.",
|
||||
"autodeleteDisable":"Désactivez la suppression automatique dans ce ticket.",
|
||||
"autodeleteEnable":"Activez la suppression automatique dans ce ticket.",
|
||||
"autodeleteEnableTime":"Le nombre de jours d'inactivité nécessaire pour supprimer ce ticket."
|
||||
"autodeleteEnableTime":"Le nombre de jours d'inactivité nécessaire pour supprimer ce ticket.",
|
||||
|
||||
"topic":"Gérer le sujet du salon de ticket.",
|
||||
"topicSet":"Définir le sujet du salon de ticket.",
|
||||
"topicValue":"Le nouveau sujet du salon.",
|
||||
"topicList":"Obtenir une liste de tous les tickets avec leur sujet et stats.",
|
||||
"priority":"Gérer la priorité du ticket.",
|
||||
"prioritySet":"Définir la priorité du ticket.",
|
||||
"priorityValue":"La priorité du salon.",
|
||||
"priorityGet":"Obtenir la priorité du ticket.",
|
||||
"priorityList":"Obtenir une liste de tous les tickets avec leur statut de priorité.",
|
||||
"transfer":"Transférer la propriété du ticket d'un utilisateur à un autre.",
|
||||
"transferUser":"L'utilisateur vers lequel transférer."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Obtenez une liste de toutes les commandes disponibles.",
|
||||
@@ -452,7 +532,16 @@
|
||||
"autocloseDisable":"Désactivez la fermeture automatique dans ce ticket.",
|
||||
"autocloseEnable":"Activez la fermeture automatique dans ce ticket.",
|
||||
"autodeleteDisable":"Désactivez la suppression automatique dans ce ticket.",
|
||||
"autodeleteEnable":"Activez la suppression automatique dans ce ticket."
|
||||
"autodeleteEnable":"Activez la suppression automatique dans ce ticket.",
|
||||
"categories":{
|
||||
"general":"Commandes générales",
|
||||
"basicTicket":"Commandes de ticket basiques",
|
||||
"advancedTicket":"Commandes de ticket avancées",
|
||||
"userTicket":"Commandes de ticket utilisateur",
|
||||
"admin":"Commandes admin",
|
||||
"advanced":"Commandes avancées",
|
||||
"extra":"Commandes extra"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
@@ -460,7 +549,8 @@
|
||||
"system":"Statistiques Système",
|
||||
"user":"Statistiques Utilisateur",
|
||||
"ticket":"Statistiques Ticket",
|
||||
"participants":"Participants"
|
||||
"participants":"Participants",
|
||||
"messages":"Messages"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets Créés",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Tickets Épinglés",
|
||||
"ticketsMoved":"Tickets Déplacés",
|
||||
"usersBlacklisted":"Utilisateurs en Liste Noire",
|
||||
"transcriptsCreated":"Transcriptions Créées"
|
||||
"transcriptsCreated":"Transcriptions Créées",
|
||||
"ticketsAutodeleted":"Tickets auto-supprimés",
|
||||
"ticketsTransferred":"Tickets transférés",
|
||||
"ticketVolume":"Volume de tickets",
|
||||
"averageTickets":"Moyenne de tickets/utilisateur",
|
||||
"currentTickets":"Tickets en cours",
|
||||
"age":"Âge du ticket",
|
||||
"responseTime":"Temps de réponse",
|
||||
"resolutionTime":"Temps de résolution",
|
||||
"createdOn":"Créé le",
|
||||
"createdBy":"Créé par",
|
||||
"closedOn":"Fermé le",
|
||||
"closedBy":"Fermé par",
|
||||
"claimedOn":"Pris en charge le",
|
||||
"claimedBy":"Pris en charge par",
|
||||
"pinnedOn":"Épinglé le",
|
||||
"pinnedBy":"Épinglé par",
|
||||
"deletedOn":"Supprimé le",
|
||||
"deletedBy":"Supprimé par"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Développeur",
|
||||
"serverOwner":"Propriétaire du serveur",
|
||||
"serverAdmin":"Admin du serveur",
|
||||
"moderator":"Équipe de modération",
|
||||
"support":"Équipe de support",
|
||||
"member":"Membre"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Sélectionnez votre ticket",
|
||||
"selectRole":"Sélectionnez votre rôle",
|
||||
"selectOption":"Sélectionnez votre option"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Urgent",
|
||||
"veryHigh":"Très élevée",
|
||||
"high":"Élevée",
|
||||
"normal":"Normale",
|
||||
"low":"Faible",
|
||||
"veryLow":"Très faible",
|
||||
"none":"Aucune"
|
||||
}
|
||||
}
|
||||
+156
-26
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["benzorich"],
|
||||
"lastedited":"06/10/2024",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"German",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,7 +31,15 @@
|
||||
"stringContains":"Diese Zeichenfolge muss {0} enthalten!",
|
||||
"stringChoices":"Diese Zeichenfolge kann nur einen der folgenden Werte annehmen: {0}!",
|
||||
"stringRegex":"Diese Zeichenfolge ist ungültig!",
|
||||
|
||||
"stringInvertedContains":"Diese Zeichenkette darf {0} nicht enthalten!",
|
||||
"stringLowercase":"Diese Zeichenkette muss ausschließlich in Kleinbuchstaben geschrieben werden!",
|
||||
"stringUppercase":"Diese Zeichenkette muss ausschließlich in Großbuchstaben geschrieben werden!",
|
||||
"stringSpecialCharacters":"Diese Zeichenkette darf keine Sonderzeichen enthalten! (nur a-z, 0-9 & Leerzeichen)",
|
||||
"stringNoSpaces":"Diese Zeichenkette darf keine Leerzeichen enthalten!",
|
||||
"stringCapitalWord":"Es wird empfohlen, dass jedes Wort in dieser Zeichenkette mit einem Großbuchstaben beginnt!",
|
||||
"stringCapitalSentence":"Es sieht so aus, als würden einige Sätze in dieser Zeichenkette nicht mit einem Großbuchstaben beginnen!",
|
||||
"stringPunctuation":"Es sieht so aus, als würde der Satz in dieser Zeichenkette nicht mit einem Satzzeichen enden!",
|
||||
|
||||
"numberTooShort":"Diese Zahl kann nicht kürzer als {0} Zeichen sein!",
|
||||
"numberTooLong":"Diese Nummer darf nicht länger als {0} Zeichen sein!",
|
||||
"numberLengthInvalid":"Diese Nummer muss {0} Zeichen lang sein!",
|
||||
@@ -48,10 +56,12 @@
|
||||
"numberNegative":"Diese Zahl kann nicht negativ sein!",
|
||||
"numberPositive":"Diese Zahl kann nicht positiv sein!",
|
||||
"numberZero":"Diese Zahl kann nicht Null sein!",
|
||||
|
||||
"numberNan":"Diese Zahl darf nicht NaN (Not A Number) sein!",
|
||||
"numberInvertedContains":"Diese Zahl darf {0} nicht enthalten!",
|
||||
|
||||
"booleanTrue":"Dieser boolean Wert kann nicht wahr sein!",
|
||||
"booleanFalse":"Dieser boolean Wert kann nicht falsch sein!",
|
||||
|
||||
|
||||
"arrayEmptyDisabled":"Dieses Array darf nicht leer sein!",
|
||||
"arrayEmptyRequired":"Dieses Array muss leer sein!",
|
||||
"arrayTooShort":"Dieses Array muss eine Länge von mindestens {0} haben!",
|
||||
@@ -59,7 +69,7 @@
|
||||
"arrayLengthInvalid":"Dieses Array muss eine Länge von {0} haben!",
|
||||
"arrayInvalidTypes":"Dieses Array kann nur die folgenden Typen enthalten: {0}!",
|
||||
"arrayDouble":"In diesem Array darf derselbe Wert nicht zweimal vorkommen!",
|
||||
|
||||
|
||||
"discordInvalidId":"Dies ist eine ungültige Discord {0} id!",
|
||||
"discordInvalidIdOptions":"Dies ist eine ungültige Discord {0} id! Du kannst auch eine der folgenden verwenden: {1}!",
|
||||
"discordInvalidToken":"Das ist ein ungültiger Discord-Token (syntaktisch)!",
|
||||
@@ -76,7 +86,7 @@
|
||||
"urlInvalidPath":"Diese Url hat einen ungültigen Pfad!",
|
||||
"idNotUnique":"Diese ID ist nicht eindeutig, verwenden Sie stattdessen eine andere ID!",
|
||||
"idNonExistent":"Die ID {0} existiert nicht!",
|
||||
|
||||
|
||||
"invalidType":"Diese Eigenschaft muss vom Typ sein: {0}!",
|
||||
"propertyMissing":"Die Eigenschaft {0} fehlt in diesem Objekt!",
|
||||
"propertyOptional":"Die Eigenschaft {0} ist in diesem Objekt optional!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Diese Eigenschaft kann nicht null sein!",
|
||||
"switchInvalidType":"Dies muss einer der folgenden Typen sein: {0}!",
|
||||
"objectSwitchInvalid":"Dieses Objekt muss einer der folgenden Typen sein: {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"Dies ist eine ungültige Sprache!",
|
||||
"invalidButton":"Dieser Button muss mindestens eine {0} oder {1} enthalten!",
|
||||
"unusedOption":"Die Option {0} wird nirgends verwendet!",
|
||||
"unusedQuestion":"Die Frage {0} wird nirgends verwendet!",
|
||||
"dropdownOption":"Ein Panel mit aktiviertem Dropdown kann nur Optionen vom Typ 'Ticket' enthalten!"
|
||||
"dropdownOption":"Ein Panel mit aktiviertem Dropdown kann nur Optionen vom Typ 'Ticket' enthalten!",
|
||||
"customInvalidVersion":"Die in deiner Konfiguration angegebene Version stimmt nicht überein! Stelle sicher, dass du die Konfiguration auf die neueste Version aktualisiert hast!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Zur Blacklist hinzugefügt",
|
||||
"blacklistRemoveDm":"Von der Blacklist entfernen",
|
||||
"clear":"Freigegebene Tickets",
|
||||
"clearTickets":"Tickets Löschen",
|
||||
"roles":"Aktualisierte Rollen",
|
||||
|
||||
"autoclose":"Ticket automatisch geschlossen",
|
||||
@@ -139,7 +151,12 @@
|
||||
"autocloseDisabled":"Automatisches schließen Deaktiviert",
|
||||
"autodelete":"Ticket automatisch gelöscht",
|
||||
"autodeleteEnabled":"Automatisches Löschen Aktiviert",
|
||||
"autodeleteDisabled":"Automatisches Löschen Deaktiviert"
|
||||
"autodeleteDisabled":"Automatisches Löschen Deaktiviert",
|
||||
|
||||
"topicSet":"Thema Geändert",
|
||||
"prioritySet":"Priorität Geändert",
|
||||
"priorityGet":"Ticket-Priorität",
|
||||
"transfer":"Ticket Übertragen"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"Ihr Ticket wurde bereits erstellt. Klicken Sie auf die Button unten, um es zu öffnen!",
|
||||
@@ -154,7 +171,7 @@
|
||||
"move":"Das Ticket wurde erfolgreich nach {0} verschoben!",
|
||||
"add":"{0} wurde erfolgreich zum Ticket hinzugefügt!",
|
||||
"remove":"{0} wurde erfolgreich aus dem Ticket entfernt!",
|
||||
|
||||
|
||||
"helpExplanation":"`<name>` => erforderlicher Parameter\n`[name]` => optionaler Parameter",
|
||||
"statsReset":"Die Bot-Statistiken wurden erfolgreich zurückgesetzt!",
|
||||
"statsError":"Ticketstatistiken können nicht angezeigt werden!\n{0} ist kein Ticket!",
|
||||
@@ -167,7 +184,7 @@
|
||||
"clearVerify":"Sind Sie sicher, dass Sie mehrere Tickets löschen möchten?\nDiese Aktion kann nicht rückgängig gemacht werden!",
|
||||
"clearReady":"{0} Tickets wurden erfolgreich gelöscht!",
|
||||
"rolesEmpty":"Es wurden keine Rollen aktualisiert!",
|
||||
|
||||
|
||||
"autocloseLeave":"Dieses Ticket wurde automatisch geschlossen, weil der Ersteller den Server verlassen hat!",
|
||||
"autocloseTimeout":"Dieses Ticket wurde automatisch geschlossen, da es seit mehr als `{0}h` inaktiv ist!",
|
||||
"autodeleteLeave":"Dieses Ticket wurde automatisch gelöscht, weil der Ersteller den Server verlassen hat!",
|
||||
@@ -176,11 +193,16 @@
|
||||
"autocloseDisabled":"Autoclose wurde für dieses Ticket deaktiviert! Es wird nicht mehr automatisch geschlossen!",
|
||||
"autodeleteEnabled":"Automatisches Löschen wurde für dieses Ticket aktiviert! Es wird gelöscht, wenn es länger als `{0} Tage` inaktiv ist!",
|
||||
"autodeleteDisabled":"Automatisches Löschen wurde bei diesem Ticket deaktiviert! Es wird nicht mehr automatisch gelöscht!",
|
||||
|
||||
|
||||
"ticketMessageLimit":"Sie können nur {0} Tickets gleichzeitig erstellen!",
|
||||
"ticketMessageAutoclose":"Dieses Ticket wird automatisch geschlossen, wenn es {0}h lang inaktiv war!",
|
||||
"ticketMessageAutodelete":"Dieses Ticket wird automatisch gelöscht, wenn es {0} Tage lang inaktiv war!",
|
||||
"panelReady":"Sie finden das Panel unten!\nDiese Nachricht kann jetzt gelöscht werden!"
|
||||
"panelReady":"Das Panel ist in der folgenden Nachricht verfügbar!\nDiese Nachricht kann nun gelöscht werden!",
|
||||
|
||||
"topicSet":"Das Kanalthema wurde erfolgreich von {0} geändert!",
|
||||
"prioritySet":"Die Ticket-Priorität wurde erfolgreich von {1} auf {0} geändert!",
|
||||
"priorityGet":"Die aktuelle Priorität dieses Tickets ist {0}.",
|
||||
"transfer":"Das Ticket wurde erfolgreich von {0} an {1} durch {2} übertragen!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"Warum haben Sie dieses Ticket geschlossen?",
|
||||
@@ -215,12 +237,19 @@
|
||||
"addDm":"{0} wurde zu Ihrem Ticket auf unserem Server hinzugefügt!",
|
||||
"removeLog":"{0} wurde von {1} aus diesem Ticket entfernt!",
|
||||
"removeDm":"{0} wurde von Ihrem Ticket auf unserem Server entfernt!",
|
||||
|
||||
|
||||
"blacklistAddLog":"{0} wurde von {1} auf die Blacklist gesetzt!",
|
||||
"blacklistRemoveLog":"{0} wurde von {1} von der Blacklist entfernt!",
|
||||
"blacklistAddDm":"Sie wurden in unserem Server auf die Blacklist gesetzt!\nAb sofort können Sie kein Ticket mehr erstellen!",
|
||||
"blacklistRemoveDm":"Sie wurden von der Blacklist unseres Servers entfernt!\n Jetzt können Sie wieder Tickets erstellen!",
|
||||
"clearLog":"{0} Tickets wurden von {1} gelöscht!"
|
||||
"clearLog":"{0} Tickets wurden von {1} gelöscht!",
|
||||
|
||||
"transferLog":"Das Ticket wurde von {0} an {1} durch {2} übertragen!",
|
||||
"transferDm":"Dein Ticket wurde von {0} an {1} auf unserem Server übertragen!",
|
||||
"prioritySetLog":"Die Priorität dieses Tickets wurde von {1} auf {0} geändert!",
|
||||
"prioritySetDm":"Die Priorität deines Tickets wurde auf unserem Server auf {0} geändert!",
|
||||
"roleUpdateLog":"{0} hat seine Rollen aktualisiert!",
|
||||
"roleUpdateDm":"Deine Rollen auf unserem Server wurden aktualisiert!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
@@ -229,7 +258,7 @@
|
||||
"ready":"Transkript erstellt",
|
||||
"textFileDescription":"Dies ist die Textabschrift eines gelöschten Tickets!",
|
||||
"htmlProgress":"Bitte warten Sie, während dieses html-Transkript verarbeitet wird...",
|
||||
|
||||
|
||||
"createdChannel":"Ein neues {0} Transkript wurde auf dem Server erstellt!",
|
||||
"createdCreator":"Es wurde ein neues {0} Transkript für eines Ihrer Tickets erstellt!",
|
||||
"createdParticipant":"In einem der Tickets, an denen Sie teilgenommen haben, wurde ein neues {0} Transkript erstellt!",
|
||||
@@ -241,7 +270,19 @@
|
||||
"retry":"Erneut versuchen",
|
||||
"continue":"Löschen ohne Transkript",
|
||||
"backup":"Sicherungstranskript erstellen",
|
||||
"error":"Beim Versuch, das Transkript zu erstellen, ist etwas schief gelaufen.\nWas möchten Sie tun?\n\nDieses Ticket wird erst gelöscht, wenn Sie auf eine der folgenden Buttons klicken."
|
||||
"error":"Beim Versuch, das Transkript zu erstellen, ist etwas schief gelaufen.\nWas möchten Sie tun?\n\nDieses Ticket wird erst gelöscht, wenn Sie auf eine der folgenden Buttons klicken.",
|
||||
"title":"Transkript-Fehler"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"NACHRICHTEN",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"DATEI",
|
||||
"fieldsTitle":"FELDER",
|
||||
"reactionsTitle":"REAKTIONEN",
|
||||
"statsTitle":"STATISTIKEN",
|
||||
"emptyContent":"<Inhalt ist leer>",
|
||||
"noTitle":"<kein Titel>",
|
||||
"noDesc":"<keine Beschreibung>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
@@ -257,7 +298,8 @@
|
||||
"unknownPanel":"Unbekanntes Panel",
|
||||
"notInGuild":"Nicht auf dem Server",
|
||||
"channelRename":"Kanal kann nicht umbenannt werden",
|
||||
"busy":"Ticket ist besetzt"
|
||||
"busy":"Ticket ist besetzt",
|
||||
"permissionError":"Berechtigungsfehler"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Kontaktieren Sie den Besitzer dieses Bots für weitere Informationen!",
|
||||
@@ -280,7 +322,10 @@
|
||||
"notInGuild":"{0} funktioniert nicht in DM! Bitte versuchen Sie es erneut auf einem Server!",
|
||||
"channelRename":"Aufgrund von Discord-Ratelimits ist es dem Bot derzeit nicht möglich, den Channel umzubenennen. Der Channel wird nach 10 Minuten automatisch umbenannt, wenn der Bot nicht neu gestartet wird.",
|
||||
"channelRenameSource":"Die Quelle dieses Fehlers ist: {0}",
|
||||
"busy":"{0} kann nicht verwendet werden!\nDas Ticket wird derzeit vom Bot bearbeitet.\n\nBitte versuchen Sie es in ein paar Sekunden erneut!"
|
||||
"busy":"{0} kann nicht verwendet werden!\nDas Ticket wird derzeit vom Bot bearbeitet.\n\nBitte versuchen Sie es in ein paar Sekunden erneut!",
|
||||
"closeBeforeMessage":"Dieses Ticket kann nicht geschlossen/gelöscht werden, bevor eine Nachricht von einem Benutzer gesendet wurde.",
|
||||
"closeBeforeAdminMessage":"Dieses Ticket kann nicht geschlossen/gelöscht werden, bevor eine Nachricht von einem Ticket-Admin oder Support-Mitglied gesendet wurde.",
|
||||
"unableToCreateTicket":"Du kannst kein Ticket erstellen."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"Wert stimmt nicht mit Muster überein!",
|
||||
@@ -331,7 +376,6 @@
|
||||
"added":"Hinzugefügt",
|
||||
"removed":"Entfernt",
|
||||
"filter":"Filter",
|
||||
"claimedBy":"Beansprucht von {0}",
|
||||
"method":"Methode",
|
||||
"type":"Typ",
|
||||
"blacklisted":"Gesperrt",
|
||||
@@ -355,7 +399,27 @@
|
||||
"status":"Status",
|
||||
"claimed":"Beansprucht",
|
||||
"pinned":"Angepinnt",
|
||||
"creationDate":"Erstellungsdatum"
|
||||
"creationDate":"Erstellungsdatum",
|
||||
|
||||
"noone":"Niemand",
|
||||
"open":"Offen",
|
||||
"closed":"Geschlossen",
|
||||
"priority":"Priorität",
|
||||
"participants":"Teilnehmer",
|
||||
"yes":"Ja",
|
||||
"no":"Nein",
|
||||
"option":"Option",
|
||||
"topic":"Thema",
|
||||
"uptime":"System-Laufzeit",
|
||||
"messages":"Nachrichten",
|
||||
"embeds":"Embeds",
|
||||
"files":"Dateien",
|
||||
"components":"Komponenten",
|
||||
"cooldown":"Cooldown",
|
||||
"maxTickets":"Max. Tickets",
|
||||
"admins":"Admins",
|
||||
"roles":"Rollen",
|
||||
"size":"Größe"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"text",
|
||||
@@ -384,6 +448,7 @@
|
||||
"unclaim":"Beanspruchen Sie ein Ticket zurück.",
|
||||
"pin":"Pinne ein Ticket an.",
|
||||
"unpin":"Pinne ein Ticket ab.",
|
||||
|
||||
"move":"Verschieben Sie ein Ticket.",
|
||||
"moveId":"Die Kennung der Option.",
|
||||
"rename":"Ein Ticket umbenennen.",
|
||||
@@ -392,6 +457,7 @@
|
||||
"addUser":"Der hinzuzufügende Benutzer.",
|
||||
"remove":"Entfernen Sie einen Benutzer aus einem Ticket.",
|
||||
"removeUser":"Der zu entfernende Benutzer.",
|
||||
|
||||
"blacklist":"Verwalten Sie die Blacklist für Tickets.",
|
||||
"blacklistView":"Zeigen Sie eine Liste der aktuellen Blacklist an.",
|
||||
"blacklistAdd":"Hinzufügen eines Benutzers zur Blacklist.",
|
||||
@@ -405,6 +471,7 @@
|
||||
"statsUserUser":"Der zu betrachtende Benutzer.",
|
||||
"statsTicket":"Anzeigen der Statistiken eines Tickets auf dem Server.",
|
||||
"statsTicketTicket":"Das Ticket zur Betrachtung.",
|
||||
|
||||
"clear":"Mehrere Tickets gleichzeitig löschen. Optional kann ein Filter angegeben werden.",
|
||||
"clearFilter":"Der Filter zum Löschen von Tickets.",
|
||||
"clearFilters":{
|
||||
@@ -417,6 +484,7 @@
|
||||
"unpin":"nicht Angepinnte",
|
||||
"autoclose":"Autoclosed"
|
||||
},
|
||||
|
||||
"autoclose":"Verwalten Sie die automatische Schließung in einem Ticket.",
|
||||
"autocloseDisable":"Deaktivieren Sie das automatische Schließen in diesem Ticket.",
|
||||
"autocloseEnable":"Aktivieren Sie das automatische Schließen in diesem Ticket.",
|
||||
@@ -424,7 +492,19 @@
|
||||
"autodelete":"Verwalten Sie die automatische Löschung in einem Ticket.",
|
||||
"autodeleteDisable":"Deaktivieren Sie das automatische Löschen in diesem Ticket.",
|
||||
"autodeleteEnable":"Aktivieren Sie das automatische Löschen in diesem Ticket.",
|
||||
"autodeleteEnableTime":"Die Anzahl der Tage, die das Ticket inaktiv sein muss, um es zu löschen."
|
||||
"autodeleteEnableTime":"Die Anzahl der Tage, die das Ticket inaktiv sein muss, um es zu löschen.",
|
||||
|
||||
"topic":"Verwalte das Thema des Ticket-Kanals.",
|
||||
"topicSet":"Setze das Thema des Ticket-Kanals.",
|
||||
"topicValue":"Das neue Thema des Kanals.",
|
||||
"topicList":"Zeige eine Liste aller Tickets mit ihrem Thema und Statistiken an.",
|
||||
"priority":"Verwalte die Priorität des Tickets.",
|
||||
"prioritySet":"Setze die Priorität des Tickets.",
|
||||
"priorityValue":"Die Priorität des Kanals.",
|
||||
"priorityGet":"Zeige die Priorität des Tickets an.",
|
||||
"priorityList":"Zeige eine Liste aller Tickets mit ihrem Prioritätsstatus an.",
|
||||
"transfer":"Übertrage das Ticket von einem Benutzer an einen anderen.",
|
||||
"transferUser":"Der Benutzer, an den übertragen werden soll."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Erhalten Sie eine Liste mit allen verfügbaren Befehlen.",
|
||||
@@ -452,7 +532,16 @@
|
||||
"autocloseDisable":"Deaktivieren Sie das automatische Schließen in diesem Ticket.",
|
||||
"autocloseEnable":"Aktivieren Sie das automatische Schließen in diesem Ticket.",
|
||||
"autodeleteDisable":"Deaktivieren Sie das automatische Löschen in diesem Ticket.",
|
||||
"autodeleteEnable":"Aktivieren Sie das automatische Löschen in diesem Ticket."
|
||||
"autodeleteEnable":"Aktivieren Sie das automatische Löschen in diesem Ticket.",
|
||||
"categories":{
|
||||
"general":"Allgemeine Befehle",
|
||||
"basicTicket":"Basis-Ticket-Befehle",
|
||||
"advancedTicket":"Erweiterte Ticket-Befehle",
|
||||
"userTicket":"Benutzer-Ticket-Befehle",
|
||||
"admin":"Admin-Befehle",
|
||||
"advanced":"Erweiterte Befehle",
|
||||
"extra":"Extra-Befehle"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
@@ -460,7 +549,8 @@
|
||||
"system":"System-Statistiken",
|
||||
"user":"Benutzer-Statistiken",
|
||||
"ticket":"Ticket-Statistiken",
|
||||
"participants":"Teilnehmer"
|
||||
"participants":"Teilnehmer",
|
||||
"messages":"Nachrichten"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets erstellt",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Tickets angepinnt",
|
||||
"ticketsMoved":"Tickets verschoben",
|
||||
"usersBlacklisted":"Nutzer auf der Blacklist",
|
||||
"transcriptsCreated":"Transcripts erstellt"
|
||||
"transcriptsCreated":"Transcripts erstellt",
|
||||
"ticketsAutodeleted":"Automatisch gelöschte Tickets",
|
||||
"ticketsTransferred":"Übertragene Tickets",
|
||||
"ticketVolume":"Ticket-Volumen",
|
||||
"averageTickets":"Durchschnittliche Tickets/Benutzer",
|
||||
"currentTickets":"Aktuelle Tickets",
|
||||
"age":"Ticket-Alter",
|
||||
"responseTime":"Antwortzeit",
|
||||
"resolutionTime":"Lösungszeit",
|
||||
"createdOn":"Erstellt am",
|
||||
"createdBy":"Erstellt von",
|
||||
"closedOn":"Geschlossen am",
|
||||
"closedBy":"Geschlossen von",
|
||||
"claimedOn":"Angenommen am",
|
||||
"claimedBy":"Angenommen von",
|
||||
"pinnedOn":"Angepinnt am",
|
||||
"pinnedBy":"Angepinnt von",
|
||||
"deletedOn":"Gelöscht am",
|
||||
"deletedBy":"Gelöscht von"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Entwickler",
|
||||
"serverOwner":"Server-Besitzer",
|
||||
"serverAdmin":"Server-Administrator",
|
||||
"moderator":"Moderatoren-Team",
|
||||
"support":"Support-Team",
|
||||
"member":"Mitglied"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Wähle dein Ticket",
|
||||
"selectRole":"Wähle deine Rolle",
|
||||
"selectOption":"Wähle deine Option"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Dringend",
|
||||
"veryHigh":"Sehr Hoch",
|
||||
"high":"Hoch",
|
||||
"normal":"Normal",
|
||||
"low":"Niedrig",
|
||||
"veryLow":"Sehr Niedrig",
|
||||
"none":"Keine"
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["HanumeshGupta","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Greek",
|
||||
"automated":true
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["challenger_nova"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Hindi",
|
||||
"automated":false
|
||||
},
|
||||
|
||||
+157
-27
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["Kornel0706"],
|
||||
"lastedited":"22/08/2024",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Hungarian",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,6 +31,14 @@
|
||||
"stringContains":"Ennek a karakterláncnak tartalmaznia kell {0}-t!",
|
||||
"stringChoices":"Ez a karakterlánc csak a következő értékek egyike lehet: {0}!",
|
||||
"stringRegex":"Ez a karakterlánc érvénytelen!",
|
||||
"stringInvertedContains":"Ez a szöveg nem tartalmazhatja a(z) {0} elemet!",
|
||||
"stringLowercase":"Ez a szöveg csak kisbetűvel írható!",
|
||||
"stringUppercase":"Ez a szöveg csak nagybetűvel írható!",
|
||||
"stringSpecialCharacters":"Ez a szöveg nem tartalmazhat különleges karaktereket! (csak a-z, 0-9 és szóköz)",
|
||||
"stringNoSpaces":"Ez a szöveg nem tartalmazhat szóközt!",
|
||||
"stringCapitalWord":"Ajánlott, hogy minden szó nagybetűvel kezdődjön!",
|
||||
"stringCapitalSentence":"Úgy tűnik, néhány mondat ebben a szövegben nem nagybetűvel kezdődik!",
|
||||
"stringPunctuation":"Úgy tűnik, ez a mondat nem ponttal vagy más írásjellel végződik!",
|
||||
|
||||
"numberTooShort":"Ez a szám nem lehet rövidebb, mint {0} karakter!",
|
||||
"numberTooLong":"Ez a szám nem lehet hosszabb, mint {0} karakter!",
|
||||
@@ -48,10 +56,12 @@
|
||||
"numberNegative":"Ez a szám nem lehet negatív!",
|
||||
"numberPositive":"Ez a szám nem lehet pozitív!",
|
||||
"numberZero":"Ez a szám nem lehet nulla!",
|
||||
|
||||
"numberNan":"Ez a szám nem lehet NaN (Nem szám)!",
|
||||
"numberInvertedContains":"Ez a szám nem tartalmazhatja a(z) {0} elemet!",
|
||||
|
||||
"booleanTrue":"Ez a logikai érték nem lehet igaz!",
|
||||
"booleanFalse":"Ez a logikai érték nem lehet hamis!",
|
||||
|
||||
|
||||
"arrayEmptyDisabled":"Ez a tömb nem lehet üres!",
|
||||
"arrayEmptyRequired":"Ez a tömb üresnek kell lennie!",
|
||||
"arrayTooShort":"Ennek a tömbnek legalább {0} hosszúnak kell lennie!",
|
||||
@@ -59,7 +69,7 @@
|
||||
"arrayLengthInvalid":"Ennek a tömbnek pontosan {0} hosszúnak kell lennie!",
|
||||
"arrayInvalidTypes":"Ez a tömb csak a következő típusokat tartalmazhatja: {0}!",
|
||||
"arrayDouble":"Ez a tömb nem engedélyezi ugyanazt az értéket kétszer!",
|
||||
|
||||
|
||||
"discordInvalidId":"Ez egy érvénytelen discord {0} azonosító!",
|
||||
"discordInvalidIdOptions":"Ez egy érvénytelen discord {0} azonosító! Használhatja a következő lehetőségek egyikét is: {1}!",
|
||||
"discordInvalidToken":"Ez egy érvénytelen discord token (szintaktikailag)!",
|
||||
@@ -76,7 +86,7 @@
|
||||
"urlInvalidPath":"Ez az URL érvénytelen elérési utat tartalmaz!",
|
||||
"idNotUnique":"Ez az azonosító nem egyedi, használjon egy másikat!",
|
||||
"idNonExistent":"Az azonosító {0} nem létezik!",
|
||||
|
||||
|
||||
"invalidType":"Ennek a tulajdonságnak a következő típusúnak kell lennie: {0}!",
|
||||
"propertyMissing":"A {0} tulajdonság hiányzik ebből az objektumból!",
|
||||
"propertyOptional":"A {0} tulajdonság opcionális ebben az objektumban!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Ez a tulajdonság nem lehet null!",
|
||||
"switchInvalidType":"Ennek a következő típusok egyikének kell lennie: {0}!",
|
||||
"objectSwitchInvalid":"Ennek az objektumnak a következő típusok egyikének kell lennie: {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"Ez egy érvénytelen nyelv!",
|
||||
"invalidButton":"Ennek a gombnak legalább egy {0} vagy {1} kell, hogy tartalmazzon!",
|
||||
"unusedOption":"Az opció {0} nincs használatban sehol!",
|
||||
"unusedQuestion":"A kérdés {0} nincs használatban sehol!",
|
||||
"dropdownOption":"Egy legördülő menüvel rendelkező panel csak a 'jegy' típusú opciókat tartalmazhat!"
|
||||
"dropdownOption":"Egy legördülő menüvel rendelkező panel csak a 'jegy' típusú opciókat tartalmazhat!",
|
||||
"customInvalidVersion":"A konfigurációban megadott verzió nem egyezik! Győződjön meg róla, hogy a konfiguráció a legfrissebb verzióra van frissítve!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -122,7 +133,7 @@
|
||||
"move":"Jegy áthelyezve {0}-ra",
|
||||
"add":"Felhasználó hozzáadva a jegyhez",
|
||||
"remove":"Felhasználó eltávolítva a jegyből",
|
||||
|
||||
|
||||
"help":"Elérhető parancsok",
|
||||
"statsReset":"Statisztikák visszaállítása",
|
||||
"blacklistAdd":"Felhasználó tiltólistára helyezve",
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Felvéve a tiltólistára",
|
||||
"blacklistRemoveDm":"Eltávolítva a tiltólistáról",
|
||||
"clear":"Jegyek törölve",
|
||||
"clearTickets":"Jegyek törlése",
|
||||
"roles":"Szerepek frissítve",
|
||||
|
||||
"autoclose":"Jegy automatikusan bezárva",
|
||||
@@ -139,7 +151,12 @@
|
||||
"autocloseDisabled":"Automatikus bezárás letiltva",
|
||||
"autodelete":"Jegy automatikusan törölve",
|
||||
"autodeleteEnabled":"Automatikus törlés engedélyezve",
|
||||
"autodeleteDisabled":"Automatikus törlés letiltva"
|
||||
"autodeleteDisabled":"Automatikus törlés letiltva",
|
||||
|
||||
"topicSet":"Téma megváltoztatva",
|
||||
"prioritySet":"Prioritás megváltoztatva",
|
||||
"priorityGet":"Jegy prioritása",
|
||||
"transfer":"Jegy átvitele"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"A jegyed létrejött. Kattints az alábbi gombra, hogy hozzáférj!",
|
||||
@@ -154,7 +171,7 @@
|
||||
"move":"A jegyet sikeresen áthelyeztük {0}-ra!",
|
||||
"add":"{0} sikeresen hozzáadva a jegyhez!",
|
||||
"remove":"{0} sikeresen eltávolítva a jegyből!",
|
||||
|
||||
|
||||
"helpExplanation":"`<név>` => kötelező paraméter\n`[név]` => opcionális paraméter",
|
||||
"statsReset":"A bot statisztikái sikeresen visszaállítva!",
|
||||
"statsError":"A jegy statisztikáit nem sikerült megtekinteni!\n{0} nem egy jegy!",
|
||||
@@ -167,7 +184,7 @@
|
||||
"clearVerify":"Biztos vagy benne, hogy törölni szeretnéd több jegyet? Ez a művelet nem vonható vissza!",
|
||||
"clearReady":"{0} jegyek sikeresen törölve!",
|
||||
"rolesEmpty":"Nincsenek frissítve szerepek!",
|
||||
|
||||
|
||||
"autocloseLeave":"Ez a jegy automatikusan bezáródott, mert a készítő elhagyta a szervert!",
|
||||
"autocloseTimeout":"Ez a jegy automatikusan bezáródott, mert több mint `{0}h` ideje inaktív volt!",
|
||||
"autodeleteLeave":"Ez a jegy automatikusan törlődött, mert a készítő elhagyta a szervert!",
|
||||
@@ -176,11 +193,16 @@
|
||||
"autocloseDisabled":"Az automatikus bezárás le van tiltva ebben a jegyben!\nNem záródik be automatikusan többé!",
|
||||
"autodeleteEnabled":"Az automatikus törlés engedélyezve van ebben a jegyben!\nEz törlődik, ha több mint `{0} nap` ideig inaktív!",
|
||||
"autodeleteDisabled":"Az automatikus törlés le van tiltva ebben a jegyben!\nNem törlődik automatikusan többé!",
|
||||
|
||||
|
||||
"ticketMessageLimit":"Egyszerre csak {0} jegyet hozhatsz létre!",
|
||||
"ticketMessageAutoclose":"Ez a jegy automatikusan bezáródik, ha inaktív marad {0}h ideig!",
|
||||
"ticketMessageAutodelete":"Ez a jegy automatikusan törlődik, ha inaktív marad {0} nap ideig!",
|
||||
"panelReady":"Az alábbi panelben megtalálod!\nEz az üzenet most törölhető!"
|
||||
"panelReady":"A panel elérhető a követő üzenetben!\nEz az üzenet most törölhető!",
|
||||
|
||||
"topicSet":"A csatorna témáját sikeresen megváltoztatta: {0}!",
|
||||
"prioritySet":"A jegy prioritása sikeresen {1}-re változott: {0}!",
|
||||
"priorityGet":"Ennek a jegynek a jelenlegi prioritása: {0}.",
|
||||
"transfer":"A jegy tulajdonjoga sikeresen átkerült {0}-tól {1}-hez {2} által!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"Miért zártad be ezt a jegyet?",
|
||||
@@ -215,12 +237,19 @@
|
||||
"addDm":"{0} hozzáadásra került a jegyedhez a szerverünkön!",
|
||||
"removeLog":"{0} eltávolításra került ebből a jegyből {1} által!",
|
||||
"removeDm":"{0} eltávolításra került a jegyedből a szerverünkön!",
|
||||
|
||||
|
||||
"blacklistAddLog":"{0} tiltólistára helyezte {1}!",
|
||||
"blacklistRemoveLog":"{0} eltávolította a tiltólistáról {1}!",
|
||||
"blacklistAddDm":"Tiltólistára kerültél a szerverünkön!\nEzentúl nem hozhatsz létre jegyet!",
|
||||
"blacklistRemoveDm":"Eltávolításra kerültél a szerverünk tiltólistájáról!\nMost újra létrehozhatsz jegyeket!",
|
||||
"clearLog":"{0} jegyek törlésre kerültek {1} által!"
|
||||
"clearLog":"{0} jegyek törlésre kerültek {1} által!",
|
||||
|
||||
"transferLog":"A jegy tulajdonjoga {2} által {0}-ról {1}-re lett átvive!",
|
||||
"transferDm":"A jegy tulajdonjoga át lett helyezve {0}-tól {1}-hez a szerverünkön!",
|
||||
"prioritySetLog":"A jegy prioritása {1} által {0}-re változott!",
|
||||
"prioritySetDm":"A jegy prioritása a szerverünkön {0}-re változott!",
|
||||
"roleUpdateLog":"{0} frissítette a szerepköreit!",
|
||||
"roleUpdateDm":"A szerepköreit frissítették a szerverünkön!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
@@ -229,7 +258,7 @@
|
||||
"ready":"Átirat létrehozva",
|
||||
"textFileDescription":"Ez egy törölt jegy szöveges átirata!",
|
||||
"htmlProgress":"Kérjük, várj, amíg ez a HTML átirat feldolgozásra kerül...",
|
||||
|
||||
|
||||
"createdChannel":"Egy új {0} átirat létrejött a szerveren!",
|
||||
"createdCreator":"Egy új {0} átirat létrejött egy jegyed számára!",
|
||||
"createdParticipant":"Egy új {0} átirat létrejött egy jegyben, amiben részt vettél!",
|
||||
@@ -241,7 +270,19 @@
|
||||
"retry":"Újra",
|
||||
"continue":"Törlés átirat nélkül",
|
||||
"backup":"Biztonsági átirat létrehozása",
|
||||
"error":"Valami hiba történt az átirat létrehozása közben.\nMit szeretnél tenni?\n\nEz a jegy nem kerül törlésre, amíg nem kattintasz az egyik gombra."
|
||||
"error":"Valami hiba történt az átirat létrehozása közben.\nMit szeretnél tenni?\n\nEz a jegy nem kerül törlésre, amíg nem kattintasz az egyik gombra.",
|
||||
"title":"Átirat hiba"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"ÜZENETEK",
|
||||
"embedTitle":"BEÁGYAZÁS",
|
||||
"fileTitle":"FÁJL",
|
||||
"fieldsTitle":"MEZŐK",
|
||||
"reactionsTitle":"REAKCIÓK",
|
||||
"statsTitle":"STATS",
|
||||
"emptyContent":"<tartalom üres>",
|
||||
"noTitle":"<cím nélkül>",
|
||||
"noDesc":"<leírás nélkül>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
@@ -257,7 +298,8 @@
|
||||
"unknownPanel":"Ismeretlen Panel",
|
||||
"notInGuild":"Nem a Szerveren",
|
||||
"channelRename":"Nem sikerült átnevezni a csatornát",
|
||||
"busy":"A Jegy Elfoglalt"
|
||||
"busy":"A Jegy Elfoglalt",
|
||||
"permissionError":"Engedély hiba"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Lépj kapcsolatba a bot tulajdonosával további információkért!",
|
||||
@@ -280,7 +322,10 @@
|
||||
"notInGuild":"Ez a {0} nem működik DM-ben! Próbáld újra egy szerveren!",
|
||||
"channelRename":"A discord korlátai miatt jelenleg nem lehet átnevezni a csatornát. A csatorna automatikusan átnevezésre kerül 10 perc múlva, ha a bot nincs újraindítva.",
|
||||
"channelRenameSource":"A hiba forrása: {0}",
|
||||
"busy":"Nem lehet használni ezt a {0}-t!\nA jegy jelenleg a bot által van feldolgozás alatt.\n\nPróbáld meg néhány másodperc múlva!"
|
||||
"busy":"Nem lehet használni ezt a {0}-t!\nA jegy jelenleg a bot által van feldolgozás alatt.\n\nPróbáld meg néhány másodperc múlva!",
|
||||
"closeBeforeMessage":"Ezt a jegyet nem lehet lezárni/törölni, amíg egy felhasználó nem küldött üzenetet.",
|
||||
"closeBeforeAdminMessage":"Ezt a jegyet nem lehet lezárni/törölni, amíg a jegy adminja vagy a támogatói csapat tagja nem küldött üzenetet.",
|
||||
"unableToCreateTicket":"Nem tud jegyet létrehozni."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"Az érték nem felel meg a mintának!",
|
||||
@@ -331,7 +376,6 @@
|
||||
"added":"Hozzáadva",
|
||||
"removed":"Eltávolítva",
|
||||
"filter":"Szűrő",
|
||||
"claimedBy":"Igényelte {0}",
|
||||
"method":"Módszer",
|
||||
"type":"Típus",
|
||||
"blacklisted":"Tiltólistás",
|
||||
@@ -352,10 +396,30 @@
|
||||
"version":"Verzió",
|
||||
"name":"Név",
|
||||
"role":"Szerep",
|
||||
"status":"Státusz",
|
||||
"status":"Állapot",
|
||||
"claimed":"Igényelt",
|
||||
"pinned":"Rögzített",
|
||||
"creationDate":"Létrehozás Dátuma"
|
||||
"creationDate":"Létrehozás Dátuma",
|
||||
|
||||
"noone":"Senki",
|
||||
"open":"Nyitott",
|
||||
"closed":"Zárt",
|
||||
"priority":"Prioritás",
|
||||
"participants":"Résztvevők",
|
||||
"yes":"Igen",
|
||||
"no":"Nem",
|
||||
"option":"Opció",
|
||||
"topic":"Téma",
|
||||
"uptime":"Rendszer üzemidő",
|
||||
"messages":"Üzenetek",
|
||||
"embeds":"Beágyazások",
|
||||
"files":"Fájlok",
|
||||
"components":"Komponensek",
|
||||
"cooldown":"Leállási idő",
|
||||
"maxTickets":"Max jegyek",
|
||||
"admins":"Adminok",
|
||||
"roles":"Szerepkörök",
|
||||
"size":"Méret"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"szöveg",
|
||||
@@ -384,6 +448,7 @@
|
||||
"unclaim":"Jegy feloldása.",
|
||||
"pin":"Jegy rögzítése.",
|
||||
"unpin":"Jegy rögzítésének feloldása.",
|
||||
|
||||
"move":"Jegy áthelyezése.",
|
||||
"moveId":"Annak a opció az azonosítója, amelyet áthelyezni szeretnél.",
|
||||
"rename":"Jegy átnevezése.",
|
||||
@@ -392,6 +457,7 @@
|
||||
"addUser":"A felhasználó, akit hozzá szeretnél adni.",
|
||||
"remove":"Felhasználó eltávolítása a jegyből.",
|
||||
"removeUser":"A felhasználó, akit el szeretnél távolítani.",
|
||||
|
||||
"blacklist":"Jegy tiltólista kezelése.",
|
||||
"blacklistView":"A jelenlegi tiltólista megtekintése.",
|
||||
"blacklistAdd":"Felhasználó hozzáadása a tiltólistához.",
|
||||
@@ -405,6 +471,7 @@
|
||||
"statsUserUser":"A felhasználó, akinek a statisztikáit meg szeretnéd tekinteni.",
|
||||
"statsTicket":"Jegy statisztikáinak megtekintése a szerveren.",
|
||||
"statsTicketTicket":"A jegy, amelynek a statisztikáit meg szeretnéd tekinteni.",
|
||||
|
||||
"clear":"Több jegy egyidejű törlése. Opcionális szűrő adható meg.",
|
||||
"clearFilter":"A szűrő a jegyek törléséhez.",
|
||||
"clearFilters":{
|
||||
@@ -417,6 +484,7 @@
|
||||
"unpin":"Feloldott",
|
||||
"autoclose":"Automatikusan Bezárt"
|
||||
},
|
||||
|
||||
"autoclose":"Automatikus bezárás kezelése egy jegyben.",
|
||||
"autocloseDisable":"Automatikus bezárás letiltása ebben a jegyben.",
|
||||
"autocloseEnable":"Automatikus bezárás engedélyezése ebben a jegyben.",
|
||||
@@ -424,7 +492,19 @@
|
||||
"autodelete":"Automatikus törlés kezelése egy jegyben.",
|
||||
"autodeleteDisable":"Automatikus törlés letiltása ebben a jegyben.",
|
||||
"autodeleteEnable":"Automatikus törlés engedélyezése ebben a jegyben.",
|
||||
"autodeleteEnableTime":"A napok száma, amely inaktívvá kell, hogy váljon ez a jegy a törléshez."
|
||||
"autodeleteEnableTime":"A napok száma, amely inaktívvá kell, hogy váljon ez a jegy a törléshez.",
|
||||
|
||||
"topic":"Kezelje a jegy csatorna témáját.",
|
||||
"topicSet":"Állítsa be a jegy csatorna témáját.",
|
||||
"topicValue":"A csatorna új témája.",
|
||||
"topicList":"Az összes jegy listája a témájukkal és statisztikáikkal.",
|
||||
"priority":"Kezelje a jegy prioritását.",
|
||||
"prioritySet":"Állítsa be a jegy prioritását.",
|
||||
"priorityValue":"A csatorna prioritása.",
|
||||
"priorityGet":"Kapja meg a jegy prioritását.",
|
||||
"priorityList":"Az összes jegy listája a prioritásukkal.",
|
||||
"transfer":"Átadja a jegy tulajdonjogát egyik felhasználótól a másikhoz.",
|
||||
"transferUser":"A felhasználó, akinek át kell adni."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Parancsok listájának megtekintése.",
|
||||
@@ -452,7 +532,16 @@
|
||||
"autocloseDisable":"Automatikus bezárás letiltása ebben a jegyben.",
|
||||
"autocloseEnable":"Automatikus bezárás engedélyezése ebben a jegyben.",
|
||||
"autodeleteDisable":"Automatikus törlés letiltása ebben a jegyben.",
|
||||
"autodeleteEnable":"Automatikus törlés engedélyezése ebben a jegyben."
|
||||
"autodeleteEnable":"Automatikus törlés engedélyezése ebben a jegyben.",
|
||||
"categories":{
|
||||
"general":"Általános parancsok",
|
||||
"basicTicket":"Alap jegy parancsok",
|
||||
"advancedTicket":"Speciális jegy parancsok",
|
||||
"userTicket":"Felhasználói jegy parancsok",
|
||||
"admin":"Admin parancsok",
|
||||
"advanced":"Speciális parancsok",
|
||||
"extra":"Extra parancsok"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
@@ -460,7 +549,8 @@
|
||||
"system":"Rendszer Statisztikák",
|
||||
"user":"Felhasználói Statisztikák",
|
||||
"ticket":"Jegy Statisztikák",
|
||||
"participants":"Résztvevők"
|
||||
"participants":"Résztvevők",
|
||||
"messages":"Üzenetek"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Létrehozott Jegyek",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Rögzített Jegyek",
|
||||
"ticketsMoved":"Áthelyezett Jegyek",
|
||||
"usersBlacklisted":"Tiltólistás Felhasználók",
|
||||
"transcriptsCreated":"Létrehozott Átiratok"
|
||||
"transcriptsCreated":"Létrehozott Átiratok",
|
||||
"ticketsAutodeleted":"Automatikusan törölt jegyek",
|
||||
"ticketsTransferred":"Átadott jegyek",
|
||||
"ticketVolume":"Jegy mennyiség",
|
||||
"averageTickets":"Átlag jegyek/felhasználó",
|
||||
"currentTickets":"Jelenlegi jegyek",
|
||||
"age":"Jegy kora",
|
||||
"responseTime":"Válaszidő",
|
||||
"resolutionTime":"Megoldási idő",
|
||||
"createdOn":"Létrehozva",
|
||||
"createdBy":"Létrehozta",
|
||||
"closedOn":"Lezárva",
|
||||
"closedBy":"Lezárta",
|
||||
"claimedOn":"Átvéve",
|
||||
"claimedBy":"Átvette",
|
||||
"pinnedOn":"Kitűzve",
|
||||
"pinnedBy":"Kitűzte",
|
||||
"deletedOn":"Törölve",
|
||||
"deletedBy":"Törölte"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Fejlesztő",
|
||||
"serverOwner":"Szerver tulajdonos",
|
||||
"serverAdmin":"Szerver admin",
|
||||
"moderator":"Moderátor csapat",
|
||||
"support":"Támogató csapat",
|
||||
"member":"Tag"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Válassza ki a jegyét",
|
||||
"selectRole":"Válassza ki a szerepkörét",
|
||||
"selectOption":"Válassza ki a lehetőségét"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Sürgős",
|
||||
"veryHigh":"Nagyon magas",
|
||||
"high":"Magas",
|
||||
"normal":"Normál",
|
||||
"low":"Alacsony",
|
||||
"veryLow":"Nagyon alacsony",
|
||||
"none":"Nincs"
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["erxg"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Indonesian",
|
||||
"automated":false
|
||||
},
|
||||
|
||||
+607
-477
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["HanumeshGupta","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Japanese",
|
||||
"automated":true
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["HanumeshGupta","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Korean",
|
||||
"automated":true
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["HanumeshGupta","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Kurdish",
|
||||
"automated":false
|
||||
},
|
||||
|
||||
+580
-450
File diff suppressed because it is too large
Load Diff
+156
-26
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["TsgIndrius"],
|
||||
"lastedited":"26/01/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Lithuanian",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,7 +31,15 @@
|
||||
"stringContains":"Šita eilutė turi turėti {0}!",
|
||||
"stringChoices":"Ši eilutė gali būti tik viena iš šių pasirinkimų: {0}!",
|
||||
"stringRegex":"Šita eilutė nėra teisinga!",
|
||||
|
||||
"stringInvertedContains":"Šioje eilutėje neleidžiama naudoti šito {0}!",
|
||||
"stringLowercase":"Ši eilutė turi būti rašoma tik mažosiomis raidėmis!",
|
||||
"stringUppercase":"Ši eilutė turi būti rašoma tik didžiosiomis raidėmis!",
|
||||
"stringSpecialCharacters":"Šioje eilutėje negali būti jokių specialiųjų simbolių! (tik a–z, 0–9 ir tarpai)",
|
||||
"stringNoSpaces":"Šioje eilutėje negali būti tarpų!",
|
||||
"stringCapitalWord":"Rekomenduojama, kad kiekvienas šios eilutės žodis prasidėtų didžiąja raide!",
|
||||
"stringCapitalSentence":"Panašu, kad kai kurie sakiniai šioje eilutėje neprasideda didžiąja raide!",
|
||||
"stringPunctuation":"Panašu, kad sakinys šioje eilutėje nesibaigia skyrybos ženklu!",
|
||||
|
||||
"numberTooShort":"Šis skaičius negali būti trumpesnis nei {0} raidžių!",
|
||||
"numberTooLong":"Šis skaičius negali būti ilgesnis nei {0} raidžių!",
|
||||
"numberLengthInvalid":"Šis skaičius turi būti {0} raidžių ilgio!",
|
||||
@@ -48,10 +56,12 @@
|
||||
"numberNegative":"Šitas numeris negali būti neigiamas!",
|
||||
"numberPositive":"Šitas numeris negali būti teigiamas!",
|
||||
"numberZero":"Šitas numeris negali būti nulinis!",
|
||||
|
||||
"numberNan":"Šis skaičius negali būti nulis (ne skaičius)!",
|
||||
"numberInvertedContains":"Šiame skaičiuje negali būti {0}!",
|
||||
|
||||
"booleanTrue":"Šis boolean negali būti tiesa!",
|
||||
"booleanFalse":"Šis boolean negali būti neteisingas!",
|
||||
|
||||
|
||||
"arrayEmptyDisabled":"Šis array negali būti tuščias!",
|
||||
"arrayEmptyRequired":"Šis array turi būti tuščias!",
|
||||
"arrayTooShort":"Šis array turi būti bent ilgesnis negu {0}!",
|
||||
@@ -59,7 +69,7 @@
|
||||
"arrayLengthInvalid":"Šio array ilgis turi būti {0}!",
|
||||
"arrayInvalidTypes":"Šiame array gali būti tik šie tipai: {0}!",
|
||||
"arrayDouble":"Šis array neleidžia tureti tos pačios reikšmės du kartus!",
|
||||
|
||||
|
||||
"discordInvalidId":"Šitas neteisingas discord'o {0} ID!",
|
||||
"discordInvalidIdOptions":"Tai neteisingas discord {0} ID! Taip pat galite naudoti vieną iš šių: {1}!",
|
||||
"discordInvalidToken":"Šitas Token yra neteisingas prašyčiau idėti teisinga Token!",
|
||||
@@ -76,7 +86,7 @@
|
||||
"urlInvalidPath":"Šiame URL yra netinkamas kelias!",
|
||||
"idNotUnique":"Šis ID nėra unikalus, naudokite kitą ID!",
|
||||
"idNonExistent":"Šitas ID {0} neegzistuoja!",
|
||||
|
||||
|
||||
"invalidType":"Šios valdos turi būti tipas: {0}!",
|
||||
"propertyMissing":"Ši valda {0} šio objekto trūksta!",
|
||||
"propertyOptional":"Ši valda {0} yra neprivalomas šiame objekte!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Ši valda negali būti niekinė!",
|
||||
"switchInvalidType":"Tai turi būti vienas iš toliau nurodytų tipų: {0}!",
|
||||
"objectSwitchInvalid":"Šis objektas turi būti vieno iš šių tipų: {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"Neiteisinga Kalba!",
|
||||
"invalidButton":"Šis mygtukas turi turėti bent {0} arba {1}!",
|
||||
"unusedOption":"Šis pasirinkimas {0} nėra naudojamas!",
|
||||
"unusedQuestion":"Klausimas {0} nėra naudojamas niekur!",
|
||||
"dropdownOption":"Pasirinkimas su įjungtu išskleidžiamuoju meniu gali būti tik „bilieto“ tipo parinktys!"
|
||||
"dropdownOption":"Pasirinkimas su įjungtu išskleidžiamuoju meniu gali būti tik „bilieto“ tipo parinktys!",
|
||||
"customInvalidVersion":"Jūsų nustatymuose nurodyta versija nesutampa! Įsitikinkite, kad atnaujinote nustatymus į naujausią versiją.!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Žmogus buvo užblokuotas",
|
||||
"blacklistRemoveDm":"Pašalino užblokavima",
|
||||
"clear":"Bilietai išvalyti",
|
||||
"clearTickets":"Išvalyti Bilietus",
|
||||
"roles":"Roles Atnaujinti",
|
||||
|
||||
"autoclose":"Bilietas automatiškai uždarytas",
|
||||
@@ -139,7 +151,12 @@
|
||||
"autocloseDisabled":"Automatinis uždarymas išjungtas",
|
||||
"autodelete":"Bilietas automatiškai ištrintas",
|
||||
"autodeleteEnabled":"Bilieto automatinis ištrynimas įjungtas",
|
||||
"autodeleteDisabled":"Bilieto automatinis ištrynimas išjungtas"
|
||||
"autodeleteDisabled":"Bilieto automatinis ištrynimas išjungtas",
|
||||
|
||||
"topicSet":"Tema pakeista",
|
||||
"prioritySet":"Prilioritetas pakeistas",
|
||||
"priorityGet":"Bilieto prilioritetas",
|
||||
"transfer":"Bilietas perkeltas"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"Jūsų bilietas sukurtas. Spustelėkite toliau esantį mygtuką, kad jį pasiektumėte!",
|
||||
@@ -154,7 +171,7 @@
|
||||
"move":"Bilietas buvo perkeltas į {0} sėkmingai!",
|
||||
"add":"{0} buvo pridėtas į bilieta sekmingai!",
|
||||
"remove":"{0} buvo pašalintas iš bilieto sėkmingai!",
|
||||
|
||||
|
||||
"helpExplanation":"`<pavadinimas>` => reikalingas parametras\n`[pavadinimas]` => pasirenkamas parametras",
|
||||
"statsReset":"Boto statistika buvo sekmingai nustatyti iš naujo!",
|
||||
"statsError":"Negaliu matyti bilieto statistikos!\n{0} nėra bilietas!",
|
||||
@@ -167,7 +184,7 @@
|
||||
"clearVerify":"Ar tikrai norite ištrinti kelis bilietus?\nŠio veiksmo anuliuoti negalima!",
|
||||
"clearReady":"{0} bilietai buvo sėkmingai pašalinti!",
|
||||
"rolesEmpty":"Jokie roles nebuvo atnaujinti!",
|
||||
|
||||
|
||||
"autocloseLeave":"Šis bilietas buvo automatiškai uždarytas, nes kūrėjas paliko serverį!",
|
||||
"autocloseTimeout":"Šis bilietas buvo automatiškai uždarytas, nes buvo neaktyvus daugiau nei `{0}h`!",
|
||||
"autodeleteLeave":"Šis bilietas buvo automatiškai ištrintas, nes kūrėjas paliko serverį!",
|
||||
@@ -176,11 +193,16 @@
|
||||
"autocloseDisabled":"Šiame biliete automatinis uždarymas išjungtas!\nJis nebebus automatiškai uždarytas!",
|
||||
"autodeleteEnabled":"Šiame biliete įgalintas automatinis ištrynimas!\nJis bus ištrintas, kai bus neaktyvus ilgiau nei `{0} dienas`!",
|
||||
"autodeleteDisabled":"Automatinis ištrynimas šiame biliete išjungtas!\nJis nebebus automatiškai ištrintas!",
|
||||
|
||||
|
||||
"ticketMessageLimit":"Tu gali sukurti tik {0} bilietus tuo pačiu metu!",
|
||||
"ticketMessageAutoclose":"Šis bilietas bus automatiškai uždarytas, kai bus neaktyvus {0}h!",
|
||||
"ticketMessageAutodelete":"Šis bilietas bus automatiškai ištrintas, kai neaktyvus {0} dienas!",
|
||||
"panelReady":"Žemiau rasite skydelį!\nŠį pranešimą dabar galima ištrinti!"
|
||||
"panelReady":"Skydelis pasiekiamas tolesniame pranešime!\nŠią žinutę dabar galima ištrinti!",
|
||||
|
||||
"topicSet":"Kanalo temą sėkmingai pakeitė {0}!",
|
||||
"prioritySet":"Bilieto prioritetas sėkmingai pakeistas į {0}, naudotojo {1}!",
|
||||
"priorityGet":"Dabartinis šio bilieto prioritetas yra {0}.",
|
||||
"transfer":"Bilieto nuosavybė sėkmingai perduota iš {0} į {1}, naudotojo {2}!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"Kodėl tu uždarei šį bilieta?",
|
||||
@@ -215,12 +237,19 @@
|
||||
"addDm":"{0} Buvo pridėtas į tavo bilieta!",
|
||||
"removeLog":"{0} buvo pašalintas iš šito bilieto nuo {1}!",
|
||||
"removeDm":"{0} buvo pasalintas iš tavo bilieto!",
|
||||
|
||||
|
||||
"blacklistAddLog":"{0} buvo užblokuotas nuo {1}!",
|
||||
"blacklistRemoveLog":"{0} buvo atblokuotas nuo {1}!",
|
||||
"blacklistAddDm":"Jūs buvote užblokuotas!\nNuo šiol negalite sukurti bilieto!",
|
||||
"blacklistRemoveDm":"Jūs buvote pašalinti iš juodojo sąrašo mūsų serveryje!\nDabar vėl galite kurti bilietus!",
|
||||
"clearLog":"{0} bilietai buvo pašalinti nuo {1}!"
|
||||
"clearLog":"{0} bilietai buvo pašalinti nuo {1}!",
|
||||
|
||||
"transferLog":"Šio bilieto nuosavybė buvo perleista iš {0} {1}, naudotojo {2}!",
|
||||
"transferDm":"Jūsų bilieto nuosavybė mūsų serveryje buvo perduota iš {0} į {1}!",
|
||||
"prioritySetLog":"Šio bilieto prioritetas buvo pakeistas į {0}, autorius {1}!",
|
||||
"prioritySetDm":"Jūsų bilieto prioritetas mūsų serveryje pakeistas į {0}!",
|
||||
"roleUpdateLog":"{0} atnaujino savo roles!",
|
||||
"roleUpdateDm":"Jūsų rolės mūsų serveryje buvo atnaujinti!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
@@ -229,7 +258,7 @@
|
||||
"ready":"Išrašai sukurti",
|
||||
"textFileDescription":"!",
|
||||
"htmlProgress":"Palaukite, kol šis html išrašas bus apdorojamas...",
|
||||
|
||||
|
||||
"createdChannel":"Naujas {0} išrašas buvo sukurtas!",
|
||||
"createdCreator":"Naujas {0} vieno iš jūsų bilietų išrašas sukurtas!",
|
||||
"createdParticipant":"Naujas {0} išrašas buvo sukurta viename iš bilietų, kuriuose dalyvavote!",
|
||||
@@ -241,7 +270,19 @@
|
||||
"retry":"Bandyk Iš naujo",
|
||||
"continue":"Ištrinti be išrašo",
|
||||
"backup":"Sukurti Atsarginį išraša",
|
||||
"error":"Kažkas nepavyko bandant sukurti išraša.\nKą norėtumėte daryti?\n\nŠis bilietas nebus ištrintas, kol spustelėsite vieną iš šių mygtukų."
|
||||
"error":"Kažkas nepavyko bandant sukurti išraša.\nKą norėtumėte daryti?\n\nŠis bilietas nebus ištrintas, kol spustelėsite vieną iš šių mygtukų.",
|
||||
"title":"Nuorašo klaida"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"ŽINUTĖS",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"FAILAI",
|
||||
"fieldsTitle":"FIELDS",
|
||||
"reactionsTitle":"Jaustukai",
|
||||
"statsTitle":"STATISTIKA",
|
||||
"emptyContent":"<Kontantas yra tusčias>",
|
||||
"noTitle":"<Nėra pavadinimo>",
|
||||
"noDesc":"<Nėra aprašymo>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
@@ -257,7 +298,8 @@
|
||||
"unknownPanel":"Nepažystama skydelis",
|
||||
"notInGuild":"Nera serveryje",
|
||||
"channelRename":"Negaliu pervadyti kanalo",
|
||||
"busy":"Bilietas yra užimtas"
|
||||
"busy":"Bilietas yra užimtas",
|
||||
"permissionError":"Leidimų klaida"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Susisiek su savininku šito bilieto del daigiau informacijos!",
|
||||
@@ -280,7 +322,10 @@
|
||||
"notInGuild":"Šis {0} neveikia DM! Bandykite dar kartą serveryje!",
|
||||
"channelRename":"Dėl discord'o greičio apribojimų, šiuo metu robotas negali pervardyti kanalo. Kanalas bus automatiškai pervardytas per 10 minučių, jei robotas nebus paleistas iš naujo.",
|
||||
"channelRenameSource":"Šios klaidos šaltinis yra: {0}",
|
||||
"busy":"Neįmanoma naudoti šio {0}!\nBilietą šiuo metu apdoroja botas.\n\nBandykite dar kartą po kelių sekundžių!"
|
||||
"busy":"Neįmanoma naudoti šio {0}!\nBilietą šiuo metu apdoroja botas.\n\nBandykite dar kartą po kelių sekundžių!",
|
||||
"closeBeforeMessage":"Šios užklausos negalima uždaryti / ištrinti, kol vartotojas neišsiuntė pranešimo..",
|
||||
"closeBeforeAdminMessage":"Šios užklausos negalima uždaryti / ištrinti, kol užklausos administratorius arba palaikymo komandos narys neišsiuntė pranešimo..",
|
||||
"unableToCreateTicket":"Kažkas atsitiko jūs negalite sukurti bilieto."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"Vertė neatitinka šablono!",
|
||||
@@ -331,7 +376,6 @@
|
||||
"added":"Pridėta",
|
||||
"removed":"Pašalinta",
|
||||
"filter":"Filteris",
|
||||
"claimedBy":"Claimed nuo {0}",
|
||||
"method":"Metodas",
|
||||
"type":"Tipas",
|
||||
"blacklisted":"Užblokuotas",
|
||||
@@ -355,7 +399,27 @@
|
||||
"status":"Statusas",
|
||||
"claimed":"Claimed",
|
||||
"pinned":"Prisegta",
|
||||
"creationDate":"Sukūrimo data"
|
||||
"creationDate":"Sukūrimo data",
|
||||
|
||||
"noone":"Niekas",
|
||||
"open":"Atidarytas",
|
||||
"closed":"Uždarytas",
|
||||
"priority":"Prioritetas",
|
||||
"participants":"Dalyviai",
|
||||
"yes":"Taip",
|
||||
"no":"Ne",
|
||||
"option":"Pasirinkimai",
|
||||
"topic":"Tema",
|
||||
"uptime":"Sistemos Buvimo laikas",
|
||||
"messages":"Žinutės",
|
||||
"embeds":"Embeds",
|
||||
"files":"Failai",
|
||||
"components":"Komponentai",
|
||||
"cooldown":"Letasis Režimas",
|
||||
"maxTickets":"Maksimalus Bilietai",
|
||||
"admins":"Adminai",
|
||||
"roles":"Rolės",
|
||||
"size":"Dydis"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"tekstas",
|
||||
@@ -384,6 +448,7 @@
|
||||
"unclaim":"Unclaim bilieta.",
|
||||
"pin":"Prisegti bilieta.",
|
||||
"unpin":"Atsegti bilieta.",
|
||||
|
||||
"move":"Perkelti bilieta.",
|
||||
"moveId":"Parinkties, į kurią norite pereiti, identifikatorius.",
|
||||
"rename":"Pervadinti bilieta.",
|
||||
@@ -392,6 +457,7 @@
|
||||
"addUser":"Asmuo kurį norite pridėti.",
|
||||
"remove":"Pašalinti naudotoja iš bilieto.",
|
||||
"removeUser":"Pašalinti asmuo iš bilieto.",
|
||||
|
||||
"blacklist":"Tvarkykite bilietų užblokavimo sąrašą.",
|
||||
"blacklistView":"Peržiūrėkite dabartinio užblokavimo sąrašą.",
|
||||
"blacklistAdd":"Pridėk asmenį i užblokuoti saraša.",
|
||||
@@ -405,6 +471,7 @@
|
||||
"statsUserUser":"Asmuo kuri norite peržiūrėti.",
|
||||
"statsTicket":"Peržiūrėkite bilieto statistiką serveryje.",
|
||||
"statsTicketTicket":"Pamatyti Bilieta.",
|
||||
|
||||
"clear":"Ištrinkite kelis bilietus vienu metu.",
|
||||
"clearFilter":"Bilietų išvalymo filtras.",
|
||||
"clearFilters":{
|
||||
@@ -417,6 +484,7 @@
|
||||
"unpin":"Atsegtus",
|
||||
"autoclose":"Automatinius uždarymus"
|
||||
},
|
||||
|
||||
"autoclose":"Tvarkykite automatinį uždarymą biliete.",
|
||||
"autocloseDisable":"Išjungti automatinį uždarymą šiame biliete.",
|
||||
"autocloseEnable":"Įgalinti automatinį uždarymą šiame biliete.",
|
||||
@@ -424,7 +492,19 @@
|
||||
"autodelete":"Tvarkykite automatinį ištrynimą biliete.",
|
||||
"autodeleteDisable":"Išjungti automatinį ištrynimą šiame biliete.",
|
||||
"autodeleteEnable":"Įgalinti automatinį ištrynimą šiame biliete.",
|
||||
"autodeleteEnableTime":"Kiek dienų šis bilietas turi būti neaktyvus, kad jį būtų galima ištrinti."
|
||||
"autodeleteEnableTime":"Kiek dienų šis bilietas turi būti neaktyvus, kad jį būtų galima ištrinti.",
|
||||
|
||||
"topic":"Tvarkyti bilietų kanalo temą.",
|
||||
"topicSet":"Nustatykite bilietų kanalo temą.",
|
||||
"topicValue":"Nauja kanalo tema.",
|
||||
"topicList":"Gaukite visų bilietų sąrašą su jų tema ir statistika.",
|
||||
"priority":"Tvarkykite bilieto prioritetą.",
|
||||
"prioritySet":"Nustatykite bilieto prioritetą.",
|
||||
"priorityValue":"Kanalo prioritetas.",
|
||||
"priorityGet":"Gaukite bilieto prioritetą.",
|
||||
"priorityList":"Gaukite visų bilietų sąrašą su jų prioriteto būsena.",
|
||||
"transfer":"Perduoti bilieto nuosavybę iš vieno vartotojo kitam.",
|
||||
"transferUser":"Vartotojas, kuriam reikia perkelti."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Gauk saraša galimų komandų.",
|
||||
@@ -452,7 +532,16 @@
|
||||
"autocloseDisable":"Išjungti automatinį uždarymą šiame biliete.",
|
||||
"autocloseEnable":"Įgalinti automatinį uždarymą šiame biliete.",
|
||||
"autodeleteDisable":"Išjungti automatinį ištrynimą šiame biliete.",
|
||||
"autodeleteEnable":"Įgalinti automatinį ištrynimą šiame biliete."
|
||||
"autodeleteEnable":"Įgalinti automatinį ištrynimą šiame biliete.",
|
||||
"categories":{
|
||||
"general":"Generaliniai Komandos",
|
||||
"basicTicket":"Paparasti bilieto komandos",
|
||||
"advancedTicket":"Geresnės bilieto komandos",
|
||||
"userTicket":"Naudotojo bilieto komandos",
|
||||
"admin":"Administratoriaus komandos",
|
||||
"advanced":"Išplėstinės komandos",
|
||||
"extra":"Daugiau komandų"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
@@ -460,7 +549,8 @@
|
||||
"system":"Sisteminė statistika",
|
||||
"user":"Naudotojo statistika",
|
||||
"ticket":"Bilieto statistika",
|
||||
"participants":"Dalyviai"
|
||||
"participants":"Dalyviai",
|
||||
"messages":"Žinutės"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Bilietai Sukurti",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Bilietai Prisegti",
|
||||
"ticketsMoved":"Bilietai Perkelti",
|
||||
"usersBlacklisted":"Naudojas Užblokuotas",
|
||||
"transcriptsCreated":"Išrašai sukurti"
|
||||
"transcriptsCreated":"Išrašai sukurti",
|
||||
"ticketsAutodeleted":"Bilietas buvo ištrintas automatiškai",
|
||||
"ticketsTransferred":"Bilietas perkeltas",
|
||||
"ticketVolume":"Bilieto Balsas",
|
||||
"averageTickets":"Vidutinis bilietų skaičius vienam vartotojui",
|
||||
"currentTickets":"Dabartiniai bilietai",
|
||||
"age":"Bilieto Amžius",
|
||||
"responseTime":"Atsiliepimo Laikas",
|
||||
"resolutionTime":"Rezoliucijos laikas",
|
||||
"createdOn":"Sukurta",
|
||||
"createdBy":"Sukurta nuo",
|
||||
"closedOn":"Uždaryta",
|
||||
"closedBy":"Uždarė",
|
||||
"claimedOn":"Tvarkyti pradėjo",
|
||||
"claimedBy":"Tvarkytojas",
|
||||
"pinnedOn":"Prisegta",
|
||||
"pinnedBy":"Prisegė",
|
||||
"deletedOn":"Ištrinta",
|
||||
"deletedBy":"Ištrynė"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Developeris",
|
||||
"serverOwner":"Serverio Savininkas",
|
||||
"serverAdmin":"Serverio administratorius",
|
||||
"moderator":"Moderatorius ",
|
||||
"support":"Pagalbos narys",
|
||||
"member":"Narys"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Pasirink Bilieta",
|
||||
"selectRole":"Pasirink Role",
|
||||
"selectOption":"Pasirinkite savo parinktį"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Skubiai",
|
||||
"veryHigh":"Labai greitai",
|
||||
"high":"Greitai",
|
||||
"normal":"Normaliai",
|
||||
"low":"Paprastai",
|
||||
"veryLow":"Silpnai",
|
||||
"none":"Nėra"
|
||||
}
|
||||
}
|
||||
+581
-451
File diff suppressed because it is too large
Load Diff
+521
-391
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["dysashop","zhavis"],
|
||||
"lastedited":"28/05/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Persian",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,448 +31,578 @@
|
||||
"stringContains":"این رشته باید حاوی باشد {0}!",
|
||||
"stringChoices":"این رشته فقط می تواند یکی از مقادیر زیر باشد: {0}!",
|
||||
"stringRegex":"این رشته اشتباه است!",
|
||||
|
||||
"stringInvertedContains":"این رشته نباید شامل {0} باشد!",
|
||||
"stringLowercase":"این رشته باید فقط با حروف کوچک نوشته شود!",
|
||||
"stringUppercase":"این رشته باید فقط با حروف بزرگ نوشته شود!",
|
||||
"stringSpecialCharacters":"این رشته نباید شامل کاراکترهای خاص باشد! (فقط a-z، 0-9 و فاصله)",
|
||||
"stringNoSpaces":"این رشته نباید شامل فاصله باشد!",
|
||||
"stringCapitalWord":"توصیه میشود هر کلمه در این رشته با حرف بزرگ شروع شود!",
|
||||
"stringCapitalSentence":"به نظر میرسد بعضی جملات در این رشته با حرف بزرگ شروع نمیشوند!",
|
||||
"stringPunctuation":"به نظر میرسد جمله در این رشته با علامت نقطه پایان نمییابد!",
|
||||
|
||||
"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": "پنلی که منوی کشویی آن فعال است، فقط میتواند شامل گزینههایی از نوع 'تیکت' باشد!"
|
||||
"numberStep":"این عدد باید مضربی از {0} باشد!",
|
||||
"numberStepOffset":"این عدد باید مضربی از {0} باشد و با {1} شروع شود!",
|
||||
"numberStartsWith":"این عدد باید با {0} شروع شود!",
|
||||
"numberEndsWith":"این عدد باید با {0} پایان یابد!",
|
||||
"numberContains":"این عدد باید شامل {0} باشد!",
|
||||
"numberChoices":"این عدد فقط میتواند یکی از مقادیر زیر باشد: {0}!",
|
||||
"numberFloat":"این عدد نمیتواند اعشاری باشد!",
|
||||
"numberNegative":"این عدد نمیتواند منفی باشد!",
|
||||
"numberPositive":"این عدد نمیتواند مثبت باشد!",
|
||||
"numberZero":"این عدد نمیتواند صفر باشد!",
|
||||
"numberNan":"این عدد نمیتواند NaN (عدد نیست) باشد!",
|
||||
"numberInvertedContains":"این عدد نباید شامل {0} باشد!",
|
||||
|
||||
"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":"پنلی که منوی کشویی آن فعال است، فقط میتواند شامل گزینههایی از نوع 'تیکت' باشد!",
|
||||
"customInvalidVersion":"نسخه مشخص شده در پیکربندی شما مطابقت ندارد! اطمینان حاصل کنید که پیکربندی به آخرین نسخه بهروزرسانی شده است!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
"buttons":{
|
||||
"create": "بازدید از تیکت",
|
||||
"close": "بستن تیکت",
|
||||
"delete": "حذف تیکت",
|
||||
"reopen": "بازگشایی تیکت",
|
||||
"claim": "اختصاص تیکت",
|
||||
"unclaim": "لغو اختصاص تیکت",
|
||||
"pin": "پین کردن تیکت",
|
||||
"unpin": "لغو پین تیکت",
|
||||
"clear": "حذف تیکتها",
|
||||
"helpSwitchSlash": "مشاهده دستورات اسلش",
|
||||
"helpSwitchText": "مشاهده دستورات متنی",
|
||||
"helpPage": "صفحه {0}",
|
||||
"withReason": "با دلیل",
|
||||
"withoutTranscript": "بدون رونوشت"
|
||||
"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": "حذف خودکار غیرفعال شد"
|
||||
"created":"تیکت ایجاد شد",
|
||||
"close":"تیکت بسته شد",
|
||||
"delete":"تیکت حذف شد",
|
||||
"reopen":"تیکت بازگشایی شد",
|
||||
"claim":"تیکت اختصاص یافت",
|
||||
"unclaim":"اختصاص تیکت لغو شد",
|
||||
"pin":"تیکت پین شد",
|
||||
"unpin":"پین تیکت لغو شد",
|
||||
"rename":"نام تیکت تغییر یافت",
|
||||
"move":"تیکت منتقل شد",
|
||||
"add":"کاربر به تیکت اضافه شد",
|
||||
"remove":"کاربر از تیکت حذف شد",
|
||||
|
||||
"help":"دستورات موجود",
|
||||
"statsReset":"بازنشانی آمار",
|
||||
"blacklistAdd":"کاربر به لیست سیاه اضافه شد",
|
||||
"blacklistRemove":"کاربر از لیست سیاه آزاد شد",
|
||||
"blacklistGet":"کاربر لیست سیاه",
|
||||
"blacklistView":"لیست سیاه کنونی",
|
||||
"blacklistAddDm":"به لیست سیاه اضافه شد",
|
||||
"blacklistRemoveDm":"از لیست سیاه حذف شد",
|
||||
"clear":"تیکتها پاکسازی شدند",
|
||||
"clearTickets":"پاک کردن تیکتها",
|
||||
"roles":"نقشها بهروزرسانی شدند",
|
||||
|
||||
"autoclose":"تیکت بهصورت خودکار بسته شد",
|
||||
"autocloseEnabled":"بسته شدن خودکار فعال شد",
|
||||
"autocloseDisabled":"بسته شدن خودکار غیرفعال شد",
|
||||
"autodelete":"تیکت بهصورت خودکار حذف شد",
|
||||
"autodeleteEnabled":"حذف خودکار فعال شد",
|
||||
"autodeleteDisabled":"حذف خودکار غیرفعال شد",
|
||||
|
||||
"topicSet":"موضوع تغییر یافت",
|
||||
"prioritySet":"اولویت تغییر یافت",
|
||||
"priorityGet":"اولویت تیکت",
|
||||
"transfer":"تیکت منتقل شد"
|
||||
},
|
||||
"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اکنون میتوانید این پیام را حذف کنید!"
|
||||
"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این پیام اکنون قابل حذف است!",
|
||||
|
||||
"topicSet":"موضوع کانال با موفقیت توسط {0} تغییر یافت!",
|
||||
"prioritySet":"اولویت تیکت با موفقیت توسط {1} به {0} تغییر یافت!",
|
||||
"priorityGet":"اولویت فعلی این تیکت {0} است.",
|
||||
"transfer":"مالکیت تیکت با موفقیت از {0} به {1} توسط {2} منتقل شد!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder": "چرا این تیکت را بستید؟",
|
||||
"deletePlaceholder": "چرا این تیکت را حذف کردید؟",
|
||||
"reopenPlaceholder": "چرا این تیکت را دوباره باز کردید؟",
|
||||
"claimPlaceholder": "چرا این تیکت را به خود اختصاص دادید؟",
|
||||
"unclaimPlaceholder": "چرا اختصاص این تیکت را لغو کردید؟",
|
||||
"pinPlaceholder": "چرا این تیکت را پین کردید؟",
|
||||
"unpinPlaceholder": "چرا پین این تیکت را لغو کردید؟"
|
||||
"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} حذف شدند!"
|
||||
"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} حذف شدند!",
|
||||
|
||||
"transferLog":"مالکیت این تیکت از {0} به {1} توسط {2} منتقل شد!",
|
||||
"transferDm":"مالکیت تیکت شما در سرور ما از {0} به {1} منتقل شد!",
|
||||
"prioritySetLog":"اولویت این تیکت توسط {1} به {0} تغییر یافت!",
|
||||
"prioritySetDm":"اولویت تیکت شما در سرور ما به {0} تغییر یافت!",
|
||||
"roleUpdateLog":"{0} نقشهای خود را بهروزرسانی کرد!",
|
||||
"roleUpdateDm":"نقشهای شما در سرور ما بهروزرسانی شد!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
"success":{
|
||||
"visit": "بازدید از رونوشت",
|
||||
"ready": "رونوشت ایجاد شد",
|
||||
"textFileDescription": "این فایل متنی، رونوشت یک تیکت حذفشده است!",
|
||||
"htmlProgress": "لطفاً صبر کنید تا این رونوشت HTML پردازش شود...",
|
||||
|
||||
"createdChannel": "یک رونوشت {0} جدید در سرور ایجاد شد!",
|
||||
"createdCreator": "یک رونوشت {0} جدید برای یکی از تیکتهای شما ایجاد شد!",
|
||||
"createdParticipant": "یک رونوشت {0} جدید در یکی از تیکتهایی که در آن مشارکت داشتید ایجاد شد!",
|
||||
"createdActiveAdmin": "یک رونوشت {0} جدید در یکی از تیکتهایی که بهعنوان مدیر در آن مشارکت داشتید ایجاد شد!",
|
||||
"createdEveryAdmin": "یک رونوشت {0} جدید در یکی از تیکتهایی که شما مدیر آن بودید ایجاد شد!",
|
||||
"createdOther": "یک رونوشت {0} جدید ایجاد شد!"
|
||||
"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این تیکت تا زمانی که یکی از این دکمهها را کلیک نکنید حذف نخواهد شد."
|
||||
"retry":"دوباره تلاش کنید",
|
||||
"continue":"حذف بدون رونوشت",
|
||||
"backup":"ایجاد رونوشت پشتیبان",
|
||||
"error":"مشکلی در هنگام ایجاد رونوشت رخ داد.\nمیخواهید چه کاری انجام دهید؟\n\nاین تیکت تا زمانی که یکی از این دکمهها را کلیک نکنید حذف نخواهد شد.",
|
||||
"title":"خطای رونوشت"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"پیامها",
|
||||
"embedTitle":"امبد",
|
||||
"fileTitle":"فایل",
|
||||
"fieldsTitle":"فیلدها",
|
||||
"reactionsTitle":"واکنشها",
|
||||
"statsTitle":"آمار",
|
||||
"emptyContent":"<محتوا خالی است>",
|
||||
"noTitle":"<بدون عنوان>",
|
||||
"noDesc":"<بدون توضیح>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
"titles":{
|
||||
"internalError": "خطای داخلی",
|
||||
"optionMissing": "گزینه دستور غایب است",
|
||||
"optionInvalid": "گزینه دستور نامعتبر است",
|
||||
"unknownCommand": "دستور ناشناخته",
|
||||
"noPermissions": "بدون مجوز",
|
||||
"unknownTicket": "تیکت ناشناخته",
|
||||
"deprecatedTicket": "تیکت منسوخشده",
|
||||
"unknownOption": "گزینه ناشناخته",
|
||||
"unknownPanel": "پنل ناشناخته",
|
||||
"notInGuild": "خارج از سرور",
|
||||
"channelRename": "عدم امکان تغییر نام کانال",
|
||||
"busy": "تیکت مشغول است"
|
||||
"internalError":"خطای داخلی",
|
||||
"optionMissing":"گزینه دستور غایب است",
|
||||
"optionInvalid":"گزینه دستور نامعتبر است",
|
||||
"unknownCommand":"دستور ناشناخته",
|
||||
"noPermissions":"بدون مجوز",
|
||||
"unknownTicket":"تیکت ناشناخته",
|
||||
"deprecatedTicket":"تیکت منسوخشده",
|
||||
"unknownOption":"گزینه ناشناخته",
|
||||
"unknownPanel":"پنل ناشناخته",
|
||||
"notInGuild":"خارج از سرور",
|
||||
"channelRename":"عدم امکان تغییر نام کانال",
|
||||
"busy":"تیکت مشغول است",
|
||||
"permissionError":"خطای دسترسی"
|
||||
},
|
||||
"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لطفاً چند ثانیه دیگر دوباره امتحان کنید!"
|
||||
"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لطفاً چند ثانیه دیگر دوباره امتحان کنید!",
|
||||
"closeBeforeMessage":"این تیکت نمیتواند قبل از ارسال پیام توسط یک کاربر بسته/حذف شود.",
|
||||
"closeBeforeAdminMessage":"این تیکت نمیتواند قبل از ارسال پیام توسط مدیر تیکت یا عضو پشتیبانی بسته/حذف شود.",
|
||||
"unableToCreateTicket":"شما نمیتوانید تیکت ایجاد کنید."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex": "مقدار با الگوی مورد نظر مطابقت ندارد!",
|
||||
"stringMinLength": "مقدار باید حداقل {0} کاراکتر باشد!",
|
||||
"stringMaxLength": "مقدار باید حداکثر {0} کاراکتر باشد!",
|
||||
"numberInvalid": "عدد نامعتبر است!",
|
||||
"numberMin": "عدد باید حداقل {0} باشد!",
|
||||
"numberMax": "عدد باید حداکثر {0} باشد!",
|
||||
"numberDecimal": "عدد نمیتواند اعشاری باشد!",
|
||||
"numberNegative": "عدد نمیتواند منفی باشد!",
|
||||
"numberPositive": "عدد نمیتواند مثبت باشد!",
|
||||
"numberZero": "عدد نمیتواند صفر باشد!",
|
||||
"channelNotFound": "کانال یافت نشد!",
|
||||
"userNotFound": "کاربر یافت نشد!",
|
||||
"roleNotFound": "نقش یافت نشد!",
|
||||
"memberNotFound": "کاربر یافت نشد!",
|
||||
"mentionableNotFound": "کاربر یا نقش یافت نشد!",
|
||||
"channelType": "نوع کانال نامعتبر است!",
|
||||
"notInGuild": "این گزینه نیازمند حضور شما در یک سرور است!"
|
||||
"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` را داشته باشید."
|
||||
"developer":"شما باید توسعهدهنده این ربات باشید.",
|
||||
"owner":"شما باید صاحب سرور باشید.",
|
||||
"admin":"شما باید مدیر سرور باشید.",
|
||||
"moderator":"شما باید ناظم (مدراتور) باشید.",
|
||||
"support":"شما باید عضو تیم پشتیبانی باشید.",
|
||||
"member":"شما باید عضو سرور باشید.",
|
||||
"discord-administrator":"شما باید مجوز `ADMINISTRATOR` را داشته باشید."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close": "تیکت قبلاً بسته شده است!",
|
||||
"reopen": "تیکت هنوز بسته نشده است!",
|
||||
"claim": "تیکت قبلاً اختصاص یافته است!",
|
||||
"unclaim": "تیکت هنوز اختصاص نیافته است!",
|
||||
"pin": "تیکت قبلاً پین شده است!",
|
||||
"unpin": "تیکت هنوز پین نشده است!",
|
||||
"add": "این کاربر قبلاً به تیکت دسترسی دارد!",
|
||||
"remove": "امکان حذف این کاربر از تیکت وجود ندارد!"
|
||||
"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": "تاریخ ایجاد"
|
||||
"ticket":"تیکت",
|
||||
"tickets":"تیکتها",
|
||||
"reason":"دلیل",
|
||||
"creator":"ایجادکننده",
|
||||
"remaining":"زمان باقیمانده",
|
||||
"added":"اضافهشده",
|
||||
"removed":"حذفشده",
|
||||
"filter":"فیلتر",
|
||||
"method":"روش",
|
||||
"type":"نوع",
|
||||
"blacklisted":"در لیست سیاه",
|
||||
"panel":"پنل",
|
||||
"command":"دستور",
|
||||
"system":"سیستم",
|
||||
"true":"درست",
|
||||
"false":"نادرست",
|
||||
"syntax":"نحوه نگارش",
|
||||
"originalName":"نام اصلی",
|
||||
"newName":"نام جدید",
|
||||
"until":"تا",
|
||||
"validOptions":"گزینههای معتبر",
|
||||
"validPanels":"پنلهای معتبر",
|
||||
"autoclose":"بسته شدن خودکار",
|
||||
"autodelete":"حذف خودکار",
|
||||
"startupDate":"تاریخ راهاندازی",
|
||||
"version":"نسخه",
|
||||
"name":"نام",
|
||||
"role":"نقش",
|
||||
"status":"وضعیت",
|
||||
"claimed":"اختصاصیافته",
|
||||
"pinned":"پینشده",
|
||||
"creationDate":"تاریخ ایجاد",
|
||||
|
||||
"noone":"هیچکس",
|
||||
"open":"باز",
|
||||
"closed":"بسته",
|
||||
"priority":"اولویت",
|
||||
"participants":"شرکتکنندگان",
|
||||
"yes":"بله",
|
||||
"no":"خیر",
|
||||
"option":"گزینه",
|
||||
"topic":"موضوع",
|
||||
"uptime":"زمان کار سیستم",
|
||||
"messages":"پیامها",
|
||||
"embeds":"امبدها",
|
||||
"files":"فایلها",
|
||||
"components":"کامپوننتها",
|
||||
"cooldown":"زمان انتظار",
|
||||
"maxTickets":"حداکثر تیکتها",
|
||||
"admins":"مدیران",
|
||||
"roles":"نقشها",
|
||||
"size":"اندازه"
|
||||
},
|
||||
"lowercase":{
|
||||
"text": "متن",
|
||||
"html": "اچتیامال",
|
||||
"command": "دستور",
|
||||
"modal": "پنجره بازشو",
|
||||
"button": "دکمه",
|
||||
"dropdown": "منوی کشویی",
|
||||
"method": "روش"
|
||||
"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": "بستهشده خودکار"
|
||||
"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": "تعداد روزهایی که این تیکت باید غیرفعال باشد تا حذف شود."
|
||||
|
||||
"autoclose":"مدیریت بسته شدن خودکار در یک تیکت.",
|
||||
"autocloseDisable":"غیرفعال کردن بسته شدن خودکار در این تیکت.",
|
||||
"autocloseEnable":"فعال کردن بسته شدن خودکار در این تیکت.",
|
||||
"autocloseEnableTime":"تعداد ساعاتی که این تیکت باید غیرفعال باشد تا بسته شود.",
|
||||
"autodelete":"مدیریت حذف خودکار در یک تیکت.",
|
||||
"autodeleteDisable":"غیرفعال کردن حذف خودکار در این تیکت.",
|
||||
"autodeleteEnable":"فعال کردن حذف خودکار در این تیکت.",
|
||||
"autodeleteEnableTime":"تعداد روزهایی که این تیکت باید غیرفعال باشد تا حذف شود.",
|
||||
|
||||
"topic":"مدیریت موضوع کانال تیکت.",
|
||||
"topicSet":"تنظیم موضوع کانال تیکت.",
|
||||
"topicValue":"موضوع جدید کانال.",
|
||||
"topicList":"دریافت لیست تمام تیکتها همراه با موضوع و آمار آنها.",
|
||||
"priority":"مدیریت اولویت تیکت.",
|
||||
"prioritySet":"تنظیم اولویت تیکت.",
|
||||
"priorityValue":"اولویت کانال.",
|
||||
"priorityGet":"دریافت اولویت تیکت.",
|
||||
"priorityList":"دریافت لیست تمام تیکتها همراه با وضعیت اولویت آنها.",
|
||||
"transfer":"انتقال مالکیت تیکت از یک کاربر به کاربر دیگر.",
|
||||
"transferUser":"کاربری که باید به او منتقل شود."
|
||||
},
|
||||
"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": "حذف خودکار را در این تیکت فعال کنید."
|
||||
"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":"حذف خودکار را در این تیکت فعال کنید.",
|
||||
"categories":{
|
||||
"general":"دستورات عمومی",
|
||||
"basicTicket":"دستورات پایه تیکت",
|
||||
"advancedTicket":"دستورات پیشرفته تیکت",
|
||||
"userTicket":"دستورات تیکت کاربر",
|
||||
"admin":"دستورات مدیر",
|
||||
"advanced":"دستورات پیشرفته",
|
||||
"extra":"دستورات اضافی"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
"global": "آمار کلی",
|
||||
"system": "آمار سیستم",
|
||||
"user": "آمار کاربر",
|
||||
"ticket": "آمار تیکت",
|
||||
"participants": "مشارکتکنندگان"
|
||||
"global":"آمار کلی",
|
||||
"system":"آمار سیستم",
|
||||
"user":"آمار کاربر",
|
||||
"ticket":"آمار تیکت",
|
||||
"participants":"مشارکتکنندگان",
|
||||
"messages":"پیامها"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated": "تیکتهای ایجادشده",
|
||||
"ticketsClosed": "تیکتهای بستهشده",
|
||||
"ticketsDeleted": "تیکتهای حذفشده",
|
||||
"ticketsReopened": "تیکتهای دوباره بازشده",
|
||||
"ticketsAutoclosed": "تیکتهای بستهشده خودکار",
|
||||
"ticketsClaimed": "تیکتهای اختصاص یافته",
|
||||
"ticketsPinned": "تیکتهای پین شده",
|
||||
"ticketsMoved": "تیکتهای منتقل شده",
|
||||
"usersBlacklisted": "کاربران در لیست سیاه",
|
||||
"transcriptsCreated": "رونوشتهای ایجادشده"
|
||||
"ticketsCreated":"تیکتهای ایجادشده",
|
||||
"ticketsClosed":"تیکتهای بستهشده",
|
||||
"ticketsDeleted":"تیکتهای حذفشده",
|
||||
"ticketsReopened":"تیکتهای دوباره بازشده",
|
||||
"ticketsAutoclosed":"تیکتهای بستهشده خودکار",
|
||||
"ticketsClaimed":"تیکتهای اختصاص یافته",
|
||||
"ticketsPinned":"تیکتهای پین شده",
|
||||
"ticketsMoved":"تیکتهای منتقل شده",
|
||||
"usersBlacklisted":"کاربران در لیست سیاه",
|
||||
"transcriptsCreated":"رونوشتهای ایجادشده",
|
||||
"ticketsAutodeleted":"تیکتهای خودکار حذف شده",
|
||||
"ticketsTransferred":"تیکتهای منتقل شده",
|
||||
"ticketVolume":"حجم تیکت",
|
||||
"averageTickets":"میانگین تیکت/کاربر",
|
||||
"currentTickets":"تیکتهای جاری",
|
||||
"age":"سن تیکت",
|
||||
"responseTime":"زمان پاسخ",
|
||||
"resolutionTime":"زمان حل",
|
||||
"createdOn":"ایجاد شده در",
|
||||
"createdBy":"ایجاد شده توسط",
|
||||
"closedOn":"بسته شده در",
|
||||
"closedBy":"بسته شده توسط",
|
||||
"claimedOn":"ادعا شده در",
|
||||
"claimedBy":"ادعا شده توسط",
|
||||
"pinnedOn":"سنجاق شده در",
|
||||
"pinnedBy":"سنجاق شده توسط",
|
||||
"deletedOn":"حذف شده در",
|
||||
"deletedBy":"حذف شده توسط"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"توسعهدهنده",
|
||||
"serverOwner":"مالک سرور",
|
||||
"serverAdmin":"مدیر سرور",
|
||||
"moderator":"تیم ناظم",
|
||||
"support":"تیم پشتیبانی",
|
||||
"member":"عضو"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"تیکت خود را انتخاب کنید",
|
||||
"selectRole":"نقش خود را انتخاب کنید",
|
||||
"selectOption":"گزینه خود را انتخاب کنید"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"فوری",
|
||||
"veryHigh":"خیلی بالا",
|
||||
"high":"بالا",
|
||||
"normal":"معمولی",
|
||||
"low":"پایین",
|
||||
"veryLow":"خیلی پایین",
|
||||
"none":"هیچ"
|
||||
}
|
||||
}
|
||||
+470
-340
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["DanoGlez"],
|
||||
"lastedited":"28/01/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Polish",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,7 +31,15 @@
|
||||
"stringContains":"Ten tekst musi zawierać {0}!",
|
||||
"stringChoices":"Ten tekst może być tylko jednym z następujących wartości: {0}!",
|
||||
"stringRegex":"Ten tekst jest nieprawidłowy!",
|
||||
|
||||
"stringInvertedContains":"Ten ciąg nie może zawierać {0}!",
|
||||
"stringLowercase":"Ten ciąg musi być napisany wyłącznie małymi literami!",
|
||||
"stringUppercase":"Ten ciąg musi być napisany wyłącznie wielkimi literami!",
|
||||
"stringSpecialCharacters":"Ten ciąg nie może zawierać znaków specjalnych! (tylko a-z, 0-9 i spacja)",
|
||||
"stringNoSpaces":"Ten ciąg nie może zawierać spacji!",
|
||||
"stringCapitalWord":"Zaleca się, aby każde słowo w tym ciągu zaczynało się wielką literą!",
|
||||
"stringCapitalSentence":"Wygląda na to, że niektóre zdania w tym ciągu nie zaczynają się wielką literą!",
|
||||
"stringPunctuation":"Wygląda na to, że zdanie w tym ciągu nie kończy się znakiem interpunkcyjnym!",
|
||||
|
||||
"numberTooShort":"Ta liczba nie może być krótsza niż {0} znaków!",
|
||||
"numberTooLong":"Ta liczba nie może być dłuższa niż {0} znaków!",
|
||||
"numberLengthInvalid":"Ta liczba musi mieć {0} znaków!",
|
||||
@@ -48,10 +56,12 @@
|
||||
"numberNegative":"Ta liczba nie może być ujemna!",
|
||||
"numberPositive":"Ta liczba nie może być dodatnia!",
|
||||
"numberZero":"Ta liczba nie może wynosić zero!",
|
||||
|
||||
"numberNan":"Ta liczba nie może być NaN (nie liczba)!",
|
||||
"numberInvertedContains":"Ta liczba nie może zawierać {0}!",
|
||||
|
||||
"booleanTrue":"Ta wartość logiczna nie może być prawdziwa!",
|
||||
"booleanFalse":"Ta wartość logiczna nie może być fałszywa!",
|
||||
|
||||
|
||||
"arrayEmptyDisabled":"Ta tablica nie może być pusta!",
|
||||
"arrayEmptyRequired":"Ta tablica musi być pusta!",
|
||||
"arrayTooShort":"Ta tablica musi mieć co najmniej {0} elementów!",
|
||||
@@ -59,7 +69,7 @@
|
||||
"arrayLengthInvalid":"Ta tablica musi mieć {0} elementów!",
|
||||
"arrayInvalidTypes":"Ta tablica może zawierać tylko następujące typy: {0}!",
|
||||
"arrayDouble":"Ta tablica nie może zawierać tych samych wartości dwukrotnie!",
|
||||
|
||||
|
||||
"discordInvalidId":"To jest nieprawidłowe ID Discorda {0}!",
|
||||
"discordInvalidIdOptions":"To jest nieprawidłowe ID Discorda {0}! Możesz również użyć jednego z tych: {1}!",
|
||||
"discordInvalidToken":"To jest nieprawidłowy token Discorda (składniowo)!",
|
||||
@@ -76,7 +86,7 @@
|
||||
"urlInvalidPath":"Ten URL ma nieprawidłową ścieżkę!",
|
||||
"idNotUnique":"To ID nie jest unikalne, użyj innego ID!",
|
||||
"idNonExistent":"ID {0} nie istnieje!",
|
||||
|
||||
|
||||
"invalidType":"Ta właściwość musi być typu: {0}!",
|
||||
"propertyMissing":"Właściwość {0} jest wymagana w tym obiekcie!",
|
||||
"propertyOptional":"Właściwość {0} jest opcjonalna w tym obiekcie!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Ta właściwość nie może być null!",
|
||||
"switchInvalidType":"To musi być jeden z następujących typów: {0}!",
|
||||
"objectSwitchInvalid":"Ten obiekt musi być jednym z następujących typów: {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"To jest nieprawidłowy język!",
|
||||
"invalidButton":"Ten przycisk musi zawierać co najmniej {0} lub {1}!",
|
||||
"unusedOption":"Opcja {0} nie jest nigdzie używana!",
|
||||
"unusedQuestion":"Pytanie {0} nie jest nigdzie używane!",
|
||||
"dropdownOption":"Panel z włączonym rozwijanym menu może zawierać tylko opcje typu 'ticket'!"
|
||||
"dropdownOption":"Panel z włączonym rozwijanym menu może zawierać tylko opcje typu 'ticket'!",
|
||||
"customInvalidVersion":"Wersja określona w konfiguracji nie pasuje! Upewnij się, że zaktualizowałeś konfigurację do najnowszej wersji!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Dodano do Listy Zablokowanych",
|
||||
"blacklistRemoveDm":"Usunięto z Listy Zablokowanych",
|
||||
"clear":"Tickety Usunięte",
|
||||
"clearTickets":"Wyczyść Tiki",
|
||||
"roles":"Role Zaktualizowane",
|
||||
|
||||
"autoclose":"Ticket Automatycznie Zamknięty",
|
||||
@@ -139,340 +151,458 @@
|
||||
"autocloseDisabled":"Automatyczne Zamknięcie Wyłączone",
|
||||
"autodelete":"Ticket Automatycznie Usunięty",
|
||||
"autodeleteEnabled":"Automatyczne Usuwanie Włączone",
|
||||
"autodeleteDisabled":"Automatyczne Usuwanie Wyłączone"
|
||||
"autodeleteDisabled":"Automatyczne Usuwanie Wyłączone",
|
||||
|
||||
"topicSet":"Temat Zmieniony",
|
||||
"prioritySet":"Priorytet Zmieniony",
|
||||
"priorityGet":"Priorytet Tiku",
|
||||
"transfer":"Tik przeniesiony"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"Twój ticket został utworzony. Kliknij poniższy przycisk, aby go otworzyć!",
|
||||
"close":"Ticket został pomyślnie zamknięty!",
|
||||
"delete":"Ticket został pomyślnie usunięty!",
|
||||
"reopen":"Ticket został pomyślnie ponownie otwarty!",
|
||||
"claim":"Ticket został pomyślnie przypisany!",
|
||||
"unclaim":"Ticket został pomyślnie odpisany!",
|
||||
"pin":"Ticket został pomyślnie przypięty!",
|
||||
"unpin":"Ticket został pomyślnie odpięty!",
|
||||
"rename":"Ticket został pomyślnie przemianowany na {0}!",
|
||||
"move":"Ticket został pomyślnie przeniesiony do {0}!",
|
||||
"add":"{0} został pomyślnie dodany do ticketa!",
|
||||
"remove":"{0} został pomyślnie usunięty z ticketa!",
|
||||
|
||||
"helpExplanation":"`<name>` => wymagany parametr\n`[name]` => opcjonalny parametr",
|
||||
"statsReset":"Statystyki bota zostały pomyślnie zresetowane!",
|
||||
"statsError":"Nie można wyświetlić statystyk ticketa!\n{0} nie jest ticketem!",
|
||||
"blacklistAdd":"{0} został pomyślnie dodany do czarnej listy!",
|
||||
"blacklistRemove":"{0} został pomyślnie usunięty z czarnej listy!",
|
||||
"blacklistGetSuccess":"{0} jest obecnie na czarnej liście!",
|
||||
"blacklistGetEmpty":"{0} nie znajduje się obecnie na czarnej liście!",
|
||||
"blacklistViewEmpty":"Nikt nie został jeszcze dodany do czarnej listy!",
|
||||
"blacklistViewTip":"Użyj \"/blacklist add\", aby dodać użytkownika do czarnej listy!",
|
||||
"clearVerify":"Czy na pewno chcesz usunąć wiele ticketów?\nTej operacji nie można cofnąć!",
|
||||
"clearReady":"{0} ticketów zostało pomyślnie usuniętych!",
|
||||
"rolesEmpty":"Nie zaktualizowano żadnych ról!",
|
||||
|
||||
"autocloseLeave":"Ten ticket został automatycznie zamknięty, ponieważ jego twórca opuścił serwer!",
|
||||
"autocloseTimeout":"Ten ticket został automatycznie zamknięty z powodu braku aktywności przez więcej niż `{0}h`!",
|
||||
"autodeleteLeave":"Ten ticket został automatycznie usunięty, ponieważ jego twórca opuścił serwer!",
|
||||
"autodeleteTimeout":"Ten ticket został automatycznie usunięty z powodu braku aktywności przez więcej niż `{0} dni`!",
|
||||
"autocloseEnabled":"Autoczynność została włączona w tym tickecie!\nZostanie on zamknięty, jeśli będzie nieaktywny przez więcej niż `{0}h`!",
|
||||
"autocloseDisabled":"Autoczynność została wyłączona w tym tickecie!\nNie będzie on już zamykany automatycznie!",
|
||||
"autodeleteEnabled":"Autousuwanie zostało włączone w tym tickecie!\nZostanie on usunięty, jeśli będzie nieaktywny przez więcej niż `{0} dni`!",
|
||||
"autodeleteDisabled":"Autousuwanie zostało wyłączone w tym tickecie!\nNie będzie on już usuwany automatycznie!",
|
||||
|
||||
"ticketMessageLimit":"Możesz utworzyć maksymalnie {0} ticket(y) jednocześnie!",
|
||||
"ticketMessageAutoclose":"Ten ticket zostanie automatycznie zamknięty, jeśli będzie nieaktywny przez {0}h!",
|
||||
"ticketMessageAutodelete":"Ten ticket zostanie automatycznie usunięty, jeśli będzie nieaktywny przez {0} dni!",
|
||||
"panelReady":"Panel znajduje się poniżej!\nTeraz możesz usunąć tę wiadomość!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"Dlaczego zamknąłeś ten ticket?",
|
||||
"deletePlaceholder":"Dlaczego usunąłeś ten ticket?",
|
||||
"reopenPlaceholder":"Dlaczego ponownie otworzyłeś ten ticket?",
|
||||
"claimPlaceholder":"Dlaczego przypisałeś ten ticket?",
|
||||
"unclaimPlaceholder":"Dlaczego odpisano ten ticket?",
|
||||
"pinPlaceholder":"Dlaczego przypiąłeś ten ticket?",
|
||||
"unpinPlaceholder":"Dlaczego odpiąłeś ten ticket?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"Nowy ticket został utworzony przez {0}!",
|
||||
"closeLog":"Ten ticket został zamknięty przez {0}!",
|
||||
"closeDm":"Twój ticket został zamknięty na naszym serwerze!",
|
||||
"deleteLog":"Ten ticket został usunięty przez {0}!",
|
||||
"deleteDm":"Twój ticket został usunięty na naszym serwerze!",
|
||||
"reopenLog":"Ten ticket został ponownie otwarty przez {0}!",
|
||||
"reopenDm":"Twój ticket został ponownie otwarty na naszym serwerze!",
|
||||
"claimLog":"Ten ticket został przypisany przez {0}!",
|
||||
"claimDm":"Twój ticket został przypisany na naszym serwerze!",
|
||||
"unclaimLog":"Ten ticket został odpisany przez {0}!",
|
||||
"unclaimDm":"Twój ticket został odpisany na naszym serwerze!",
|
||||
"pinLog":"Ten ticket został przypięty przez {0}!",
|
||||
"pinDm":"Twój ticket został przypięty na naszym serwerze!",
|
||||
"unpinLog":"Ten ticket został odpięty przez {0}!",
|
||||
"unpinDm":"Twój ticket został odpięty na naszym serwerze!",
|
||||
"renameLog":"Ten ticket został przemianowany na {0} przez {1}!",
|
||||
"renameDm":"Twój ticket został przemianowany na {0} na naszym serwerze!",
|
||||
"moveLog":"Ten ticket został przeniesiony do {0} przez {1}!",
|
||||
"moveDm":"Twój ticket został przeniesiony do {0} na naszym serwerze!",
|
||||
"addLog":"{0} został dodany do tego ticketa przez {1}!",
|
||||
"addDm":"{0} został dodany do twojego ticketa na naszym serwerze!",
|
||||
"removeLog":"{0} został usunięty z tego ticketa przez {1}!",
|
||||
"removeDm":"{0} został usunięty z twojego ticketa na naszym serwerze!",
|
||||
|
||||
"blacklistAddLog":"{0} został dodany do czarnej listy przez {1}!",
|
||||
"blacklistRemoveLog":"{0} został usunięty z czarnej listy przez {1}!",
|
||||
"blacklistAddDm":"Zostałeś dodany do czarnej listy na naszym serwerze!\nOd teraz nie możesz tworzyć ticketów!",
|
||||
"blacklistRemoveDm":"Zostałeś usunięty z czarnej listy na naszym serwerze!\nTeraz możesz ponownie tworzyć tickety!",
|
||||
"clearLog":"{0} ticketów zostało usuniętych przez {1}!"
|
||||
}
|
||||
"create":"Twój ticket został utworzony. Kliknij poniższy przycisk, aby go otworzyć!",
|
||||
"close":"Ticket został pomyślnie zamknięty!",
|
||||
"delete":"Ticket został pomyślnie usunięty!",
|
||||
"reopen":"Ticket został pomyślnie ponownie otwarty!",
|
||||
"claim":"Ticket został pomyślnie przypisany!",
|
||||
"unclaim":"Ticket został pomyślnie odpisany!",
|
||||
"pin":"Ticket został pomyślnie przypięty!",
|
||||
"unpin":"Ticket został pomyślnie odpięty!",
|
||||
"rename":"Ticket został pomyślnie przemianowany na {0}!",
|
||||
"move":"Ticket został pomyślnie przeniesiony do {0}!",
|
||||
"add":"{0} został pomyślnie dodany do ticketa!",
|
||||
"remove":"{0} został pomyślnie usunięty z ticketa!",
|
||||
|
||||
"helpExplanation":"`<name>` => wymagany parametr\n`[name]` => opcjonalny parametr",
|
||||
"statsReset":"Statystyki bota zostały pomyślnie zresetowane!",
|
||||
"statsError":"Nie można wyświetlić statystyk ticketa!\n{0} nie jest ticketem!",
|
||||
"blacklistAdd":"{0} został pomyślnie dodany do czarnej listy!",
|
||||
"blacklistRemove":"{0} został pomyślnie usunięty z czarnej listy!",
|
||||
"blacklistGetSuccess":"{0} jest obecnie na czarnej liście!",
|
||||
"blacklistGetEmpty":"{0} nie znajduje się obecnie na czarnej liście!",
|
||||
"blacklistViewEmpty":"Nikt nie został jeszcze dodany do czarnej listy!",
|
||||
"blacklistViewTip":"Użyj \"/blacklist add\", aby dodać użytkownika do czarnej listy!",
|
||||
"clearVerify":"Czy na pewno chcesz usunąć wiele ticketów?\nTej operacji nie można cofnąć!",
|
||||
"clearReady":"{0} ticketów zostało pomyślnie usuniętych!",
|
||||
"rolesEmpty":"Nie zaktualizowano żadnych ról!",
|
||||
|
||||
"autocloseLeave":"Ten ticket został automatycznie zamknięty, ponieważ jego twórca opuścił serwer!",
|
||||
"autocloseTimeout":"Ten ticket został automatycznie zamknięty z powodu braku aktywności przez więcej niż `{0}h`!",
|
||||
"autodeleteLeave":"Ten ticket został automatycznie usunięty, ponieważ jego twórca opuścił serwer!",
|
||||
"autodeleteTimeout":"Ten ticket został automatycznie usunięty z powodu braku aktywności przez więcej niż `{0} dni`!",
|
||||
"autocloseEnabled":"Autoczynność została włączona w tym tickecie!\nZostanie on zamknięty, jeśli będzie nieaktywny przez więcej niż `{0}h`!",
|
||||
"autocloseDisabled":"Autoczynność została wyłączona w tym tickecie!\nNie będzie on już zamykany automatycznie!",
|
||||
"autodeleteEnabled":"Autousuwanie zostało włączone w tym tickecie!\nZostanie on usunięty, jeśli będzie nieaktywny przez więcej niż `{0} dni`!",
|
||||
"autodeleteDisabled":"Autousuwanie zostało wyłączone w tym tickecie!\nNie będzie on już usuwany automatycznie!",
|
||||
|
||||
"ticketMessageLimit":"Możesz utworzyć maksymalnie {0} ticket(y) jednocześnie!",
|
||||
"ticketMessageAutoclose":"Ten ticket zostanie automatycznie zamknięty, jeśli będzie nieaktywny przez {0}h!",
|
||||
"ticketMessageAutodelete":"Ten ticket zostanie automatycznie usunięty, jeśli będzie nieaktywny przez {0} dni!",
|
||||
"panelReady":"Panel jest dostępny w wiadomości następczej!\nTa wiadomość może teraz zostać usunięta!",
|
||||
|
||||
"topicSet":"Temat kanału został pomyślnie zmieniony przez {0}!",
|
||||
"prioritySet":"Priorytet tiku został pomyślnie zmieniony na {0} przez {1}!",
|
||||
"priorityGet":"Aktualny priorytet tego tiku to {0}.",
|
||||
"transfer":"Własność tiku została pomyślnie przeniesiona z {0} do {1} przez {2}!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"Dlaczego zamknąłeś ten ticket?",
|
||||
"deletePlaceholder":"Dlaczego usunąłeś ten ticket?",
|
||||
"reopenPlaceholder":"Dlaczego ponownie otworzyłeś ten ticket?",
|
||||
"claimPlaceholder":"Dlaczego przypisałeś ten ticket?",
|
||||
"unclaimPlaceholder":"Dlaczego odpisano ten ticket?",
|
||||
"pinPlaceholder":"Dlaczego przypiąłeś ten ticket?",
|
||||
"unpinPlaceholder":"Dlaczego odpiąłeś ten ticket?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"Nowy ticket został utworzony przez {0}!",
|
||||
"closeLog":"Ten ticket został zamknięty przez {0}!",
|
||||
"closeDm":"Twój ticket został zamknięty na naszym serwerze!",
|
||||
"deleteLog":"Ten ticket został usunięty przez {0}!",
|
||||
"deleteDm":"Twój ticket został usunięty na naszym serwerze!",
|
||||
"reopenLog":"Ten ticket został ponownie otwarty przez {0}!",
|
||||
"reopenDm":"Twój ticket został ponownie otwarty na naszym serwerze!",
|
||||
"claimLog":"Ten ticket został przypisany przez {0}!",
|
||||
"claimDm":"Twój ticket został przypisany na naszym serwerze!",
|
||||
"unclaimLog":"Ten ticket został odpisany przez {0}!",
|
||||
"unclaimDm":"Twój ticket został odpisany na naszym serwerze!",
|
||||
"pinLog":"Ten ticket został przypięty przez {0}!",
|
||||
"pinDm":"Twój ticket został przypięty na naszym serwerze!",
|
||||
"unpinLog":"Ten ticket został odpięty przez {0}!",
|
||||
"unpinDm":"Twój ticket został odpięty na naszym serwerze!",
|
||||
"renameLog":"Ten ticket został przemianowany na {0} przez {1}!",
|
||||
"renameDm":"Twój ticket został przemianowany na {0} na naszym serwerze!",
|
||||
"moveLog":"Ten ticket został przeniesiony do {0} przez {1}!",
|
||||
"moveDm":"Twój ticket został przeniesiony do {0} na naszym serwerze!",
|
||||
"addLog":"{0} został dodany do tego ticketa przez {1}!",
|
||||
"addDm":"{0} został dodany do twojego ticketa na naszym serwerze!",
|
||||
"removeLog":"{0} został usunięty z tego ticketa przez {1}!",
|
||||
"removeDm":"{0} został usunięty z twojego ticketa na naszym serwerze!",
|
||||
|
||||
"blacklistAddLog":"{0} został dodany do czarnej listy przez {1}!",
|
||||
"blacklistRemoveLog":"{0} został usunięty z czarnej listy przez {1}!",
|
||||
"blacklistAddDm":"Zostałeś dodany do czarnej listy na naszym serwerze!\nOd teraz nie możesz tworzyć ticketów!",
|
||||
"blacklistRemoveDm":"Zostałeś usunięty z czarnej listy na naszym serwerze!\nTeraz możesz ponownie tworzyć tickety!",
|
||||
"clearLog":"{0} ticketów zostało usuniętych przez {1}!",
|
||||
|
||||
"transferLog":"Własność tego tiku została przeniesiona z {0} do {1} przez {2}!",
|
||||
"transferDm":"Własność twojego tiku została przeniesiona z {0} do {1} na naszym serwerze!",
|
||||
"prioritySetLog":"Priorytet tego tiku został zmieniony na {0} przez {1}!",
|
||||
"prioritySetDm":"Priorytet twojego tiku został zmieniony na {0} na naszym serwerze!",
|
||||
"roleUpdateLog":"{0} zaktualizował swoje role!",
|
||||
"roleUpdateDm":"Twoje role na naszym serwerze zostały zaktualizowane!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
"success":{
|
||||
"visit":"Otwórz transkrypt",
|
||||
"ready":"Transkrypt został utworzony",
|
||||
"textFileDescription":"To jest tekstowy transkrypt usuniętego ticketa!",
|
||||
"htmlProgress":"Proszę czekać, trwa przetwarzanie tego transkryptu w formacie HTML...",
|
||||
|
||||
"createdChannel":"Nowy transkrypt {0} został utworzony na serwerze!",
|
||||
"createdCreator":"Nowy transkrypt {0} został utworzony dla jednego z twoich ticketów!",
|
||||
"createdParticipant":"Nowy transkrypt {0} został utworzony w jednym z ticketów, w których brałeś udział!",
|
||||
"createdActiveAdmin":"Nowy transkrypt {0} został utworzony w jednym z ticketów, w których brałeś udział jako administrator!",
|
||||
"createdEveryAdmin":"Nowy transkrypt {0} został utworzony w jednym z ticketów, w których byłeś administratorem!",
|
||||
"createdOther":"Nowy transkrypt {0} został utworzony!"
|
||||
},
|
||||
"errors":{
|
||||
"retry":"Spróbuj ponownie",
|
||||
"continue":"Usuń bez transkryptu",
|
||||
"backup":"Utwórz kopię zapasową transkryptu",
|
||||
"error":"Coś poszło nie tak podczas próby utworzenia transkryptu.\nCo chciałbyś zrobić?\n\nTen ticket nie zostanie usunięty, dopóki nie klikniesz jednego z tych przycisków."
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
"titles":{
|
||||
"internalError":"Błąd wewnętrzny",
|
||||
"optionMissing":"Brakująca opcja polecenia",
|
||||
"optionInvalid":"Nieprawidłowa opcja polecenia",
|
||||
"unknownCommand":"Nieznane polecenie",
|
||||
"noPermissions":"Brak uprawnień",
|
||||
"unknownTicket":"Nieznany ticket",
|
||||
"deprecatedTicket":"Przestarzały ticket",
|
||||
"unknownOption":"Nieznana opcja",
|
||||
"unknownPanel":"Nieznany panel",
|
||||
"notInGuild":"Nie na serwerze",
|
||||
"channelRename":"Nie można zmienić nazwy kanału",
|
||||
"busy":"Ticket jest zajęty"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Skontaktuj się z właścicielem tego bota, aby uzyskać więcej informacji!",
|
||||
"askForInfoResolve":"Skontaktuj się z właścicielem bota, jeśli problem nie rozwiąże się po kilku próbach.",
|
||||
"internalError":"Nie udało się odpowiedzieć na to {0} z powodu błędu wewnętrznego!",
|
||||
"optionMissing":"Brak wymaganego parametru w tym poleceniu!",
|
||||
"optionInvalid":"Parametr w tym poleceniu jest nieprawidłowy!",
|
||||
"optionInvalidChoose":"Wybierz spośród",
|
||||
"unknownCommand":"Spróbuj odwiedzić menu pomocy, aby uzyskać więcej informacji!",
|
||||
"noPermissions":"Nie masz uprawnień do użycia tego {0}!",
|
||||
"noPermissionsList":"Wymagane uprawnienia: (jedno z nich)",
|
||||
"noPermissionsCooldown":"Nie możesz użyć tego {0}, ponieważ masz nałożone ograniczenie czasowe!",
|
||||
"noPermissionsBlacklist":"Nie możesz użyć tego {0}, ponieważ jesteś na czarnej liście!",
|
||||
"noPermissionsLimitGlobal":"Nie możesz utworzyć ticketa, ponieważ serwer osiągnął maksymalny limit ticketów!",
|
||||
"noPermissionsLimitGlobalUser":"Nie możesz utworzyć ticketa, ponieważ osiągnąłeś maksymalny limit ticketów!",
|
||||
"noPermissionsLimitOption":"Nie możesz utworzyć ticketa, ponieważ serwer osiągnął maksymalny limit ticketów dla tej opcji!",
|
||||
"noPermissionsLimitOptionUser":"Nie możesz utworzyć ticketa, ponieważ osiągnąłeś maksymalny limit ticketów dla tej opcji!",
|
||||
"unknownTicket":"Spróbuj ponownie użyć tego polecenia w prawidłowym tickecie!",
|
||||
"deprecatedTicket":"Obecny kanał nie jest prawidłowym ticketem! Może to być ticket z starej wersji Open Ticket!",
|
||||
"notInGuild":"To {0} nie działa w DM! Spróbuj ponownie na serwerze!",
|
||||
"channelRename":"Z powodu ograniczeń Discorda obecnie niemożliwe jest, aby bot zmienił nazwę kanału. Kanał zostanie automatycznie przemianowany w ciągu 10 minut, jeśli bot nie zostanie zrestartowany.",
|
||||
"channelRenameSource":"Źródło tego błędu: {0}",
|
||||
"busy":"Nie można użyć tego {0}!\nTicket jest obecnie przetwarzany przez bota.\n\nSpróbuj ponownie za kilka sekund!"
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"Wartość nie pasuje do wzorca!",
|
||||
"stringMinLength":"Wartość musi mieć co najmniej {0} znaków!",
|
||||
"stringMaxLength":"Wartość może mieć maksymalnie {0} znaków!",
|
||||
"numberInvalid":"Nieprawidłowa liczba!",
|
||||
"numberMin":"Liczba musi wynosić co najmniej {0}!",
|
||||
"numberMax":"Liczba może wynosić maksymalnie {0}!",
|
||||
"numberDecimal":"Liczba nie może być dziesiętna!",
|
||||
"numberNegative":"Liczba nie może być ujemna!",
|
||||
"numberPositive":"Liczba nie może być dodatnia!",
|
||||
"numberZero":"Liczba nie może wynosić zero!",
|
||||
"channelNotFound":"Nie można znaleźć kanału!",
|
||||
"userNotFound":"Nie można znaleźć użytkownika!",
|
||||
"roleNotFound":"Nie można znaleźć roli!",
|
||||
"memberNotFound":"Nie można znaleźć użytkownika!",
|
||||
"mentionableNotFound":"Nie można znaleźć użytkownika ani roli!",
|
||||
"channelType":"Nieprawidłowy typ kanału!",
|
||||
"notInGuild":"Ta opcja wymaga, abyś był na serwerze!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Musisz być deweloperem bota.",
|
||||
"owner":"Musisz być właścicielem serwera.",
|
||||
"admin":"Musisz być administratorem serwera.",
|
||||
"moderator":"Musisz być moderatorem.",
|
||||
"support":"Musisz należeć do zespołu wsparcia.",
|
||||
"member":"Musisz być członkiem.",
|
||||
"discord-administrator":"Musisz mieć uprawnienie `ADMINISTRATOR`."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"Ticket jest już zamknięty!",
|
||||
"reopen":"Ticket nie jest jeszcze zamknięty!",
|
||||
"claim":"Ticket jest już przypisany!",
|
||||
"unclaim":"Ticket nie jest jeszcze przypisany!",
|
||||
"pin":"Ticket jest już przypięty!",
|
||||
"unpin":"Ticket nie jest przypięty!",
|
||||
"add":"Ten użytkownik już ma dostęp do ticketa!",
|
||||
"remove":"Nie można usunąć tego użytkownika z ticketa!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickety",
|
||||
"reason":"Powód",
|
||||
"creator":"Twórca",
|
||||
"remaining":"Pozostały czas",
|
||||
"added":"Dodano",
|
||||
"removed":"Usunięto",
|
||||
"filter":"Filtr",
|
||||
"claimedBy":"Przypisane przez {0}",
|
||||
"method":"Metoda",
|
||||
"type":"Typ",
|
||||
"blacklisted":"Na czarnej liście",
|
||||
"panel":"Panel",
|
||||
"command":"Polecenie",
|
||||
"system":"System",
|
||||
"true":"Prawda",
|
||||
"false":"Fałsz",
|
||||
"syntax":"Składnia",
|
||||
"originalName":"Oryginalna nazwa",
|
||||
"newName":"Nowa nazwa",
|
||||
"until":"Do",
|
||||
"validOptions":"Prawidłowe opcje",
|
||||
"validPanels":"Prawidłowe panele",
|
||||
"autoclose":"Automatyczne zamknięcie",
|
||||
"autodelete":"Automatyczne usunięcie",
|
||||
"startupDate":"Data uruchomienia",
|
||||
"version":"Wersja",
|
||||
"name":"Nazwa",
|
||||
"role":"Rola",
|
||||
"status":"Status",
|
||||
"claimed":"Przypisane",
|
||||
"pinned":"Przypięte",
|
||||
"creationDate":"Data utworzenia"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"tekst",
|
||||
"html":"html",
|
||||
"command":"polecenie",
|
||||
"modal":"modal",
|
||||
"button":"przycisk",
|
||||
"dropdown":"rozwijane menu",
|
||||
"method":"metoda"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Określ opcjonalny powód, który będzie widoczny w logach.",
|
||||
"help":"Uzyskaj listę wszystkich dostępnych poleceń.",
|
||||
"panel":"Wyślij wiadomość z rozwijanym menu lub przyciskami (do tworzenia ticketów).",
|
||||
"panelId":"Identyfikator panelu, który chcesz wyświetlić.",
|
||||
"panelAutoUpdate":"Czy chcesz, aby ten panel automatycznie aktualizował się po edycji?",
|
||||
"ticket":"Natychmiast utwórz ticket.",
|
||||
"ticketId":"Identyfikator ticketa, który chcesz utworzyć.",
|
||||
"close":"Zamknij ticket.",
|
||||
"delete":"Usuń ticket.",
|
||||
"deleteNoTranscript":"Usuń ten ticket bez tworzenia transkryptu.",
|
||||
"reopen":"Ponownie otwórz ticket.",
|
||||
"claim":"Przypisz ticket.",
|
||||
"claimUser":"Przypisz ten ticket innej osobie zamiast sobie.",
|
||||
"unclaim":"Odpowiedz ticket.",
|
||||
"pin":"Przypnij ticket.",
|
||||
"unpin":"Odepnij ticket.",
|
||||
"move":"Przenieś ticket.",
|
||||
"moveId":"Identyfikator opcji, do której chcesz przenieść ticket.",
|
||||
"rename":"Zmień nazwę ticketa.",
|
||||
"renameName":"Nowa nazwa dla tego ticketa.",
|
||||
"add":"Dodaj użytkownika do ticketa.",
|
||||
"addUser":"Użytkownik do dodania.",
|
||||
"remove":"Usuń użytkownika z ticketa.",
|
||||
"removeUser":"Użytkownik do usunięcia.",
|
||||
"blacklist":"Zarządzaj czarną listą ticketów.",
|
||||
"blacklistView":"Wyświetl listę obecnej czarnej listy.",
|
||||
"blacklistAdd":"Dodaj użytkownika do czarnej listy.",
|
||||
"blacklistRemove":"Usuń użytkownika z czarnej listy.",
|
||||
"blacklistGet":"Uzyskaj szczegóły użytkownika na czarnej liście.",
|
||||
"blacklistGetUser":"Użytkownik do uzyskania szczegółów.",
|
||||
"stats":"Wyświetl statystyki bota, użytkownika lub ticketa.",
|
||||
"statsReset":"Zresetuj wszystkie statystyki bota (i zacznij liczyć od zera).",
|
||||
"statsGlobal":"Wyświetl globalne statystyki.",
|
||||
"statsUser":"Wyświetl statystyki użytkownika na serwerze.",
|
||||
"statsUserUser":"Użytkownik do wyświetlenia.",
|
||||
"statsTicket":"Wyświetl statystyki ticketa na serwerze.",
|
||||
"statsTicketTicket":"Ticket do wyświetlenia.",
|
||||
"clear":"Usuń wiele ticketów jednocześnie.",
|
||||
"clearFilter":"Filtr do usuwania ticketów.",
|
||||
"clearFilters":{
|
||||
"all":"Wszystkie",
|
||||
"open":"Otwarte",
|
||||
"close":"Zamknięte",
|
||||
"claim":"Przypisane",
|
||||
"unclaim":"Nieprzypisane",
|
||||
"pin":"Przypięte",
|
||||
"unpin":"Nieprzypięte",
|
||||
"autoclose":"Automatycznie zamknięte"
|
||||
},
|
||||
"autoclose":"Zarządzaj automatycznym zamknięciem ticketa.",
|
||||
"autocloseDisable":"Wyłącz automatyczne zamknięcie w tym tickecie.",
|
||||
"autocloseEnable":"Włącz automatyczne zamknięcie w tym tickecie.",
|
||||
"autocloseEnableTime":"Liczba godzin braku aktywności potrzebna do zamknięcia ticketa.",
|
||||
"autodelete":"Zarządzaj automatycznym usunięciem ticketa.",
|
||||
"autodeleteDisable":"Wyłącz automatyczne usunięcie w tym tickecie.",
|
||||
"autodeleteEnable":"Włącz automatyczne usunięcie w tym tickecie.",
|
||||
"autodeleteEnableTime":"Liczba dni braku aktywności potrzebna do usunięcia ticketa."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Uzyskaj listę wszystkich dostępnych poleceń.",
|
||||
"ticket":"Natychmiast utwórz ticket.",
|
||||
"close":"Zamknij ticket, wyłączając możliwość pisania na tym kanale.",
|
||||
"delete":"Usuń ticket, tworząc transkrypt, jeśli jest włączony.",
|
||||
"reopen":"Ponownie otwórz ticket, włączając możliwość pisania na tym kanale.",
|
||||
"pin":"Przypnij ticket. To przeniesie ticket na górę i doda emoji '📌' do nazwy.",
|
||||
"unpin":"Odepnij ticket. Ticket pozostanie na swojej pozycji, ale straci emoji '📌'.",
|
||||
"move":"Przenieś ticket. To zmieni typ tego ticketa.",
|
||||
"rename":"Zmień nazwę ticketa. To zmieni nazwę kanału tego ticketa.",
|
||||
"claim":"Przypisz ticket. Dzięki temu możesz poinformować zespół, że zajmujesz się tym ticketem.",
|
||||
"unclaim":"Odpowiedz ticket. Dzięki temu możesz poinformować zespół, że ticket jest ponownie dostępny.",
|
||||
"add":"Dodaj użytkownika do ticketa. Pozwoli to użytkownikowi na odczyt i pisanie w tym tickecie.",
|
||||
"remove":"Usuń użytkownika z ticketa. To odbierze użytkownikowi możliwość odczytu i pisania w tym tickecie.",
|
||||
"panel":"Wyślij wiadomość z rozwijanym menu lub przyciskami (do tworzenia ticketów).",
|
||||
"blacklistView":"Wyświetl listę obecnej czarnej listy.",
|
||||
"blacklistAdd":"Dodaj użytkownika do czarnej listy.",
|
||||
"blacklistRemove":"Usuń użytkownika z czarnej listy.",
|
||||
"blacklistGet":"Uzyskaj szczegóły użytkownika na czarnej liście.",
|
||||
"statsGlobal":"Wyświetl globalne statystyki.",
|
||||
"statsTicket":"Wyświetl statystyki ticketa na serwerze.",
|
||||
"statsUser":"Wyświetl statystyki użytkownika na serwerze.",
|
||||
"statsReset":"Zresetuj wszystkie statystyki bota (i zacznij liczyć od zera).",
|
||||
"autocloseDisable":"Wyłącz automatyczne zamknięcie w tym tickecie.",
|
||||
"autocloseEnable":"Włącz automatyczne zamknięcie w tym tickecie.",
|
||||
"autodeleteDisable":"Wyłącz automatyczne usunięcie w tym tickecie.",
|
||||
"autodeleteEnable":"Włącz automatyczne usunięcie w tym tickecie."
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
"global":"Globalne statystyki",
|
||||
"system":"Statystyki systemu",
|
||||
"user":"Statystyki użytkownika",
|
||||
"ticket":"Statystyki ticketa",
|
||||
"participants":"Uczestnicy"
|
||||
"success":{
|
||||
"visit":"Otwórz transkrypt",
|
||||
"ready":"Transkrypt został utworzony",
|
||||
"textFileDescription":"To jest tekstowy transkrypt usuniętego ticketa!",
|
||||
"htmlProgress":"Proszę czekać, trwa przetwarzanie tego transkryptu w formacie HTML...",
|
||||
|
||||
"createdChannel":"Nowy transkrypt {0} został utworzony na serwerze!",
|
||||
"createdCreator":"Nowy transkrypt {0} został utworzony dla jednego z twoich ticketów!",
|
||||
"createdParticipant":"Nowy transkrypt {0} został utworzony w jednym z ticketów, w których brałeś udział!",
|
||||
"createdActiveAdmin":"Nowy transkrypt {0} został utworzony w jednym z ticketów, w których brałeś udział jako administrator!",
|
||||
"createdEveryAdmin":"Nowy transkrypt {0} został utworzony w jednym z ticketów, w których byłeś administratorem!",
|
||||
"createdOther":"Nowy transkrypt {0} został utworzony!"
|
||||
},
|
||||
"errors":{
|
||||
"retry":"Spróbuj ponownie",
|
||||
"continue":"Usuń bez transkryptu",
|
||||
"backup":"Utwórz kopię zapasową transkryptu",
|
||||
"error":"Coś poszło nie tak podczas próby utworzenia transkryptu.\nCo chciałbyś zrobić?\n\nTen ticket nie zostanie usunięty, dopóki nie klikniesz jednego z tych przycisków.",
|
||||
"title":"Błąd Transkrypcji"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"WIADOMOŚCI",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"PLIK",
|
||||
"fieldsTitle":"POLA",
|
||||
"reactionsTitle":"REAKCJE",
|
||||
"statsTitle":"STATYSTYKI",
|
||||
"emptyContent":"<zawartość pusta>",
|
||||
"noTitle":"<brak tytułu>",
|
||||
"noDesc":"<brak opisu>"
|
||||
}
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickety utworzone",
|
||||
"ticketsClosed":"Tickety zamknięte",
|
||||
"ticketsDeleted":"Tickety usunięte",
|
||||
"ticketsReopened":"Tickety ponownie otwarte",
|
||||
"ticketsAutoclosed":"Tickety automatycznie zamknięte",
|
||||
"ticketsClaimed":"Tickety przypisane",
|
||||
"ticketsPinned":"Tickety przypięte",
|
||||
"ticketsMoved":"Tickety przeniesione",
|
||||
"usersBlacklisted":"Użytkownicy na czarnej liście",
|
||||
"transcriptsCreated":"Transkrypty utworzone"
|
||||
}
|
||||
}
|
||||
"errors":{
|
||||
"titles":{
|
||||
"internalError":"Błąd wewnętrzny",
|
||||
"optionMissing":"Brakująca opcja polecenia",
|
||||
"optionInvalid":"Nieprawidłowa opcja polecenia",
|
||||
"unknownCommand":"Nieznane polecenie",
|
||||
"noPermissions":"Brak uprawnień",
|
||||
"unknownTicket":"Nieznany ticket",
|
||||
"deprecatedTicket":"Przestarzały ticket",
|
||||
"unknownOption":"Nieznana opcja",
|
||||
"unknownPanel":"Nieznany panel",
|
||||
"notInGuild":"Nie na serwerze",
|
||||
"channelRename":"Nie można zmienić nazwy kanału",
|
||||
"busy":"Ticket jest zajęty",
|
||||
"permissionError":"Błąd uprawnień"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Skontaktuj się z właścicielem tego bota, aby uzyskać więcej informacji!",
|
||||
"askForInfoResolve":"Skontaktuj się z właścicielem bota, jeśli problem nie rozwiąże się po kilku próbach.",
|
||||
"internalError":"Nie udało się odpowiedzieć na to {0} z powodu błędu wewnętrznego!",
|
||||
"optionMissing":"Brak wymaganego parametru w tym poleceniu!",
|
||||
"optionInvalid":"Parametr w tym poleceniu jest nieprawidłowy!",
|
||||
"optionInvalidChoose":"Wybierz spośród",
|
||||
"unknownCommand":"Spróbuj odwiedzić menu pomocy, aby uzyskać więcej informacji!",
|
||||
"noPermissions":"Nie masz uprawnień do użycia tego {0}!",
|
||||
"noPermissionsList":"Wymagane uprawnienia: (jedno z nich)",
|
||||
"noPermissionsCooldown":"Nie możesz użyć tego {0}, ponieważ masz nałożone ograniczenie czasowe!",
|
||||
"noPermissionsBlacklist":"Nie możesz użyć tego {0}, ponieważ jesteś na czarnej liście!",
|
||||
"noPermissionsLimitGlobal":"Nie możesz utworzyć ticketa, ponieważ serwer osiągnął maksymalny limit ticketów!",
|
||||
"noPermissionsLimitGlobalUser":"Nie możesz utworzyć ticketa, ponieważ osiągnąłeś maksymalny limit ticketów!",
|
||||
"noPermissionsLimitOption":"Nie możesz utworzyć ticketa, ponieważ serwer osiągnął maksymalny limit ticketów dla tej opcji!",
|
||||
"noPermissionsLimitOptionUser":"Nie możesz utworzyć ticketa, ponieważ osiągnąłeś maksymalny limit ticketów dla tej opcji!",
|
||||
"unknownTicket":"Spróbuj ponownie użyć tego polecenia w prawidłowym tickecie!",
|
||||
"deprecatedTicket":"Obecny kanał nie jest prawidłowym ticketem! Może to być ticket z starej wersji Open Ticket!",
|
||||
"notInGuild":"To {0} nie działa w DM! Spróbuj ponownie na serwerze!",
|
||||
"channelRename":"Z powodu ograniczeń Discorda obecnie niemożliwe jest, aby bot zmienił nazwę kanału. Kanał zostanie automatycznie przemianowany w ciągu 10 minut, jeśli bot nie zostanie zrestartowany.",
|
||||
"channelRenameSource":"Źródło tego błędu: {0}",
|
||||
"busy":"Nie można użyć tego {0}!\nTicket jest obecnie przetwarzany przez bota.\n\nSpróbuj ponownie za kilka sekund!",
|
||||
"closeBeforeMessage":"Nie można zamknąć/usunąć tego tiku zanim użytkownik wyśle wiadomość.",
|
||||
"closeBeforeAdminMessage":"Nie można zamknąć/usunąć tego tiku zanim administrator lub członek wsparcia wyśle wiadomość.",
|
||||
"unableToCreateTicket":"Nie możesz utworzyć tiku."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"Wartość nie pasuje do wzorca!",
|
||||
"stringMinLength":"Wartość musi mieć co najmniej {0} znaków!",
|
||||
"stringMaxLength":"Wartość może mieć maksymalnie {0} znaków!",
|
||||
"numberInvalid":"Nieprawidłowa liczba!",
|
||||
"numberMin":"Liczba musi wynosić co najmniej {0}!",
|
||||
"numberMax":"Liczba może wynosić maksymalnie {0}!",
|
||||
"numberDecimal":"Liczba nie może być dziesiętna!",
|
||||
"numberNegative":"Liczba nie może być ujemna!",
|
||||
"numberPositive":"Liczba nie może być dodatnia!",
|
||||
"numberZero":"Liczba nie może wynosić zero!",
|
||||
"channelNotFound":"Nie można znaleźć kanału!",
|
||||
"userNotFound":"Nie można znaleźć użytkownika!",
|
||||
"roleNotFound":"Nie można znaleźć roli!",
|
||||
"memberNotFound":"Nie można znaleźć użytkownika!",
|
||||
"mentionableNotFound":"Nie można znaleźć użytkownika ani roli!",
|
||||
"channelType":"Nieprawidłowy typ kanału!",
|
||||
"notInGuild":"Ta opcja wymaga, abyś był na serwerze!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Musisz być deweloperem bota.",
|
||||
"owner":"Musisz być właścicielem serwera.",
|
||||
"admin":"Musisz być administratorem serwera.",
|
||||
"moderator":"Musisz być moderatorem.",
|
||||
"support":"Musisz należeć do zespołu wsparcia.",
|
||||
"member":"Musisz być członkiem.",
|
||||
"discord-administrator":"Musisz mieć uprawnienie `ADMINISTRATOR`."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"Ticket jest już zamknięty!",
|
||||
"reopen":"Ticket nie jest jeszcze zamknięty!",
|
||||
"claim":"Ticket jest już przypisany!",
|
||||
"unclaim":"Ticket nie jest jeszcze przypisany!",
|
||||
"pin":"Ticket jest już przypięty!",
|
||||
"unpin":"Ticket nie jest przypięty!",
|
||||
"add":"Ten użytkownik już ma dostęp do ticketa!",
|
||||
"remove":"Nie można usunąć tego użytkownika z ticketa!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickety",
|
||||
"reason":"Powód",
|
||||
"creator":"Twórca",
|
||||
"remaining":"Pozostały czas",
|
||||
"added":"Dodano",
|
||||
"removed":"Usunięto",
|
||||
"filter":"Filtr",
|
||||
"method":"Metoda",
|
||||
"type":"Typ",
|
||||
"blacklisted":"Na czarnej liście",
|
||||
"panel":"Panel",
|
||||
"command":"Polecenie",
|
||||
"system":"System",
|
||||
"true":"Prawda",
|
||||
"false":"Fałsz",
|
||||
"syntax":"Składnia",
|
||||
"originalName":"Oryginalna nazwa",
|
||||
"newName":"Nowa nazwa",
|
||||
"until":"Do",
|
||||
"validOptions":"Prawidłowe opcje",
|
||||
"validPanels":"Prawidłowe panele",
|
||||
"autoclose":"Automatyczne zamknięcie",
|
||||
"autodelete":"Automatyczne usunięcie",
|
||||
"startupDate":"Data uruchomienia",
|
||||
"version":"Wersja",
|
||||
"name":"Nazwa",
|
||||
"role":"Rola",
|
||||
"status":"STATUS",
|
||||
"claimed":"Przypisane",
|
||||
"pinned":"Przypięte",
|
||||
"creationDate":"Data utworzenia",
|
||||
|
||||
"noone":"Nikt",
|
||||
"open":"OTWARTY",
|
||||
"closed":"ZAMKNIĘTY",
|
||||
"priority":"PRIORYTET",
|
||||
"participants":"UCZESTNICY",
|
||||
"yes":"Tak",
|
||||
"no":"Nie",
|
||||
"option":"Opcja",
|
||||
"topic":"Temat",
|
||||
"uptime":"Czas działania systemu",
|
||||
"messages":"Wiadomości",
|
||||
"embeds":"Embeds",
|
||||
"files":"Pliki",
|
||||
"components":"Komponenty",
|
||||
"cooldown":"Czas odnowienia",
|
||||
"maxTickets":"Maks. Tiki",
|
||||
"admins":"Administratorzy",
|
||||
"roles":"Role",
|
||||
"size":"Rozmiar"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"tekst",
|
||||
"html":"html",
|
||||
"command":"polecenie",
|
||||
"modal":"modal",
|
||||
"button":"przycisk",
|
||||
"dropdown":"rozwijane menu",
|
||||
"method":"metoda"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Określ opcjonalny powód, który będzie widoczny w logach.",
|
||||
"help":"Uzyskaj listę wszystkich dostępnych poleceń.",
|
||||
"panel":"Wyślij wiadomość z rozwijanym menu lub przyciskami (do tworzenia ticketów).",
|
||||
"panelId":"Identyfikator panelu, który chcesz wyświetlić.",
|
||||
"panelAutoUpdate":"Czy chcesz, aby ten panel automatycznie aktualizował się po edycji?",
|
||||
"ticket":"Natychmiast utwórz ticket.",
|
||||
"ticketId":"Identyfikator ticketa, który chcesz utworzyć.",
|
||||
"close":"Zamknij ticket.",
|
||||
"delete":"Usuń ticket.",
|
||||
"deleteNoTranscript":"Usuń ten ticket bez tworzenia transkryptu.",
|
||||
"reopen":"Ponownie otwórz ticket.",
|
||||
"claim":"Przypisz ticket.",
|
||||
"claimUser":"Przypisz ten ticket innej osobie zamiast sobie.",
|
||||
"unclaim":"Odpowiedz ticket.",
|
||||
"pin":"Przypnij ticket.",
|
||||
"unpin":"Odepnij ticket.",
|
||||
|
||||
"move":"Przenieś ticket.",
|
||||
"moveId":"Identyfikator opcji, do której chcesz przenieść ticket.",
|
||||
"rename":"Zmień nazwę ticketa.",
|
||||
"renameName":"Nowa nazwa dla tego ticketa.",
|
||||
"add":"Dodaj użytkownika do ticketa.",
|
||||
"addUser":"Użytkownik do dodania.",
|
||||
"remove":"Usuń użytkownika z ticketa.",
|
||||
"removeUser":"Użytkownik do usunięcia.",
|
||||
|
||||
"blacklist":"Zarządzaj czarną listą ticketów.",
|
||||
"blacklistView":"Wyświetl listę obecnej czarnej listy.",
|
||||
"blacklistAdd":"Dodaj użytkownika do czarnej listy.",
|
||||
"blacklistRemove":"Usuń użytkownika z czarnej listy.",
|
||||
"blacklistGet":"Uzyskaj szczegóły użytkownika na czarnej liście.",
|
||||
"blacklistGetUser":"Użytkownik do uzyskania szczegółów.",
|
||||
"stats":"Wyświetl statystyki bota, użytkownika lub ticketa.",
|
||||
"statsReset":"Zresetuj wszystkie statystyki bota (i zacznij liczyć od zera).",
|
||||
"statsGlobal":"Wyświetl globalne statystyki.",
|
||||
"statsUser":"Wyświetl statystyki użytkownika na serwerze.",
|
||||
"statsUserUser":"Użytkownik do wyświetlenia.",
|
||||
"statsTicket":"Wyświetl statystyki ticketa na serwerze.",
|
||||
"statsTicketTicket":"Ticket do wyświetlenia.",
|
||||
|
||||
"clear":"Usuń wiele ticketów jednocześnie.",
|
||||
"clearFilter":"Filtr do usuwania ticketów.",
|
||||
"clearFilters":{
|
||||
"all":"Wszystkie",
|
||||
"open":"Otwarte",
|
||||
"close":"Zamknięte",
|
||||
"claim":"Przypisane",
|
||||
"unclaim":"Nieprzypisane",
|
||||
"pin":"Przypięte",
|
||||
"unpin":"Nieprzypięte",
|
||||
"autoclose":"Automatycznie zamknięte"
|
||||
},
|
||||
|
||||
"autoclose":"Zarządzaj automatycznym zamknięciem ticketa.",
|
||||
"autocloseDisable":"Wyłącz automatyczne zamknięcie w tym tickecie.",
|
||||
"autocloseEnable":"Włącz automatyczne zamknięcie w tym tickecie.",
|
||||
"autocloseEnableTime":"Liczba godzin braku aktywności potrzebna do zamknięcia ticketa.",
|
||||
"autodelete":"Zarządzaj automatycznym usunięciem ticketa.",
|
||||
"autodeleteDisable":"Wyłącz automatyczne usunięcie w tym tickecie.",
|
||||
"autodeleteEnable":"Włącz automatyczne usunięcie w tym tickecie.",
|
||||
"autodeleteEnableTime":"Liczba dni braku aktywności potrzebna do usunięcia ticketa.",
|
||||
|
||||
"topic":"Zarządzaj tematem kanału tiku.",
|
||||
"topicSet":"Ustaw temat kanału tiku.",
|
||||
"topicValue":"Nowy temat kanału.",
|
||||
"topicList":"Pobierz listę wszystkich tików z ich tematami i statystykami.",
|
||||
"priority":"Zarządzaj priorytetem tiku.",
|
||||
"prioritySet":"Ustaw priorytet tiku.",
|
||||
"priorityValue":"Priorytet kanału.",
|
||||
"priorityGet":"Pobierz priorytet tiku.",
|
||||
"priorityList":"Pobierz listę wszystkich tików z ich priorytetem.",
|
||||
"transfer":"Przenieś własność tiku od jednego użytkownika do drugiego.",
|
||||
"transferUser":"Użytkownik, do którego przenieść."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Uzyskaj listę wszystkich dostępnych poleceń.",
|
||||
"ticket":"Natychmiast utwórz ticket.",
|
||||
"close":"Zamknij ticket, wyłączając możliwość pisania na tym kanale.",
|
||||
"delete":"Usuń ticket, tworząc transkrypt, jeśli jest włączony.",
|
||||
"reopen":"Ponownie otwórz ticket, włączając możliwość pisania na tym kanale.",
|
||||
"pin":"Przypnij ticket. To przeniesie ticket na górę i doda emoji '📌' do nazwy.",
|
||||
"unpin":"Odepnij ticket. Ticket pozostanie na swojej pozycji, ale straci emoji '📌'.",
|
||||
"move":"Przenieś ticket. To zmieni typ tego ticketa.",
|
||||
"rename":"Zmień nazwę ticketa. To zmieni nazwę kanału tego ticketa.",
|
||||
"claim":"Przypisz ticket. Dzięki temu możesz poinformować zespół, że zajmujesz się tym ticketem.",
|
||||
"unclaim":"Odpowiedz ticket. Dzięki temu możesz poinformować zespół, że ticket jest ponownie dostępny.",
|
||||
"add":"Dodaj użytkownika do ticketa. Pozwoli to użytkownikowi na odczyt i pisanie w tym tickecie.",
|
||||
"remove":"Usuń użytkownika z ticketa. To odbierze użytkownikowi możliwość odczytu i pisania w tym tickecie.",
|
||||
"panel":"Wyślij wiadomość z rozwijanym menu lub przyciskami (do tworzenia ticketów).",
|
||||
"blacklistView":"Wyświetl listę obecnej czarnej listy.",
|
||||
"blacklistAdd":"Dodaj użytkownika do czarnej listy.",
|
||||
"blacklistRemove":"Usuń użytkownika z czarnej listy.",
|
||||
"blacklistGet":"Uzyskaj szczegóły użytkownika na czarnej liście.",
|
||||
"statsGlobal":"Wyświetl globalne statystyki.",
|
||||
"statsTicket":"Wyświetl statystyki ticketa na serwerze.",
|
||||
"statsUser":"Wyświetl statystyki użytkownika na serwerze.",
|
||||
"statsReset":"Zresetuj wszystkie statystyki bota (i zacznij liczyć od zera).",
|
||||
"autocloseDisable":"Wyłącz automatyczne zamknięcie w tym tickecie.",
|
||||
"autocloseEnable":"Włącz automatyczne zamknięcie w tym tickecie.",
|
||||
"autodeleteDisable":"Wyłącz automatyczne usunięcie w tym tickecie.",
|
||||
"autodeleteEnable":"Włącz automatyczne usunięcie w tym tickecie.",
|
||||
"categories":{
|
||||
"general":"Ogólne komendy",
|
||||
"basicTicket":"Podstawowe komendy tiku",
|
||||
"advancedTicket":"Zaawansowane komendy tiku",
|
||||
"userTicket":"Komendy użytkownika tiku",
|
||||
"admin":"Komendy administratora",
|
||||
"advanced":"Zaawansowane komendy",
|
||||
"extra":"Dodatkowe komendy"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
"global":"Globalne statystyki",
|
||||
"system":"Statystyki systemu",
|
||||
"user":"Statystyki użytkownika",
|
||||
"ticket":"Statystyki ticketa",
|
||||
"participants":"Uczestnicy",
|
||||
"messages":"Wiadomości"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickety utworzone",
|
||||
"ticketsClosed":"Tickety zamknięte",
|
||||
"ticketsDeleted":"Tickety usunięte",
|
||||
"ticketsReopened":"Tickety ponownie otwarte",
|
||||
"ticketsAutoclosed":"Tickety automatycznie zamknięte",
|
||||
"ticketsClaimed":"Tickety przypisane",
|
||||
"ticketsPinned":"Tickety przypięte",
|
||||
"ticketsMoved":"Tickety przeniesione",
|
||||
"usersBlacklisted":"Użytkownicy na czarnej liście",
|
||||
"transcriptsCreated":"Transkrypty utworzone",
|
||||
"ticketsAutodeleted":"Tiki automatycznie usunięte",
|
||||
"ticketsTransferred":"Tiki przeniesione",
|
||||
"ticketVolume":"Objętość tików",
|
||||
"averageTickets":"Średnia tików/użytkownik",
|
||||
"currentTickets":"Aktualne tiki",
|
||||
"age":"Wiek tiku",
|
||||
"responseTime":"Czas odpowiedzi",
|
||||
"resolutionTime":"Czas rozwiązania",
|
||||
"createdOn":"Utworzono",
|
||||
"createdBy":"Utworzył",
|
||||
"closedOn":"Zamknięto",
|
||||
"closedBy":"Zamknął",
|
||||
"claimedOn":"Przejęto",
|
||||
"claimedBy":"Przejął",
|
||||
"pinnedOn":"Przypięto",
|
||||
"pinnedBy":"Przypiął",
|
||||
"deletedOn":"Usunięto",
|
||||
"deletedBy":"Usunął"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Deweloper",
|
||||
"serverOwner":"Właściciel serwera",
|
||||
"serverAdmin":"Administrator serwera",
|
||||
"moderator":"Zespół moderatorów",
|
||||
"support":"Zespół wsparcia",
|
||||
"member":"Użytkownik"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Wybierz swój tik",
|
||||
"selectRole":"Wybierz swoją rolę",
|
||||
"selectOption":"Wybierz opcję"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Pilny",
|
||||
"veryHigh":"Bardzo wysoki",
|
||||
"high":"Wysoki",
|
||||
"normal":"Normalny",
|
||||
"low":"Niski",
|
||||
"veryLow":"Bardzo niski",
|
||||
"none":"Brak"
|
||||
}
|
||||
}
|
||||
+497
-367
@@ -1,113 +1,124 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["quiradon"],
|
||||
"lastedited":"20/08/2024",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Portuguese",
|
||||
"automated":false
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError": "[ERRO]",
|
||||
"headerOpenTicket": "ABRIR TICKET",
|
||||
"typeWarning": "[AVISO]",
|
||||
"typeInfo": "[INFORMAÇÃO]",
|
||||
"headerConfigChecker": "Verificador de Configuração",
|
||||
"headerDescription": "verifique erros nos seus arquivos de configuração!",
|
||||
"footerError": "o bot não iniciará até que todos os {0} sejam corrigidos!",
|
||||
"footerWarning": "é recomendado corrigir todos os {0} antes de iniciar!",
|
||||
"footerSupport": "SUPORTE: {0} - DOCS: {1}",
|
||||
"compactInformation": "use {0} para mais informações!",
|
||||
"dataPath": "caminho",
|
||||
"dataDocs": "documentos",
|
||||
"dataMessages": "mensagem"
|
||||
"typeError":"[ERRO]",
|
||||
"headerOpenTicket":"ABRIR TICKET",
|
||||
"typeWarning":"[AVISO]",
|
||||
"typeInfo":"[INFORMAÇÃO]",
|
||||
"headerConfigChecker":"Verificador de Configuração",
|
||||
"headerDescription":"verifique erros nos seus arquivos de configuração!",
|
||||
"footerError":"o bot não iniciará até que todos os {0} sejam corrigidos!",
|
||||
"footerWarning":"é recomendado corrigir todos os {0} antes de iniciar!",
|
||||
"footerSupport":"SUPORTE: {0} - DOCS: {1}",
|
||||
"compactInformation":"use {0} para mais informações!",
|
||||
"dataPath":"caminho",
|
||||
"dataDocs":"documentos",
|
||||
"dataMessages":"mensagem"
|
||||
},
|
||||
"messages":{
|
||||
"stringTooShort": "Esta string não pode ter menos de {0} caracteres!",
|
||||
"stringTooLong": "Esta string não pode ter mais de {0} caracteres!",
|
||||
"stringLengthInvalid": "Esta string precisa ter {0} caracteres!",
|
||||
"stringStartsWith": "Esta string precisa começar com {0}!",
|
||||
"stringEndsWith": "Esta string precisa terminar com {0}!",
|
||||
"stringContains": "Esta string precisa conter {0}!",
|
||||
"stringChoices": "Esta string só pode ser um dos seguintes valores: {0}!",
|
||||
"stringRegex": "Esta string é inválida!",
|
||||
|
||||
"numberTooShort": "Este número não pode ter menos de {0} caracteres!",
|
||||
"numberTooLong": "Este número não pode ter mais de {0} caracteres!",
|
||||
"numberLengthInvalid": "Este número precisa ter {0} caracteres!",
|
||||
"numberTooSmall": "Este número precisa ser pelo menos {0}!",
|
||||
"numberTooLarge": "Este número precisa ser no máximo {0}!",
|
||||
"numberNotEqual": "Este número precisa ser {0}!",
|
||||
"numberStep": "Este número precisa ser um múltiplo de {0}!",
|
||||
"numberStepOffset": "Este número precisa ser um múltiplo de {0} começando com {1}!",
|
||||
"numberStartsWith": "Este número precisa começar com {0}!",
|
||||
"numberEndsWith": "Este número precisa terminar com {0}!",
|
||||
"numberContains": "Este número precisa conter {0}!",
|
||||
"numberChoices": "Este número só pode ser um dos seguintes valores: {0}!",
|
||||
"numberFloat": "Este número não pode ser decimal!",
|
||||
"numberNegative": "Este número não pode ser negativo!",
|
||||
"numberPositive": "Este número não pode ser positivo!",
|
||||
"numberZero": "Este número não pode ser zero!",
|
||||
|
||||
"booleanTrue": "Este booleano não pode ser verdadeiro!",
|
||||
"booleanFalse": "Este booleano não pode ser falso!",
|
||||
"stringTooShort":"Esta string não pode ter menos de {0} caracteres!",
|
||||
"stringTooLong":"Esta string não pode ter mais de {0} caracteres!",
|
||||
"stringLengthInvalid":"Esta string precisa ter {0} caracteres!",
|
||||
"stringStartsWith":"Esta string precisa começar com {0}!",
|
||||
"stringEndsWith":"Esta string precisa terminar com {0}!",
|
||||
"stringContains":"Esta string precisa conter {0}!",
|
||||
"stringChoices":"Esta string só pode ser um dos seguintes valores: {0}!",
|
||||
"stringRegex":"Esta string é inválida!",
|
||||
"stringInvertedContains":"Esta string não pode conter {0}!",
|
||||
"stringLowercase":"Esta string deve ser escrita apenas em letras minúsculas!",
|
||||
"stringUppercase":"Esta string deve ser escrita apenas em letras maiúsculas!",
|
||||
"stringSpecialCharacters":"Esta string não pode conter caracteres especiais! (apenas a-z, 0-9 e espaço)",
|
||||
"stringNoSpaces":"Esta string não pode conter espaços!",
|
||||
"stringCapitalWord":"É recomendado que cada palavra nesta string comece com letra maiúscula!",
|
||||
"stringCapitalSentence":"Parece que algumas frases nesta string não começam com letra maiúscula!",
|
||||
"stringPunctuation":"Parece que a frase nesta string não termina com pontuação!",
|
||||
|
||||
"arrayEmptyDisabled": "Este array não pode estar vazio!",
|
||||
"arrayEmptyRequired": "Este array deve estar vazio!",
|
||||
"arrayTooShort": "Este array precisa ter um comprimento de pelo menos {0}!",
|
||||
"arrayTooLong": "Este array precisa ter um comprimento de no máximo {0}!",
|
||||
"arrayLengthInvalid": "Este array precisa ter um comprimento de {0}!",
|
||||
"arrayInvalidTypes": "Este array só pode conter os seguintes tipos: {0}!",
|
||||
"arrayDouble": "Este array não permite o mesmo valor duas vezes!",
|
||||
|
||||
"discordInvalidId": "Este é um ID do Discord inválido {0}!",
|
||||
"discordInvalidIdOptions": "Este é um ID do Discord inválido {0}! Você também pode usar um destes: {1}!",
|
||||
"discordInvalidToken": "Este é um token do Discord inválido (sintaticamente)!",
|
||||
"colorInvalid": "Esta é uma cor hexadecimal inválida!",
|
||||
"emojiTooShort": "Esta string precisa ter pelo menos {0} emojis!",
|
||||
"emojiTooLong": "Esta string precisa ter no máximo {0} emojis!",
|
||||
"emojiCustom": "Este emoji não pode ser um emoji personalizado do Discord!",
|
||||
"emojiInvalid": "Este é um emoji inválido!",
|
||||
"urlInvalid": "Esta URL é inválida!",
|
||||
"urlInvalidHttp": "Esta URL só pode usar o protocolo https://!",
|
||||
"urlInvalidProtocol": "Esta URL só pode usar os protocolos http:// e https://!",
|
||||
"urlInvalidHostname": "Esta URL tem um hostname não permitido!",
|
||||
"urlInvalidExtension": "Esta URL tem uma extensão inválida! Escolha entre: {0}!",
|
||||
"urlInvalidPath": "Esta URL tem um caminho inválido!",
|
||||
"idNotUnique": "Este ID não é único, use outro ID!",
|
||||
"idNonExistent": "O ID {0} não existe!",
|
||||
|
||||
"invalidType": "Esta propriedade precisa ser do tipo: {0}!",
|
||||
"propertyMissing": "A propriedade {0} está faltando neste objeto!",
|
||||
"propertyOptional": "A propriedade {0} é opcional neste objeto!",
|
||||
"objectDisabled": "Este objeto está desabilitado, habilite-o usando {0}!",
|
||||
"nullInvalid": "Esta propriedade não pode ser nula!",
|
||||
"switchInvalidType": "Isso precisa ser um dos seguintes tipos: {0}!",
|
||||
"objectSwitchInvalid": "Este objeto precisa ser um dos seguintes tipos: {0}!",
|
||||
"numberTooShort":"Este número não pode ter menos de {0} caracteres!",
|
||||
"numberTooLong":"Este número não pode ter mais de {0} caracteres!",
|
||||
"numberLengthInvalid":"Este número precisa ter {0} caracteres!",
|
||||
"numberTooSmall":"Este número precisa ser pelo menos {0}!",
|
||||
"numberTooLarge":"Este número precisa ser no máximo {0}!",
|
||||
"numberNotEqual":"Este número precisa ser {0}!",
|
||||
"numberStep":"Este número precisa ser um múltiplo de {0}!",
|
||||
"numberStepOffset":"Este número precisa ser um múltiplo de {0} começando com {1}!",
|
||||
"numberStartsWith":"Este número precisa começar com {0}!",
|
||||
"numberEndsWith":"Este número precisa terminar com {0}!",
|
||||
"numberContains":"Este número precisa conter {0}!",
|
||||
"numberChoices":"Este número só pode ser um dos seguintes valores: {0}!",
|
||||
"numberFloat":"Este número não pode ser decimal!",
|
||||
"numberNegative":"Este número não pode ser negativo!",
|
||||
"numberPositive":"Este número não pode ser positivo!",
|
||||
"numberZero":"Este número não pode ser zero!",
|
||||
"numberNan":"Este número não pode ser NaN (Não é um número)!",
|
||||
"numberInvertedContains":"Este número não pode conter {0}!",
|
||||
|
||||
"invalidLanguage": "Este é um idioma inválido!",
|
||||
"invalidButton": "Este botão precisa ter pelo menos um {0} ou {1}!",
|
||||
"unusedOption": "A opção {0} não é usada em nenhum lugar!",
|
||||
"unusedQuestion": "A pergunta {0} não é usada em nenhum lugar!",
|
||||
"dropdownOption": "Um painel com dropdown habilitado só pode conter opções do tipo 'ticket'!"
|
||||
"booleanTrue":"Este booleano não pode ser verdadeiro!",
|
||||
"booleanFalse":"Este booleano não pode ser falso!",
|
||||
|
||||
"arrayEmptyDisabled":"Este array não pode estar vazio!",
|
||||
"arrayEmptyRequired":"Este array deve estar vazio!",
|
||||
"arrayTooShort":"Este array precisa ter um comprimento de pelo menos {0}!",
|
||||
"arrayTooLong":"Este array precisa ter um comprimento de no máximo {0}!",
|
||||
"arrayLengthInvalid":"Este array precisa ter um comprimento de {0}!",
|
||||
"arrayInvalidTypes":"Este array só pode conter os seguintes tipos: {0}!",
|
||||
"arrayDouble":"Este array não permite o mesmo valor duas vezes!",
|
||||
|
||||
"discordInvalidId":"Este é um ID do Discord inválido {0}!",
|
||||
"discordInvalidIdOptions":"Este é um ID do Discord inválido {0}! Você também pode usar um destes: {1}!",
|
||||
"discordInvalidToken":"Este é um token do Discord inválido (sintaticamente)!",
|
||||
"colorInvalid":"Esta é uma cor hexadecimal inválida!",
|
||||
"emojiTooShort":"Esta string precisa ter pelo menos {0} emojis!",
|
||||
"emojiTooLong":"Esta string precisa ter no máximo {0} emojis!",
|
||||
"emojiCustom":"Este emoji não pode ser um emoji personalizado do Discord!",
|
||||
"emojiInvalid":"Este é um emoji inválido!",
|
||||
"urlInvalid":"Esta URL é inválida!",
|
||||
"urlInvalidHttp":"Esta URL só pode usar o protocolo https://!",
|
||||
"urlInvalidProtocol":"Esta URL só pode usar os protocolos http:// e https://!",
|
||||
"urlInvalidHostname":"Esta URL tem um hostname não permitido!",
|
||||
"urlInvalidExtension":"Esta URL tem uma extensão inválida! Escolha entre: {0}!",
|
||||
"urlInvalidPath":"Esta URL tem um caminho inválido!",
|
||||
"idNotUnique":"Este ID não é único, use outro ID!",
|
||||
"idNonExistent":"O ID {0} não existe!",
|
||||
|
||||
"invalidType":"Esta propriedade precisa ser do tipo: {0}!",
|
||||
"propertyMissing":"A propriedade {0} está faltando neste objeto!",
|
||||
"propertyOptional":"A propriedade {0} é opcional neste objeto!",
|
||||
"objectDisabled":"Este objeto está desabilitado, habilite-o usando {0}!",
|
||||
"nullInvalid":"Esta propriedade não pode ser nula!",
|
||||
"switchInvalidType":"Isso precisa ser um dos seguintes tipos: {0}!",
|
||||
"objectSwitchInvalid":"Este objeto precisa ser um dos seguintes tipos: {0}!",
|
||||
|
||||
"invalidLanguage":"Este é um idioma inválido!",
|
||||
"invalidButton":"Este botão precisa ter pelo menos um {0} ou {1}!",
|
||||
"unusedOption":"A opção {0} não é usada em nenhum lugar!",
|
||||
"unusedQuestion":"A pergunta {0} não é usada em nenhum lugar!",
|
||||
"dropdownOption":"Um painel com dropdown habilitado só pode conter opções do tipo 'ticket'!",
|
||||
"customInvalidVersion":"A versão especificada na sua configuração não corresponde! Certifique-se de ter atualizado a configuração para a versão mais recente!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
"buttons":{
|
||||
"create": "Visitar Ticket",
|
||||
"close": "Fechar Ticket",
|
||||
"delete": "Excluir Ticket",
|
||||
"reopen": "Reabrir Ticket",
|
||||
"claim": "Reivindicar Ticket",
|
||||
"unclaim": "Desreivindicar Ticket",
|
||||
"pin": "Fixar Ticket",
|
||||
"unpin": "Desfixar Ticket",
|
||||
"clear": "Excluir Tickets",
|
||||
"helpSwitchSlash": "Ver Comandos Slash",
|
||||
"helpSwitchText": "Ver Comandos de Texto",
|
||||
"helpPage": "Página {0}",
|
||||
"withReason": "Com Motivo",
|
||||
"withoutTranscript": "Sem Transcrição"
|
||||
"create":"Visitar Ticket",
|
||||
"close":"Fechar Ticket",
|
||||
"delete":"Excluir Ticket",
|
||||
"reopen":"Reabrir Ticket",
|
||||
"claim":"Reivindicar Ticket",
|
||||
"unclaim":"Desreivindicar Ticket",
|
||||
"pin":"Fixar Ticket",
|
||||
"unpin":"Desfixar Ticket",
|
||||
"clear":"Excluir Tickets",
|
||||
"helpSwitchSlash":"Ver Comandos Slash",
|
||||
"helpSwitchText":"Ver Comandos de Texto",
|
||||
"helpPage":"Página {0}",
|
||||
"withReason":"Com Motivo",
|
||||
"withoutTranscript":"Sem Transcrição"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Ticket Criado",
|
||||
@@ -132,29 +143,35 @@
|
||||
"blacklistAddDm":"Adicionado a Blacklist",
|
||||
"blacklistRemoveDm":"Removido da Blacklist",
|
||||
"clear":"Tickets Limpos",
|
||||
"clearTickets":"Limpar Tickets",
|
||||
"roles":"Cargos Atualizados",
|
||||
|
||||
"autoclose": "Ticket Fechado Automaticamente",
|
||||
"autocloseEnabled": "Fechamento Automático Habilitado",
|
||||
"autocloseDisabled": "Fechamento Automático Desabilitado",
|
||||
"autodelete": "Ticket Excluído Automaticamente",
|
||||
"autodeleteEnabled": "Exclusão Automática Habilitada",
|
||||
"autodeleteDisabled": "Exclusão Automática Desabilitada"
|
||||
"autoclose":"Ticket Fechado Automaticamente",
|
||||
"autocloseEnabled":"Fechamento Automático Habilitado",
|
||||
"autocloseDisabled":"Fechamento Automático Desabilitado",
|
||||
"autodelete":"Ticket Excluído Automaticamente",
|
||||
"autodeleteEnabled":"Exclusão Automática Habilitada",
|
||||
"autodeleteDisabled":"Exclusão Automática Desabilitada",
|
||||
|
||||
"topicSet":"Tópico Alterado",
|
||||
"prioritySet":"Prioridade Alterada",
|
||||
"priorityGet":"Prioridade do Ticket",
|
||||
"transfer":"Ticket Transferido"
|
||||
},
|
||||
"descriptions":{
|
||||
"create": "Seu ticket foi criado. Clique no botão abaixo para acessá-lo!",
|
||||
"close": "O ticket foi fechado com sucesso!",
|
||||
"delete": "O ticket foi excluído com sucesso!",
|
||||
"reopen": "O ticket foi reaberto com sucesso!",
|
||||
"claim": "O ticket foi reivindicado com sucesso!",
|
||||
"unclaim": "O ticket foi desreivindicado com sucesso!",
|
||||
"pin": "O ticket foi fixado com sucesso!",
|
||||
"unpin": "O ticket foi desfixado com sucesso!",
|
||||
"rename": "O ticket foi renomeado para {0} com sucesso!",
|
||||
"move": "O ticket foi movido para {0} com sucesso!",
|
||||
"add": "{0} foi adicionado ao ticket com sucesso!",
|
||||
"remove": "{0} foi removido do ticket com sucesso!",
|
||||
|
||||
"create":"Seu ticket foi criado. Clique no botão abaixo para acessá-lo!",
|
||||
"close":"O ticket foi fechado com sucesso!",
|
||||
"delete":"O ticket foi excluído com sucesso!",
|
||||
"reopen":"O ticket foi reaberto com sucesso!",
|
||||
"claim":"O ticket foi reivindicado com sucesso!",
|
||||
"unclaim":"O ticket foi desreivindicado com sucesso!",
|
||||
"pin":"O ticket foi fixado com sucesso!",
|
||||
"unpin":"O ticket foi desfixado com sucesso!",
|
||||
"rename":"O ticket foi renomeado para {0} com sucesso!",
|
||||
"move":"O ticket foi movido para {0} com sucesso!",
|
||||
"add":"{0} foi adicionado ao ticket com sucesso!",
|
||||
"remove":"{0} foi removido do ticket com sucesso!",
|
||||
|
||||
"helpExplanation":"`<nome>` => parâmetro obrigatório\n`[nome]` => parâmetro opcional",
|
||||
"statsReset":"As estatísticas do bot foram redefinidas com sucesso!",
|
||||
"statsError":"Não foi possível visualizar as estatísticas do ticket!\n{0} não é um ticket!",
|
||||
@@ -167,196 +184,243 @@
|
||||
"clearVerify":"Você tem certeza de que deseja excluir vários tickets?\nEsta ação não pode ser desfeita!",
|
||||
"clearReady":"{0} tickets foram excluídos com sucesso!",
|
||||
"rolesEmpty":"Nenhum cargo foi atualizado!",
|
||||
|
||||
"autocloseLeave": "Este ticket foi fechado automaticamente porque o criador saiu do servidor!",
|
||||
"autocloseTimeout": "Este ticket foi fechado automaticamente porque ficou inativo por mais de `{0}h`!",
|
||||
"autodeleteLeave": "Este ticket foi excluído automaticamente porque o criador saiu do servidor!",
|
||||
"autodeleteTimeout": "Este ticket foi excluído automaticamente porque ficou inativo por mais de `{0} dias`!",
|
||||
"autocloseEnabled": "O fechamento automático foi habilitado neste ticket!\nEle será fechado quando ficar inativo por mais de `{0}h`!",
|
||||
"autocloseDisabled": "O fechamento automático foi desabilitado neste ticket!\nEle não será mais fechado automaticamente!",
|
||||
"autodeleteEnabled": "A exclusão automática foi habilitada neste ticket!\nEle será excluído quando ficar inativo por mais de `{0} dias`!",
|
||||
"autodeleteDisabled": "A exclusão automática foi desabilitada neste ticket!\nEle não será mais excluído automaticamente!",
|
||||
|
||||
"ticketMessageLimit": "Você só pode criar {0} ticket(s) ao mesmo tempo!",
|
||||
"ticketMessageAutoclose": "Este ticket será fechado automaticamente quando inativo por {0}h!",
|
||||
"ticketMessageAutodelete": "Este ticket será excluído automaticamente quando inativo por {0} dias!",
|
||||
"panelReady": "Você pode encontrar o painel abaixo!\nEsta mensagem agora pode ser excluída!"
|
||||
"autocloseLeave":"Este ticket foi fechado automaticamente porque o criador saiu do servidor!",
|
||||
"autocloseTimeout":"Este ticket foi fechado automaticamente porque ficou inativo por mais de `{0}h`!",
|
||||
"autodeleteLeave":"Este ticket foi excluído automaticamente porque o criador saiu do servidor!",
|
||||
"autodeleteTimeout":"Este ticket foi excluído automaticamente porque ficou inativo por mais de `{0} dias`!",
|
||||
"autocloseEnabled":"O fechamento automático foi habilitado neste ticket!\nEle será fechado quando ficar inativo por mais de `{0}h`!",
|
||||
"autocloseDisabled":"O fechamento automático foi desabilitado neste ticket!\nEle não será mais fechado automaticamente!",
|
||||
"autodeleteEnabled":"A exclusão automática foi habilitada neste ticket!\nEle será excluído quando ficar inativo por mais de `{0} dias`!",
|
||||
"autodeleteDisabled":"A exclusão automática foi desabilitada neste ticket!\nEle não será mais excluído automaticamente!",
|
||||
|
||||
"ticketMessageLimit":"Você só pode criar {0} ticket(s) ao mesmo tempo!",
|
||||
"ticketMessageAutoclose":"Este ticket será fechado automaticamente quando inativo por {0}h!",
|
||||
"ticketMessageAutodelete":"Este ticket será excluído automaticamente quando inativo por {0} dias!",
|
||||
"panelReady":"O painel está disponível na mensagem de acompanhamento!\nEsta mensagem pode ser excluída agora!",
|
||||
|
||||
"topicSet":"O tópico do canal foi alterado com sucesso por {0}!",
|
||||
"prioritySet":"A prioridade do ticket foi alterada para {0} por {1} com sucesso!",
|
||||
"priorityGet":"A prioridade atual deste ticket é {0}.",
|
||||
"transfer":"A propriedade deste ticket foi transferida de {0} para {1} por {2} com sucesso!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder": "Por que você fechou este ticket?",
|
||||
"deletePlaceholder": "Por que você excluiu este ticket?",
|
||||
"reopenPlaceholder": "Por que você reabriu este ticket?",
|
||||
"claimPlaceholder": "Por que você reivindicou este ticket?",
|
||||
"unclaimPlaceholder": "Por que você desreivindicou este ticket?",
|
||||
"pinPlaceholder": "Por que você fixou este ticket?",
|
||||
"unpinPlaceholder": "Por que você desfixou este ticket?"
|
||||
"closePlaceholder":"Por que você fechou este ticket?",
|
||||
"deletePlaceholder":"Por que você excluiu este ticket?",
|
||||
"reopenPlaceholder":"Por que você reabriu este ticket?",
|
||||
"claimPlaceholder":"Por que você reivindicou este ticket?",
|
||||
"unclaimPlaceholder":"Por que você desreivindicou este ticket?",
|
||||
"pinPlaceholder":"Por que você fixou este ticket?",
|
||||
"unpinPlaceholder":"Por que você desfixou este ticket?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog": "Um novo ticket foi criado por {0}!",
|
||||
"closeLog": "Este ticket foi fechado por {0}!",
|
||||
"closeDm": "Seu ticket foi fechado em nosso servidor!",
|
||||
"deleteLog": "Este ticket foi excluído por {0}!",
|
||||
"deleteDm": "Seu ticket foi excluído em nosso servidor!",
|
||||
"reopenLog": "Este ticket foi reaberto por {0}!",
|
||||
"reopenDm": "Seu ticket foi reaberto em nosso servidor!",
|
||||
"claimLog": "Este ticket foi reivindicado por {0}!",
|
||||
"claimDm": "Seu ticket foi reivindicado em nosso servidor!",
|
||||
"unclaimLog": "Este ticket foi desreivindicado por {0}!",
|
||||
"unclaimDm": "Seu ticket foi desreivindicado em nosso servidor!",
|
||||
"pinLog": "Este ticket foi fixado por {0}!",
|
||||
"pinDm": "Seu ticket foi fixado em nosso servidor!",
|
||||
"unpinLog": "Este ticket foi desfixado por {0}!",
|
||||
"unpinDm": "Seu ticket foi desfixado em nosso servidor!",
|
||||
"renameLog": "Este ticket foi renomeado para {0} por {1}!",
|
||||
"renameDm": "Seu ticket foi renomeado para {0} em nosso servidor!",
|
||||
"moveLog": "Este ticket foi movido para {0} por {1}!",
|
||||
"moveDm": "Seu ticket foi movido para {0} em nosso servidor!",
|
||||
"addLog": "{0} foi adicionado a este ticket por {1}!",
|
||||
"addDm": "{0} foi adicionado ao seu ticket em nosso servidor!",
|
||||
"removeLog": "{0} foi removido deste ticket por {1}!",
|
||||
"removeDm": "{0} foi removido do seu ticket em nosso servidor!",
|
||||
|
||||
"blacklistAddLog": "{0} foi adicionado à lista negra por {1}!",
|
||||
"blacklistRemoveLog": "{0} foi removido da lista negra por {1}!",
|
||||
"blacklistAddDm": "Você foi adicionado à lista negra em nosso servidor!\nA partir de agora, você não pode criar um ticket!",
|
||||
"blacklistRemoveDm": "Você foi removido da lista negra em nosso servidor!\nAgora você pode criar tickets novamente!",
|
||||
"clearLog": "{0} tickets foram excluídos por {1}!"
|
||||
"createLog":"Um novo ticket foi criado por {0}!",
|
||||
"closeLog":"Este ticket foi fechado por {0}!",
|
||||
"closeDm":"Seu ticket foi fechado em nosso servidor!",
|
||||
"deleteLog":"Este ticket foi excluído por {0}!",
|
||||
"deleteDm":"Seu ticket foi excluído em nosso servidor!",
|
||||
"reopenLog":"Este ticket foi reaberto por {0}!",
|
||||
"reopenDm":"Seu ticket foi reaberto em nosso servidor!",
|
||||
"claimLog":"Este ticket foi reivindicado por {0}!",
|
||||
"claimDm":"Seu ticket foi reivindicado em nosso servidor!",
|
||||
"unclaimLog":"Este ticket foi desreivindicado por {0}!",
|
||||
"unclaimDm":"Seu ticket foi desreivindicado em nosso servidor!",
|
||||
"pinLog":"Este ticket foi fixado por {0}!",
|
||||
"pinDm":"Seu ticket foi fixado em nosso servidor!",
|
||||
"unpinLog":"Este ticket foi desfixado por {0}!",
|
||||
"unpinDm":"Seu ticket foi desfixado em nosso servidor!",
|
||||
"renameLog":"Este ticket foi renomeado para {0} por {1}!",
|
||||
"renameDm":"Seu ticket foi renomeado para {0} em nosso servidor!",
|
||||
"moveLog":"Este ticket foi movido para {0} por {1}!",
|
||||
"moveDm":"Seu ticket foi movido para {0} em nosso servidor!",
|
||||
"addLog":"{0} foi adicionado a este ticket por {1}!",
|
||||
"addDm":"{0} foi adicionado ao seu ticket em nosso servidor!",
|
||||
"removeLog":"{0} foi removido deste ticket por {1}!",
|
||||
"removeDm":"{0} foi removido do seu ticket em nosso servidor!",
|
||||
|
||||
"blacklistAddLog":"{0} foi adicionado à lista negra por {1}!",
|
||||
"blacklistRemoveLog":"{0} foi removido da lista negra por {1}!",
|
||||
"blacklistAddDm":"Você foi adicionado à lista negra em nosso servidor!\nA partir de agora, você não pode criar um ticket!",
|
||||
"blacklistRemoveDm":"Você foi removido da lista negra em nosso servidor!\nAgora você pode criar tickets novamente!",
|
||||
"clearLog":"{0} tickets foram excluídos por {1}!",
|
||||
|
||||
"transferLog":"A propriedade deste ticket foi transferida de {0} para {1} por {2}!",
|
||||
"transferDm":"A propriedade do seu ticket foi transferida de {0} para {1} no nosso servidor!",
|
||||
"prioritySetLog":"A prioridade deste ticket foi alterada para {0} por {1}!",
|
||||
"prioritySetDm":"A prioridade do seu ticket foi alterada para {0} no nosso servidor!",
|
||||
"roleUpdateLog":"{0} atualizou suas funções!",
|
||||
"roleUpdateDm":"Suas funções no nosso servidor foram atualizadas!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
"success":{
|
||||
"visit": "Visitar Transcrição",
|
||||
"ready": "Transcrição Criada",
|
||||
"textFileDescription": "Esta é a transcrição em texto de um ticket excluído!",
|
||||
"htmlProgress": "Por favor, aguarde enquanto esta transcrição em HTML está sendo processada...",
|
||||
"visit":"Visitar Transcrição",
|
||||
"ready":"Transcrição Criada",
|
||||
"textFileDescription":"Esta é a transcrição em texto de um ticket excluído!",
|
||||
"htmlProgress":"Por favor, aguarde enquanto esta transcrição em HTML está sendo processada...",
|
||||
|
||||
"createdChannel": "Uma nova transcrição de {0} foi criada no servidor!",
|
||||
"createdCreator": "Uma nova transcrição de {0} foi criada para um dos seus tickets!",
|
||||
"createdParticipant": "Uma nova transcrição de {0} foi criada em um dos tickets em que você participou!",
|
||||
"createdActiveAdmin": "Uma nova transcrição de {0} foi criada em um dos tickets em que você participou como administrador!",
|
||||
"createdEveryAdmin": "Uma nova transcrição de {0} foi criada em um dos tickets em que você era administrador!",
|
||||
"createdOther": "Uma nova transcrição de {0} foi criada!"
|
||||
"createdChannel":"Uma nova transcrição de {0} foi criada no servidor!",
|
||||
"createdCreator":"Uma nova transcrição de {0} foi criada para um dos seus tickets!",
|
||||
"createdParticipant":"Uma nova transcrição de {0} foi criada em um dos tickets em que você participou!",
|
||||
"createdActiveAdmin":"Uma nova transcrição de {0} foi criada em um dos tickets em que você participou como administrador!",
|
||||
"createdEveryAdmin":"Uma nova transcrição de {0} foi criada em um dos tickets em que você era administrador!",
|
||||
"createdOther":"Uma nova transcrição de {0} foi criada!"
|
||||
},
|
||||
"errors":{
|
||||
"retry": "Tentar Novamente",
|
||||
"continue": "Excluir Sem Transcrição",
|
||||
"backup": "Criar Transcrição de Backup",
|
||||
"error": "Algo deu errado ao tentar criar a transcrição.\nO que você gostaria de fazer?\n\nEste ticket não será excluído até que você clique em um desses botões."
|
||||
"retry":"Tentar Novamente",
|
||||
"continue":"Excluir Sem Transcrição",
|
||||
"backup":"Criar Transcrição de Backup",
|
||||
"error":"Algo deu errado ao tentar criar a transcrição.\nO que você gostaria de fazer?\n\nEste ticket não será excluído até que você clique em um desses botões.",
|
||||
"title":"Erro de Transcrição"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"MENSAGENS",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"ARQUIVO",
|
||||
"fieldsTitle":"CAMPOS",
|
||||
"reactionsTitle":"REAÇÕES",
|
||||
"statsTitle":"ESTATÍSTICAS",
|
||||
"emptyContent":"<conteúdo vazio>",
|
||||
"noTitle":"<sem-título>",
|
||||
"noDesc":"<sem-descrição>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
"titles":{
|
||||
"internalError": "Erro Interno",
|
||||
"optionMissing": "Opção de Comando Ausente",
|
||||
"optionInvalid": "Opção de Comando Inválida",
|
||||
"unknownCommand": "Comando Desconhecido",
|
||||
"noPermissions": "Sem Permissões",
|
||||
"unknownTicket": "Ticket Desconhecido",
|
||||
"deprecatedTicket": "Ticket Obsoleto",
|
||||
"unknownOption": "Opção Desconhecida",
|
||||
"unknownPanel": "Painel Desconhecido",
|
||||
"notInGuild": "Não Está no Servidor",
|
||||
"channelRename": "Incapaz de Renomear Canal",
|
||||
"busy": "Ticket Está Ocupado"
|
||||
"internalError":"Erro Interno",
|
||||
"optionMissing":"Opção de Comando Ausente",
|
||||
"optionInvalid":"Opção de Comando Inválida",
|
||||
"unknownCommand":"Comando Desconhecido",
|
||||
"noPermissions":"Sem Permissões",
|
||||
"unknownTicket":"Ticket Desconhecido",
|
||||
"deprecatedTicket":"Ticket Obsoleto",
|
||||
"unknownOption":"Opção Desconhecida",
|
||||
"unknownPanel":"Painel Desconhecido",
|
||||
"notInGuild":"Não Está no Servidor",
|
||||
"channelRename":"Incapaz de Renomear Canal",
|
||||
"busy":"Ticket Está Ocupado",
|
||||
"permissionError":"Erro de Permissão"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo": "Entre em contato com o proprietário deste bot para mais informações!",
|
||||
"askForInfoResolve": "Entre em contato com o proprietário deste bot se este problema não for resolvido após algumas tentativas.",
|
||||
"internalError": "Falha ao responder a este {0} devido a um erro interno!",
|
||||
"optionMissing": "Um parâmetro obrigatório está faltando neste comando!",
|
||||
"optionInvalid": "Um parâmetro neste comando é inválido!",
|
||||
"optionInvalidChoose": "Escolha entre",
|
||||
"unknownCommand": "Tente visitar o menu de ajuda para mais informações!",
|
||||
"noPermissions": "Você não tem permissão para usar este {0}!",
|
||||
"noPermissionsList": "Permissões Necessárias: (uma delas)",
|
||||
"noPermissionsCooldown": "Você não tem permissão para usar este {0} porque você está em período de cooldown!",
|
||||
"noPermissionsBlacklist": "Você não tem permissão para usar este {0} porque você foi colocado na lista negra!",
|
||||
"noPermissionsLimitGlobal": "Você não tem permissão para criar um ticket porque o servidor atingiu o limite máximo de tickets!",
|
||||
"noPermissionsLimitGlobalUser": "Você não tem permissão para criar um ticket porque você atingiu o limite máximo de tickets!",
|
||||
"noPermissionsLimitOption": "Você não tem permissão para criar um ticket porque o servidor atingiu o limite máximo de tickets para esta opção!",
|
||||
"noPermissionsLimitOptionUser": "Você não tem permissão para criar um ticket porque você atingiu o limite máximo de tickets para esta opção!",
|
||||
"unknownTicket": "Tente este comando novamente em um ticket válido!",
|
||||
"deprecatedTicket": "O canal atual não é um ticket válido! Pode ter sido um ticket de uma versão antiga do Open Ticket!",
|
||||
"notInGuild": "Este {0} não funciona em DM! Por favor, tente novamente em um servidor!",
|
||||
"channelRename": "Devido aos limites de taxa do Discord, atualmente é impossível para o bot renomear o canal. O canal será renomeado automaticamente em 10 minutos se o bot não for reiniciado.",
|
||||
"channelRenameSource": "A fonte deste erro é: {0}",
|
||||
"busy": "Não é possível usar este {0}!\nO ticket está sendo processado pelo bot no momento.\n\nPor favor, tente novamente em alguns segundos!"
|
||||
"askForInfo":"Entre em contato com o proprietário deste bot para mais informações!",
|
||||
"askForInfoResolve":"Entre em contato com o proprietário deste bot se este problema não for resolvido após algumas tentativas.",
|
||||
"internalError":"Falha ao responder a este {0} devido a um erro interno!",
|
||||
"optionMissing":"Um parâmetro obrigatório está faltando neste comando!",
|
||||
"optionInvalid":"Um parâmetro neste comando é inválido!",
|
||||
"optionInvalidChoose":"Escolha entre",
|
||||
"unknownCommand":"Tente visitar o menu de ajuda para mais informações!",
|
||||
"noPermissions":"Você não tem permissão para usar este {0}!",
|
||||
"noPermissionsList":"Permissões Necessárias: (uma delas)",
|
||||
"noPermissionsCooldown":"Você não tem permissão para usar este {0} porque você está em período de cooldown!",
|
||||
"noPermissionsBlacklist":"Você não tem permissão para usar este {0} porque você foi colocado na lista negra!",
|
||||
"noPermissionsLimitGlobal":"Você não tem permissão para criar um ticket porque o servidor atingiu o limite máximo de tickets!",
|
||||
"noPermissionsLimitGlobalUser":"Você não tem permissão para criar um ticket porque você atingiu o limite máximo de tickets!",
|
||||
"noPermissionsLimitOption":"Você não tem permissão para criar um ticket porque o servidor atingiu o limite máximo de tickets para esta opção!",
|
||||
"noPermissionsLimitOptionUser":"Você não tem permissão para criar um ticket porque você atingiu o limite máximo de tickets para esta opção!",
|
||||
"unknownTicket":"Tente este comando novamente em um ticket válido!",
|
||||
"deprecatedTicket":"O canal atual não é um ticket válido! Pode ter sido um ticket de uma versão antiga do Open Ticket!",
|
||||
"notInGuild":"Este {0} não funciona em DM! Por favor, tente novamente em um servidor!",
|
||||
"channelRename":"Devido aos limites de taxa do Discord, atualmente é impossível para o bot renomear o canal. O canal será renomeado automaticamente em 10 minutos se o bot não for reiniciado.",
|
||||
"channelRenameSource":"A fonte deste erro é: {0}",
|
||||
"busy":"Não é possível usar este {0}!\nO ticket está sendo processado pelo bot no momento.\n\nPor favor, tente novamente em alguns segundos!",
|
||||
"closeBeforeMessage":"Este ticket não pode ser fechado/excluído antes de uma mensagem ser enviada por um usuário.",
|
||||
"closeBeforeAdminMessage":"Este ticket não pode ser fechado/excluído antes de uma mensagem ser enviada por um administrador ou membro do suporte.",
|
||||
"unableToCreateTicket":"Você não pode criar um ticket."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex": "O valor não corresponde ao padrão!",
|
||||
"stringMinLength": "O valor precisa ter pelo menos {0} caracteres!",
|
||||
"stringMaxLength": "O valor precisa ter no máximo {0} caracteres!",
|
||||
"numberInvalid": "Número inválido!",
|
||||
"numberMin": "O número precisa ser pelo menos {0}!",
|
||||
"numberMax": "O número precisa ser no máximo {0}!",
|
||||
"numberDecimal": "Não é permitido que o número seja decimal!",
|
||||
"numberNegative": "Não é permitido que o número seja negativo!",
|
||||
"numberPositive": "Não é permitido que o número seja positivo!",
|
||||
"numberZero": "Não é permitido que o número seja zero!",
|
||||
"channelNotFound": "Não foi possível encontrar o canal!",
|
||||
"userNotFound": "Não foi possível encontrar o usuário!",
|
||||
"roleNotFound": "Não foi possível encontrar o cargo!",
|
||||
"memberNotFound": "Não foi possível encontrar o usuário!",
|
||||
"mentionableNotFound": "Não foi possível encontrar o usuário ou cargo!",
|
||||
"channelType": "Tipo de canal inválido!",
|
||||
"notInGuild": "Esta opção requer que você esteja em um servidor!"
|
||||
"stringRegex":"O valor não corresponde ao padrão!",
|
||||
"stringMinLength":"O valor precisa ter pelo menos {0} caracteres!",
|
||||
"stringMaxLength":"O valor precisa ter no máximo {0} caracteres!",
|
||||
"numberInvalid":"Número inválido!",
|
||||
"numberMin":"O número precisa ser pelo menos {0}!",
|
||||
"numberMax":"O número precisa ser no máximo {0}!",
|
||||
"numberDecimal":"Não é permitido que o número seja decimal!",
|
||||
"numberNegative":"Não é permitido que o número seja negativo!",
|
||||
"numberPositive":"Não é permitido que o número seja positivo!",
|
||||
"numberZero":"Não é permitido que o número seja zero!",
|
||||
"channelNotFound":"Não foi possível encontrar o canal!",
|
||||
"userNotFound":"Não foi possível encontrar o usuário!",
|
||||
"roleNotFound":"Não foi possível encontrar o cargo!",
|
||||
"memberNotFound":"Não foi possível encontrar o usuário!",
|
||||
"mentionableNotFound":"Não foi possível encontrar o usuário ou cargo!",
|
||||
"channelType":"Tipo de canal inválido!",
|
||||
"notInGuild":"Esta opção requer que você esteja em um servidor!"
|
||||
},
|
||||
"permissions": {
|
||||
"developer": "Você precisa ser o desenvolvedor do bot.",
|
||||
"owner": "Você precisa ser o dono do servidor.",
|
||||
"admin": "Você precisa ser um administrador do servidor.",
|
||||
"moderator": "Você precisa ser um moderador.",
|
||||
"support": "Você precisa estar na equipe de suporte.",
|
||||
"member": "Você precisa ser um membro.",
|
||||
"discord-administrator": "Você precisa ter a permissão `ADMINISTRATOR`."
|
||||
"permissions":{
|
||||
"developer":"Você precisa ser o desenvolvedor do bot.",
|
||||
"owner":"Você precisa ser o dono do servidor.",
|
||||
"admin":"Você precisa ser um administrador do servidor.",
|
||||
"moderator":"Você precisa ser um moderador.",
|
||||
"support":"Você precisa estar na equipe de suporte.",
|
||||
"member":"Você precisa ser um membro.",
|
||||
"discord-administrator":"Você precisa ter a permissão `ADMINISTRATOR`."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close": "O ticket já está fechado!",
|
||||
"reopen": "O ticket ainda não está fechado!",
|
||||
"claim": "O ticket já está reivindicado!",
|
||||
"unclaim": "O ticket ainda não está reivindicado!",
|
||||
"pin": "O ticket já está fixado!",
|
||||
"unpin": "O ticket ainda não está fixado!",
|
||||
"add": "Este usuário já pode acessar o ticket!",
|
||||
"remove": "Não foi possível remover este usuário do ticket!"
|
||||
"close":"O ticket já está fechado!",
|
||||
"reopen":"O ticket ainda não está fechado!",
|
||||
"claim":"O ticket já está reivindicado!",
|
||||
"unclaim":"O ticket ainda não está reivindicado!",
|
||||
"pin":"O ticket já está fixado!",
|
||||
"unpin":"O ticket ainda não está fixado!",
|
||||
"add":"Este usuário já pode acessar o ticket!",
|
||||
"remove":"Não foi possível remover este usuário do ticket!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickets",
|
||||
"reason":"Motivo",
|
||||
"creator":"Criador",
|
||||
"remaining":"Tempo Restante",
|
||||
"added":"Adicionado",
|
||||
"removed":"Removido",
|
||||
"filter":"Filtro",
|
||||
"claimedBy":"Reivindicado por {0}",
|
||||
"method":"Método",
|
||||
"type":"Tipo",
|
||||
"blacklisted":"Na Lista Negra",
|
||||
"panel":"Painel",
|
||||
"command":"Comando",
|
||||
"system":"Sistema",
|
||||
"true":"Verdadeiro",
|
||||
"false":"Falso",
|
||||
"syntax":"Sintaxe",
|
||||
"originalName":"Nome Original",
|
||||
"newName":"Novo Nome",
|
||||
"until":"Até",
|
||||
"validOptions":"Opções Válidas",
|
||||
"validPanels":"Painéis Válidos",
|
||||
"autoclose":"Auto-fechar",
|
||||
"autodelete":"Auto-deletar",
|
||||
"startupDate":"Data de Início",
|
||||
"version":"Versão",
|
||||
"name":"Nome",
|
||||
"role":"Cargo",
|
||||
"status":"Status",
|
||||
"claimed":"Reivindicado",
|
||||
"pinned":"Fixado",
|
||||
"creationDate":"Data de Criação"
|
||||
},
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickets",
|
||||
"reason":"Motivo",
|
||||
"creator":"Criador",
|
||||
"remaining":"Tempo Restante",
|
||||
"added":"Adicionado",
|
||||
"removed":"Removido",
|
||||
"filter":"Filtro",
|
||||
"method":"Método",
|
||||
"type":"Tipo",
|
||||
"blacklisted":"Na Lista Negra",
|
||||
"panel":"Painel",
|
||||
"command":"Comando",
|
||||
"system":"Sistema",
|
||||
"true":"Verdadeiro",
|
||||
"false":"Falso",
|
||||
"syntax":"Sintaxe",
|
||||
"originalName":"Nome Original",
|
||||
"newName":"Novo Nome",
|
||||
"until":"Até",
|
||||
"validOptions":"Opções Válidas",
|
||||
"validPanels":"Painéis Válidos",
|
||||
"autoclose":"Auto-fechar",
|
||||
"autodelete":"Auto-deletar",
|
||||
"startupDate":"Data de Início",
|
||||
"version":"Versão",
|
||||
"name":"Nome",
|
||||
"role":"Cargo",
|
||||
"status":"STATUS",
|
||||
"claimed":"Reivindicado",
|
||||
"pinned":"Fixado",
|
||||
"creationDate":"Data de Criação",
|
||||
|
||||
"noone":"Ninguém",
|
||||
"open":"ABERTO",
|
||||
"closed":"FECHADO",
|
||||
"priority":"PRIORIDADE",
|
||||
"participants":"PARTICIPANTES",
|
||||
"yes":"Sim",
|
||||
"no":"Não",
|
||||
"option":"Opção",
|
||||
"topic":"Tópico",
|
||||
"uptime":"Tempo de Atividade do Sistema",
|
||||
"messages":"Mensagens",
|
||||
"embeds":"Embeds",
|
||||
"files":"Arquivos",
|
||||
"components":"Componentes",
|
||||
"cooldown":"Tempo de Espera",
|
||||
"maxTickets":"Máx. Tickets",
|
||||
"admins":"Administradores",
|
||||
"roles":"Funções",
|
||||
"size":"Tamanho"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"texto",
|
||||
"html":"html",
|
||||
@@ -368,99 +432,125 @@
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason": "Especifique um motivo opcional que será visível nos logs.",
|
||||
"help": "Obtenha uma lista de todos os comandos disponíveis.",
|
||||
"panel": "Gerar uma mensagem com um dropdown ou botões (para criação de tickets).",
|
||||
"panelId": "O identificador do painel que você deseja gerar.",
|
||||
"panelAutoUpdate": "Você quer que este painel atualize automaticamente quando editado?",
|
||||
"ticket": "Crie um ticket instantaneamente.",
|
||||
"ticketId": "O identificador do ticket que você deseja criar.",
|
||||
"close": "Feche um ticket.",
|
||||
"delete": "Exclua um ticket.",
|
||||
"deleteNoTranscript": "Exclua este ticket sem criar uma transcrição.",
|
||||
"reopen": "Reabra um ticket.",
|
||||
"claim": "Assuma um ticket.",
|
||||
"claimUser": "Assuma este ticket para outra pessoa em vez de você mesmo.",
|
||||
"unclaim": "Desassuma um ticket.",
|
||||
"pin": "Fixe um ticket.",
|
||||
"unpin": "Desfixe um ticket.",
|
||||
"move": "Mova um ticket.",
|
||||
"moveId": "O identificador do opção para o qual você deseja mover.",
|
||||
"rename": "Renomeie um ticket.",
|
||||
"renameName": "O novo nome para este ticket.",
|
||||
"add": "Adicione um usuário a um ticket.",
|
||||
"addUser": "O usuário a ser adicionado.",
|
||||
"remove": "Remover um usuário de um ticket.",
|
||||
"removeUser": "O usuário a ser removido.",
|
||||
"blacklist": "Gerenciar a lista negra de tickets.",
|
||||
"blacklistView": "Ver uma lista da blacklist atual.",
|
||||
"blacklistAdd": "Adicionar um usuário à blacklist.",
|
||||
"blacklistRemove": "Remover um usuário da blacklist.",
|
||||
"blacklistGet": "Obter os detalhes de um usuário na blacklist.",
|
||||
"blacklistGetUser": "O usuário para obter detalhes.",
|
||||
"stats": "Ver estatísticas do bot, de um membro ou de um ticket.",
|
||||
"statsReset": "Redefinir todas as estatísticas do bot (e começar a contar do zero).",
|
||||
"statsGlobal": "Ver as estatísticas globais.",
|
||||
"statsUser": "Ver as estatísticas de um usuário no servidor.",
|
||||
"statsUserUser": "O usuário para visualizar.",
|
||||
"statsTicket": "Ver as estatísticas de um ticket no servidor.",
|
||||
"statsTicketTicket": "O ticket para visualizar.",
|
||||
"clear": "Excluir vários tickets ao mesmo tempo. Um filtro opcional pode ser especificado.",
|
||||
"clearFilter": "O filtro para limpar tickets.",
|
||||
"clearFilters": {
|
||||
"all": "Todos",
|
||||
"open": "Aberto",
|
||||
"close": "Fechado",
|
||||
"claim": "Reivindicado",
|
||||
"unclaim": "Não Reivindicado",
|
||||
"pin": "Fixado",
|
||||
"unpin": "Desfixado",
|
||||
"autoclose": "Fechado Automaticamente"
|
||||
"reason":"Especifique um motivo opcional que será visível nos logs.",
|
||||
"help":"Obtenha uma lista de todos os comandos disponíveis.",
|
||||
"panel":"Gerar uma mensagem com um dropdown ou botões (para criação de tickets).",
|
||||
"panelId":"O identificador do painel que você deseja gerar.",
|
||||
"panelAutoUpdate":"Você quer que este painel atualize automaticamente quando editado?",
|
||||
"ticket":"Crie um ticket instantaneamente.",
|
||||
"ticketId":"O identificador do ticket que você deseja criar.",
|
||||
"close":"Feche um ticket.",
|
||||
"delete":"Exclua um ticket.",
|
||||
"deleteNoTranscript":"Exclua este ticket sem criar uma transcrição.",
|
||||
"reopen":"Reabra um ticket.",
|
||||
"claim":"Assuma um ticket.",
|
||||
"claimUser":"Assuma este ticket para outra pessoa em vez de você mesmo.",
|
||||
"unclaim":"Desassuma um ticket.",
|
||||
"pin":"Fixe um ticket.",
|
||||
"unpin":"Desfixe um ticket.",
|
||||
|
||||
"move":"Mova um ticket.",
|
||||
"moveId":"O identificador do opção para o qual você deseja mover.",
|
||||
"rename":"Renomeie um ticket.",
|
||||
"renameName":"O novo nome para este ticket.",
|
||||
"add":"Adicione um usuário a um ticket.",
|
||||
"addUser":"O usuário a ser adicionado.",
|
||||
"remove":"Remover um usuário de um ticket.",
|
||||
"removeUser":"O usuário a ser removido.",
|
||||
|
||||
"blacklist":"Gerenciar a lista negra de tickets.",
|
||||
"blacklistView":"Ver uma lista da blacklist atual.",
|
||||
"blacklistAdd":"Adicionar um usuário à blacklist.",
|
||||
"blacklistRemove":"Remover um usuário da blacklist.",
|
||||
"blacklistGet":"Obter os detalhes de um usuário na blacklist.",
|
||||
"blacklistGetUser":"O usuário para obter detalhes.",
|
||||
"stats":"Ver estatísticas do bot, de um membro ou de um ticket.",
|
||||
"statsReset":"Redefinir todas as estatísticas do bot (e começar a contar do zero).",
|
||||
"statsGlobal":"Ver as estatísticas globais.",
|
||||
"statsUser":"Ver as estatísticas de um usuário no servidor.",
|
||||
"statsUserUser":"O usuário para visualizar.",
|
||||
"statsTicket":"Ver as estatísticas de um ticket no servidor.",
|
||||
"statsTicketTicket":"O ticket para visualizar.",
|
||||
|
||||
"clear":"Excluir vários tickets ao mesmo tempo. Um filtro opcional pode ser especificado.",
|
||||
"clearFilter":"O filtro para limpar tickets.",
|
||||
"clearFilters":{
|
||||
"all":"Todos",
|
||||
"open":"Aberto",
|
||||
"close":"Fechado",
|
||||
"claim":"Reivindicado",
|
||||
"unclaim":"Não Reivindicado",
|
||||
"pin":"Fixado",
|
||||
"unpin":"Desfixado",
|
||||
"autoclose":"Fechado Automaticamente"
|
||||
},
|
||||
"autoclose": "Gerenciar fechamento automático em um ticket.",
|
||||
"autocloseDisable": "Desabilitar fechamento automático neste ticket.",
|
||||
"autocloseEnable": "Habilitar fechamento automático neste ticket.",
|
||||
"autocloseEnableTime": "A quantidade de horas que este ticket precisa estar inativo para ser fechado.",
|
||||
"autodelete": "Gerenciar exclusão automática em um ticket.",
|
||||
"autodeleteDisable": "Desabilitar exclusão automática neste ticket.",
|
||||
"autodeleteEnable": "Habilitar exclusão automática neste ticket.",
|
||||
"autodeleteEnableTime": "A quantidade de dias que este ticket precisa estar inativo para ser excluído."
|
||||
|
||||
"autoclose":"Gerenciar fechamento automático em um ticket.",
|
||||
"autocloseDisable":"Desabilitar fechamento automático neste ticket.",
|
||||
"autocloseEnable":"Habilitar fechamento automático neste ticket.",
|
||||
"autocloseEnableTime":"A quantidade de horas que este ticket precisa estar inativo para ser fechado.",
|
||||
"autodelete":"Gerenciar exclusão automática em um ticket.",
|
||||
"autodeleteDisable":"Desabilitar exclusão automática neste ticket.",
|
||||
"autodeleteEnable":"Habilitar exclusão automática neste ticket.",
|
||||
"autodeleteEnableTime":"A quantidade de dias que este ticket precisa estar inativo para ser excluído.",
|
||||
|
||||
"topic":"Gerenciar o tópico do canal do ticket.",
|
||||
"topicSet":"Definir o tópico do canal do ticket.",
|
||||
"topicValue":"O novo tópico do canal.",
|
||||
"topicList":"Obter uma lista de todos os tickets com seus tópicos e estatísticas.",
|
||||
"priority":"Gerenciar a prioridade do ticket.",
|
||||
"prioritySet":"Definir a prioridade do ticket.",
|
||||
"priorityValue":"Prioridade do canal.",
|
||||
"priorityGet":"Obter a prioridade do ticket.",
|
||||
"priorityList":"Obter uma lista de todos os tickets com seu status de prioridade.",
|
||||
"transfer":"Transferir a propriedade do ticket de um usuário para outro.",
|
||||
"transferUser":"O usuário para transferir."
|
||||
},
|
||||
"helpMenu": {
|
||||
"help": "Obtenha uma lista de todos os comandos disponíveis.",
|
||||
"ticket": "Crie um ticket instantaneamente.",
|
||||
"close": "Feche um ticket, isso desabilita a escrita neste canal.",
|
||||
"delete": "Exclua um ticket, isso cria uma transcrição quando habilitado.",
|
||||
"reopen": "Reabra um ticket, isso habilita a escrita neste canal novamente.",
|
||||
"pin": "Fixe um ticket. Isso moverá o ticket para o topo e adicionará um emoji '📌' ao nome.",
|
||||
"unpin": "Desfixe um ticket. O ticket permanecerá na sua posição, mas perderá o emoji '📌'.",
|
||||
"move": "Mova um ticket. Isso mudará o tipo deste ticket.",
|
||||
"rename": "Renomeie um ticket. Isso mudará o nome do canal deste ticket.",
|
||||
"claim": "Assuma um ticket. Com isso, você pode informar à sua equipe que está lidando com este ticket.",
|
||||
"unclaim": "Desassuma um ticket. Com isso, você pode informar à sua equipe que este ticket está livre novamente.",
|
||||
"add": "Adicione um usuário a um ticket. Isso permitirá que o usuário leia e escreva neste ticket.",
|
||||
"remove": "Remova um usuário de um ticket. Isso removerá a capacidade de ler e escrever para um usuário neste ticket.",
|
||||
"panel": "Gere uma mensagem com um dropdown ou botões (para criação de tickets).",
|
||||
"blacklistView": "Veja uma lista da blacklist atual.",
|
||||
"blacklistAdd": "Adicione um usuário à blacklist.",
|
||||
"blacklistRemove": "Remova um usuário da blacklist.",
|
||||
"blacklistGet": "Obtenha os detalhes de um usuário na blacklist.",
|
||||
"statsGlobal": "Veja as estatísticas globais.",
|
||||
"statsTicket": "Veja as estatísticas de um ticket no servidor.",
|
||||
"statsUser": "Veja as estatísticas de um usuário no servidor.",
|
||||
"statsReset": "Redefina todas as estatísticas do bot (e comece a contar do zero).",
|
||||
"autocloseDisable": "Desabilite o fechamento automático neste ticket.",
|
||||
"autocloseEnable": "Habilite o fechamento automático neste ticket.",
|
||||
"autodeleteDisable": "Desabilite a exclusão automática neste ticket.",
|
||||
"autodeleteEnable": "Habilite a exclusão automática neste ticket."
|
||||
"helpMenu":{
|
||||
"help":"Obtenha uma lista de todos os comandos disponíveis.",
|
||||
"ticket":"Crie um ticket instantaneamente.",
|
||||
"close":"Feche um ticket, isso desabilita a escrita neste canal.",
|
||||
"delete":"Exclua um ticket, isso cria uma transcrição quando habilitado.",
|
||||
"reopen":"Reabra um ticket, isso habilita a escrita neste canal novamente.",
|
||||
"pin":"Fixe um ticket. Isso moverá o ticket para o topo e adicionará um emoji '📌' ao nome.",
|
||||
"unpin":"Desfixe um ticket. O ticket permanecerá na sua posição, mas perderá o emoji '📌'.",
|
||||
"move":"Mova um ticket. Isso mudará o tipo deste ticket.",
|
||||
"rename":"Renomeie um ticket. Isso mudará o nome do canal deste ticket.",
|
||||
"claim":"Assuma um ticket. Com isso, você pode informar à sua equipe que está lidando com este ticket.",
|
||||
"unclaim":"Desassuma um ticket. Com isso, você pode informar à sua equipe que este ticket está livre novamente.",
|
||||
"add":"Adicione um usuário a um ticket. Isso permitirá que o usuário leia e escreva neste ticket.",
|
||||
"remove":"Remova um usuário de um ticket. Isso removerá a capacidade de ler e escrever para um usuário neste ticket.",
|
||||
"panel":"Gere uma mensagem com um dropdown ou botões (para criação de tickets).",
|
||||
"blacklistView":"Veja uma lista da blacklist atual.",
|
||||
"blacklistAdd":"Adicione um usuário à blacklist.",
|
||||
"blacklistRemove":"Remova um usuário da blacklist.",
|
||||
"blacklistGet":"Obtenha os detalhes de um usuário na blacklist.",
|
||||
"statsGlobal":"Veja as estatísticas globais.",
|
||||
"statsTicket":"Veja as estatísticas de um ticket no servidor.",
|
||||
"statsUser":"Veja as estatísticas de um usuário no servidor.",
|
||||
"statsReset":"Redefina todas as estatísticas do bot (e comece a contar do zero).",
|
||||
"autocloseDisable":"Desabilite o fechamento automático neste ticket.",
|
||||
"autocloseEnable":"Habilite o fechamento automático neste ticket.",
|
||||
"autodeleteDisable":"Desabilite a exclusão automática neste ticket.",
|
||||
"autodeleteEnable":"Habilite a exclusão automática neste ticket.",
|
||||
"categories":{
|
||||
"general":"Comandos Gerais",
|
||||
"basicTicket":"Comandos Básicos de Ticket",
|
||||
"advancedTicket":"Comandos Avançados de Ticket",
|
||||
"userTicket":"Comandos de Ticket de Usuário",
|
||||
"admin":"Comandos de Administrador",
|
||||
"advanced":"Comandos Avançados",
|
||||
"extra":"Comandos Extras"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes": {
|
||||
"global": "Status Global",
|
||||
"system": "Status do Sistema",
|
||||
"user": "Status do Usuário",
|
||||
"ticket": "Status do Ticket",
|
||||
"participants": "Participantes"
|
||||
"scopes":{
|
||||
"global":"Status Global",
|
||||
"system":"Status do Sistema",
|
||||
"user":"Status do Usuário",
|
||||
"ticket":"Status do Ticket",
|
||||
"participants":"Participantes",
|
||||
"messages":"Mensagens"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets Criados",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Tickets Fixados",
|
||||
"ticketsMoved":"Tickets Movidos",
|
||||
"usersBlacklisted":"Usuários na Blacklist",
|
||||
"transcriptsCreated":"Transcrição Criada"
|
||||
"transcriptsCreated":"Transcrição Criada",
|
||||
"ticketsAutodeleted":"Tickets Autodeletados",
|
||||
"ticketsTransferred":"Tickets Transferidos",
|
||||
"ticketVolume":"Volume de Tickets",
|
||||
"averageTickets":"Média de Tickets/Usuário",
|
||||
"currentTickets":"Tickets Atuais",
|
||||
"age":"Idade do Ticket",
|
||||
"responseTime":"Tempo de Resposta",
|
||||
"resolutionTime":"Tempo de Resolução",
|
||||
"createdOn":"Criado em",
|
||||
"createdBy":"Criado por",
|
||||
"closedOn":"Fechado em",
|
||||
"closedBy":"Fechado por",
|
||||
"claimedOn":"Reivindicado em",
|
||||
"claimedBy":"Reivindicado por",
|
||||
"pinnedOn":"Fixado em",
|
||||
"pinnedBy":"Fixado por",
|
||||
"deletedOn":"Excluído em",
|
||||
"deletedBy":"Excluído por"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Desenvolvedor",
|
||||
"serverOwner":"Proprietário do Servidor",
|
||||
"serverAdmin":"Administrador do Servidor",
|
||||
"moderator":"Equipe de Moderadores",
|
||||
"support":"Equipe de Suporte",
|
||||
"member":"Membro"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Selecione seu ticket",
|
||||
"selectRole":"Selecione sua função",
|
||||
"selectOption":"Selecione sua opção"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Urgente",
|
||||
"veryHigh":"Muito Alta",
|
||||
"high":"Alta",
|
||||
"normal":"Normal",
|
||||
"low":"Baixa",
|
||||
"veryLow":"Muito Baixa",
|
||||
"none":"Nenhuma"
|
||||
}
|
||||
}
|
||||
+157
-27
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["SankeDev"],
|
||||
"lastedited":"27/08/2024",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Romanian",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,7 +31,15 @@
|
||||
"stringContains":"Acest string trebuie sa contina {0}!",
|
||||
"stringChoices":"Acest string poate fi doar una dintre urmatoarele optiuni: {0}!",
|
||||
"stringRegex":"String invalid!",
|
||||
|
||||
"stringInvertedContains":"Acest șir nu are voie să conțină {0}!",
|
||||
"stringLowercase":"Acest șir trebuie scris doar cu litere mici!",
|
||||
"stringUppercase":"Acest șir trebuie scris doar cu litere mari!",
|
||||
"stringSpecialCharacters":"Acest șir nu are voie să conțină caractere speciale! (doar a-z, 0-9 și spațiu)",
|
||||
"stringNoSpaces":"Acest șir nu are voie să conțină spații!",
|
||||
"stringCapitalWord":"Este recomandat ca fiecare cuvânt din acest șir să înceapă cu literă mare!",
|
||||
"stringCapitalSentence":"Se pare că unele propoziții din acest șir nu încep cu literă mare!",
|
||||
"stringPunctuation":"Se pare că propoziția din acest șir nu se termină cu un semn de punctuație!",
|
||||
|
||||
"numberTooShort":"Acest numar nu poate fi mai scurt de {0} caractere!",
|
||||
"numberTooLong":"Acest numar nu poate fi mai lung de {0} caractere!",
|
||||
"numberLengthInvalid":"Acest numar trebuie sa aiba minim {0} caractere!",
|
||||
@@ -48,10 +56,12 @@
|
||||
"numberNegative":"Acest numar nu poate fi negativ!",
|
||||
"numberPositive":"Acest numar nu poate fi pozitiv!",
|
||||
"numberZero":"Acest numar nu poate sa fie 0!",
|
||||
|
||||
"numberNan":"Acest număr nu poate fi NaN (Not A Number)!",
|
||||
"numberInvertedContains":"Acest număr nu are voie să conțină {0}!",
|
||||
|
||||
"booleanTrue":"Aceasta valoare boolean nu poate sa fie adevarata!",
|
||||
"booleanFalse":"Aceasta valoare boolean nu poate sa fie falsa!",
|
||||
|
||||
|
||||
"arrayEmptyDisabled":"Acest array nu poate sa fie gol!",
|
||||
"arrayEmptyRequired":"Acest array trebuie sa fie gol!",
|
||||
"arrayTooShort":"Acest array trebuie sa aiba lungimea minima de {0}!",
|
||||
@@ -59,7 +69,7 @@
|
||||
"arrayLengthInvalid":"Acest array trebuie sa aiba o lungime de {0}!",
|
||||
"arrayInvalidTypes":"Acest array poate sa contina doar urmatoarele tipuri: {0}!",
|
||||
"arrayDouble":"Acest array nu admite valori duplicate!",
|
||||
|
||||
|
||||
"discordInvalidId":"Acesta este un id {0} invalid !",
|
||||
"discordInvalidIdOptions":"Acesta este un id {0} invalid! Poti sa folosesti doar dintre urmatoarele: {1}!",
|
||||
"discordInvalidToken":"Acesta este un discord bot token invalid (din punct de vedere al sintaxei)!",
|
||||
@@ -76,7 +86,7 @@
|
||||
"urlInvalidPath":"Acest url are o locatie invalida!",
|
||||
"idNotUnique":"Acest id nu este unic, foloseste altul!",
|
||||
"idNonExistent":"Id-ul {0} nu exista!",
|
||||
|
||||
|
||||
"invalidType":"Aceasta propietate trebuie sa fie de tipul: {0}!",
|
||||
"propertyMissing":"Propietatea {0} lipseste din acest obiect!",
|
||||
"propertyOptional":"Propietatea {0} este optionala in acest obiect!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Aceasta propietate nu poate sa fie nula!",
|
||||
"switchInvalidType":"Folosete un tip dintre acestea: {0}!",
|
||||
"objectSwitchInvalid":"Acest obiect trebuie sa fie un tip dintre acestea: {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"Aceasta este o limba invalida!",
|
||||
"invalidButton":"Acest buton trebuie sa aiba cel putin un {0} sau {1}!",
|
||||
"unusedOption":"Optiunea {0} nu este folosita nicaieri!",
|
||||
"unusedQuestion":"Intrebarea {0} nu este folosita nicaieri!",
|
||||
"dropdownOption":"Un meniul cu dropdown activat poate contine doar valori din categoria 'ticket'!"
|
||||
"dropdownOption":"Un meniul cu dropdown activat poate contine doar valori din categoria 'ticket'!",
|
||||
"customInvalidVersion":"Versiunea specificată în configurația ta nu corespunde! Asigură-te că ai actualizat configurația la cea mai recentă versiune!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Adaugat la Blacklist",
|
||||
"blacklistRemoveDm":"Sters din Blacklist",
|
||||
"clear":"Tickets Curatate",
|
||||
"clearTickets":"Ștergere Tichete",
|
||||
"roles":"Roluri Actualizate",
|
||||
|
||||
"autoclose":"Ticket Inchis Automat",
|
||||
@@ -139,7 +151,12 @@
|
||||
"autocloseDisabled":"Inchidere Automata Dezactivata",
|
||||
"autodelete":"Ticket Sters Automat",
|
||||
"autodeleteEnabled":"Stergere Automata Activata",
|
||||
"autodeleteDisabled":"Stergere Automata Dezactivata"
|
||||
"autodeleteDisabled":"Stergere Automata Dezactivata",
|
||||
|
||||
"topicSet":"Subiect Modificat",
|
||||
"prioritySet":"Prioritate Modificată",
|
||||
"priorityGet":"Prioritate Tichet",
|
||||
"transfer":"Tichet Transferat"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"Ticket-ul tau a fost creat cu succes! Apasa pe butonul de mai jos pentru a-l vizualiza!",
|
||||
@@ -154,7 +171,7 @@
|
||||
"move":"Ticket-ul tau a fost mutat in {0} cu succes!",
|
||||
"add":"{0} a fost adaugat la ticket cu succes!",
|
||||
"remove":"{0} a fost sters din ticket cu succes!",
|
||||
|
||||
|
||||
"helpExplanation":"`<nume>` => parametru mandatoriu\n`[nume]` => parametru optional",
|
||||
"statsReset":"Toate statisticile botului au fost resetate cu succes!",
|
||||
"statsError":"Nu se poate accesa statusul ticketului!\n{0} nu este un ticket!",
|
||||
@@ -167,7 +184,7 @@
|
||||
"clearVerify":"Esti sigur ca doresti sa stergi mai multe tickete?\nAceasta actiune nu poate fi anulata!",
|
||||
"clearReady":"{0} tickete au fost sterse cu succes!",
|
||||
"rolesEmpty":"Nu exista roluri de actualizat!",
|
||||
|
||||
|
||||
"autocloseLeave":"Acest ticket a fost inchis automatat deoarece creatorul a iesit din server.",
|
||||
"autocloseTimeout":"Acest ticket a fost inchis automatat deoarece a fost inactiv pentru mai mult de `{0}h`!",
|
||||
"autodeleteLeave":"Acest ticket a fost sters automatat deoarece creatorul a iesit din server.",
|
||||
@@ -176,11 +193,16 @@
|
||||
"autocloseDisabled":"Inchiderea automata a fost dezactivata in acest ticket!\nNu se va mai inchide automat!",
|
||||
"autodeleteEnabled":"Stergerea automata a fost activata in acest ticket!\nSe va sterge automat cand va fi inactiv pentru mai mult de `{0} zile`!",
|
||||
"autodeleteDisabled":"Stergerea automata a fost dezactivata in acest ticket!\nNu se va mai sterge automat!",
|
||||
|
||||
|
||||
"ticketMessageLimit":"Poti creea doar {0} tickete in acelasi timp!",
|
||||
"ticketMessageAutoclose":"Acest ticket va fi inchis automat cand va deveni inactiv de mai mult de {0}h!",
|
||||
"ticketMessageAutodelete":"Acest ticket va fi sters automat cand va deveni inactiv de mai mult de {0} zile!",
|
||||
"panelReady":"Panelul poate fi gasit mai jos!\nAcest mesaj poate fi sters acum."
|
||||
"panelReady":"Panoul este disponibil în mesajul următor!\nAcest mesaj poate fi șters acum!",
|
||||
|
||||
"topicSet":"Subiectul canalului a fost modificat cu succes de {0}!",
|
||||
"prioritySet":"Prioritatea tichetului a fost modificată la {0} de către {1} cu succes!",
|
||||
"priorityGet":"Prioritatea curentă a acestui tichet este {0}.",
|
||||
"transfer":"Proprietatea tichetului a fost transferată de la {0} la {1} de către {2} cu succes!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"De ce inchizi acest ticket?",
|
||||
@@ -215,12 +237,19 @@
|
||||
"addDm":"{0} a fost adaugat la ticketul tau in server!",
|
||||
"removeLog":"{0} a fost sters din acest ticket de {1}!",
|
||||
"removeDm":"{0} a fost sters din ticketul tau in server!",
|
||||
|
||||
|
||||
"blacklistAddLog":"{0} a fost adaugat in blacklist de {1}!",
|
||||
"blacklistRemoveLog":"{0} a fost eliminat din blacklist de {1}!",
|
||||
"blacklistAddDm":"Ai fost adaugat in blacklist pe serverul nostru!\nNu mai poti creea tickete!",
|
||||
"blacklistRemoveDm":"Ai fost scos din blacklist pe serverul nostru!\nPoti sa creezi tickete din nou!",
|
||||
"clearLog":"{0} tickete au fost sterse de {1}!"
|
||||
"clearLog":"{0} tickete au fost sterse de {1}!",
|
||||
|
||||
"transferLog":"Proprietatea acestui tichet a fost transferată de la {0} la {1} de către {2}!",
|
||||
"transferDm":"Proprietatea tichetului tău a fost transferată de la {0} la {1} pe serverul nostru!",
|
||||
"prioritySetLog":"Prioritatea acestui tichet a fost modificată la {0} de către {1}!",
|
||||
"prioritySetDm":"Prioritatea tichetului tău a fost modificată la {0} pe serverul nostru!",
|
||||
"roleUpdateLog":"{0} și-a actualizat rolurile!",
|
||||
"roleUpdateDm":"Rolurile tale pe serverul nostru au fost actualizate!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
@@ -229,7 +258,7 @@
|
||||
"ready":"Transcript Creat",
|
||||
"textFileDescription":"Acesta este transcriptul in format text al ticketului sters!",
|
||||
"htmlProgress":"Generarea transcriptului in format HTML a inceput, te rog asteapta...",
|
||||
|
||||
|
||||
"createdChannel":"Un nou transcript {0} a fost creat in server!",
|
||||
"createdCreator":"Un nou transcript {0} a fost creat pentru unul dintre ticketele tale!",
|
||||
"createdParticipant":"Un nou transcript {0} a fost creat pentru unul dintre ticketele la care ai participat!",
|
||||
@@ -241,7 +270,19 @@
|
||||
"retry":"Reincearca",
|
||||
"continue":"Sterge fara Transcript",
|
||||
"backup":"Creeaza un Transcript de Backup",
|
||||
"error":"Ceva nu a mers bine cand s-a incercat creearea transcriptului.\nCum doresti sa continui?\n\nAcest ticket nu va fi modificat pana cand nu apesi pe unul dintre butoane."
|
||||
"error":"Ceva nu a mers bine cand s-a incercat creearea transcriptului.\nCum doresti sa continui?\n\nAcest ticket nu va fi modificat pana cand nu apesi pe unul dintre butoane.",
|
||||
"title":"Eroare Transcriere"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"MESAJE",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"FIȘIER",
|
||||
"fieldsTitle":"CÂMPURI",
|
||||
"reactionsTitle":"REACȚII",
|
||||
"statsTitle":"STATISTICI",
|
||||
"emptyContent":"<conținutul este gol>",
|
||||
"noTitle":"<fără-titlu>",
|
||||
"noDesc":"<fără-descriere>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
@@ -257,7 +298,8 @@
|
||||
"unknownPanel":"Panel Necunoscut",
|
||||
"notInGuild":"Nu este in server",
|
||||
"channelRename":"Nu se poate redenumi canalul",
|
||||
"busy":"Ticket ocupat"
|
||||
"busy":"Ticket ocupat",
|
||||
"permissionError":"Eroare de Permisiune"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Contacteaza ownerul botului pentru mai multe informatii.",
|
||||
@@ -280,7 +322,10 @@
|
||||
"notInGuild":"Aceasta {0} poate fi folosita doar in server!",
|
||||
"channelRename":"Nu s-a putut redenumi canalul din cauza unor limitari Discord! Canalul va fi redenumit in 10 minute daca botul nu va fi repornit.",
|
||||
"channelRenameSource":"Sursa acestei erori este: {0}",
|
||||
"busy":"Nu se poate executa {0}!\nTicketul este in curs de procesare.\n\nTe rugam sa incerci din nou in cateva minute!"
|
||||
"busy":"Nu se poate executa {0}!\nTicketul este in curs de procesare.\n\nTe rugam sa incerci din nou in cateva minute!",
|
||||
"closeBeforeMessage":"Acest tichet nu poate fi închis/șters înainte ca un mesaj să fi fost trimis de un utilizator.",
|
||||
"closeBeforeAdminMessage":"Acest tichet nu poate fi închis/șters înainte ca un mesaj să fi fost trimis de un administrator de tichete sau un membru al echipei de suport.",
|
||||
"unableToCreateTicket":"Nu poți crea un tichet."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"Valoarea nu respecta formatul necesar!",
|
||||
@@ -331,7 +376,6 @@
|
||||
"added":"Adaugat",
|
||||
"removed":"Sters",
|
||||
"filter":"Filtru",
|
||||
"claimedBy":"Revendicat de {0}",
|
||||
"method":"Metoda",
|
||||
"type":"Tip",
|
||||
"blacklisted":"Blacklistat",
|
||||
@@ -352,10 +396,30 @@
|
||||
"version":"Versiune",
|
||||
"name":"Nume",
|
||||
"role":"Rol",
|
||||
"status":"Status",
|
||||
"status":"STARE",
|
||||
"claimed":"Revendicat",
|
||||
"pinned":"Fixat",
|
||||
"creationDate":"Data Crearii"
|
||||
"creationDate":"Data Crearii",
|
||||
|
||||
"noone":"NIMENI",
|
||||
"open":"DESCHIS",
|
||||
"closed":"ÎNCHIS",
|
||||
"priority":"PRIORITATE",
|
||||
"participants":"PARTICIPANȚI",
|
||||
"yes":"DA",
|
||||
"no":"NU",
|
||||
"option":"OPȚIUNE",
|
||||
"topic":"SUBIECT",
|
||||
"uptime":"TIM P FUNCȚIONARE SISTEM",
|
||||
"messages":"MESAJE",
|
||||
"embeds":"EMBEDURI",
|
||||
"files":"FIȘIERE",
|
||||
"components":"COMPONENTE",
|
||||
"cooldown":"COOLDOWN",
|
||||
"maxTickets":"MAX TICHETE",
|
||||
"admins":"ADMINI",
|
||||
"roles":"ROLURI",
|
||||
"size":"DIMENSIUNE"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"text",
|
||||
@@ -384,6 +448,7 @@
|
||||
"unclaim":"Elibereaza un ticket.",
|
||||
"pin":"Fixeaza un ticket.",
|
||||
"unpin":"Defixeaza un ticket.",
|
||||
|
||||
"move":"Muta un ticket.",
|
||||
"moveId":"Id-ul tipului de optiune in care vrei sa muti acest ticket.",
|
||||
"rename":"Redenumeste un ticket.",
|
||||
@@ -392,6 +457,7 @@
|
||||
"addUser":"Userul pe care vrei sa il adaugi.",
|
||||
"remove":"Sterge un user dintr-un ticket.",
|
||||
"removeUser":"Userul pe care vrei sa il stergi.",
|
||||
|
||||
"blacklist":"Gestioneaza blacklist-ul in server.",
|
||||
"blacklistView":"Vezi o lista cu toti userii blacklisted.",
|
||||
"blacklistAdd":"Adauga un user in blacklist.",
|
||||
@@ -405,6 +471,7 @@
|
||||
"statsUserUser":"Userul pe care vrei sa il vezi.",
|
||||
"statsTicket":"Vezi statisticile unui ticket in server.",
|
||||
"statsTicketTicket":"Ticketul pe care vrei sa il vezi.",
|
||||
|
||||
"clear":"Sterge mai multe tickete in acelasi timp.",
|
||||
"clearFilter":"Filtrul pentru ștergerea biletelor.",
|
||||
"clearFilters":{
|
||||
@@ -417,6 +484,7 @@
|
||||
"unpin":"Nefixat",
|
||||
"autoclose":"Inchis Automat"
|
||||
},
|
||||
|
||||
"autoclose":"Gestioneaza inchiderea automata a unui ticket.",
|
||||
"autocloseDisable":"Dezactiveaza inchiderea automata in acest ticket.",
|
||||
"autocloseEnable":"Activeaza inchiderea automata in acest ticket.",
|
||||
@@ -424,7 +492,19 @@
|
||||
"autodelete":"Gestioneaza stergerea automata a unui ticket.",
|
||||
"autodeleteDisable":"Dezactiveaza stergerea automata in acest ticket.",
|
||||
"autodeleteEnable":"Activeaza stergerea automata in acest ticket.",
|
||||
"autodeleteEnableTime":"Numarul de zile in care acest ticket trebuie sa fie inactiv pentru a fi sters."
|
||||
"autodeleteEnableTime":"Numarul de zile in care acest ticket trebuie sa fie inactiv pentru a fi sters.",
|
||||
|
||||
"topic":"Gestionează subiectul canalului de tichet.",
|
||||
"topicSet":"Setează subiectul canalului de tichet.",
|
||||
"topicValue":"Noul subiect al canalului.",
|
||||
"topicList":"Obține o listă cu toate tichetele, împreună cu subiectul și statisticile lor.",
|
||||
"priority":"Gestionează prioritatea tichetului.",
|
||||
"prioritySet":"Setează prioritatea tichetului.",
|
||||
"priorityValue":"Prioritatea canalului.",
|
||||
"priorityGet":"Obține prioritatea tichetului.",
|
||||
"priorityList":"Obține o listă cu toate tichetele și starea priorității lor.",
|
||||
"transfer":"Transferă proprietatea tichetului de la un utilizator la altul.",
|
||||
"transferUser":"Utilizatorul către care se face transferul."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Afiseaza o lista cu toate comenzile disponibile.",
|
||||
@@ -452,7 +532,16 @@
|
||||
"autocloseDisable":"Dezactiveaza inchiderea automata in acest ticket.",
|
||||
"autocloseEnable":"Activeaza inchiderea automata in acest ticket.",
|
||||
"autodeleteDisable":"Dezactiveaza stergerea automata in acest ticket.",
|
||||
"autodeleteEnable":"Activeaza stergerea automata in acest ticket."
|
||||
"autodeleteEnable":"Activeaza stergerea automata in acest ticket.",
|
||||
"categories":{
|
||||
"general":"Comenzi Generale",
|
||||
"basicTicket":"Comenzi de Bază pentru Tichete",
|
||||
"advancedTicket":"Comenzi Avansate pentru Tichete",
|
||||
"userTicket":"Comenzi pentru Tichete Utilizator",
|
||||
"admin":"Comenzi Administrator",
|
||||
"advanced":"Comenzi Avansate",
|
||||
"extra":"Comenzi Extra"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
@@ -460,7 +549,8 @@
|
||||
"system":"Statistici Sistem",
|
||||
"user":"Statistici User",
|
||||
"ticket":"Statistici Ticket",
|
||||
"participants":"Participanti"
|
||||
"participants":"Participanti",
|
||||
"messages":"Mesaje"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickete Create",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Tickete Fixate",
|
||||
"ticketsMoved":"Tickete Mutate",
|
||||
"usersBlacklisted":"Useri Blacklisted",
|
||||
"transcriptsCreated":"Transcripturi Create"
|
||||
"transcriptsCreated":"Transcripturi Create",
|
||||
"ticketsAutodeleted":"Tichete Șterse Automat",
|
||||
"ticketsTransferred":"Tichete Transferate",
|
||||
"ticketVolume":"Volum Tichete",
|
||||
"averageTickets":"Medie Tichete/Utilizator",
|
||||
"currentTickets":"Tichete Curente",
|
||||
"age":"Vechime Tichet",
|
||||
"responseTime":"Timp de Răspuns",
|
||||
"resolutionTime":"Timp de Rezolvare",
|
||||
"createdOn":"Creat La",
|
||||
"createdBy":"Creat De",
|
||||
"closedOn":"Închis La",
|
||||
"closedBy":"Închis De",
|
||||
"claimedOn":"Preluat La",
|
||||
"claimedBy":"Preluat De",
|
||||
"pinnedOn":"Fixat La",
|
||||
"pinnedBy":"Fixat De",
|
||||
"deletedOn":"Șters La",
|
||||
"deletedBy":"Șters De"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Dezvoltator",
|
||||
"serverOwner":"Proprietar Server",
|
||||
"serverAdmin":"Administrator Server",
|
||||
"moderator":"Echipă Moderare",
|
||||
"support":"Echipă Suport",
|
||||
"member":"Membru"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Selectează tichetul tău",
|
||||
"selectRole":"Selectează rolul tău",
|
||||
"selectOption":"Selectează opțiunea ta"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Urgent",
|
||||
"veryHigh":"Foarte Ridicată",
|
||||
"high":"Ridicată",
|
||||
"normal":"Normală",
|
||||
"low":"Scăzută",
|
||||
"veryLow":"Foarte Scăzută",
|
||||
"none":"Niciuna"
|
||||
}
|
||||
}
|
||||
+580
-437
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["HanumeshGupta","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Simplified Chainese",
|
||||
"automated":true
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["HanumeshGupta","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Solvenian",
|
||||
"automated":true
|
||||
},
|
||||
|
||||
+159
-29
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["Redactado","Josuens"],
|
||||
"lastedited":"22/08/2024",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Spanish",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,7 +31,15 @@
|
||||
"stringContains":"¡Esta cadena necesita contener {0}!",
|
||||
"stringChoices":"¡Esta cadena no puede ser uno de los siguientes valores: {0}!",
|
||||
"stringRegex":"¡La cadena no es válida!",
|
||||
|
||||
"stringInvertedContains":"¡Esta cadena no puede contener {0}!",
|
||||
"stringLowercase":"¡Esta cadena debe escribirse solo en minúsculas!",
|
||||
"stringUppercase":"¡Esta cadena debe escribirse solo en mayúsculas!",
|
||||
"stringSpecialCharacters":"¡Esta cadena no puede contener caracteres especiales! (solo a-z, 0-9 y espacio)",
|
||||
"stringNoSpaces":"¡Esta cadena no puede contener espacios!",
|
||||
"stringCapitalWord":"¡Se recomienda que cada palabra de esta cadena comience con mayúscula!",
|
||||
"stringCapitalSentence":"¡Parece que algunas oraciones de esta cadena no comienzan con mayúscula!",
|
||||
"stringPunctuation":"¡Parece que la oración de esta cadena no termina con un signo de puntuación!",
|
||||
|
||||
"numberTooShort":"¡Este número no puede ser menor que {0}!",
|
||||
"numberTooLong":"¡Este número no puede ser mayor que {0}!",
|
||||
"numberLengthInvalid":"¡Este número necesita tener {0}!",
|
||||
@@ -48,10 +56,12 @@
|
||||
"numberNegative":"¡Este número no puede ser negativo!",
|
||||
"numberPositive":"¡Este número no puede ser positivo!",
|
||||
"numberZero":"¡Este número no puede ser cero!",
|
||||
|
||||
"numberNan":"¡Este número no puede ser NaN (Not A Number)!",
|
||||
"numberInvertedContains":"¡Este número no puede contener {0}!",
|
||||
|
||||
"booleanTrue":"¡Este valor no puede ser positivo!",
|
||||
"booleanFalse":"¡Este valor no puede ser negativo!",
|
||||
|
||||
|
||||
"arrayEmptyDisabled":"¡No se permite que este conjunto de valores esté vacío!",
|
||||
"arrayEmptyRequired":"¡Se requiere que este conjunto de valores esté vacío!",
|
||||
"arrayTooShort":"¡Este conjunto de valores necesita tener una longitud de al menos {0}!",
|
||||
@@ -59,7 +69,7 @@
|
||||
"arrayLengthInvalid":"¡Este conjunto de valores necesita tener una longitud de {0}!",
|
||||
"arrayInvalidTypes":"Este conjunto de valores solo puede contener los siguientes tipos: {0}!",
|
||||
"arrayDouble":"¡Este conjunto de valores no permite el mismo valor dos veces!",
|
||||
|
||||
|
||||
"discordInvalidId":"¡Esta es una ID de discord {0} inválida!",
|
||||
"discordInvalidIdOptions":"¡Esta es una ID de discord {0} inválida! También puedes usar una de estas: {1}!",
|
||||
"discordInvalidToken":"¡Este es un token de discord inválido (sintácticamente)!",
|
||||
@@ -69,14 +79,14 @@
|
||||
"emojiCustom":"¡Este emoji no puede ser un emoji personalizado de discord!",
|
||||
"emojiInvalid":"¡Este es un emoji inválido!",
|
||||
"urlInvalid":"¡Esta URL es inválida!",
|
||||
"urlInvalidHttp":"¡Esta URL solo puede usar el protocolo https:/\/!",
|
||||
"urlInvalidProtocol":"¡Esta URL solo puede usar los protocolos http:// y https:/\/!",
|
||||
"urlInvalidHttp":"¡Esta URL solo puede usar el protocolo https://!",
|
||||
"urlInvalidProtocol":"¡Esta URL solo puede usar los protocolos http:// y https://!",
|
||||
"urlInvalidHostname":"¡Esta URL tiene un nombre de host no permitido!",
|
||||
"urlInvalidExtension":"¡Esta URL tiene una extensión inválida! Elige entre: {0}!",
|
||||
"urlInvalidPath":"¡Esta URL tiene una ruta inválida!",
|
||||
"idNotUnique":"Esta ID no es única, usa otra ID en su lugar!",
|
||||
"idNonExistent":"La ID {0} no existe!",
|
||||
|
||||
|
||||
"invalidType":"Esta propiedad necesita ser del tipo: {0}!",
|
||||
"propertyMissing":"La propiedad {0} falta en este objeto!",
|
||||
"propertyOptional":"La propiedad {0} es opcional en este objeto!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Esta propiedad no puede ser nula!",
|
||||
"switchInvalidType":"Esto necesita ser uno de los siguientes tipos: {0}!",
|
||||
"objectSwitchInvalid":"Este objeto necesita ser uno de los siguientes tipos: {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"¡Este es un idioma inválido!",
|
||||
"invalidButton":"¡Este botón necesita al menos un {0} o un {1}!",
|
||||
"unusedOption":"¡La opción {0} no se usa en ningún lugar!",
|
||||
"unusedQuestion":"¡La pregunta {0} no se usa en ningún lugar!",
|
||||
"dropdownOption":"¡Este panel de botóns solo puede contener opciones de tipo 'ticket'!"
|
||||
"dropdownOption":"¡Este panel de botóns solo puede contener opciones de tipo 'ticket'!",
|
||||
"customInvalidVersion":"¡La versión especificada en tu configuración no coincide! ¡Asegúrate de haber actualizado la configuración a la versión más reciente!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Agregado a la Lista Negra",
|
||||
"blacklistRemoveDm":"Eliminado de la Lista Negra",
|
||||
"clear":"Tickets Limpiados",
|
||||
"clearTickets":"Limpiar Tickets",
|
||||
"roles":"Roles Actualizados",
|
||||
|
||||
"autoclose":"Ticket Cerrado Automáticamente",
|
||||
@@ -139,7 +151,12 @@
|
||||
"autocloseDisabled":"Cierre Automático Deshabilitado",
|
||||
"autodelete":"Ticket Eliminado Automáticamente",
|
||||
"autodeleteEnabled":"Eliminación Automática Habilitada",
|
||||
"autodeleteDisabled":"Eliminación Automática Deshabilitada"
|
||||
"autodeleteDisabled":"Eliminación Automática Deshabilitada",
|
||||
|
||||
"topicSet":"Tema Cambiado",
|
||||
"prioritySet":"Prioridad Cambiada",
|
||||
"priorityGet":"Prioridad del Ticket",
|
||||
"transfer":"Ticket Transferido"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"¡Tu ticket ha sido creado! Haz click en el botón abajo para verlo!",
|
||||
@@ -154,7 +171,7 @@
|
||||
"move":"¡El ticket fué movido a {0} correctamente!",
|
||||
"add":"¡{0} ha sido agregado a este ticket correctamente!",
|
||||
"remove":"¡{0} ha sido removido de este ticket correctamente!",
|
||||
|
||||
|
||||
"helpExplanation":"`<nombre>` => argumento requerido\n`[nombre]` => argumento opcional",
|
||||
"statsReset":"¡Las estadísticas de este ticket han sido reiniciadas!",
|
||||
"statsError":"¡No se pueden ver las estadísticas de este ticket!\n¡{0} no es un ticket!",
|
||||
@@ -167,7 +184,7 @@
|
||||
"clearVerify":"¿Estás seguro de que deseas borrar los tickets?\n¡Esta acción no se puede deshacer!",
|
||||
"clearReady":"¡{0} tickets fueron eliminados correctamente!",
|
||||
"rolesEmpty":"¡Ningún rol fué actualizado!",
|
||||
|
||||
|
||||
"autocloseLeave":"¡Este ticket se ha cerrado automáticamente porque el creador abandonó el servidor!",
|
||||
"autocloseTimeout":"¡Este ticket se ha cerrado automáticamente porque ha estado inactivo durante más de `{0}h`!",
|
||||
"autodeleteLeave":"¡Este ticket se ha eliminado automáticamente porque el creador abandonó el servidor!",
|
||||
@@ -176,11 +193,16 @@
|
||||
"autocloseDisabled":"¡El cierre automático se ha deshabilitado en este ticket!\n¡Ya no se cerrará automáticamente!",
|
||||
"autodeleteEnabled":"¡La eliminación automática se ha habilitado en este ticket!\nSe eliminará cuando esté inactivo durante más de `{0} días`!",
|
||||
"autodeleteDisabled":"¡La eliminación automática se ha deshabilitado en este ticket!\n¡Ya no se eliminará automáticamente!",
|
||||
|
||||
|
||||
"ticketMessageLimit":"¡Solo puedes crear {0} ticket(s) al mismo tiempo!",
|
||||
"ticketMessageAutoclose":"¡Este ticket se cerrará automáticamente cuando esté inactivo durante {0}h!",
|
||||
"ticketMessageAutodelete":"¡Este ticket se eliminará automáticamente cuando esté inactivo durante {0} días!",
|
||||
"panelReady":"¡Puedes encontrar el panel a continuación!\n¡Este mensaje ahora puede ser eliminado!"
|
||||
"panelReady":"¡El panel está disponible en el mensaje siguiente!\n¡Este mensaje ahora puede ser eliminado!",
|
||||
|
||||
"topicSet":"¡El tema del canal ha sido cambiado correctamente por {0}!",
|
||||
"prioritySet":"¡La prioridad del ticket ha sido cambiada a {0} por {1} correctamente!",
|
||||
"priorityGet":"La prioridad actual de este ticket es {0}.",
|
||||
"transfer":"¡La propiedad del ticket ha sido transferida de {0} a {1} por {2} correctamente!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"¿Por qué cerraste este ticket?",
|
||||
@@ -215,12 +237,19 @@
|
||||
"addDm":"¡{0} ha sido añadido a tu ticket en nuestro servidor!",
|
||||
"removeLog":"¡{0} ha sido eliminado de este ticket por {1}!",
|
||||
"removeDm":"¡{0} ha sido eliminado de tu ticket en nuestro servidor!",
|
||||
|
||||
|
||||
"blacklistAddLog":"{0} fue incluido en la lista negra por {1}!",
|
||||
"blacklistRemoveLog":"{0} fue eliminado de la lista negra por {1}!",
|
||||
"blacklistAddDm":"¡Has sido incluido en la lista negra en nuestro servidor!\n¡A partir de ahora, no puedes crear un ticket!",
|
||||
"blacklistRemoveDm":"¡Has sido eliminado de la lista negra en nuestro servidor!\n¡Ahora puedes volver a crear tickets!",
|
||||
"clearLog":"¡{0} tickets han sido eliminados por {1}!"
|
||||
"clearLog":"¡{0} tickets han sido eliminados por {1}!",
|
||||
|
||||
"transferLog":"¡La propiedad de este ticket ha sido transferida de {0} a {1} por {2}!",
|
||||
"transferDm":"¡La propiedad de tu ticket ha sido transferida de {0} a {1} en nuestro servidor!",
|
||||
"prioritySetLog":"¡La prioridad de este ticket ha sido cambiada a {0} por {1}!",
|
||||
"prioritySetDm":"¡La prioridad de tu ticket ha sido cambiada a {0} en nuestro servidor!",
|
||||
"roleUpdateLog":"¡{0} ha actualizado sus roles!",
|
||||
"roleUpdateDm":"¡Tus roles en nuestro servidor han sido actualizados!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
@@ -229,7 +258,7 @@
|
||||
"ready":"Transcripción creada",
|
||||
"textFileDescription":"¡Esta es la transcripción de texto de un ticket!",
|
||||
"htmlProgress":"Espera mientras la transcripción en HTML es procesado...",
|
||||
|
||||
|
||||
"createdChannel":"¡Se ha creado una nueva transcripción {0} en el servidor!",
|
||||
"createdCreator":"¡Se ha creado una nueva transcripción {0} para uno de tus tickets!",
|
||||
"createdParticipant":"¡Se ha creado una nueva transcripción {0} en uno de los tickets en los que participaste!",
|
||||
@@ -241,7 +270,19 @@
|
||||
"retry":"Reintentar",
|
||||
"continue":"Eliminar sin transcripción",
|
||||
"backup":"Crear respaldo de la transcripción",
|
||||
"error":"Algo salió mal al intentar subir la transcripción.\n¿Qué desearías hacer?\n\nEste ticket no será eliminado hasta que presiones uno de los botones."
|
||||
"error":"Algo salió mal al intentar subir la transcripción.\n¿Qué desearías hacer?\n\nEste ticket no será eliminado hasta que presiones uno de los botones.",
|
||||
"title":"Error de Transcripción"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"MENSAJES",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"ARCHIVO",
|
||||
"fieldsTitle":"CAMPOS",
|
||||
"reactionsTitle":"REACCIONES",
|
||||
"statsTitle":"ESTADÍSTICAS",
|
||||
"emptyContent":"<el contenido está vacío>",
|
||||
"noTitle":"<sin-título>",
|
||||
"noDesc":"<sin-descripción>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
@@ -257,7 +298,8 @@
|
||||
"unknownPanel":"Panel Desconocido",
|
||||
"notInGuild":"No está en el Servidor",
|
||||
"channelRename":"No es posible renombrar el canal",
|
||||
"busy":"El ticket está siendo procesado"
|
||||
"busy":"El ticket está siendo procesado",
|
||||
"permissionError":"Error de Permisos"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"¡Contacta al propietario de este bot para obtener más información!",
|
||||
@@ -280,7 +322,10 @@
|
||||
"notInGuild":"¡Este {0} no funciona en DM! ¡Por favor, inténtalo de nuevo en un servidor!",
|
||||
"channelRename":"Debido a los límites de velocidad de discord, actualmente es imposible para el bot renombrar el canal. El canal se renombrará automáticamente en 10 minutos si el bot no se reinicia.",
|
||||
"channelRenameSource":"La fuente de este error es: {0}",
|
||||
"busy":"¡No se puede usar este {0}!\nEl ticket está siendo procesado actualmente por el bot.\n\n¡Por favor, inténtalo de nuevo en unos segundos!"
|
||||
"busy":"¡No se puede usar este {0}!\nEl ticket está siendo procesado actualmente por el bot.\n\n¡Por favor, inténtalo de nuevo en unos segundos!",
|
||||
"closeBeforeMessage":"Este ticket no puede cerrarse/eliminarse antes de que un usuario haya enviado un mensaje.",
|
||||
"closeBeforeAdminMessage":"Este ticket no puede cerrarse/eliminarse antes de que un administrador de tickets o miembro del equipo de soporte haya enviado un mensaje.",
|
||||
"unableToCreateTicket":"No puedes crear un ticket."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"¡El valor no coincide con el patrón!",
|
||||
@@ -331,7 +376,6 @@
|
||||
"added":"Agregado",
|
||||
"removed":"Eliminado",
|
||||
"filter":"Filtrar",
|
||||
"claimedBy":"Reclamado Por {0}",
|
||||
"method":"Método",
|
||||
"type":"Tipo",
|
||||
"blacklisted":"En La Lista Negra",
|
||||
@@ -352,10 +396,30 @@
|
||||
"version":"Versión",
|
||||
"name":"Nombre",
|
||||
"role":"Rol",
|
||||
"status":"Estado",
|
||||
"status":"ESTADO",
|
||||
"claimed":"Reclamado",
|
||||
"pinned":"Anclado",
|
||||
"creationDate":"Fecha De Creación"
|
||||
"creationDate":"Fecha De Creación",
|
||||
|
||||
"noone":"NADIE",
|
||||
"open":"ABIERTO",
|
||||
"closed":"CERRADO",
|
||||
"priority":"PRIORIDAD",
|
||||
"participants":"PARTICIPANTES",
|
||||
"yes":"SÍ",
|
||||
"no":"NO",
|
||||
"option":"OPCIÓN",
|
||||
"topic":"TEMA",
|
||||
"uptime":"TIEMPO DE ACTIVIDAD DEL SISTEMA",
|
||||
"messages":"MENSAJES",
|
||||
"embeds":"EMBEDS",
|
||||
"files":"ARCHIVOS",
|
||||
"components":"COMPONENTES",
|
||||
"cooldown":"COOLDOWN",
|
||||
"maxTickets":"MÁX TICKETS",
|
||||
"admins":"ADMINS",
|
||||
"roles":"ROLES",
|
||||
"size":"TAMAÑO"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"texto",
|
||||
@@ -384,6 +448,7 @@
|
||||
"unclaim":"Libera un ticket.",
|
||||
"pin":"Ancla un ticket.",
|
||||
"unpin":"Desancla un ticket.",
|
||||
|
||||
"move":"Mueve un ticket.",
|
||||
"moveId":"El identificador del opción al que quieres mover.",
|
||||
"rename":"Renombra un ticket.",
|
||||
@@ -392,6 +457,7 @@
|
||||
"addUser":"El usuario a añadir.",
|
||||
"remove":"Elimina un usuario de un ticket.",
|
||||
"removeUser":"El usuario a eliminar.",
|
||||
|
||||
"blacklist":"Administra la lista negra de tickets.",
|
||||
"blacklistView":"Ver una lista de la lista negra actual.",
|
||||
"blacklistAdd":"Añade un usuario a la lista negra.",
|
||||
@@ -405,6 +471,7 @@
|
||||
"statsUserUser":"El usuario a ver.",
|
||||
"statsTicket":"Ver las estadísticas de un ticket en el servidor.",
|
||||
"statsTicketTicket":"El ticket a ver.",
|
||||
|
||||
"clear":"Eliminar varios tickets al mismo tiempo. Se puede especificar un filtro opcional.",
|
||||
"clearFilter":"valor",
|
||||
"clearFilters":{
|
||||
@@ -417,6 +484,7 @@
|
||||
"unpin":"Desanclado",
|
||||
"autoclose":"Cerrado automáticamente"
|
||||
},
|
||||
|
||||
"autoclose":"Administra el cierre automático en un ticket.",
|
||||
"autocloseDisable":"Desactiva el cierre automático en este ticket.",
|
||||
"autocloseEnable":"Activa el cierre automático en este ticket.",
|
||||
@@ -424,7 +492,19 @@
|
||||
"autodelete":"Administra la eliminación automática en un ticket.",
|
||||
"autodeleteDisable":"Desactiva la eliminación automática en este ticket.",
|
||||
"autodeleteEnable":"Activa la eliminación automática en este ticket.",
|
||||
"autodeleteEnableTime":"La cantidad de días que este ticket necesita estar inactivo para eliminarlo."
|
||||
"autodeleteEnableTime":"La cantidad de días que este ticket necesita estar inactivo para eliminarlo.",
|
||||
|
||||
"topic":"Gestiona el tema del canal del ticket.",
|
||||
"topicSet":"Establece el tema del canal del ticket.",
|
||||
"topicValue":"El nuevo tema del canal.",
|
||||
"topicList":"Obtén una lista de todos los tickets con su tema y estadísticas.",
|
||||
"priority":"Gestiona la prioridad del ticket.",
|
||||
"prioritySet":"Establece la prioridad del ticket.",
|
||||
"priorityValue":"La prioridad del canal.",
|
||||
"priorityGet":"Obtén la prioridad del ticket.",
|
||||
"priorityList":"Obtén una lista de todos los tickets con su estado de prioridad.",
|
||||
"transfer":"Transfiere la propiedad del ticket de un usuario a otro.",
|
||||
"transferUser":"El usuario al que transferir."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Obtén una lista de todos los comandos disponibles.",
|
||||
@@ -452,7 +532,16 @@
|
||||
"autocloseDisable":"Desactiva el cierre automático en este ticket.",
|
||||
"autocloseEnable":"Activa el cierre automático en este ticket.",
|
||||
"autodeleteDisable":"Desactiva la eliminación automática en este ticket.",
|
||||
"autodeleteEnable":"Activa la eliminación automática en este ticket."
|
||||
"autodeleteEnable":"Activa la eliminación automática en este ticket.",
|
||||
"categories":{
|
||||
"general":"Comandos Generales",
|
||||
"basicTicket":"Comandos Básicos de Tickets",
|
||||
"advancedTicket":"Comandos Avanzados de Tickets",
|
||||
"userTicket":"Comandos de Tickets de Usuario",
|
||||
"admin":"Comandos de Administrador",
|
||||
"advanced":"Comandos Avanzados",
|
||||
"extra":"Comandos Extra"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
@@ -460,7 +549,8 @@
|
||||
"system":"Estadisticas del Sistema",
|
||||
"user":"Estadísticas del Usuario",
|
||||
"ticket":"Ticket Stats",
|
||||
"participants":"Participantes"
|
||||
"participants":"Participantes",
|
||||
"messages":"Mensajes"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets Creados",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Tickets Anclados",
|
||||
"ticketsMoved":"Tickets Movidos",
|
||||
"usersBlacklisted":"Usuarios En Lista Negra",
|
||||
"transcriptsCreated":"Transcripciones Creadas"
|
||||
"transcriptsCreated":"Transcripciones Creadas",
|
||||
"ticketsAutodeleted":"Tickets Eliminados Automáticamente",
|
||||
"ticketsTransferred":"Tickets Transferidos",
|
||||
"ticketVolume":"Volumen de Tickets",
|
||||
"averageTickets":"Promedio de Tickets/Usuario",
|
||||
"currentTickets":"Tickets Actuales",
|
||||
"age":"Antigüedad del Ticket",
|
||||
"responseTime":"Tiempo de Respuesta",
|
||||
"resolutionTime":"Tiempo de Resolución",
|
||||
"createdOn":"Creado El",
|
||||
"createdBy":"Creado Por",
|
||||
"closedOn":"Cerrado El",
|
||||
"closedBy":"Cerrado Por",
|
||||
"claimedOn":"Reclamado El",
|
||||
"claimedBy":"Reclamado Por",
|
||||
"pinnedOn":"Fijado El",
|
||||
"pinnedBy":"Fijado Por",
|
||||
"deletedOn":"Eliminado El",
|
||||
"deletedBy":"Eliminado Por"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Desarrollador",
|
||||
"serverOwner":"Propietario del Servidor",
|
||||
"serverAdmin":"Administrador del Servidor",
|
||||
"moderator":"Equipo de Moderación",
|
||||
"support":"Equipo de Soporte",
|
||||
"member":"Miembro"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Selecciona tu ticket",
|
||||
"selectRole":"Selecciona tu rol",
|
||||
"selectOption":"Selecciona tu opción"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Urgente",
|
||||
"veryHigh":"Muy Alta",
|
||||
"high":"Alta",
|
||||
"normal":"Normal",
|
||||
"low":"Baja",
|
||||
"veryLow":"Muy Baja",
|
||||
"none":"Ninguna"
|
||||
}
|
||||
}
|
||||
+608
-478
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["HanumeshGupta","ChatGPT"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Tamil",
|
||||
"automated":true
|
||||
},
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["modshd"],
|
||||
"lastedited":"16/11/2025",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Thai",
|
||||
"automated":false
|
||||
},
|
||||
|
||||
+580
-449
File diff suppressed because it is too large
Load Diff
+167
-37
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.1.1",
|
||||
"otversion":"v4.1.3",
|
||||
"translators":["Anderskiy"],
|
||||
"lastedited":"31/08/2024",
|
||||
"lastedited":"16/02/2026",
|
||||
"language":"Ukrainian",
|
||||
"automated":false
|
||||
},
|
||||
@@ -31,7 +31,15 @@
|
||||
"stringContains":"Цей рядок повинен мати {0}!",
|
||||
"stringChoices":"Цей рядок може мати лише одне з наступних значень: {0}!",
|
||||
"stringRegex":"Цей рядок є неправильним!",
|
||||
|
||||
"stringInvertedContains":"Цей рядок не може містити {0}!",
|
||||
"stringLowercase":"Цей рядок має бути написаний лише маленькими літерами!",
|
||||
"stringUppercase":"Цей рядок має бути написаний лише великими літерами!",
|
||||
"stringSpecialCharacters":"Цей рядок не може містити спеціальні символи! (тільки a-z, 0-9 та пробіл)",
|
||||
"stringNoSpaces":"Цей рядок не може містити пробілів!",
|
||||
"stringCapitalWord":"Рекомендується, щоб кожне слово в цьому рядку починалося з великої літери!",
|
||||
"stringCapitalSentence":"Схоже, деякі речення в цьому рядку не починаються з великої літери!",
|
||||
"stringPunctuation":"Схоже, що речення в цьому рядку не закінчується знаком пунктуації!",
|
||||
|
||||
"numberTooShort":"Це число не може бути коротшим за {0} символів!",
|
||||
"numberTooLong":"Це число не може бути довшим за {0} символів!",
|
||||
"numberLengthInvalid":"Це число має бути довжиною {0} символів!",
|
||||
@@ -48,18 +56,20 @@
|
||||
"numberNegative":"Це число не може бути від'ємним!",
|
||||
"numberPositive":"Це число не може бути додатнім!",
|
||||
"numberZero":"Це число не може дорівнювати нулю!",
|
||||
|
||||
"booleanTrue": "Цей булевий вираз не може бути істинним!",
|
||||
"booleanFalse": "Цей булевий вираз не може бути хибним!",
|
||||
|
||||
"arrayEmptyDisabled": "Цей масив не може бути порожнім!",
|
||||
"arrayEmptyRequired": "Цей масив повинен бути порожнім!",
|
||||
"arrayTooShort": "Цей масив повинен мати довжину не менше {0}!",
|
||||
"arrayTooLong": "Цей масив повинен мати довжину не більше {0}!",
|
||||
"arrayLengthInvalid": "Цей масив повинен мати довжину {0}!",
|
||||
"arrayInvalidTypes": "Цей масив може містити тільки такі типи: {0}!",
|
||||
"arrayDouble": "Цей масив не допускає повторення одного й того ж значення двічі!",
|
||||
|
||||
"numberNan":"Це число не може бути NaN (не число)!",
|
||||
"numberInvertedContains":"Це число не може містити {0}!",
|
||||
|
||||
"booleanTrue":"Цей булевий вираз не може бути істинним!",
|
||||
"booleanFalse":"Цей булевий вираз не може бути хибним!",
|
||||
|
||||
"arrayEmptyDisabled":"Цей масив не може бути порожнім!",
|
||||
"arrayEmptyRequired":"Цей масив повинен бути порожнім!",
|
||||
"arrayTooShort":"Цей масив повинен мати довжину не менше {0}!",
|
||||
"arrayTooLong":"Цей масив повинен мати довжину не більше {0}!",
|
||||
"arrayLengthInvalid":"Цей масив повинен мати довжину {0}!",
|
||||
"arrayInvalidTypes":"Цей масив може містити тільки такі типи: {0}!",
|
||||
"arrayDouble":"Цей масив не допускає повторення одного й того ж значення двічі!",
|
||||
|
||||
"discordInvalidId":"Це недійсний ідентифікатор discord {0}!",
|
||||
"discordInvalidIdOptions":"Це недійсний ідентифікатор discord {0}! Але ви також можете використати один з цих: {1}!",
|
||||
"discordInvalidToken":"Це недійсний токен дискорду (синтаксично)!",
|
||||
@@ -76,7 +86,7 @@
|
||||
"urlInvalidPath":"Це посилання має недійсний шлях!",
|
||||
"idNotUnique":"Цей ідентифікатор не є унікальним, використовуйте інший ідентифікатор!",
|
||||
"idNonExistent":"Цей айді {0} недійсний!",
|
||||
|
||||
|
||||
"invalidType":"Ця властивість повинна мати тип: {0}!",
|
||||
"propertyMissing":"У цього об'єкту відсутня властивість {0}!",
|
||||
"propertyOptional":"Властивість {0} у цьому об'єкті є необов'язковою!",
|
||||
@@ -84,12 +94,13 @@
|
||||
"nullInvalid":"Ця властивість не може бути нульовою!",
|
||||
"switchInvalidType":"Це має бути один з наступних типів: {0}!",
|
||||
"objectSwitchInvalid":"Цей об'єкт повинен бути одного з наступних типів: {0}!",
|
||||
|
||||
|
||||
"invalidLanguage":"Це недійсна мова!",
|
||||
"invalidButton":"Ця кнопка повинна мати принаймні {0} або {1}!",
|
||||
"unusedOption":"Опція {0} ніде не використовується!",
|
||||
"unusedQuestion":"Питання {0} ніде не використовується!",
|
||||
"dropdownOption":"Панель з увімкненим випадаючим списком може містити лише опції типу «тікет»!"
|
||||
"dropdownOption":"Панель з увімкненим випадаючим списком може містити лише опції типу «тікет»!",
|
||||
"customInvalidVersion":"Вказана версія у вашій конфігурації не збігається! Переконайтеся, що ви оновили конфігурацію до останньої версії!"
|
||||
}
|
||||
},
|
||||
"actions":{
|
||||
@@ -132,6 +143,7 @@
|
||||
"blacklistAddDm":"Додати до чорного списку",
|
||||
"blacklistRemoveDm":"Видалити з чорного списку",
|
||||
"clear":"Тікети відалено",
|
||||
"clearTickets":"Очистити Тікети",
|
||||
"roles":"Ролі оновлено",
|
||||
|
||||
"autoclose":"Тікет автоматично закрито",
|
||||
@@ -139,7 +151,12 @@
|
||||
"autocloseDisabled":"Автозакриття відключено",
|
||||
"autodelete":"Тікет автовидаленно",
|
||||
"autodeleteEnabled":"Автовидалення увімкнено",
|
||||
"autodeleteDisabled":"Автовидалення відключено"
|
||||
"autodeleteDisabled":"Автовидалення відключено",
|
||||
|
||||
"topicSet":"Тему змінено",
|
||||
"prioritySet":"Пріоритет змінено",
|
||||
"priorityGet":"Пріоритет Тікету",
|
||||
"transfer":"Тікет передано"
|
||||
},
|
||||
"descriptions":{
|
||||
"create":"Ваш тікет був створений. Натисніть кнопку нижче, щоб отримати доступ до нього!",
|
||||
@@ -153,8 +170,8 @@
|
||||
"rename":"Тікет успішно перейменовано на {0}!",
|
||||
"move":"Тікет успішно перенесено до {0}!",
|
||||
"add":"{0} успішно додано до тікета!",
|
||||
"remove":"{0} успішно видалено з тікета!",
|
||||
|
||||
"remove":"{0} успішно видалено з тікета!",
|
||||
|
||||
"helpExplanation":"`<name>` => обов'язковий параметр\n`[name]` => необов'язковий параметр",
|
||||
"statsReset":"Статистику бота успішно скинуто!",
|
||||
"statsError":"Неможливо переглянути статистику тікету!\n{0} - це не тікет!",
|
||||
@@ -167,7 +184,7 @@
|
||||
"clearVerify":"Ви впевнені, що хочете видалити кілька тікетів?\nЦю дію неможливо скасувати!",
|
||||
"clearReady":"{0} тікет успішно видалений!",
|
||||
"rolesEmpty":"Жодної ролі не було оновлено!",
|
||||
|
||||
|
||||
"autocloseLeave":"Цей тикет було автоматично закрито, оскільки автор покинув сервер!",
|
||||
"autocloseTimeout":"Цей тикет було автоматично закрито, оскільки він був неактивний більше `{0}ч`!",
|
||||
"autodeleteLeave":"Цей тикет було автоматично видалено, оскільки автор покинув сервер!",
|
||||
@@ -176,11 +193,16 @@
|
||||
"autocloseDisabled":"У цьому тікеті відключено автоматичне закриття! \nВін більше не буде закриватися автоматично!",
|
||||
"autodeleteEnabled":"У цьому тікеті увімкнено автоматичне видалення!\nВін буде видалений, коли буде неактивним більше `{0} днів!`",
|
||||
"autodeleteDisabled":"У цьому квитку відключено автоматичне видалення! \nВін більше не буде видалятися автоматично!",
|
||||
|
||||
|
||||
"ticketMessageLimit":"Одночасно можна створити лише {0} тікетів!",
|
||||
"ticketMessageAutoclose":"Цей тикет буде автоматично закрито, якщо він буде неактивним протягом {0}ч!",
|
||||
"ticketMessageAutodelete":"Цей тикет буде автоматично видалено, якщо він буде неактивним протягом {0} днів!",
|
||||
"panelReady":"Панель можна знайти нижче!\nЦе повідомлення буде видалено!"
|
||||
"panelReady":"Панель доступна у наступному повідомленні!\nЦе повідомлення тепер можна видалити!",
|
||||
|
||||
"topicSet":"Тему каналу успішно змінив {0}!",
|
||||
"prioritySet":"Пріоритет тікету успішно змінено на {0} користувачем {1}!",
|
||||
"priorityGet":"Поточний пріоритет цього тікету: {0}.",
|
||||
"transfer":"Власність тікету успішно передано від {0} до {1} користувачем {2}!"
|
||||
},
|
||||
"modal":{
|
||||
"closePlaceholder":"Чому ви закрили тікет?",
|
||||
@@ -215,12 +237,19 @@
|
||||
"addDm":"{0} було додано до тікету на нашому сервері!",
|
||||
"removeLog":"{0} було видалено тікету {1}!",
|
||||
"removeDm":"{0} було видалено з тікету на нашому сервері!",
|
||||
|
||||
|
||||
"blacklistAddLog":"{0} був доданий до чорного списку {1}!",
|
||||
"blacklistRemoveLog":"{0} було видалено з чорного списку {1}!",
|
||||
"blacklistAddDm":"Вас було додано до чорного списку на нашому сервері!\nВідтепер ви не можете створити тікет!",
|
||||
"blacklistRemoveDm":"Вас було видалено з чорного списку на нашому сервер!\nВідтепер ви знову можете створювати тікети!",
|
||||
"clearLog":"{0} тікети було видалено {1}!"
|
||||
"clearLog":"{0} тікети було видалено {1}!",
|
||||
|
||||
"transferLog":"Власність цього тікету передано від {0} до {1} користувачем {2}!",
|
||||
"transferDm":"Власність вашого тікету передано від {0} до {1} на нашому сервері!",
|
||||
"prioritySetLog":"Пріоритет цього тікету змінено на {0} користувачем {1}!",
|
||||
"prioritySetDm":"Пріоритет вашого тікету змінено на {0} на нашому сервері!",
|
||||
"roleUpdateLog":"{0} оновив свої ролі!",
|
||||
"roleUpdateDm":"Ваші ролі на нашому сервері оновлено!"
|
||||
}
|
||||
},
|
||||
"transcripts":{
|
||||
@@ -229,7 +258,7 @@
|
||||
"ready":"Транскрипт створений",
|
||||
"textFileDescription":"Це текстова транскрипція видаленого тікету!",
|
||||
"htmlProgress":"Будь ласка, зачекайте, поки цей html-транскрипт створюється...",
|
||||
|
||||
|
||||
"createdChannel":"На сервері створено новий {0} транскрипт!",
|
||||
"createdCreator":"Для одного з ваших тікетів створено нову {0} транскрипцію!",
|
||||
"createdParticipant":"В одному з тікетів, в якому ви брали участь, створено новий {0} транскрипт!",
|
||||
@@ -241,7 +270,19 @@
|
||||
"retry":"Спробуйте ще раз.",
|
||||
"continue":"Видалення без транскрипції",
|
||||
"backup":"Створити резервну копію транскрипту",
|
||||
"error":"Під час спроби створити транскрипт щось пішло не так.\n\nЩо ви хочете зробити?\n\nЦей тікет не буде видалено, доки ви не натиснете одну з цих кнопок."
|
||||
"error":"Під час спроби створити транскрипт щось пішло не так.\n\nЩо ви хочете зробити?\n\nЦей тікет не буде видалено, доки ви не натиснете одну з цих кнопок.",
|
||||
"title":"Помилка транскрипта"
|
||||
},
|
||||
"text":{
|
||||
"messagesTitle":"ПОВІДОМЛЕННЯ",
|
||||
"embedTitle":"EMBED",
|
||||
"fileTitle":"ФАЙЛ",
|
||||
"fieldsTitle":"ПОЛЯ",
|
||||
"reactionsTitle":"РЕАКЦІЇ",
|
||||
"statsTitle":"СТАТИСТИКА",
|
||||
"emptyContent":"<контент порожній>",
|
||||
"noTitle":"<немає заголовка>",
|
||||
"noDesc":"<немає опису>"
|
||||
}
|
||||
},
|
||||
"errors":{
|
||||
@@ -257,7 +298,8 @@
|
||||
"unknownPanel":"Невідома панель",
|
||||
"notInGuild":"Відсутний на сервері",
|
||||
"channelRename":"Неможливо перейменовати канал",
|
||||
"busy":"Тікет зайнято"
|
||||
"busy":"Тікет зайнято",
|
||||
"permissionError":"Помилка дозволу"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Зв'яжіться з власником цього бота для отримання додаткової інформації!",
|
||||
@@ -280,7 +322,10 @@
|
||||
"notInGuild":"Це {0} не працює у ПП! Будь ласка, спробуйте ще раз на сервері!",
|
||||
"channelRename":"Через обмеження швидкості дискорду бот наразі не може перейменувати канал. Канал буде автоматично перейменовано через 10 хвилин, якщо бота не буде перезавантажено.",
|
||||
"channelRenameSource":"Джерело цієї помилки: {0}",
|
||||
"busy":"Неможливо використати цей {0}!\nТікет наразі обробляється ботом.\n\nБудь ласка, повторіть спробу через кілька секунд!"
|
||||
"busy":"Неможливо використати цей {0}!\nТікет наразі обробляється ботом.\n\nБудь ласка, повторіть спробу через кілька секунд!",
|
||||
"closeBeforeMessage":"Цей тікет не можна закрити/видалити до того, як користувач надішле повідомлення.",
|
||||
"closeBeforeAdminMessage":"Цей тікет не можна закрити/видалити до того, як адміністратор тікетів або член підтримки надішле повідомлення.",
|
||||
"unableToCreateTicket":"Ви не можете створити тікет."
|
||||
},
|
||||
"optionInvalidReasons":{
|
||||
"stringRegex":"Значення не відповідає шаблону!",
|
||||
@@ -331,7 +376,6 @@
|
||||
"added":"Додано",
|
||||
"removed":"Видалено",
|
||||
"filter":"Фільтер",
|
||||
"claimedBy":"Запрошено {0}",
|
||||
"method":"Метод",
|
||||
"type":"Тип",
|
||||
"blacklisted":"У ЧС",
|
||||
@@ -352,10 +396,30 @@
|
||||
"version":"Версія",
|
||||
"name":"Ім'я",
|
||||
"role":"Роль",
|
||||
"status":"Статус",
|
||||
"status":"СТАТУС",
|
||||
"claimed":"Запрошено",
|
||||
"pinned":"Закріплено",
|
||||
"creationDate":"Дата створення"
|
||||
"creationDate":"Дата створення",
|
||||
|
||||
"noone":"Ніхто",
|
||||
"open":"ВІДКРИТИЙ",
|
||||
"closed":"ЗАКРИТО",
|
||||
"priority":"ПРІОРИТЕТ",
|
||||
"participants":"УЧАСНИКИ",
|
||||
"yes":"Так",
|
||||
"no":"Ні",
|
||||
"option":"ВАРІАНТ",
|
||||
"topic":"ТЕМА",
|
||||
"uptime":"Час роботи системи",
|
||||
"messages":"ПОВІДОМЛЕННЯ",
|
||||
"embeds":"EMBED",
|
||||
"files":"ФАЙЛИ",
|
||||
"components":"КОМПОНЕНТИ",
|
||||
"cooldown":"Затримка",
|
||||
"maxTickets":"Макс. тікетів",
|
||||
"admins":"АДМІНИ",
|
||||
"roles":"РОЛІ",
|
||||
"size":"РОЗМІР"
|
||||
},
|
||||
"lowercase":{
|
||||
"text":"текст",
|
||||
@@ -384,6 +448,7 @@
|
||||
"unclaim":"Відмовитися від тікету.",
|
||||
"pin":"Закріпіть тікет.",
|
||||
"unpin":"Відкріпіть тікет.",
|
||||
|
||||
"move":"Перемістіть тікет.",
|
||||
"moveId":"Ідентифікатор параметр, на який ви хочете перейти.",
|
||||
"rename":"Перейменувати тікет.",
|
||||
@@ -392,6 +457,7 @@
|
||||
"addUser":"Учасник, якого потрібно додати.",
|
||||
"remove":"Видалити учасника з тікета.",
|
||||
"removeUser":"Учасник, якого потрібно видалити",
|
||||
|
||||
"blacklist":"Керування чорним списком тікетів.",
|
||||
"blacklistView":"Переглянути список поточного чорного списку.",
|
||||
"blacklistAdd":"Додати учасника до чорного списку.",
|
||||
@@ -405,6 +471,7 @@
|
||||
"statsUserUser":"Учасник для перегляду.",
|
||||
"statsTicket":"Перегляд статистики тікета на сервері.",
|
||||
"statsTicketTicket":"Тікет для перегляду.",
|
||||
|
||||
"clear":"Видалення декількох тікетів одночасно.",
|
||||
"clearFilter":"Фільтр для очищення квитків.",
|
||||
"clearFilters":{
|
||||
@@ -417,6 +484,7 @@
|
||||
"unpin":"Відкріплені",
|
||||
"autoclose":"Авто-закриті"
|
||||
},
|
||||
|
||||
"autoclose":"Керуйте автозакриттям у тікеті.",
|
||||
"autocloseDisable":"Вимкніть автозакриття в цьому тікеті.",
|
||||
"autocloseEnable":"Увімкніть автозакриття в цьому тикеті.",
|
||||
@@ -424,7 +492,19 @@
|
||||
"autodelete":"Керуйте автовидаленням у тікеті.",
|
||||
"autodeleteDisable":"Вимкніть автовидалення в цьому тікеті.",
|
||||
"autodeleteEnable":"Ввімкніть автовидалення в цьому тікеті.",
|
||||
"autodeleteEnableTime":"Кількість днів."
|
||||
"autodeleteEnableTime":"Кількість днів.",
|
||||
|
||||
"topic":"Керування темою каналу тікету.",
|
||||
"topicSet":"Встановити тему каналу тікету.",
|
||||
"topicValue":"Нова тема каналу.",
|
||||
"topicList":"Отримати список усіх тікетів з їхніми темами та статистикою.",
|
||||
"priority":"Керування пріоритетом тікету.",
|
||||
"prioritySet":"Встановити пріоритет тікету.",
|
||||
"priorityValue":"Пріоритет каналу.",
|
||||
"priorityGet":"Отримати пріоритет тікету.",
|
||||
"priorityList":"Отримати список усіх тікетів з їхнім пріоритетом.",
|
||||
"transfer":"Передати власність тікету від одного користувача іншому.",
|
||||
"transferUser":"Користувач, якому передати."
|
||||
},
|
||||
"helpMenu":{
|
||||
"help":"Отримайте список усіх доступних команд.",
|
||||
@@ -452,7 +532,16 @@
|
||||
"autocloseDisable":"Вимкніть автозакриття в цьому тікеті.",
|
||||
"autocloseEnable":"Ввімкніть автозакриття в цьому тікеті.",
|
||||
"autodeleteDisable":"Вимкніть автовидалення в цьому тікеті.",
|
||||
"autodeleteEnable":"Ввімкніть автовидалення в цьому тікеті."
|
||||
"autodeleteEnable":"Ввімкніть автовидалення в цьому тікеті.",
|
||||
"categories":{
|
||||
"general":"Загальні команди",
|
||||
"basicTicket":"Базові команди тікету",
|
||||
"advancedTicket":"Розширені команди тікету",
|
||||
"userTicket":"Команди користувача тікету",
|
||||
"admin":"Адмінські команди",
|
||||
"advanced":"Розширені команди",
|
||||
"extra":"Додаткові команди"
|
||||
}
|
||||
},
|
||||
"stats":{
|
||||
"scopes":{
|
||||
@@ -460,7 +549,8 @@
|
||||
"system":"Системна статистика",
|
||||
"user":"Статистика учасника",
|
||||
"ticket":"Статистика тікета",
|
||||
"participants":"Учасники"
|
||||
"participants":"Учасники",
|
||||
"messages":"Повідомлення"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Тікетів створено",
|
||||
@@ -472,7 +562,47 @@
|
||||
"ticketsPinned":"Тікетів закріплено",
|
||||
"ticketsMoved":"Тікетів переміщено",
|
||||
"usersBlacklisted":"Учасників заблоковано",
|
||||
"transcriptsCreated":"Транскриптів створено"
|
||||
"transcriptsCreated":"Транскриптів створено",
|
||||
"ticketsAutodeleted":"Тікети видалено автоматично",
|
||||
"ticketsTransferred":"Тікети передано",
|
||||
"ticketVolume":"Обсяг тікетів",
|
||||
"averageTickets":"Середнє тікетів/користувач",
|
||||
"currentTickets":"Поточні тікети",
|
||||
"age":"Вік тікету",
|
||||
"responseTime":"Час відповіді",
|
||||
"resolutionTime":"Час вирішення",
|
||||
"createdOn":"Створено",
|
||||
"createdBy":"Створив",
|
||||
"closedOn":"Закрито",
|
||||
"closedBy":"Закрив",
|
||||
"claimedOn":"Прийнято",
|
||||
"claimedBy":"Прийняв",
|
||||
"pinnedOn":"Закріплено",
|
||||
"pinnedBy":"Закріпив",
|
||||
"deletedOn":"Видалено",
|
||||
"deletedBy":"Видалив"
|
||||
},
|
||||
"roles":{
|
||||
"developer":"Розробник",
|
||||
"serverOwner":"Власник сервера",
|
||||
"serverAdmin":"Адмін сервера",
|
||||
"moderator":"Команда модераторів",
|
||||
"support":"Команда підтримки",
|
||||
"member":"Учасник"
|
||||
}
|
||||
},
|
||||
"panel":{
|
||||
"selectTicket":"Виберіть ваш тікет",
|
||||
"selectRole":"Виберіть вашу роль",
|
||||
"selectOption":"Виберіть ваш варіант"
|
||||
},
|
||||
"priorities":{
|
||||
"urgent":"Терміново",
|
||||
"veryHigh":"Дуже високий",
|
||||
"high":"Високий",
|
||||
"normal":"Звичайний",
|
||||
"low":"Низький",
|
||||
"veryLow":"Дуже низький",
|
||||
"none":"Немає"
|
||||
}
|
||||
}
|
||||
+563
-421
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "open-ticket",
|
||||
"author": "DJdj Development",
|
||||
"version": "4.1.1",
|
||||
"version": "4.1.3",
|
||||
"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",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"id":"example-plugin",
|
||||
"version":"1.0.0",
|
||||
"startFile":"index.ts",
|
||||
"supportedVersions":["OTv4.0.x","OTv4.1.x","OTv4.2.x"],
|
||||
|
||||
"enabled":false,
|
||||
"priority":0,
|
||||
@@ -14,6 +15,7 @@
|
||||
|
||||
"details":{
|
||||
"author":"DJj123dj",
|
||||
"contributors":[],
|
||||
"shortDescription":"A simple template for an Open Ticket v4 plugin!",
|
||||
"longDescription":"A simple example of an Open Ticket v4 plugin!",
|
||||
"imageUrl":"",
|
||||
|
||||
+34
-70
@@ -169,62 +169,44 @@ export const registerVerifyBars = async () => {
|
||||
//CLOSE TICKET TICKET MESSAGE
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:close-ticket-ticket-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("opendiscord:close-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.close
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:close-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.close,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when already closed
|
||||
if (ticket.get("opendiscord:closed").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:lang.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not allowed because of missing messages
|
||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
||||
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||
@@ -268,62 +250,44 @@ export const registerVerifyBars = async () => {
|
||||
//CLOSE TICKET REOPEN MESSAGE
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:close-ticket-reopen-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("opendiscord:close-ticket-reopen-message").success.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.close
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:close-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.close,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when already closed
|
||||
if (ticket.get("opendiscord:closed").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:lang.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not allowed because of missing messages
|
||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
||||
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||
|
||||
+62
-140
@@ -119,8 +119,16 @@ export const registerVerifyBars = async () => {
|
||||
//DELETE TICKET TICKET MESSAGE
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-ticket-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("opendiscord:delete-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
||||
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
||||
@@ -130,54 +138,27 @@ export const registerVerifyBars = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not allowed because of missing messages
|
||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
||||
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||
@@ -224,8 +205,16 @@ export const registerVerifyBars = async () => {
|
||||
//DELETE TICKET CLOSE MESSAGE
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-close-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-close-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("opendiscord:delete-ticket-close-message").success.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
||||
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
||||
@@ -235,54 +224,27 @@ export const registerVerifyBars = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not allowed because of missing messages
|
||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
||||
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||
@@ -333,8 +295,16 @@ export const registerVerifyBars = async () => {
|
||||
//DELETE TICKET REOPEN MESSAGE
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-reopen-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("opendiscord:delete-ticket-reopen-message").success.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
||||
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
||||
@@ -344,54 +314,26 @@ export const registerVerifyBars = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not allowed because of missing messages
|
||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
||||
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||
@@ -442,8 +384,16 @@ export const registerVerifyBars = async () => {
|
||||
//DELETE TICKET AUTOCLOSE MESSAGE
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-autoclose-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-autoclose-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("opendiscord:delete-ticket-autoclose-message").success.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
||||
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
||||
@@ -453,54 +403,26 @@ export const registerVerifyBars = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not allowed because of missing messages
|
||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
||||
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||
|
||||
+14
-34
@@ -10,50 +10,30 @@ export const registerCommandResponders = async () => {
|
||||
//ADD COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:add",generalConfig.data.prefix,"add"))
|
||||
opendiscord.responders.commands.get("opendiscord:add").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.add
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:add",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.add,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if in guild/Server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
+16
-35
@@ -10,62 +10,43 @@ export const registerCommandResponders = async () => {
|
||||
//AUTOCLOSE COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:autoclose",generalConfig.data.prefix,/^autoclose/))
|
||||
opendiscord.responders.commands.get("opendiscord:autoclose").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.autoclose
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:autoclose",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.autoclose,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
//return when already closed
|
||||
if (ticket.get("opendiscord:closed").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//subcommands
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "disable" && scope != "enable")) return
|
||||
|
||||
|
||||
+15
-34
@@ -10,57 +10,38 @@ export const registerCommandResponders = async () => {
|
||||
//AUTODELETE COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:autodelete",generalConfig.data.prefix,/^autodelete/))
|
||||
opendiscord.responders.commands.get("opendiscord:autodelete").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.autodelete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:autodelete",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.autodelete,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//subcommands
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "disable" && scope != "enable")) return
|
||||
|
||||
|
||||
+13
-36
@@ -10,49 +10,26 @@ export const registerCommandResponders = async () => {
|
||||
//BLACKLIST COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:blacklist",generalConfig.data.prefix,/^blacklist/))
|
||||
opendiscord.responders.commands.get("opendiscord:blacklist").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.blacklist
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:blacklist",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.blacklist,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//subcommands
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "add" && scope != "get" && scope != "remove" && scope != "view")) return
|
||||
|
||||
if (scope == "view"){
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:blacklist-view").build(source,{guild,channel,user}))
|
||||
|
||||
|
||||
+15
-34
@@ -10,55 +10,36 @@ export const registerCommandResponders = async () => {
|
||||
//CLAIM COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:claim",generalConfig.data.prefix,"claim"))
|
||||
opendiscord.responders.commands.get("opendiscord:claim").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.claim
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:claim",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.claim,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when already claimed
|
||||
if (ticket.get("opendiscord:claimed").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
+11
-35
@@ -10,42 +10,18 @@ export const registerCommandResponders = async () => {
|
||||
//CLEAR COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:clear",generalConfig.data.prefix,"clear"))
|
||||
opendiscord.responders.commands.get("opendiscord:clear").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.clear
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
//only allow global admins (ticket admins aren't allowed to clear tickets)
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild,{allowChannelUserScope:false,allowChannelRoleScope:false}))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:clear",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions (only allow global admins: ticket admins aren't allowed to clear tickets)
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.clear,"support",user,member,channel,guild,{allowChannelUserScope:false,allowChannelRoleScope:false})
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
|
||||
+19
-38
@@ -11,62 +11,44 @@ export const registerCommandResponders = async () => {
|
||||
//CLOSE COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:close",generalConfig.data.prefix,"close"))
|
||||
opendiscord.responders.commands.get("opendiscord:close").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.close
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:close",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.close,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when already closed
|
||||
if (ticket.get("opendiscord:closed").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not allowed because of missing messages
|
||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
||||
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||
@@ -77,11 +59,10 @@ export const registerCommandResponders = async () => {
|
||||
return cancel()
|
||||
}
|
||||
}
|
||||
|
||||
const reason = instance.options.getString("reason",false)
|
||||
|
||||
|
||||
//start closing ticket
|
||||
await instance.defer(false)
|
||||
const reason = instance.options.getString("reason",false)
|
||||
await opendiscord.actions.get("opendiscord:close-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:close-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
}),
|
||||
|
||||
+16
-35
@@ -11,57 +11,38 @@ export const registerCommandResponders = async () => {
|
||||
//DELETE COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:delete",generalConfig.data.prefix,"delete"))
|
||||
opendiscord.responders.commands.get("opendiscord:delete").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:delete",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not allowed because of missing messages
|
||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
||||
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||
|
||||
+12
-38
@@ -10,47 +10,21 @@ export const registerCommandResponders = async () => {
|
||||
//HELP COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:help",generalConfig.data.prefix,"help"))
|
||||
opendiscord.responders.commands.get("opendiscord:help").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.help
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:help",0,async (instance,params,source,cancel) => {
|
||||
const preferSlashOverText = generalConfig.data.system.preferSlashOverText
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.help,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//calculate slash/text mode for help menu
|
||||
let mode: "slash"|"text"
|
||||
if (generalConfig.data.slashCommands && generalConfig.data.textCommands){
|
||||
mode = (preferSlashOverText) ? "slash" : "text"
|
||||
|
||||
}else if (!generalConfig.data.slashCommands) mode = "text"
|
||||
if (generalConfig.data.slashCommands && generalConfig.data.textCommands) mode = (generalConfig.data.system.preferSlashOverText) ? "slash" : "text"
|
||||
else if (!generalConfig.data.slashCommands) mode = "text"
|
||||
else mode = "slash"
|
||||
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:help-menu").build(source,{mode,page:0}))
|
||||
|
||||
+13
-34
@@ -10,45 +10,24 @@ export const registerCommandResponders = async () => {
|
||||
//MOVE COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:move",generalConfig.data.prefix,"move"))
|
||||
opendiscord.responders.commands.get("opendiscord:move").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.move
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:move",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.move,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
|
||||
+13
-39
@@ -10,56 +10,30 @@ export const registerCommandResponders = async () => {
|
||||
//PANEL COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:panel",generalConfig.data.prefix,/^panel/))
|
||||
opendiscord.responders.commands.get("opendiscord:panel").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.panel
|
||||
|
||||
//command is disabled
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:panel",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.panel,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild || instance.channel.type == discord.ChannelType.GroupDM){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//get panel data
|
||||
const id = instance.options.getString("id",true)
|
||||
const panel = opendiscord.panels.get(id)
|
||||
|
||||
if (!panel){
|
||||
//invalid panel
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-panel-unknown").build(source,{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
}
|
||||
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:panel-ready").build(source,{guild,channel,user,panel}))
|
||||
const panelMessage = await instance.channel.send((await opendiscord.builders.messages.getSafe("opendiscord:panel").build(source,{guild,channel,user,panel})).message)
|
||||
|
||||
+15
-1
@@ -44,21 +44,35 @@ export const registerCommandResponders = async () => {
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:pin",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.pin,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when already pinned
|
||||
if (ticket.get("opendiscord:pinned").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
+15
-34
@@ -10,56 +10,37 @@ export const registerCommandResponders = async () => {
|
||||
//PRIORITY COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:priority",generalConfig.data.prefix,"priority"))
|
||||
opendiscord.responders.commands.get("opendiscord:priority").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.priority
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:priority",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.priority,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//subcommands
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "set" && scope != "get")) return
|
||||
|
||||
|
||||
+14
-34
@@ -10,50 +10,30 @@ export const registerCommandResponders = async () => {
|
||||
//REMOVE COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:remove",generalConfig.data.prefix,"remove"))
|
||||
opendiscord.responders.commands.get("opendiscord:remove").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.remove
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:remove",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.remove,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
+14
-34
@@ -10,50 +10,30 @@ export const registerCommandResponders = async () => {
|
||||
//RENAME COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:rename",generalConfig.data.prefix,"rename"))
|
||||
opendiscord.responders.commands.get("opendiscord:rename").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.rename
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:rename",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.rename,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
+15
-34
@@ -10,55 +10,36 @@ export const registerCommandResponders = async () => {
|
||||
//REOPEN COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:reopen",generalConfig.data.prefix,"reopen"))
|
||||
opendiscord.responders.commands.get("opendiscord:reopen").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.reopen
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:reopen",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {guild,channel,user,member} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.reopen,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not closed
|
||||
if (!ticket.get("opendiscord:closed").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
@@ -12,13 +12,14 @@ export const registerButtonResponders = async () => {
|
||||
opendiscord.responders.buttons.get("opendiscord:role-option").workers.add(
|
||||
new api.ODWorker("opendiscord:role-option",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//get option
|
||||
//get option data
|
||||
const optionId = instance.interaction.customId.split("_")[2]
|
||||
const option = opendiscord.options.get(optionId)
|
||||
if (!option || !(option instanceof api.ODRoleOption)){
|
||||
|
||||
+26
-2
@@ -57,12 +57,36 @@ export const registerCommandResponders = async () => {
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:stats",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
if (generalConfig.data.system.permissions.stats === "none"){
|
||||
//command is disabled
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
|
||||
}else if (instance.options.getSubCommand() === "reset" && !opendiscord.permissions.hasPermissions("owner",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//reset --> owner/developer role is required
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["owner","developer"]}))
|
||||
return cancel()
|
||||
|
||||
}else{
|
||||
//default permissions check
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.stats,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//subcommands
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "global" && scope != "ticket" && scope != "user" && scope != "reset")) return
|
||||
|
||||
|
||||
+44
-84
@@ -7,52 +7,46 @@ import * as discord from "discord.js"
|
||||
const generalConfig = opendiscord.configs.get("opendiscord:general")
|
||||
const lang = opendiscord.languages
|
||||
|
||||
async function checkTicketCreationPerms(instance:api.ODButtonResponderInstance|api.ODDropdownResponderInstance|api.ODModalResponderInstance|api.ODCommandResponderInstance,source:api.ODActionManagerIds_Default["opendiscord:create-ticket-permissions"]["source"],guild:discord.Guild,user:discord.User,option:api.ODTicketOption){
|
||||
//check ticket permissions
|
||||
const permsRes = await opendiscord.actions.get("opendiscord:create-ticket-permissions").run(source,{guild,user,option})
|
||||
if (!permsRes.valid && instance.channel){
|
||||
//error
|
||||
const newSource = (source === "slash" || source === "text") ? source : "other"
|
||||
if (permsRes.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-blacklisted").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (permsRes.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-cooldown").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,until:permsRes.cooldownUntil}))
|
||||
else if (permsRes.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (permsRes.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (permsRes.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (permsRes.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else if (permsRes.reason == "custom") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,layout:"simple",error:permsRes.customReason ?? lang.getTranslation("errors.descriptions.unableToCreateTicket")+" `Unknown invalid_permission_reason => no reason specified by plugin`",customTitle:lang.getTranslation("errors.titles.permissionError")}))
|
||||
else instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
return false
|
||||
}else return true
|
||||
}
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//TICKET COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:ticket",generalConfig.data.prefix,/^ticket/))
|
||||
opendiscord.responders.commands.get("opendiscord:ticket").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.ticket
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.ticket,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/server
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//get option
|
||||
//get option data
|
||||
const optionId = instance.options.getString("id",true)
|
||||
const option = opendiscord.options.get(optionId)
|
||||
if (!option || !(option instanceof api.ODTicketOption)){
|
||||
@@ -60,27 +54,15 @@ export const registerCommandResponders = async () => {
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check ticket permissions
|
||||
const res = await opendiscord.actions.get("opendiscord:create-ticket-permissions").run(source,{guild,user,option})
|
||||
if (!res.valid){
|
||||
//error
|
||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else if (res.reason == "custom") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,layout:"simple",error:res.customReason ?? lang.getTranslation("errors.descriptions.unableToCreateTicket")+" `Unknown invalid_permission_reason => no reason specified by plugin`",customTitle:lang.getTranslation("errors.titles.permissionError")}))
|
||||
else instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
|
||||
//start ticket creation
|
||||
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
||||
//send modal
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build(source,{guild,channel,user,option}))
|
||||
}else{
|
||||
//check ticket permissions
|
||||
if (!(await checkTicketCreationPerms(instance,source,guild,user,option))) return cancel()
|
||||
|
||||
//create ticket
|
||||
await instance.defer(true)
|
||||
const res = await opendiscord.actions.get("opendiscord:create-ticket").run(source,{guild,user,answers:[],option})
|
||||
@@ -124,26 +106,14 @@ export const registerButtonResponders = async () => {
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check ticket permissions
|
||||
const res = await opendiscord.actions.get("opendiscord:create-ticket-permissions").run("panel-button",{guild,user,option})
|
||||
if (!res.valid){
|
||||
//error
|
||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else if (res.reason == "custom") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,layout:"simple",error:res.customReason ?? lang.getTranslation("errors.descriptions.unableToCreateTicket")+" `Unknown invalid_permission_reason => no reason specified by plugin`",customTitle:lang.getTranslation("errors.titles.permissionError")}))
|
||||
else instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start ticket creation
|
||||
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
||||
//send modal
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build("panel-button",{guild,channel,user,option}))
|
||||
}else{
|
||||
//check ticket permissions
|
||||
if (!(await checkTicketCreationPerms(instance,"panel-button",guild,user,option))) return cancel()
|
||||
|
||||
//create ticket
|
||||
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
||||
|
||||
@@ -180,26 +150,14 @@ export const registerDropdownResponders = async () => {
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check ticket permissions
|
||||
const res = await opendiscord.actions.get("opendiscord:create-ticket-permissions").run("panel-dropdown",{guild,user,option})
|
||||
if (!res.valid){
|
||||
//error
|
||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else if (res.reason == "custom") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,layout:"simple",error:res.customReason ?? lang.getTranslation("errors.descriptions.unableToCreateTicket")+" `Unknown invalid_permission_reason => no reason specified by plugin`",customTitle:lang.getTranslation("errors.titles.permissionError")}))
|
||||
else instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start ticket creation
|
||||
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
||||
//send modal
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build("panel-dropdown",{guild,channel,user,option}))
|
||||
}else{
|
||||
//check ticket permissions
|
||||
if (!(await checkTicketCreationPerms(instance,"panel-dropdown",guild,user,option))) return cancel()
|
||||
|
||||
//create ticket
|
||||
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
||||
|
||||
@@ -229,6 +187,7 @@ export const registerModalResponders = async () => {
|
||||
opendiscord.responders.modals.get("opendiscord:ticket-questions").workers.add([
|
||||
new api.ODWorker("opendiscord:ticket-questions",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
||||
if (!channel) throw new api.ODSystemError("The 'Ticket Questions' modal requires a channel for responding!")
|
||||
if (!guild){
|
||||
//error
|
||||
@@ -269,9 +228,10 @@ export const registerModalResponders = async () => {
|
||||
}
|
||||
})
|
||||
|
||||
//check ticket permissions
|
||||
if (!(await checkTicketCreationPerms(instance,originalSource,guild,user,option))) return cancel()
|
||||
|
||||
//create ticket
|
||||
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
||||
|
||||
const res = await opendiscord.actions.get("opendiscord:create-ticket").run(originalSource,{guild,user,answers,option})
|
||||
if (!res.channel || !res.ticket){
|
||||
//error
|
||||
|
||||
+15
-34
@@ -10,56 +10,37 @@ export const registerCommandResponders = async () => {
|
||||
//TOPIC COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:topic",generalConfig.data.prefix,"topic"))
|
||||
opendiscord.responders.commands.get("opendiscord:topic").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.topic
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:topic",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.topic,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/Server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//subcommands
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "set")) return
|
||||
|
||||
|
||||
+14
-34
@@ -10,50 +10,30 @@ export const registerCommandResponders = async () => {
|
||||
//TRANSFER COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:transfer",generalConfig.data.prefix,"transfer"))
|
||||
opendiscord.responders.commands.get("opendiscord:transfer").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.transfer
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:transfer",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.transfer,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/Server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
+15
-34
@@ -10,55 +10,36 @@ export const registerCommandResponders = async () => {
|
||||
//UNCLAIM COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:unclaim",generalConfig.data.prefix,"unclaim"))
|
||||
opendiscord.responders.commands.get("opendiscord:unclaim").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.unclaim
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:unclaim",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.unclaim,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/Server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not claimed
|
||||
if (!ticket.get("opendiscord:claimed").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
+15
-34
@@ -10,55 +10,36 @@ export const registerCommandResponders = async () => {
|
||||
//UNPIN COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:unpin",generalConfig.data.prefix,"unpin"))
|
||||
opendiscord.responders.commands.get("opendiscord:unpin").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.unpin
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:unpin",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {user,member,channel,guild} = instance
|
||||
|
||||
//check permissions
|
||||
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.unpin,"support",user,member,channel,guild)
|
||||
if (!permsResult.hasPerms){
|
||||
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check is in guild/Server
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check if ticket exists
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when not pinned yet
|
||||
if (!ticket.get("opendiscord:pinned").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
///////////////////////////////////////
|
||||
import { ODDebugger } from "../modules/console"
|
||||
import { ODPermissionManager } from "../modules/permission"
|
||||
import { ODClientManager_Default } from "./client"
|
||||
|
||||
/**## ODPermissionManager_Default `default_class`
|
||||
* This is a special class that adds type definitions & typescript to the ODPermissionManager class.
|
||||
@@ -11,8 +12,8 @@ import { ODPermissionManager } from "../modules/permission"
|
||||
* This default class is made for the global variable `opendiscord.permissions`!
|
||||
*/
|
||||
export class ODPermissionManager_Default extends ODPermissionManager {
|
||||
constructor(debug:ODDebugger){
|
||||
super(debug,true)
|
||||
constructor(debug:ODDebugger,client:ODClientManager_Default){
|
||||
super(debug,client,true)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ export class ODMain {
|
||||
|
||||
constructor(){
|
||||
this.versions = new ODVersionManager_Default()
|
||||
this.versions.add(ODVersion.fromString("opendiscord:version","v4.1.1"))
|
||||
this.versions.add(ODVersion.fromString("opendiscord:version","v4.1.3"))
|
||||
this.versions.add(ODVersion.fromString("opendiscord:api","v1.0.0"))
|
||||
this.versions.add(ODVersion.fromString("opendiscord:transcripts","v2.1.0"))
|
||||
this.versions.add(ODVersion.fromString("opendiscord:livestatus","v2.0.0"))
|
||||
@@ -157,7 +157,7 @@ export class ODMain {
|
||||
this.responders = new ODResponderManager_Default(this.debug,this.client)
|
||||
this.actions = new ODActionManager_Default(this.debug)
|
||||
this.verifybars = new ODVerifyBarManager_Default(this.debug)
|
||||
this.permissions = new ODPermissionManager_Default(this.debug)
|
||||
this.permissions = new ODPermissionManager_Default(this.debug,this.client)
|
||||
this.cooldowns = new ODCooldownManager_Default(this.debug)
|
||||
this.helpmenu = new ODHelpMenuManager_Default(this.debug)
|
||||
this.stats = new ODStatsManager_Default(this.debug)
|
||||
|
||||
@@ -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.1.1"})
|
||||
else newConfig.headers = {"User-Agent":"OpenDiscordBots-OpenTicket/4.1.1"}
|
||||
if (newConfig.headers) Object.assign(newConfig.headers,{"User-Agent":"OpenDiscordBots-OpenTicket/4.1.3"})
|
||||
else newConfig.headers = {"User-Agent":"OpenDiscordBots-OpenTicket/4.1.3"}
|
||||
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.1.1"})
|
||||
else newConfig.headers = {"User-Agent":"OpenDiscordBots-OpenTicket/4.1.1"}
|
||||
if (newConfig.headers) Object.assign(newConfig.headers,{"User-Agent":"OpenDiscordBots-OpenTicket/4.1.3"})
|
||||
else newConfig.headers = {"User-Agent":"OpenDiscordBots-OpenTicket/4.1.3"}
|
||||
this.config = newConfig
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
import { ODId, ODValidId, ODManager, ODSystemError, ODManagerData } from "./base"
|
||||
import * as discord from "discord.js"
|
||||
import { ODDebugger } from "./console"
|
||||
import { ODClientManager } from "./client"
|
||||
|
||||
/**## ODPermissionType `type`
|
||||
* All available permission types/levels. Can be used in the `ODPermission` class.
|
||||
@@ -100,6 +101,20 @@ export interface ODPermissionSettings {
|
||||
*/
|
||||
export type ODPermissionCalculationCallback = (user:discord.User, channel?:discord.Channel|null, guild?:discord.Guild|null, settings?:ODPermissionSettings|null) => Promise<ODPermissionResult>
|
||||
|
||||
/**## ODPermissionCommandResult `type`
|
||||
* The result of calculating permissions for a command.
|
||||
*/
|
||||
export type ODPermissionCommandResult = {
|
||||
/**Returns `true` when the user has valid permissions. */
|
||||
hasPerms:false,
|
||||
reason:"no-perms"|"disabled"|"not-in-server"
|
||||
}|{
|
||||
/**Returns `true` when the user has valid permissions. */
|
||||
hasPerms:true,
|
||||
/**Is the user a server admin or a normal member? This does not decide if the user has permissions or not. */
|
||||
isAdmin:boolean
|
||||
}
|
||||
|
||||
/**## ODPermissionManager `class`
|
||||
* This is an Open Ticket permission manager.
|
||||
*
|
||||
@@ -109,8 +124,12 @@ export type ODPermissionCalculationCallback = (user:discord.User, channel?:disco
|
||||
* Add new permissions using the `ODPermission` class in your plugin!
|
||||
*/
|
||||
export class ODPermissionManager extends ODManager<ODPermission> {
|
||||
/**Alias for Open Ticket debugger. */
|
||||
#debug: ODDebugger
|
||||
/**The function for calculating permissions in this manager. */
|
||||
#calculation: ODPermissionCalculationCallback|null
|
||||
/**An alias to the Open Discord client manager. */
|
||||
#client: ODClientManager
|
||||
/**The result which is returned when no other permissions match. (`member` by default) */
|
||||
defaultResult: ODPermissionResult = {
|
||||
level:ODPermissionLevel["member"],
|
||||
@@ -119,9 +138,11 @@ export class ODPermissionManager extends ODManager<ODPermission> {
|
||||
source:null
|
||||
}
|
||||
|
||||
constructor(debug:ODDebugger, useDefaultCalculation?:boolean){
|
||||
constructor(debug:ODDebugger, client:ODClientManager, useDefaultCalculation?:boolean){
|
||||
super(debug,"permission")
|
||||
this.#debug = debug
|
||||
this.#calculation = useDefaultCalculation ? this.#defaultCalculation : null
|
||||
this.#client = client
|
||||
}
|
||||
|
||||
/**Edit the permission calculation function in this manager. */
|
||||
@@ -193,7 +214,7 @@ export class ODPermissionManager extends ODManager<ODPermission> {
|
||||
//check for global role permissions
|
||||
if (allowGlobalRoleScope){
|
||||
if (guild){
|
||||
const member = await guild.members.fetch(user.id)
|
||||
const member = await this.#client.fetchGuildMember(guild,user.id)
|
||||
if (member){
|
||||
const memberRoles = member.roles.cache.map((role) => role.id)
|
||||
const roles = this.getFiltered((permission) => (!idRegex || (idRegex && idRegex.test(permission.id.value))) && permission.scope == "global-role" && (permission.value instanceof discord.Role) && memberRoles.includes(permission.value.id) && permission.value.guild.id == guild.id)
|
||||
@@ -256,7 +277,7 @@ export class ODPermissionManager extends ODManager<ODPermission> {
|
||||
|
||||
//check for channel role permissions
|
||||
if (allowChannelRoleScope){
|
||||
const member = await guild.members.fetch(user.id)
|
||||
const member = await this.#client.fetchGuildMember(guild,user.id)
|
||||
if (member){
|
||||
const memberRoles = member.roles.cache.map((role) => role.id)
|
||||
const roles = this.getFiltered((permission) => (!idRegex || (idRegex && idRegex.test(permission.id.value))) && permission.scope == "channel-role" && permission.channel && (permission.channel.id == channel.id) && (permission.value instanceof discord.Role) && memberRoles.includes(permission.value.id) && permission.value.guild.id == guild.id)
|
||||
@@ -286,4 +307,34 @@ export class ODPermissionManager extends ODManager<ODPermission> {
|
||||
//spread result to prevent accidental modification because of referencing
|
||||
return {...this.defaultResult}
|
||||
}
|
||||
|
||||
/**Check the permissions for a certain command of the bot. */
|
||||
async checkCommandPerms(permissionMode:string,requiredLevel:ODPermissionType,user:discord.User,member?:discord.GuildMember|null,channel?:discord.Channel|null,guild?:discord.Guild|null,settings?:ODPermissionSettings): Promise<ODPermissionCommandResult> {
|
||||
if (permissionMode === "none"){
|
||||
return {hasPerms:false,reason:"disabled"}
|
||||
|
||||
}else if (permissionMode === "everyone"){
|
||||
const isAdmin = this.hasPermissions(requiredLevel,await this.getPermissions(user,channel,guild,settings))
|
||||
return {hasPerms:true,isAdmin}
|
||||
|
||||
}else if (permissionMode === "admin"){
|
||||
const isAdmin = this.hasPermissions(requiredLevel,await this.getPermissions(user,channel,guild,settings))
|
||||
if (!isAdmin) return {hasPerms:false,reason:"no-perms"}
|
||||
else return {hasPerms:true,isAdmin}
|
||||
}else{
|
||||
if (!guild || !member){
|
||||
this.#debug.debug("ODPermissionManager.checkCommandPerms(): Permission Error, Not in server! (#1)")
|
||||
return {hasPerms:false,reason:"not-in-server"}
|
||||
}
|
||||
const role = await this.#client.fetchGuildRole(guild,permissionMode)
|
||||
if (!role){
|
||||
this.#debug.debug("ODPermissionManager.checkCommandPerms(): Permission Error, Not in server! (#2)")
|
||||
return {hasPerms:false,reason:"not-in-server"}
|
||||
}
|
||||
if (!role.members.has(member.id)) return {hasPerms:false,reason:"no-perms"}
|
||||
|
||||
const isAdmin = this.hasPermissions(requiredLevel,await this.getPermissions(user,channel,guild,settings))
|
||||
return {hasPerms:true,isAdmin}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -55,6 +55,11 @@ export interface ODPluginData {
|
||||
version:string,
|
||||
/**The location of the start file of the plugin relative to the rootDir of the plugin */
|
||||
startFile:string,
|
||||
/**A list of compatible versions. (e.g. `["OTv4.0.x", "OMv1.x.x"]`) (optional, will be required in future version)
|
||||
* - `OT` --> Open Ticket support
|
||||
* - `OM` --> Open Moderation support
|
||||
*/
|
||||
supportedVersions?:string[],
|
||||
|
||||
/**Is this plugin enabled? */
|
||||
enabled:boolean,
|
||||
@@ -78,8 +83,10 @@ export interface ODPluginData {
|
||||
* Additional details in the `plugin.json` file from a plugin.
|
||||
*/
|
||||
export interface ODPluginDetails {
|
||||
/**The author of the plugin. */
|
||||
/**The main author of the plugin. Additional contributors can be specified in `contributors`. */
|
||||
author:string,
|
||||
/**A list of plugin contributors. (optional, will be required in future version) */
|
||||
contributors?:string[],
|
||||
/**A short description of this plugin. */
|
||||
shortDescription:string,
|
||||
/**A large description of this plugin. */
|
||||
@@ -121,7 +128,7 @@ export class ODPlugin extends ODManagerData {
|
||||
/**Did this plugin crash? (A reason is available in the `crashReason`) */
|
||||
crashed: boolean
|
||||
/**The reason which caused this plugin to crash. */
|
||||
crashReason: null|"incompatible.plugin"|"missing.plugin"|"missing.dependency"|"executed" = null
|
||||
crashReason: null|"incompatible.plugin"|"missing.plugin"|"missing.dependency"|"incompatible.version"|"executed" = null
|
||||
|
||||
constructor(dir:string, jsondata:ODPluginData){
|
||||
super(jsondata.id)
|
||||
@@ -212,6 +219,10 @@ export class ODPlugin extends ODManagerData {
|
||||
|
||||
return incompatible
|
||||
}
|
||||
/**Get a list of all authors & contributors of this plugin. */
|
||||
getAuthors(): string[] {
|
||||
return [this.details.author,...(this.details.contributors ?? [])]
|
||||
}
|
||||
}
|
||||
|
||||
/**## ODPluginClassManager `class`
|
||||
|
||||
@@ -426,7 +426,8 @@ export class ODCommandResponderInstance {
|
||||
/**Show a modal as reply to this command. */
|
||||
async modal(modal:ODModalBuildResult){
|
||||
if (this.type != "interaction" || !(this.interaction instanceof discord.ChatInputCommandInteraction)) return false
|
||||
this.interaction.showModal(modal.modal)
|
||||
if (this.interaction.deferred || this.interaction.replied) return false
|
||||
await this.interaction.showModal(modal.modal)
|
||||
this.didReply = true
|
||||
return true
|
||||
}
|
||||
@@ -601,7 +602,8 @@ export class ODButtonResponderInstance {
|
||||
}
|
||||
/**Show a modal as reply to this button. */
|
||||
async modal(modal:ODModalBuildResult){
|
||||
this.interaction.showModal(modal.modal)
|
||||
if (this.interaction.deferred || this.interaction.replied) return false
|
||||
await this.interaction.showModal(modal.modal)
|
||||
this.didReply = true
|
||||
return true
|
||||
}
|
||||
@@ -889,7 +891,8 @@ export class ODDropdownResponderInstance {
|
||||
}
|
||||
/**Show a modal as reply to this dropdown. */
|
||||
async modal(modal:ODModalBuildResult){
|
||||
this.interaction.showModal(modal.modal)
|
||||
if (this.interaction.deferred || this.interaction.replied) return false
|
||||
await this.interaction.showModal(modal.modal)
|
||||
this.didReply = true
|
||||
return true
|
||||
}
|
||||
@@ -1068,15 +1071,9 @@ export class ODModalResponderInstance {
|
||||
async reply(msg:ODMessageBuildResult): Promise<ODMessageBuildSentResult<boolean>> {
|
||||
try{
|
||||
const msgFlags: number[] = msg.ephemeral ? [discord.MessageFlags.Ephemeral] : []
|
||||
if (this.interaction.replied || this.interaction.deferred){
|
||||
const sent = await this.interaction.editReply(Object.assign(msg.message,{flags:msgFlags}))
|
||||
this.didReply = true
|
||||
return {success:true,message:sent}
|
||||
}else{
|
||||
const sent = await this.interaction.reply(Object.assign(msg.message,{flags:msgFlags}))
|
||||
this.didReply = true
|
||||
return {success:true,message:await sent.fetch()}
|
||||
}
|
||||
const sent = await this.interaction.followUp(Object.assign(msg.message,{flags:msgFlags}))
|
||||
this.didReply = true
|
||||
return {success:true,message:sent}
|
||||
}catch{
|
||||
return {success:false,message:null}
|
||||
}
|
||||
@@ -1089,7 +1086,11 @@ export class ODModalResponderInstance {
|
||||
const sent = await this.interaction.editReply(Object.assign(msg.message,{flags:msgFlags}))
|
||||
this.didReply = true
|
||||
return {success:true,message:await sent.fetch()}
|
||||
}else throw new ODSystemError("Unable to update modal interaction!")
|
||||
}else{
|
||||
const sent = await this.interaction.reply(Object.assign(msg.message,{flags:msgFlags}))
|
||||
this.didReply = true
|
||||
return {success:true,message:await sent.fetch()}
|
||||
}
|
||||
}catch{
|
||||
return {success:false,message:null}
|
||||
}
|
||||
@@ -1261,7 +1262,8 @@ export class ODContextMenuResponderInstance {
|
||||
}
|
||||
/**Show a modal as reply to this context menu. */
|
||||
async modal(modal:ODModalBuildResult){
|
||||
this.interaction.showModal(modal.modal)
|
||||
if (this.interaction.deferred || this.interaction.replied) return false
|
||||
await this.interaction.showModal(modal.modal)
|
||||
this.didReply = true
|
||||
return true
|
||||
}
|
||||
@@ -1389,7 +1391,7 @@ export class ODAutocompleteResponderInstance {
|
||||
else return raw
|
||||
})
|
||||
|
||||
const filteredChoices = newChoices.filter((choice) => choice.name.startsWith(this.target.value) || choice.value.toString().startsWith(this.target.value))
|
||||
const filteredChoices = newChoices.filter((choice) => choice.name.startsWith(this.target.value) || choice.value.toString().startsWith(this.target.value)).slice(0,25)
|
||||
return await this.autocomplete(filteredChoices)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,13 +357,21 @@ export class ODOptionSuffixManager extends ODManager<ODOptionSuffix> {
|
||||
const suffix = this.getAll().find((suffix) => suffix.option.id.value == option.id.value)
|
||||
if (!suffix) return null
|
||||
try{
|
||||
const member = await guild.members.fetch(user.id)
|
||||
const member = await this.#getMember(guild,user)
|
||||
if (!member) return null
|
||||
return await suffix.getSuffix(member)
|
||||
}catch(err){
|
||||
process.emit("uncaughtException",err)
|
||||
return null
|
||||
}
|
||||
}
|
||||
async #getMember(guild:discord.Guild,user:discord.User){
|
||||
try{
|
||||
return await guild.members.fetch(user.id)
|
||||
}catch{
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**## ODOptionSuffix `class`
|
||||
|
||||
@@ -1563,12 +1563,4 @@ async function saveQuickSetupConfig(){
|
||||
}
|
||||
transcriptsConfig.data = transcriptsConfigData
|
||||
await transcriptsConfig.save()
|
||||
}
|
||||
|
||||
/** Steps Todo
|
||||
* ALREADY FINISHED:
|
||||
* - Ticket configuration => per-ticket configuration
|
||||
* - (option ID autogenerated from name BE AWARE OF TICKETS WITH SAME NAME!! + remove unicode, spaces & special chars from id)
|
||||
* - (embed autofilled with name+desc+color, thumbnail will automatically be set to the server icon)
|
||||
* - (ping will be @here)
|
||||
*/
|
||||
}
|
||||
@@ -139,4 +139,9 @@ export const migrations = [
|
||||
//MIGRATE TO v4.1.1
|
||||
new utilities.ODVersionMigration(api.ODVersion.fromString("opendiscord:version","v4.1.1"),async () => {},async () => {}),
|
||||
|
||||
//MIGRATE TO v4.1.2
|
||||
new utilities.ODVersionMigration(api.ODVersion.fromString("opendiscord:version","v4.1.2"),async () => {},async () => {}),
|
||||
|
||||
//MIGRATE TO v4.1.3
|
||||
new utilities.ODVersionMigration(api.ODVersion.fromString("opendiscord:version","v4.1.3"),async () => {},async () => {}),
|
||||
]
|
||||
@@ -1,6 +1,5 @@
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import fs from "fs"
|
||||
import { ODPluginError } from "../api/api"
|
||||
|
||||
export const loadAllPlugins = async () => {
|
||||
//start launching plugins
|
||||
@@ -12,6 +11,7 @@ export const loadAllPlugins = async () => {
|
||||
return
|
||||
}
|
||||
const plugins = fs.readdirSync("./plugins")
|
||||
const pluginVersionRegex = /^(OT|OM)v(\d+)\.(\d+|x)\.(\d+|x)$/
|
||||
|
||||
//check & validate
|
||||
plugins.forEach((p) => {
|
||||
@@ -32,31 +32,49 @@ export const loadAllPlugins = async () => {
|
||||
try {
|
||||
const rawplugindata: api.ODPluginData = JSON.parse(fs.readFileSync("./plugins/"+p+"/plugin.json").toString())
|
||||
|
||||
if (typeof rawplugindata != "object") throw new ODPluginError("Failed to load plugin.json")
|
||||
if (typeof rawplugindata.id != "string") throw new ODPluginError("Failed to load plugin.json/id")
|
||||
if (typeof rawplugindata.name != "string") throw new ODPluginError("Failed to load plugin.json/name")
|
||||
if (typeof rawplugindata.version != "string") throw new ODPluginError("Failed to load plugin.json/version")
|
||||
if (typeof rawplugindata.startFile != "string") throw new ODPluginError("Failed to load plugin.json/startFile")
|
||||
if (typeof rawplugindata != "object") throw new api.ODPluginError("Failed to load plugin.json")
|
||||
if (typeof rawplugindata.id != "string") throw new api.ODPluginError("Failed to load plugin.json/id")
|
||||
if (typeof rawplugindata.name != "string") throw new api.ODPluginError("Failed to load plugin.json/name")
|
||||
if (typeof rawplugindata.version != "string") throw new api.ODPluginError("Failed to load plugin.json/version")
|
||||
if (typeof rawplugindata.startFile != "string") throw new api.ODPluginError("Failed to load plugin.json/startFile")
|
||||
|
||||
if (typeof rawplugindata.enabled != "boolean") throw new ODPluginError("Failed to load plugin.json/enabled")
|
||||
if (typeof rawplugindata.priority != "number") throw new ODPluginError("Failed to load plugin.json/priority")
|
||||
if (!Array.isArray(rawplugindata.events)) throw new ODPluginError("Failed to load plugin.json/events")
|
||||
//only check "supportedVersions" if it exists (should be array)
|
||||
if (rawplugindata.supportedVersions){
|
||||
if (!Array.isArray(rawplugindata.supportedVersions)) throw new api.ODPluginError("Failed to load plugin.json/supportedVersions (must be array)")
|
||||
for (const version of rawplugindata.supportedVersions){
|
||||
if (typeof version !== "string"){
|
||||
throw new api.ODPluginError("Failed to load plugin.json/supportedVersions (all items must be strings)")
|
||||
}
|
||||
//only OT (Open Ticket) & OM (Open Moderation) are supported at the moment
|
||||
if (!pluginVersionRegex.test(version)){
|
||||
throw new api.ODPluginError(`Failed to load plugin.json/supportedVersions (invalid format: "${version}", expected format like "OTv4.0.x" or "OMv1.0.0")`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!Array.isArray(rawplugindata.npmDependencies)) throw new ODPluginError("Failed to load plugin.json/npmDependencies")
|
||||
if (!Array.isArray(rawplugindata.requiredPlugins)) throw new ODPluginError("Failed to load plugin.json/requiredPlugins")
|
||||
if (!Array.isArray(rawplugindata.incompatiblePlugins)) throw new ODPluginError("Failed to load plugin.json/incompatiblePlugins")
|
||||
if (typeof rawplugindata.enabled != "boolean") throw new api.ODPluginError("Failed to load plugin.json/enabled")
|
||||
if (typeof rawplugindata.priority != "number") throw new api.ODPluginError("Failed to load plugin.json/priority")
|
||||
if (!Array.isArray(rawplugindata.events)) throw new api.ODPluginError("Failed to load plugin.json/events")
|
||||
|
||||
if (typeof rawplugindata.details != "object") throw new ODPluginError("Failed to load plugin.json/details")
|
||||
if (typeof rawplugindata.details.author != "string") throw new ODPluginError("Failed to load plugin.json/details/author")
|
||||
if (typeof rawplugindata.details.shortDescription != "string") throw new ODPluginError("Failed to load plugin.json/details/shortDescription")
|
||||
if (typeof rawplugindata.details.longDescription != "string") throw new ODPluginError("Failed to load plugin.json/details/longDescription")
|
||||
if (typeof rawplugindata.details.imageUrl != "string") throw new ODPluginError("Failed to load plugin.json/details/imageUrl")
|
||||
if (typeof rawplugindata.details.projectUrl != "string") throw new ODPluginError("Failed to load plugin.json/details/projectUrl")
|
||||
if (!Array.isArray(rawplugindata.details.tags)) throw new ODPluginError("Failed to load plugin.json/details/tags")
|
||||
if (!Array.isArray(rawplugindata.npmDependencies)) throw new api.ODPluginError("Failed to load plugin.json/npmDependencies")
|
||||
if (!Array.isArray(rawplugindata.requiredPlugins)) throw new api.ODPluginError("Failed to load plugin.json/requiredPlugins")
|
||||
if (!Array.isArray(rawplugindata.incompatiblePlugins)) throw new api.ODPluginError("Failed to load plugin.json/incompatiblePlugins")
|
||||
|
||||
if (rawplugindata.id != p) throw new ODPluginError("Failed to load plugin, directory name is required to match the id")
|
||||
if (typeof rawplugindata.details != "object") throw new api.ODPluginError("Failed to load plugin.json/details")
|
||||
if (typeof rawplugindata.details.author != "string") throw new api.ODPluginError("Failed to load plugin.json/details/author")
|
||||
|
||||
if (opendiscord.plugins.exists(rawplugindata.id)) throw new ODPluginError("Failed to load plugin, this id already exists in another plugin")
|
||||
//only check "contributors" if it exists (should be array)
|
||||
if (rawplugindata.details.contributors && !Array.isArray(rawplugindata.details.contributors)) throw new api.ODPluginError("Failed to load plugin.json/details/contributors (must be array)")
|
||||
|
||||
if (typeof rawplugindata.details.shortDescription != "string") throw new api.ODPluginError("Failed to load plugin.json/details/shortDescription")
|
||||
if (typeof rawplugindata.details.longDescription != "string") throw new api.ODPluginError("Failed to load plugin.json/details/longDescription")
|
||||
if (typeof rawplugindata.details.imageUrl != "string") throw new api.ODPluginError("Failed to load plugin.json/details/imageUrl")
|
||||
if (typeof rawplugindata.details.projectUrl != "string") throw new api.ODPluginError("Failed to load plugin.json/details/projectUrl")
|
||||
if (!Array.isArray(rawplugindata.details.tags)) throw new api.ODPluginError("Failed to load plugin.json/details/tags")
|
||||
|
||||
if (rawplugindata.id != p) throw new api.ODPluginError("Failed to load plugin, directory name is required to match the id")
|
||||
|
||||
if (opendiscord.plugins.exists(rawplugindata.id)) throw new api.ODPluginError("Failed to load plugin, this id already exists in another plugin")
|
||||
|
||||
//plugin.json is valid => load plugin
|
||||
const plugin = new api.ODPlugin(p,rawplugindata)
|
||||
@@ -91,6 +109,7 @@ export const loadAllPlugins = async () => {
|
||||
const incompatibilities: {from:string,to:string}[] = []
|
||||
const missingDependencies: {id:string,missing:string}[] = []
|
||||
const missingPlugins: {id:string,missing:string}[] = []
|
||||
const versionIncompatibilities: {id:string}[] = []
|
||||
|
||||
//go through all plugins for errors
|
||||
sortedPlugins.filter((plugin) => plugin.enabled).forEach((plugin) => {
|
||||
@@ -98,6 +117,33 @@ export const loadAllPlugins = async () => {
|
||||
plugin.dependenciesInstalled().forEach((missing) => missingDependencies.push({id:from,missing}))
|
||||
plugin.pluginsIncompatible(opendiscord.plugins).forEach((incompatible) => incompatibilities.push({from,to:incompatible}))
|
||||
plugin.pluginsInstalled(opendiscord.plugins).forEach((missing) => missingPlugins.push({id:from,missing}))
|
||||
|
||||
//check if plugins are compatible with version of bot
|
||||
if (plugin.data.supportedVersions && plugin.data.supportedVersions.length > 0){
|
||||
const currentVersion = opendiscord.versions.get("opendiscord:version")
|
||||
let isCompatible = false
|
||||
|
||||
for (const versionStr of plugin.data.supportedVersions){
|
||||
const match = versionStr.match(pluginVersionRegex)
|
||||
if (!match) continue
|
||||
|
||||
const projectPrefix = match[1]
|
||||
const primary = parseInt(match[2])
|
||||
const secondary = (match[3] === "x") ? null : parseInt(match[3])
|
||||
const tertiary = (match[4] === "x") ? null : parseInt(match[4])
|
||||
|
||||
if (projectPrefix !== "OT") continue
|
||||
else if (primary !== currentVersion.primary) continue
|
||||
else if (typeof secondary === "number" && secondary !== currentVersion.secondary) continue
|
||||
else if (typeof tertiary === "number" && tertiary !== currentVersion.tertiary) continue
|
||||
else{
|
||||
isCompatible = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if (!isCompatible) versionIncompatibilities.push({id:from})
|
||||
}
|
||||
})
|
||||
|
||||
//handle all incompatibilities
|
||||
@@ -152,6 +198,22 @@ export const loadAllPlugins = async () => {
|
||||
initPluginError = true
|
||||
})
|
||||
|
||||
//handle all bot version incompatibilities
|
||||
versionIncompatibilities.forEach((match) => {
|
||||
const plugin = opendiscord.plugins.get(match.id)
|
||||
if (plugin && !plugin.crashed){
|
||||
plugin.crashed = true
|
||||
plugin.crashReason = "incompatible.version"
|
||||
}
|
||||
|
||||
const versions = plugin?.data.supportedVersions?.join(", ") ?? "<unknown-version>"
|
||||
const currentVersion = opendiscord.versions.get("opendiscord:version").toString()
|
||||
opendiscord.log(`Plugin version incompatibility: plugin requires "${versions}" but current bot version is "${currentVersion}", canceling plugin execution...`,"plugin",[
|
||||
{key:"path",value:"./plugins/"+match.id}
|
||||
])
|
||||
initPluginError = true
|
||||
})
|
||||
|
||||
//exit on error (when soft mode disabled)
|
||||
if (!opendiscord.defaults.getDefault("softPluginLoading") && initPluginError){
|
||||
console.log("")
|
||||
@@ -177,17 +239,19 @@ export const loadAllPlugins = async () => {
|
||||
}
|
||||
|
||||
for (const plugin of sortedPlugins){
|
||||
const authors = [plugin.details.author,...(plugin.details.contributors ?? [])].join(", ")
|
||||
|
||||
if (plugin.enabled){
|
||||
opendiscord.debug.debug("Plugin \""+plugin.id.value+"\" loaded",[
|
||||
{key:"status",value:(plugin.crashed ? "crashed" : "success")},
|
||||
{key:"crashReason",value:(plugin.crashed ? (plugin.crashReason ?? "/") : "/")},
|
||||
{key:"author",value:plugin.details.author},
|
||||
{key:"authors",value:authors},
|
||||
{key:"version",value:plugin.version.toString()},
|
||||
{key:"priority",value:plugin.priority.toString()}
|
||||
])
|
||||
}else{
|
||||
opendiscord.debug.debug("Plugin \""+plugin.id.value+"\" disabled",[
|
||||
{key:"author",value:plugin.details.author},
|
||||
{key:"authors",value:authors},
|
||||
{key:"version",value:plugin.version.toString()},
|
||||
{key:"priority",value:plugin.priority.toString()}
|
||||
])
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
|
||||
INFORMATION:
|
||||
============
|
||||
Open Ticket v4.1.1 - © DJdj Development
|
||||
Open Ticket v4.1.3 - © DJdj Development
|
||||
|
||||
support us: https://github.com/sponsors/DJj123dj
|
||||
discord: https://discord.dj-dj.be
|
||||
|
||||
Reference in New Issue
Block a user