Compare commits

...
195 Commits
Author SHA1 Message Date
Jasper 849c688e56 Open Ticket v4.2
Open Ticket v4.2
2026-05-27 18:51:20 +02:00
Jasper 6babc5e4b8 Open Ticket v4.2 --> Dev Branch
Open Ticket v4.2 --> Dev Branch
2026-05-26 20:45:35 +02:00
DJj123dj 4606ddac3c Open Ticket v4.2 🎉 2026-05-26 20:44:29 +02:00
DJj123dj e6ab09dbbd Added new v4.2 Preview Images 2026-05-26 20:16:58 +02:00
DJj123dj 39427cdbea Update updateTicketTopic.ts 2026-05-26 19:27:49 +02:00
DJj123dj adfcb1c82f Bugfixes 2026-05-25 14:34:21 +02:00
DJj123dj 6c994f6f86 (v4.2.0) Topic change (DM) logs 2026-05-25 12:28:20 +02:00
DJj123dj 4cfde9f5c4 (v4.2.0) Added all v4.2 translations 2026-05-25 12:18:23 +02:00
DJj123dj fd1e0d6bdb (v4.2.0) Added new translation sentences 2026-05-25 11:16:33 +02:00
DJj123dj e7475af694 (v4.2.0) Added /transcripts history command 2026-05-25 10:47:28 +02:00
DJj123dj 9da066e99e Add: Transfer ticket & Priority change (DM) logs 2026-05-24 22:21:01 +02:00
DJj123dj 45f15a2df6 (v4.2.0) Create ticket for another user (admin only) 2026-05-24 21:53:54 +02:00
DJj123dj 58a6bcde45 (v4.2.0) Added priority dropdown 2026-05-24 19:48:46 +02:00
DJj123dj eb44f41d3a (API) Renamed "ODCode" classes to "ODTask" (improved readability) 2026-05-24 09:47:30 +02:00
DJj123dj 66c5bc4565 Docker improvements 2026-05-23 21:52:58 +02:00
Jasper 22d4caf03e chore: update Docker setup (by MauroDruwel)
chore: update Docker setup
2026-05-23 21:04:52 +02:00
DJj123dj 77dde68edc Update build-docker.sh 2026-05-23 21:00:57 +02:00
DJj123dj c8c8a94d6f Merge branch 'dev-v4.2' into pr/208 2026-05-23 20:56:46 +02:00
DJj123dj 6c41aecfa7 Bugfixes & Improvements
Added "maximum buttons per row" in panels. Fixed reaction role reply glitching when replyOnReactionRole was disabled. Panel dropdowns now support reaction role & sub-panel options.
2026-05-23 16:45:01 +02:00
DJj123dj c64220cad4 (v4.2.0) Added sub-panels 2026-05-23 15:53:52 +02:00
DJj123dj 7f02dd5848 (v4.2.0) Added closed ticket channel emoij (#199) 2026-05-23 14:52:57 +02:00
DJj123dj c442e50cb4 (v4.2.0) Panel auto-update now uses message states 2026-05-23 14:32:22 +02:00
DJj123dj 4af9b9e17f (v4.2.0) Added 5 new question types
Added support for dropdown, radio select, checkbox select, file upload & text display question types.
2026-05-23 14:30:56 +02:00
MauroDruwel 98d13c6569 chore: update Dockerfile and rename build script for multi-architecture support 2026-05-23 11:34:54 +02:00
MauroDruwel 345a64f51a chore: update Docker Compose configuration for Open Ticket 2026-05-23 11:22:59 +02:00
MauroDruwel 45080ccd96 chore: update Docker setup
- Replace lowercase dockerfile with proper Dockerfile
- Add .dockerignore for cleaner builds
- Add build.sh script
- Update docker-compose.yml: separate volumes for config, database, plugins; set restart policy to unless-stopped; remove deprecated version field
2026-05-23 11:15:49 +02:00
DJj123dj 87c034d215 (v4.2.0) Large README overhaul (Part 2) 2026-05-22 18:21:32 +02:00
DJj123dj 1b2e38f524 Update README.md 2026-05-20 21:59:24 +02:00
DJj123dj 8f780992aa Update README.md 2026-05-20 21:57:25 +02:00
DJj123dj a28bcd4f8b (v4.2.0) Large README overhaul (Part 1) 2026-05-20 21:55:18 +02:00
Jasper a0b3aff661 Added khmer language (Cambodja) (by yuuslokrobjakkroval)
Added khmer language (Cambodja)
2026-05-20 15:20:01 +02:00
JasperAtSchool 9ca375ee2c Solved merge conflicts 2026-05-20 10:42:17 +02:00
DJj123dj 0f9ae79d49 (v4.2.0) Interactive Setup CLI Bugfixes 2026-05-19 22:20:06 +02:00
DJj123dj dd8d5a12d6 Open Ticket v4.2: Config Update (JSONC) 2026-05-17 22:28:23 +02:00
DJj123dj afd7f80b8d Code Cleanup & Improved channel rename errors 2026-05-15 22:30:24 +02:00
DJj123dj ca5faa3365 (v4.2.0) Reworked ticket channel name logic 2026-05-15 22:01:19 +02:00
DJj123dj cf9ddf58d0 (v4.2.0) Fixed all known bugs 2026-05-15 22:00:55 +02:00
DJj123dj 15ff345948 (v4.2.0) Reworked ticket category logic 2026-05-15 12:30:14 +02:00
DJj123dj 0c45a0ad6a Added labels to verifybars (improved accesibility) 2026-05-14 23:36:21 +02:00
DJj123dj e6f6aa1af4 Code cleanup & bugfixes 2026-05-14 23:13:38 +02:00
DJj123dj 1a530aae4c Finished Message States & Overhauled Verifybars 2026-05-14 21:39:50 +02:00
DJj123dj 67f4417ee6 English Improvements (Part 2) 2026-05-14 21:36:11 +02:00
DJj123dj b5e15921ef Minor Improvements + Code Cleanup 2026-05-09 11:45:52 +02:00
DJj123dj cb8afdf9a6 Message States (Part 2) + Component Modifiers 2026-05-08 21:46:13 +02:00
DJj123dj 7030b7011c Message States (Part 1) 2026-05-08 17:17:59 +02:00
DJj123dj 7dd8a57a83 Implemented ODStates (Message States) 2026-05-06 21:11:53 +02:00
DJj123dj 5763659900 Minor Bugfixes 2026-05-06 20:45:10 +02:00
DJj123dj 65334a8a25 Renamed OT Id Lists to Mappings 2026-05-04 21:44:12 +02:00
DJj123dj 4be54399a6 (v4.2.0) Improved English sentences and language 2026-05-04 21:21:44 +02:00
DJj123dj 1f9fa54344 Implemented ODComponents (Part 2) 2026-05-04 19:24:15 +02:00
DJj123dj e4b4acfd9f Rename: "source" to "origin" for improved readability 2026-05-04 19:05:58 +02:00
DJj123dj 6bfa0e0f10 Implemented ODComponents (Part 1) 2026-05-03 22:05:14 +02:00
DJj123dj 4eb9331bf4 Replaced #func() methods with TS: private func() 2026-05-03 22:04:38 +02:00
DJj123dj 10f5ae9d44 Update package.json 2026-04-19 18:16:29 +02:00
DJj123dj 27a9f04d83 Update codeLoader.ts 2026-04-19 17:46:43 +02:00
DJj123dj 600419f763 Typescript Bugfixes (Switched CJS -> MJS) 2026-04-19 17:43:59 +02:00
yuuslokrobjakkroval a18b19da66 Refactor code structure for improved readability and maintainability 2026-04-19 02:26:08 +07:00
DJj123dj 230ef70d86 Update package.json 2026-04-18 19:13:13 +02:00
DJj123dj 2d9a9b42d4 Moved many utility files to one big "tools" folder 2026-04-03 13:38:12 +02:00
DJj123dj 50c7fc5e90 (v4.2) Open Discord Framework Update (Part 3) 2026-04-03 13:27:20 +02:00
DJj123dj fa8bc0eb6c (v4.2) Open Discord Framework Update (Part 2)
Replaced all "Default" classes & types with ID mappings & improved types. Updated Interactive Setup CLI & certain events, renamed ODStat's to ODStatistics. Moved many classes, types & interfaces to the framework
2026-04-03 11:18:59 +02:00
Jasper f42b70d1b9 Update german.json (by imLudwig)
Update german.json
2026-03-24 20:21:12 +01:00
DJj123dj 4c2a617a51 Removed line ending 2026-03-24 20:19:52 +01:00
Ludwig a1198866f3 Update german.json
`s is no german plural syntax

WARNUNGS -> WARNUNGEN
2026-03-20 07:24:05 +01:00
DJj123dj fe3f2d04a9 Translation: traditional chinese (by me.october) 2026-03-10 20:50:40 +01:00
DJj123dj cb8139b8a0 (v4.2) Open Discord Framework Update (Part 1) 2026-02-16 22:12:25 +01:00
Jasper ddae7b5e46 Open Ticket v4.1.3
Open Ticket v4.1.3
2026-02-16 10:38:43 +01:00
DJj123dj 32c9a6b4f3 Update README.md 2026-02-16 10:30:16 +01:00
DJj123dj 0ad24ba89f (v4.1.3) Finished adding all missing languages 2026-02-16 10:23:14 +01:00
DJj123dj 5412416166 Updated plugin.json format (backwards compatible) 2026-02-15 13:19:48 +01:00
DJj123dj 78a937d4e9 (v4.1.3) Fixed unintended cooldown bug with modals 2026-02-15 13:13:18 +01:00
DJj123dj 5b45dc265b Readme improvements (last time 😄 ) 2026-02-14 16:12:57 +01:00
DJj123dj 4b210fe793 Readme Improvements 2026-02-14 16:11:46 +01:00
DJj123dj 8891320bdf Update README.md 2026-02-14 15:53:43 +01:00
DJj123dj 8ccfd5c4eb (v4.1.3) Added all missing translations from v4.1 2026-02-14 15:52:39 +01:00
DJj123dj 44074004e4 Update pluginLauncher.ts 2026-02-11 20:53:21 +01:00
DJj123dj 2f1c885b4f Update README.md 2026-02-11 20:43:28 +01:00
Jasper c94867280d Merge pull request #193 from SKaranjaN/feature/plugin-json-improvements
feat: improve plugin.json with multiple authors, versions, and pre-compilation dependency checking
2026-02-11 20:40:20 +01:00
DJj123dj 138f7fa2bb Small Improvements for the new plugin.json code 2026-02-11 20:37:28 +01:00
DJj123dj 465eda1c24 (v4.1.3) Updated README + plugin list 2026-02-11 19:54:06 +01:00
DJj123dj c821e7dd6d Fixed typo in LICENSE.md 2026-02-11 18:45:54 +01:00
DJj123dj f9ce496cc5 Update quickSetup.ts 2026-02-11 17:48:35 +01:00
Karanja-Stephen 3989fb5f76 refactor: simplify comments and make them less verbose 2026-02-11 10:44:51 +03:00
Karanja-Stephen 779efca39a feat: improve plugin.json with multiple authors, versions, and pre-compilation dependency checking
- Add support for multiple authors and contributors in plugin.json
- Maintain backwards compatibility with single author (string) format
- Add versions array to specify compatible Open Ticket versions (e.g., OTv4.0.x, ODv1.0.0)
- Implement version compatibility checking during plugin loading
- Read plugin.json files before TypeScript compilation to check npm dependencies
- Warn about missing npm dependencies before compilation starts
- Update example plugin to demonstrate new features

Fixes #162
2026-02-10 13:13:24 +03:00
DJj123dj 4976aa3d45 Added v4.1 Lithuanian translations (by TsgIndrius) 2026-02-08 21:17:34 +01:00
DJj123dj 9cdff2c1de Added v4.1 French translations (by @guillee3 ) 2026-02-08 13:29:04 +01:00
DJj123dj 2e29947ba5 Update README.md 2026-02-08 12:43:53 +01:00
DJj123dj 0aa3dca63b Added v4.1 Italian translations (by imperatorix_17) 2026-02-08 12:26:22 +01:00
Jasper 90851f881d Open Ticket v4.1.2
Open Ticket v4.1.2
2026-02-06 21:25:32 +01:00
DJj123dj b972c97871 Fixed: Unknown interaction when on cooldown 2026-02-06 21:16:30 +01:00
DJj123dj db94f226fb Fixed: Panel embed was replaced with cooldown error 2026-02-06 20:59:36 +01:00
DJj123dj 6a4f40d862 (v4.1.2) Readme updates & general improvements 2026-02-06 20:48:21 +01:00
DJj123dj 1f402a848e (v4.1.2) Massive permission system cleanup 2026-02-06 20:08:55 +01:00
DJj123dj 24d98aeaeb (v4.1.2) Fixed autocomplete bug with many options 2026-02-06 17:45:31 +01:00
DJj123dj b95b8f239e Fixed typescript compilation error 2026-01-01 23:00:29 +01:00
DJj123dj 488b5fce53 Fixed fetch() errors of unknown guild members 2025-12-27 10:42:10 +01:00
DJj123dj c2117a67ed Updated German translation for v4.1 2025-12-03 16:20:17 +01:00
Jasper d31be1bb57 Open Ticket v4.1.1
Open Ticket v4.1.1
2025-11-16 11:44:45 +01:00
DJj123dj 76095bea30 Update README.md 2025-11-16 11:33:16 +01:00
DJj123dj da962c6c2e Major bugfixes & improvements for v4.1 2025-11-16 11:23:15 +01:00
DJj123dj a89d5c2149 Added 7 updated translations for v4.1 2025-11-16 10:43:46 +01:00
DJj123dj 7d5313c77e Open Ticket v4.1.1 2025-11-16 10:11:56 +01:00
Jasper 16f1be32a3 Open Ticket v4.1.0
Open Ticket v4.1.0
2025-11-09 19:11:57 +01:00
DJj123dj e1a6feea6e Updated README.md language list 2025-11-09 19:05:53 +01:00
DJj123dj 9668851a82 Added 9 updated translations for v4.1 2025-11-09 13:04:51 +01:00
DJj123dj 68d6a2df3f Added language merge utility tool 2025-11-09 12:51:18 +01:00
DJj123dj f835850b3f Translated code strings using language manager 2025-11-09 12:50:57 +01:00
Jasper f7fa0998b6 v4.1 Minor Bugfixes
v4.1 Minor Bugfixes
2025-11-05 14:55:05 +01:00
JasperAtSchool 4416736947 Merge branch 'open-discord-bots:dev-v4.1.0' into dev-v4.1.0 2025-11-05 14:53:43 +01:00
JasperAtSchool 5494c1ad8f (v4.1) Minor Bugfixes 2025-11-05 14:53:05 +01:00
DJj123dj 4147658575 README Updates 2025-11-05 14:42:26 +01:00
DJj123dj f7cda48ed6 Improved LICENSE Terminology 2025-11-04 20:07:18 +01:00
DJj123dj 4b485adf82 (v4.1) Additional autoclose/autodelete features 2025-11-04 19:53:40 +01:00
DJj123dj e55438cc67 (v4.1) Added +/-10 Minor Features & Improvements 2025-11-04 19:39:52 +01:00
DJj123dj c7b44232c4 Added transfer command (/transfer) + new stats
With this command you're able to transfer the ticket ownership to another person in the server.
2025-11-02 20:09:38 +01:00
DJj123dj 68a8170570 Minor bugfixes & improvements (priority & topic) 2025-11-02 20:08:57 +01:00
DJj123dj 34ed4edede Added priority commands (/priority get,set) 2025-11-02 18:41:46 +01:00
DJj123dj a40a9b8be8 Added channel topic command (/topic set) 2025-11-02 18:40:49 +01:00
DJj123dj e8f96ef84f Finished channel topic feature 2025-10-28 13:24:08 +01:00
DJj123dj 8413d3c2b7 Started with channel topic auto-update action 2025-10-27 21:19:59 +01:00
DJj123dj 30b6ab4df6 Finished channel topic on ticket creation 2025-10-27 11:41:56 +01:00
DJj123dj 2aef855902 Started working on channel topic again 2025-10-12 22:18:38 +02:00
DJj123dj 4aacdd1607 fix: #122 improved windows OT plugin support
Open Ticket instances with plugins are now also able to exist outside of the default C:\\ drive on windows. This has been fixed by searching for the plugins relative to the bot instead of using an absolute path.
2025-09-21 20:31:47 +02:00
Jasper d66925a450 Added user-nickname channel suffix option 2025-09-14 22:23:42 +02:00
DJj123dj d2cd6be513 Small nickname suffix fixes & discord.js try-catch 2025-09-14 22:22:09 +02:00
DJj123dj 30a0a6c503 (API) Renamed ODPriority --> ODPriorityLevel 2025-09-14 22:09:09 +02:00
DJj123dj 72f84b2566 (API) Class & comment readability improvements 2025-09-14 22:05:30 +02:00
DJj123dj 6ce017b407 Added /topic set command (Part 1, Incomplete) 2025-09-14 22:04:42 +02:00
DJj123dj 415330be21 Added priority system (Part 1, Incomplete) 2025-09-14 22:04:11 +02:00
Steven DUBOIS 21ce2921a1 Add user-nickname option for channel suffixe 2025-09-10 18:38:57 +02:00
DJj123dj b07252151b #181 : Fixed async permission registration issues 2025-08-28 12:46:37 +02:00
DJj123dj 02d37dd177 (API) Implemented opendiscord:reopened in database 2025-08-28 11:25:18 +02:00
DJj123dj 706006e319 Added 9 new statistics in the /stats command
Ticket volume, Average tickets/user, System uptime, Current tickets, Ticket age, Message/Embed/File/Component amount.
2025-08-28 11:20:02 +02:00
DJj123dj 82f2aeaa90 Added autocomplete to panel, ticket & move cmds
Ticket/panel options are now autocompleted instead of being a choice in the slash commands. This also results in the max amount of tickets limit to be increased to infinity.
2025-08-28 09:00:07 +02:00
DJj123dj 793c6f0603 Added: Slow Mode & Updated discord.js 2025-08-28 08:59:16 +02:00
DJj123dj 1ef74f0b6b Custom reason for create-ticket-permissions action
Added support for custom reasons in the opendiscord:create-ticket-permissions action. Now it's easier for plugins to add a custom message when the validation fails.
2025-08-27 14:10:58 +02:00
DJj123dj 337dc3827e Refactor config checker children options
Made the "priority" and "optional" fields in ODCheckerObjectStructure children optional. This improves readability and code simplicity
2025-08-27 11:57:28 +02:00
DJj123dj 810db76e91 Finished adding 10 new config checker validators 2025-08-27 11:46:42 +02:00
DJj123dj f4f6f30fa2 Added: Show global admins in panel message 2025-08-12 14:19:18 +02:00
DJj123dj 8436b19cbf Updated bot versions to v4.1.0 2025-08-05 10:42:35 +02:00
DJj123dj 549c161830 Added all the new config variables for v4.1.0! 2025-08-05 10:42:15 +02:00
DJj123dj adc2433216 Merge branch 'dev' into dev-v4.1.0 2025-06-24 11:05:59 +02:00
DJj123dj 6df3498cb5 Finished autocomplete & context menu interactions
Autocomplete & context menu interactions have been fully implemented in the Open Discord framework. They have not yet been implemented in the Open Ticket bot code though.
2025-06-24 08:43:57 +02:00
DJj123dj 8116d4d8dd Startscreen plugin list rendering improvements 2025-06-21 22:17:31 +02:00
DJj123dj e987c176b7 Add autocomplete manager + context menu bugfixes 2025-06-21 22:16:50 +02:00
DJj123dj 2ea38cd7a5 (Open Discord) Added support for context menu's 2025-06-20 18:20:27 +02:00
DJj123dj b2f2ef3405 Update quickSetup.ts 2025-06-20 15:59:52 +02:00
DJj123dj c2e6f781b9 Finished Quick Setup CLI 2025-06-19 22:43:38 +02:00
DJj123dj 160f89c7cf Improved inline contributor guides
Improved the inline contributor guides for registering new languages, config variables & commands.
2025-06-16 20:11:00 +02:00
DJj123dj 51c4ae0229 Finished Interactive Update CLI Questions
Added all remaining questions including panel configuration, ticket message layout, ticket limits, emoji style & more. Also fixed some smaller bugs.
2025-06-16 20:10:09 +02:00
DJj123dj 2cc2ccc68e Added ODQuickMessage builders 2025-06-16 17:45:28 +02:00
DJj123dj 0a29e13640 Added new questions to quick setup CLI + fixes
Added question 12, 13 & 14 (autoclose, cooldown, close participants policy. Also fixed backFn-bugs and rewrote a few sentences for better spelling. Also added some UI improvements to string-inputs
2025-06-16 15:37:57 +02:00
DJj123dj 31b94718f1 Repositioned + Tested Reaction Role Logs 2025-06-16 14:47:09 +02:00
Jasper 6ac993617e Merge pull #176 from sdehaarte (Reaction Role Logs)
Added Reaction Role Logs
2025-06-16 14:44:08 +02:00
sdehaarte 9f4999b89b Feature Reaction Role Logs. Adds logging functionality for reaction roles. This helps track when users add or remove reaction roles. 2025-06-11 20:06:43 -04:00
DJj123dj dd3c159413 Added new questions to quick setup CLI
Added: channel logs, ticket category, ticket creation count, ticket option configuration (name, descr, button, prefix & suffix)
2025-06-11 21:12:20 +02:00
DJj123dj 72627a7058 Added new config checker utility function
createTemporaryCheckerEnvironment() is able to help you with using `ODCheckerStructure` validators without officially registering them in opendiscord.checkers.
2025-06-11 21:10:29 +02:00
Jasper b683365126 Merge pull request #175 from JasperAtSchool/dev-v4.1.0
(v4.1) Added new string config checker validators (part 1)
2025-06-11 18:51:01 +02:00
JasperAtSchool 03b3495eb2 (v4.1) Added new string config checker validators 2025-06-06 11:14:21 +02:00
DJj123dj af0dc879c6 Merge branch 'dev' into dev-v4.1.0 2025-05-31 11:07:36 +02:00
DJj123dj c243d03216 Merge branch 'dev' into dev-v4.1.0 2025-05-03 21:15:03 +02:00
DJj123dj f117943e00 Added 6th, 7th & 8th questions to quick setup CLI 2025-05-02 17:51:52 +02:00
DJj123dj 951aff093a Added 4th & 5th questions to quick setup 2025-05-01 22:01:04 +02:00
DJj123dj 2acd185d6f Merge branch 'dev' into dev-v4.1.0 2025-05-01 14:26:41 +02:00
DJj123dj 2fbef46a53 Merge branch 'dev' of https://github.com/open-discord-bots/open-ticket into dev 2025-05-01 14:14:39 +02:00
Jasper 8df13b0d36 Open Ticket v4.1.0 Improvements + Minor Additions
Open Ticket v4.1.0 Improvements + Minor Additions
2025-05-01 13:52:45 +02:00
DJj123dj b5dd7158df Update README.md 2025-04-29 17:56:54 +02:00
DJj123dj 05919bb57e Update README.md 2025-04-29 17:51:39 +02:00
DJj123dj 1d6572aa36 Merge branch 'dev' of https://github.com/open-discord-bots/open-ticket into dev 2025-04-29 17:50:51 +02:00
JasperAtSchool 83080a6e4d Removed openticket -> opendiscord migration utils 2025-04-29 09:58:36 +02:00
JasperAtSchool 35fdafb21d Removed deprecated API classes + properties 2025-04-29 09:54:48 +02:00
JasperAtSchool a0e03be103 Added ordinal numbers to config checker. 2025-04-29 09:47:29 +02:00
Jasper d404f343e0 Sync Dev Branches
* Fixed bug due to discord.js new components

* Updated all versions to v4.0.3

* #155 : Fixed reply on creation when disabled.

Fixed a bug that caused the bot to send a partial ephemeral message while "replyOnTicketCreation" was disabled.
2025-04-28 18:30:43 +02:00
Jasper adf4acd443 Merge branch 'dev-v4.1.0' into dev 2025-04-28 18:30:21 +02:00
DJj123dj fd739054fd Added 3th & 4th question to Quick Setup CLI 2025-04-20 12:08:52 +02:00
DJj123dj 2d1724893e Update README.md 2025-04-20 11:14:19 +02:00
DJj123dj 7696202dec Updated Dutch Translations 2025-04-19 21:05:08 +02:00
DJj123dj e36c1992de Added 2nd question in the CLI quick setup 2025-04-17 18:38:54 +02:00
DJj123dj e73c8e9b3b Started with CLI "Quick Setup" feature. 2025-04-16 21:44:23 +02:00
DJj123dj ad623f9650 Finished display names + descriptions (Part 4) 2025-04-16 13:20:07 +02:00
DJj123dj 515b7e1ffc Added more display names + descriptions (Part 3) 2025-04-16 09:18:13 +02:00
DJj123dj 605173e788 Added more display names + descriptions (Part 2) 2025-04-15 22:36:58 +02:00
DJj123dj e129724c12 Added display values for all general.json settings 2025-04-14 14:53:31 +02:00
DJj123dj 49504bc3de Added formatters to all built-in config files.
Added formatters to all built-in JSON config files for the Open Ticket interactive CLI. The new save() feature from the ODJsonConfig class will be using this formatter to save the config to the filesystem.
2025-04-14 14:22:09 +02:00
Jasper f414fd77fc Synced Dev Branches
Sync Dev Branches
2025-04-13 21:11:40 +02:00
DJj123dj 5dcbcbfabc More CLI improvements + layout changes 2025-04-13 21:03:55 +02:00
DJj123dj 6ec228df53 Added 'save()' feature to configs + improvements 2025-04-13 21:03:45 +02:00
DJj123dj 1f3894141a Finished the 'edit config' module from the CLI 2025-04-13 10:33:01 +02:00
DJj123dj 9253377766 CLI improvements 2025-04-12 21:05:52 +02:00
DJj123dj 30352b570a Updated Interactive Setup CLI (Unfinished Part 2) 2025-04-08 13:51:01 +02:00
DJj123dj 1fddad1e96 Improved TS interfaces for the config checker 2025-04-08 13:49:59 +02:00
DJj123dj d545d21bb1 Update cli.ts 2025-04-07 16:47:57 +02:00
DJj123dj 5f79ae909b Added Interactive Setup CLI (Unfinished)
Added the first part of the interactive setup CLI. You can explore the interface but some parts will not work yet. It will also not save to the config file yet.

The "Quick Setup" & "Manage Plugins" parts of the CLI will arrive later this week.
2025-04-06 19:04:09 +02:00
DJj123dj 831e120093 Finished --silent flag 2025-04-05 22:18:45 +02:00
DJj123dj 376fa23288 Started working on --silent flag 2025-04-04 22:40:15 +02:00
267 changed files with 33060 additions and 33674 deletions
+13
View File
@@ -0,0 +1,13 @@
# Exclude local build artifacts — these are regenerated inside the container
node_modules/
dist/
.git/
.backup/
.vscode/
devconfig/
devdatabase/
build-docker
otdebug.txt
plugins/*
!plugins/example-plugin/
!plugins/example-plugin/**
-328
View File
@@ -1,328 +0,0 @@
//@ts-check
const fs = require("fs")
/*////// OT DOCS GENERATOR ////////
What does this file do?:
Well, this file will parse the result returned from typedoc (the documentation generator).
The resulting file will then be used in the OT Docs markdown generator to generate the Open Ticket API Reference.
In short:
This file generates the documentation for Open Ticket :)
Contributing:
If you want to contribute to the Open Ticket Docs, please run the following command:
> npm run docs
This will give you a "result.json" file which can then be used in the OT Docs.
Further instructions can be found there.
/////////////////////////////////*/
if (!fs.existsSync(".docs/typedoc-result.json")){
console.log("Unable to generate documentation! Run typedoc first!")
process.exit(1)
}
const result = JSON.parse(fs.readFileSync(".docs/typedoc-result.json").toString())
const availableElements = []
const skipElementNames = [
"#opendiscord-types"
]
const handleFunction = (memberType) => {
if (!memberType || !memberType.signatures || !Array.isArray(memberType.signatures)) return {type:"unknown"}
//try to get signature
let signature = memberType.signatures.find((s) => !s.typeParameters)
if (!signature) signature = memberType.signatures[0]
if (!signature) return {type:"unknown"}
//try to get comment
let comment = signature.comment
if (!comment) comment = memberType.signatures.find((s) => s.comment)?.comment
if (!comment) comment = null
const signatureInherited = signature.flags.isInherited ? true : false
const signatureComment = comment ? comment.summary?.map((c) => c.text).join("") : null
const signatureParameters = signature.parameters?.map((p) => {
return {name:p.name,details:handleType(p.type)}
}) ?? []
const signatureReturns = handleType(signature.type)
return {type:"function",inherited:signatureInherited,comment:signatureComment,parameters:signatureParameters,returns:signatureReturns}
}
const handleObject = (memberType) => {
if (!memberType || !memberType.children || !Array.isArray(memberType.children)) return {type:"unknown"}
const propertyIds = memberType.groups?.find((g) => g.title == "Properties")?.children ?? []
const methodIds = memberType.groups?.find((g) => g.title == "Methods")?.children ?? []
const objectChildren = []
for (const member of (memberType.children ?? [])){
const memberName = member.name
const memberType = propertyIds.includes(member.id) ? "property" : methodIds.includes(member.id) ? "method" : "other"
let memberComment = member.comment?.summary?.map((c) => c.text).join("") ?? null
const rawMemberSource = member.sources ? (member.sources[0] ?? null) : null
let memberSource = rawMemberSource ? rawMemberSource.fileName+":"+rawMemberSource.line+":"+rawMemberSource.character : null
let memberDetails = null
if (memberType == "property"){
//INTERFACE => PROPERTY
memberDetails = handleType(member.type)
}else if (memberType == "method"){
//INTERFACE => METHOD
memberDetails = handleFunction(member)
memberComment = memberDetails.comment
}
objectChildren.push({
type:memberType,
name:memberName,
comment:memberComment,
source:memberSource,
details:memberDetails
})
}
return {type:"object",children:objectChildren}
}
const handleType = (memberType) => {
if (!memberType || !memberType.type) return {type:"unknown"}
else if (memberType.type == "intrinsic") return {type:"primitive",name:memberType.name}
else if (memberType.type == "array") return {type:"array",child:handleType(memberType.elementType)}
else if (memberType.type == "union") return {type:"union",children:memberType.types.map((t) => handleType(t))}
else if (memberType.type == "intersection") return {type:"intersection",children:memberType.types.map((t) => handleType(t))}
else if (memberType.type == "reference"){
const referenceTypeArguments = (memberType.typeArguments) ? memberType.typeArguments.map((ta) => handleType(ta)) : null
let referenceType = availableElements.find((el) => el.name == memberType.name)?.type ?? null
if (referenceType){
//member is known type (from Open Ticket)
return {type:"reference",name:memberType.name,target:referenceType,typeArguments:referenceTypeArguments}
}else if (memberType.package){
//member is type from node.js or another package
if (memberType.package == "typescript") return {type:"internal",name:memberType.name,typeArguments:referenceTypeArguments}
if (memberType.package == "open-ticket" && memberType.refersToTypeParameter) return {type:"typeParam",name:memberType.name,typeArguments:referenceTypeArguments}
else return {type:"external",package:memberType.package,name:memberType.name,typeArguments:referenceTypeArguments}
}else return {type:"unknown"}
}
else if (memberType.type == "literal") return {type:"literal",name:(typeof memberType.value == "string") ? JSON.stringify(memberType.value) : String(memberType.value)}
else if (memberType.type == "typeOperator"){
if (memberType.operator == "keyof") return {type:"keyof",child:handleType(memberType.target)}
else if (memberType.operator == "readonly") return {type:"readonly",child:handleType(memberType.target)}
else if (memberType.operator == "unique") return {type:"unique",child:handleType(memberType.target)}
}
else if (memberType.type == "conditional") return {type:"conditional",checker:handleType(memberType.checkType),extends:handleType(memberType.extendsType),trueValue:handleType(memberType.trueType),falseValue:handleType(memberType.falseType)}
else if (memberType.type == "indexedAccess") return {type:"index",index:handleType(memberType.indexType),object:handleType(memberType.objectType)}
else if (memberType.type == "mapped") return {type:"mapped",parameterName:memberType.parameter,parameter:handleType(memberType.parameterType),template:handleType(memberType.templateType)}
else if (memberType.type == "optional") return {type:"optional",child:handleType(memberType.elementType)}
else if (memberType.type == "predicate") return {type:"predicate",name:memberType.name,target:handleType(memberType.targetType)}
else if (memberType.type == "query") return {type:"query",target:handleType(memberType.queryType)}
else if (memberType.type == "rest") return {type:"rest",child:handleType(memberType.elementType)}
else if (memberType.type == "tuple") return {type:"tuple",children:memberType.elements.map((t) => handleType(t))}
else if (memberType.type == "templateLiteral") return {type:"template",head:memberType.head,tails:memberType.tail.map((t) => {
return {element:handleType(t[0]),text:t[1]}
})}
else if (memberType.type == "reflection" && memberType.declaration && memberType.declaration.signatures && memberType.declaration.signatures[0]){
return handleFunction(memberType.declaration)
}
else if (memberType.type == "reflection"){
return handleObject(memberType.declaration)
}
else return {type:"unknown"}
}
for (const file of result.children){
const classIds = file.groups?.find((g) => g.title == "Classes")?.children ?? []
const interfaceIds = file.groups?.find((g) => g.title == "Interfaces")?.children ?? []
const typeIds = file.groups?.find((g) => g.title == "Type Aliases")?.children ?? []
const enumIds = file.groups?.find((g) => g.title == "Enumerations")?.children ?? []
const varIds = file.groups?.find((g) => g.title == "Variables")?.children ?? []
const funcIds = file.groups?.find((g) => g.title == "Functions")?.children ?? []
for (const declaration of file.children){
const declarationName = declaration.name
const declarationType = classIds.includes(declaration.id) ? "class" : interfaceIds.includes(declaration.id) ? "interface" : typeIds.includes(declaration.id) ? "type" : enumIds.includes(declaration.id) ? "enum" : varIds.includes(declaration.id) ? "variable" : funcIds.includes(declaration.id) ? "function" : "other"
availableElements.push({name:declarationName,type:declarationType})
}
}
const exported = []
for (const file of result.children){
const classIds = file.groups?.find((g) => g.title == "Classes")?.children ?? []
const interfaceIds = file.groups?.find((g) => g.title == "Interfaces")?.children ?? []
const typeIds = file.groups?.find((g) => g.title == "Type Aliases")?.children ?? []
const enumIds = file.groups?.find((g) => g.title == "Enumerations")?.children ?? []
const varIds = file.groups?.find((g) => g.title == "Variables")?.children ?? []
const funcIds = file.groups?.find((g) => g.title == "Functions")?.children ?? []
for (const declaration of (file.children ?? [])){
const declarationName = declaration.name
if (skipElementNames.includes(declarationName)) continue
const declarationType = classIds.includes(declaration.id) ? "class" : interfaceIds.includes(declaration.id) ? "interface" : typeIds.includes(declaration.id) ? "type" : enumIds.includes(declaration.id) ? "enum" : varIds.includes(declaration.id) ? "variable" : funcIds.includes(declaration.id) ? "function" : "other"
const declarationTypeParams = (declaration.typeParameters) ? declaration.typeParameters.map((tp) => {
return {name:tp.name,type:handleType(tp.type)}
}) : null
const declarationComment = declaration.comment?.summary?.map((c) => c.text).join("") ?? null
const declarationConstant = declaration.flags.isConst ? true : false
const rawDeclarationSource = declaration.sources ? (declaration.sources[0] ?? null) : null
const declarationSource = rawDeclarationSource ? rawDeclarationSource.fileName+":"+rawDeclarationSource.line+":"+rawDeclarationSource.character : null
const declarationChildren = []
if (declarationType == "class"){
//CLASS
const constructorIds = declaration.groups?.find((g) => g.title == "Constructors")?.children ?? []
const propertyIds = declaration.groups?.find((g) => g.title == "Properties")?.children ?? []
const methodIds = declaration.groups?.find((g) => g.title == "Methods")?.children ?? []
for (const member of (declaration.children ?? [])){
const memberName = member.name
const memberType = constructorIds.includes(member.id) ? "constructor" : propertyIds.includes(member.id) ? "property" : methodIds.includes(member.id) ? "method" : "other"
let memberComment = member.comment?.summary?.map((c) => c.text).join("") ?? null
const rawMemberSource = member.sources ? (member.sources[0] ?? null) : null
let memberSource = rawMemberSource ? rawMemberSource.fileName+":"+rawMemberSource.line+":"+rawMemberSource.character : null
const memberInherited = member.flags.isInherited ? true : false
const memberStatic = member.flags.isStatic ? true : false
const memberProtected = member.flags.isProtected ? true : false
const memberOptional = member.flags.isOptional ? true : false
const memberReadonly = member.flags.isReadonly ? true : false
let memberDetails = null
if (memberType == "property"){
//CLASS => PROPERTY
memberDetails = handleType(member.type)
}else if (memberType == "method"){
//CLASS => METHOD
memberDetails = handleFunction(member)
memberComment = memberDetails.comment
}else if (memberType == "constructor"){
//CLASS => CONSTRUCTOR
memberDetails = handleFunction(member)
memberComment = memberDetails.comment
}
declarationChildren.push({
type:memberType,
name:memberName,
comment:memberComment,
source:memberSource,
details:memberDetails,
inherited:memberInherited,
static:memberStatic,
protected:memberProtected,
optional:memberOptional,
readonly:memberReadonly
})
}
}else if (declarationType == "interface"){
//INTERFACE
const propertyIds = declaration.groups?.find((g) => g.title == "Properties")?.children ?? []
const methodIds = declaration.groups?.find((g) => g.title == "Methods")?.children ?? []
for (const member of (declaration.children ?? [])){
const memberName = member.name
const memberType = propertyIds.includes(member.id) ? "property" : methodIds.includes(member.id) ? "method" : "other"
let memberComment = member.comment?.summary?.map((c) => c.text).join("") ?? null
const rawMemberSource = member.sources ? (member.sources[0] ?? null) : null
let memberSource = rawMemberSource ? rawMemberSource.fileName+":"+rawMemberSource.line+":"+rawMemberSource.character : null
const memberInherited = member.flags.isInherited ? true : false
const memberStatic = member.flags.isStatic ? true : false
const memberProtected = member.flags.isProtected ? true : false
const memberOptional = member.flags.isOptional ? true : false
const memberReadonly = member.flags.isReadonly ? true : false
let memberDetails = null
if (memberType == "property"){
//INTERFACE => PROPERTY
memberDetails = handleType(member.type)
}else if (memberType == "method"){
//INTERFACE => METHOD
memberDetails = handleFunction(member)
memberComment = memberDetails.comment
}
declarationChildren.push({
type:memberType,
name:memberName,
comment:memberComment,
source:memberSource,
details:memberDetails,
inherited:memberInherited,
static:memberStatic,
protected:memberProtected,
optional:memberOptional,
readonly:memberReadonly
})
}
}else if (declarationType == "type"){
//TYPE
declarationChildren.push(handleType(declaration.type))
}else if (declarationType == "enum"){
//ENUM
const enumerableIds = declaration.groups?.find((g) => g.title == "Enumeration Members")?.children ?? []
for (const member of (declaration.children ?? [])){
const memberName = member.name
const memberType = enumerableIds.includes(member.id) ? "enumerable" : "other"
const memberComment = member.comment?.summary?.map((c) => c.text).join("") ?? null
const rawMemberSource = member.sources ? (member.sources[0] ?? null) : null
let memberSource = rawMemberSource ? rawMemberSource.fileName+":"+rawMemberSource.line+":"+rawMemberSource.character : null
let memberDetails = null
if (memberType == "enumerable"){
//ENUM => ENUMERABLE
memberDetails = handleType(member.type)
}
const memberInherited = member.flags.isInherited ? true : false
const memberStatic = member.flags.isStatic ? true : false
const memberProtected = member.flags.isProtected ? true : false
const memberOptional = member.flags.isOptional ? true : false
const memberReadonly = member.flags.isReadonly ? true : false
declarationChildren.push({
type:memberType,
name:memberName,
comment:memberComment,
source:memberSource,
details:memberDetails,
inherited:memberInherited,
static:memberStatic,
protected:memberProtected,
optional:memberOptional,
readonly:memberReadonly
})
}
}else if (declarationType == "variable"){
//VARIABLE
declarationChildren.push(handleType(declaration.type))
}else if (declarationType == "function"){
//FUNCTION
declarationChildren.push(handleFunction(declaration))
}
exported.push({
type:declarationType,
name:declarationName,
comment:declarationComment,
constant:declarationConstant,
source:declarationSource,
children:declarationChildren,
typeParams:declarationTypeParams
})
}
}
fs.writeFileSync(".docs/result.json",JSON.stringify(exported,null,"\t"))
fs.rmSync(".docs/typedoc-result.json")
-13
View File
@@ -1,13 +0,0 @@
{
"$schema": "https://typedoc.org/schema.json",
"entryPoints": [
"../src/core/api/modules/",
"../src/core/api/defaults/",
"../src/core/api/openticket/",
"../src/core/api/main.ts",
"../src/core/startup/init.ts",
],
"entryPointStrategy": "expand",
"json": "./typedoc-result.json",
"basePath": "../"
}
-62
View File
@@ -1,62 +0,0 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2025-03-16T18:10:18+01:00",
"name": "Open Ticket (v4.0.4)",
"author": "support@dj-dj.be",
"description": "This is the official Pterodactyl egg for Open Ticket v4.0.4, the most advanced & customisable discord ticket bot that you will ever find! You can customise up to 300+ variables! This includes Html Transcripts, Advanced Plugins, Custom Embeds, Questions\/Modals, Stats & more!",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:nodejs_20": "ghcr.io\/parkervcp\/yolks:nodejs_20"
},
"file_denylist": [],
"startup": "if [[ ! -z ${NODE_PACKAGES} ]]; then npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then npm install; fi; node \"\/home\/container\/index.js\" ${NODE_FLAGS};",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"STARTUP INFO:\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.0.4)\r\n# Inspired by: Node.js Installation Script\r\n# \u00a9 DJdj Development\r\n\r\necho -e \"[OT INSTALLER] installing dependencies. please wait...\"\r\napt update\r\napt install -y git curl\r\n\r\necho -e \"[OT INSTALLER] updating npm. please wait...\"\r\nnpm install npm@latest --location=global\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBRANCH=\"v4.0.4\"\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"
}
]
}
-62
View File
@@ -1,62 +0,0 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2025-03-16T18:10:18+01:00",
"name": "Open Ticket (v4.0.5)",
"author": "support@dj-dj.be",
"description": "This is the official Pterodactyl egg for Open Ticket v4.0.5, the most advanced & customisable discord ticket bot that you will ever find! You can customise up to 300+ variables! This includes Html Transcripts, Advanced Plugins, Custom Embeds, Questions\/Modals, Stats & more!",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:nodejs_20": "ghcr.io\/parkervcp\/yolks:nodejs_20"
},
"file_denylist": [],
"startup": "if [[ ! -z ${NODE_PACKAGES} ]]; then npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then npm install; fi; node \"\/home\/container\/index.js\" ${NODE_FLAGS};",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"STARTUP INFO:\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.0.5)\r\n# Inspired by: Node.js Installation Script\r\n# \u00a9 DJdj Development\r\n\r\necho -e \"[OT INSTALLER] installing dependencies. please wait...\"\r\napt update\r\napt install -y git curl\r\n\r\necho -e \"[OT INSTALLER] updating npm. please wait...\"\r\nnpm install npm@latest --location=global\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBRANCH=\"v4.0.5\"\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"
}
]
}
-62
View File
@@ -1,62 +0,0 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2025-03-16T18:10:18+01:00",
"name": "Open Ticket (v4.0.6)",
"author": "support@dj-dj.be",
"description": "This is the official Pterodactyl egg for Open Ticket v4.0.6, the most advanced & customisable discord ticket bot that you will ever find! You can customise up to 300+ variables! This includes Html Transcripts, Advanced Plugins, Custom Embeds, Questions\/Modals, Stats & more!",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:nodejs_20": "ghcr.io\/parkervcp\/yolks:nodejs_20"
},
"file_denylist": [],
"startup": "if [[ ! -z ${NODE_PACKAGES} ]]; then npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then npm install; fi; node \"\/home\/container\/index.js\" ${NODE_FLAGS};",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"STARTUP INFO:\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.0.6)\r\n# Inspired by: Node.js Installation Script\r\n# \u00a9 DJdj Development\r\n\r\necho -e \"[OT INSTALLER] installing dependencies. please wait...\"\r\napt update\r\napt install -y git curl\r\n\r\necho -e \"[OT INSTALLER] updating npm. please wait...\"\r\nnpm install npm@latest --location=global\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBRANCH=\"v4.0.6\"\r\n\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"[OT INSTALLER] \/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \"[OT INSTALLER] .git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"[OT INSTALLER] loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"[OT INSTALLER] files found with no git config\"\r\n echo -e \"[OT INSTALLER] closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"https:\/\/github.com\/open-discord-bots\/open-ticket.git\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"[OT INSTALLER] \/mnt\/server is empty.\"\r\n echo -e \"[OT INSTALLER] cloning files into repo.\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"[OT INSTALLER] cloning default branch\"\r\n git clone https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n else\r\n echo -e \"[OT INSTALLER] cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n fi\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing Open Ticket node.js packages.\"\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --omit=dev\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing custom node.js packages.\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\necho -e \"[OT INSTALLER] install complete!\"\r\nexit 0",
"container": "node:latest",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Additional Npm Packages",
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
"env_variable": "NODE_PACKAGES",
"default_value": "",
"user_viewable": false,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Startup Flags",
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
"env_variable": "NODE_FLAGS",
"default_value": "",
"user_viewable": false,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Uninstall Npm Packages",
"description": "A list of npm packages to uninstall. Separate by spaces.",
"env_variable": "UNNODE_PACKAGES",
"default_value": "",
"user_viewable": false,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
}
]
}
+3 -3
View File
@@ -1,7 +1,7 @@
# Contributing Guidelines
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
[![discord](https://img.shields.io/badge/discord-support%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-4.0.7-brightgreen.svg?style=flat-square)](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.7) [![Sponsor DJj123dj](https://img.shields.io/badge/sponsor-DJj123dj-ea4aaa?style=flat-square&logo=githubsponsors)](https://github.com/sponsors/DJj123dj)
[![discord](https://img.shields.io/badge/discord-support%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-4.2.0-brightgreen.svg?style=flat-square)](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.2.0) [![Sponsor DJj123dj](https://img.shields.io/badge/sponsor-DJj123dj-ea4aaa?style=flat-square&logo=githubsponsors)](https://github.com/sponsors/DJj123dj)
These are the Contributing Guidelines of Open Ticket!<br>
Here you can find everything you need to know about contributing to Open Ticket.<br>
@@ -87,6 +87,6 @@ you are **REQUIRED to send the bug privately via one of the following methods:**
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="170px">
**Contributing Guidelines**<br>
[changelog](https://otgithub.dj-dj.be/releases) - [documentation](https://otdocs.dj-dj.be) - [tutorial](https://www.youtube.com/watch?v=2jK9kAf6ASU) - [website](https://openticket.dj-dj.be) - [discord](https://discord.dj-dj.be)<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#terms) - [Privacy Policy](https://www.dj-dj.be/terms#privacy)
© 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)
+93
View File
@@ -0,0 +1,93 @@
{
"_INFO":"This document contains all Open Ticket contributors.",
"SPONSOR_TEMPLATE":{
"name":"INSERT_NAME",
"pictureUrl":"INSERT_PICTURE_URL",
"profileUrl":"INSERT_PROFILE_URL",
"sectionId":"INSERT_ID"
},
"SECTION_TEMPLATE":{
"name":"INSERT_NAME",
"id":"INSERT_ID",
"pfpSize":50,
"pfpColumns":5,
"withNames":true
},
"sections":[
{
"name":"🛠️ Contributors",
"id":"contributor",
"pfpSize":100,
"pfpColumns":8,
"withNames":true
},
{
"name":"📞 Discord Support",
"id":"support",
"pfpSize":100,
"pfpColumns":8,
"withNames":true
},
{
"name":"🧩 Plugin Developers",
"id":"plugin-dev",
"pfpSize":100,
"pfpColumns":8,
"withNames":true
},
{
"name":"💬 Translators",
"id":"translator",
"pfpSize":100,
"pfpColumns":8,
"withNames":true
}
],
"contributors":[
{"sectionId":"contributor","name":"DJj123dj","pictureUrl":"https://github.com/DJj123dj.png","profileUrl":"https://github.com/DJj123dj"},
{"sectionId":"contributor","name":"guillee3","pictureUrl":"https://github.com/guillee3.png","profileUrl":"https://github.com/guillee3"},
{"sectionId":"contributor","name":"SKaranjaN","pictureUrl":"https://github.com/SKaranjaN.png","profileUrl":"https://github.com/SKaranjaN"},
{"sectionId":"contributor","name":"Ashish5180","pictureUrl":"https://github.com/Ashish5180.png","profileUrl":"https://github.com/Ashish5180"},
{"sectionId":"contributor","name":"duboiss","pictureUrl":"https://github.com/duboiss.png","profileUrl":"https://github.com/duboiss"},
{"sectionId":"contributor","name":"sdehaarte","pictureUrl":"https://github.com/sdehaarte.png","profileUrl":"https://github.com/sdehaarte"},
{"sectionId":"contributor","name":"MauroDruwel","pictureUrl":"https://github.com/MauroDruwel.png","profileUrl":"https://github.com/MauroDruwel"},
{"sectionId":"support","name":"smetsliam","pictureUrl":"https://github.com/smetsliam.png","profileUrl":"https://github.com/smetsliam"},
{"sectionId":"support","name":"Sank34","pictureUrl":"https://github.com/Sank34.png","profileUrl":"https://github.com/Sank34"},
{"sectionId":"support","name":"FrankVissers","pictureUrl":"https://github.com/FrankVissers.png","profileUrl":"https://github.com/FrankVissers"},
{"sectionId":"plugin-dev","name":"Rapid-Fast","pictureUrl":"https://github.com/Rapid-Fast.png","profileUrl":"https://github.com/Rapid-Fast"},
{"sectionId":"plugin-dev","name":"NotMukundOP","pictureUrl":"https://github.com/NotMukundOP.png","profileUrl":"https://github.com/NotMukundOP"},
{"sectionId":"plugin-dev","name":"Imperatorix17","pictureUrl":"https://github.com/imperatorix17.png","profileUrl":"https://github.com/imperatorix17"},
{"sectionId":"plugin-dev","name":"DanoGlez","pictureUrl":"https://github.com/DanoGlez.png","profileUrl":"https://github.com/DanoGlez"},
{"sectionId":"plugin-dev","name":"yowsef","pictureUrl":"https://github.com/Yow-sef.png","profileUrl":"https://github.com/Yow-sef"},
{"sectionId":"plugin-dev","name":"MeneerSouf","pictureUrl":"https://github.com/MeneerSouf.png","profileUrl":"https://github.com/MeneerSouf"},
{"sectionId":"plugin-dev","name":"challenger_nova","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"HanumeshGupta","pictureUrl":"https://github.com/HanumeshGupta.png","profileUrl":"https://github.com/HanumeshGupta"},
{"sectionId":"translator","name":"benzorich","pictureUrl":"https://github.com/benzorich.png","profileUrl":"https://github.com/benzorich"},
{"sectionId":"translator","name":"Reddishye","pictureUrl":"https://github.com/Reddishye.png","profileUrl":"https://github.com/Reddishye"},
{"sectionId":"translator","name":"josuens","pictureUrl":"https://github.com/josuens.png","profileUrl":"https://github.com/josuens"},
{"sectionId":"translator","name":"quiradon","pictureUrl":"https://github.com/quiradon.png","profileUrl":"https://github.com/quiradon"},
{"sectionId":"translator","name":"Imperatorix17","pictureUrl":"https://github.com/imperatorix17.png","profileUrl":"https://github.com/imperatorix17"},
{"sectionId":"translator","name":"NoOneNook","pictureUrl":"https://github.com/NoOneNook.png","profileUrl":"https://github.com/NoOneNook"},
{"sectionId":"translator","name":"guillee3","pictureUrl":"https://github.com/guillee3.png","profileUrl":"https://github.com/guillee3"},
{"sectionId":"translator","name":"Mods HD","pictureUrl":"https://github.com/mods-hd.png","profileUrl":"https://github.com/mods-hd"},
{"sectionId":"translator","name":"anderskiy","pictureUrl":"https://github.com/anderskiy.png","profileUrl":"https://github.com/anderskiy"},
{"sectionId":"translator","name":"SpyEye2","pictureUrl":"https://github.com/SpyEye2.png","profileUrl":"https://github.com/SpyEye2"},
{"sectionId":"translator","name":"Sank34","pictureUrl":"https://github.com/Sank34.png","profileUrl":"https://github.com/Sank34"},
{"sectionId":"translator","name":"thegamer5095","pictureUrl":"https://github.com/thegamer5095.png","profileUrl":"https://github.com/thegamer5095"},
{"sectionId":"translator","name":"danoglez","pictureUrl":"https://github.com/danoglez.png","profileUrl":"https://github.com/danoglez"},
{"sectionId":"translator","name":"zhavis","pictureUrl":"https://github.com/zhavis.png","profileUrl":"https://github.com/zhavis"},
{"sectionId":"translator","name":"yuuslokrobjakkroval","pictureUrl":"https://github.com/yuuslokrobjakkroval.png","profileUrl":"https://github.com/yuuslokrobjakkroval"},
{"sectionId":"translator","name":"imLudwig","pictureUrl":"https://github.com/imLudwig.png","profileUrl":"https://github.com/imLudwig"},
{"sectionId":"translator","name":"iamnotmega","pictureUrl":"https://github.com/iamnotmega.png","profileUrl":"https://github.com/iamnotmega"},
{"sectionId":"translator","name":"Ronalds13424","pictureUrl":"https://github.com/Ronalds13424.png","profileUrl":"https://github.com/Ronalds13424"},
{"sectionId":"translator","name":"dysashop","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"fraden1mvp.","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"palestinian","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"challenger_nova","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"erxg","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"tsgindrius","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"kornel0706","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"me.october","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""},
{"sectionId":"translator","name":"ngocdiep2006","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}
]
}
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 2.4 MiB

+13 -14
View File
@@ -14,21 +14,20 @@ 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.1.0 | 🟦 | |
| 4.0.7 | ✅ | |
| 4.0.6 | ✅ | |
| 4.0.5 | ✅ | |
| 4.0.4 | ✅ | Supported until July 2025 (LTS) |
| 4.0.3 | 🚧 | Transcripts v2.0 (Offline August 2025) |
| 4.0.2 | 🟧 | Documentation Only (discord.js bug) |
| 4.0.1 | 🟧 | Documentation Only |
| 4.0.0 | 🟧 | Documentation Only |
| < 4.0.0 | ❌ | |
|------------|-----------|---------------------------------------------------------------|
| 4.2.x | 🟦 | In Development |
| 4.2.1 | 🟦 | In Development |
| 4.2.0 | ✅ | |
| 4.1.3 | ✅ | (LTS) Long-Term-Support, Until September 2026 |
| 4.1.2 | 🚧 | |
| 4.1.1 | 🚧 | |
| 4.1.0 | 🚧 | |
| 4.0.7 | 🟧 | Deprecated |
| < 4.0.7 | ❌ | |
### 🕷️ Reporting Vulnerabilities
You can report vulnerabilities, errors & bugs using one of the following methods:
@@ -48,6 +47,6 @@ If possible, try to provide screenshots!
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="170px">
**Security Policy**<br>
[changelog](https://otgithub.dj-dj.be/releases) - [documentation](https://otdocs.dj-dj.be) - [tutorial](https://www.youtube.com/watch?v=2jK9kAf6ASU) - [website](https://openticket.dj-dj.be) - [discord](https://discord.dj-dj.be)<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#terms) - [Privacy Policy](https://www.dj-dj.be/terms#privacy)
© 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)
+90
View File
@@ -0,0 +1,90 @@
{
"_INFO":"This document contains all Open Ticket sponsors.",
"SPONSOR_TEMPLATE":{
"name":"INSERT_NAME",
"pictureUrl":"INSERT_PICTURE_URL",
"profileUrl":"INSERT_PROFILE_URL",
"sectionId":"INSERT_ID"
},
"SECTION_TEMPLATE":{
"name":"INSERT_NAME",
"id":"INSERT_ID",
"pfpSize":50,
"pfpColumns":5,
"withNames":true
},
"sections":[
{
"name":"💎 Platinum Sponsors",
"id":"platinum",
"pfpSize":120,
"pfpColumns":4,
"withNames":true
},
{
"name":"🥇 Gold Sponsors",
"id":"gold",
"pfpSize":60,
"pfpColumns":8,
"withNames":true
},
{
"name":"🥈 Silver Sponsors",
"id":"silver",
"pfpSize":40,
"pfpColumns":16,
"withNames":false
},
{
"name":"❤️ Past Sponsors",
"id":"past",
"pfpSize":30,
"pfpColumns":20,
"withNames":false
}
],
"sponsors":[
{
"name":"Guillee3",
"pictureUrl":"https://github.com/guillee3.png",
"profileUrl":"https://github.com/guillee3",
"sectionId":"platinum"
},
{
"name":"Jacob Humston",
"pictureUrl":"https://github.com/jacobhumston.png",
"profileUrl":"https://github.com/jacobhumston",
"sectionId":"platinum"
},
{
"name":"SpyEye2",
"pictureUrl":"https://github.com/SpyEye2.png",
"profileUrl":"https://github.com/SpyEye2",
"sectionId":"gold"
},
{
"name":"DOSEV5",
"pictureUrl":"https://github.com/DOSEV5.png",
"profileUrl":"https://github.com/DOSEV5",
"sectionId":"gold"
},
{
"name":"YeeetSK",
"pictureUrl":"https://github.com/YeeetSK.png",
"profileUrl":"https://github.com/YeeetSK",
"sectionId":"silver"
},
{
"name":"BENZORICH",
"pictureUrl":"https://github.com/BENZORICH.png",
"profileUrl":"https://github.com/BENZORICH",
"sectionId":"silver"
},
{
"name":"Mods HD",
"pictureUrl":"https://github.com/mods-hd.png",
"profileUrl":"https://github.com/mods-hd",
"sectionId":"silver"
}
]
}
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 124 KiB

@@ -2,7 +2,7 @@
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
[![discord](https://img.shields.io/badge/discord-support%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3)
[![version](https://img.shields.io/badge/version-4.0.7-brightgreen.svg?style=flat-square)](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.7)
[![version](https://img.shields.io/badge/version-4.2.0-brightgreen.svg?style=flat-square)](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.2.0)
[![Sponsor DJj123dj](https://img.shields.io/badge/sponsor-DJj123dj-ea4aaa?style=flat-square&logo=githubsponsors)](https://github.com/sponsors/DJj123dj)
[![Open Ticket supports Pterodactyl Eggs!](https://img.shields.io/badge/pterodactyl-supported-10539F?style=flat-square&logo=pterodactyl)](.eggs/README.md)
@@ -20,30 +20,24 @@ 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.2.0.json`**](openticket-egg-v4.2.0.json)
- This egg will always use Open Ticket `v4.2.0`. Open Ticket updates will not have an effect on this egg.
[**`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.
[**`openticket-egg-v4.1.0.json`**](openticket-egg-v4.1.0.json)
- This egg will always use Open Ticket `v4.1.0`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v4.0.7.json`**](openticket-egg-v4.0.7.json)
- This egg will always use Open Ticket `v4.0.7`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v4.0.6.json`**](openticket-egg-v4.0.6.json)
- This egg will always use Open Ticket `v4.0.6`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v4.0.5.json`**](openticket-egg-v4.0.5.json)
- This egg will always use Open Ticket `v4.0.5`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v4.0.4.json`**](openticket-egg-v4.0.4.json)
- This egg will always use Open Ticket `v4.0.4`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v4.0.3.json`**](openticket-egg-v4.0.3.json)
- This egg will always use Open Ticket `v4.0.3`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v4.0.2.json`**](openticket-egg-v4.0.2.json)
- This egg will always use Open Ticket `v4.0.2`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v4.0.1.json`**](openticket-egg-v4.0.1.json)
- This egg will always use Open Ticket `v4.0.1`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v4.0.0.json`**](openticket-egg-v4.0.0.json)
- This egg will always use Open Ticket `v4.0.0`. Open Ticket updates will not have an effect on this egg.
[**`openticket-egg-v3.5.9.json`**](openticket-egg-v3.5.9.json)
- This egg will always use Open Ticket `v3.5.9`. Open Ticket updates will not have an effect on this egg.
@@ -54,6 +48,6 @@ It's recommended to provide at least `1GB` of **Memory/RAM** and `5GB` of **disk
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="170px">
**Pterodactyl Eggs**<br>
[changelog](https://otgithub.dj-dj.be/releases) - [documentation](https://otdocs.dj-dj.be) - [tutorial](https://www.youtube.com/watch?v=2jK9kAf6ASU) - [website](https://openticket.dj-dj.be) - [discord](https://discord.dj-dj.be)<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#terms) - [Privacy Policy](https://www.dj-dj.be/terms#privacy)
© 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)
@@ -5,9 +5,9 @@
"update_url": null
},
"exported_at": "2025-03-16T18:10:18+01:00",
"name": "Open Ticket (v4.0.1)",
"name": "Open Ticket (v4.1.0)",
"author": "support@dj-dj.be",
"description": "This is the official Pterodactyl egg for Open Ticket v4.0.1, 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!",
"description": "This is the official Pterodactyl egg for Open Ticket v4.1.0, 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"
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.0.1)\r\n# Inspired by: Node.js Installation Script\r\n# \u00a9 DJdj Development\r\n\r\necho -e \"[OT INSTALLER] installing dependencies. please wait...\"\r\napt update\r\napt install -y git curl\r\n\r\necho -e \"[OT INSTALLER] updating npm. please wait...\"\r\nnpm install npm@latest --location=global\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBRANCH=\"v4.0.1\"\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",
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.1.0)\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.0\"\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"
}
@@ -5,9 +5,9 @@
"update_url": null
},
"exported_at": "2025-03-16T18:10:18+01:00",
"name": "Open Ticket (v4.0.2)",
"name": "Open Ticket (v4.1.1)",
"author": "support@dj-dj.be",
"description": "This is the official Pterodactyl egg for Open Ticket v4.0.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!",
"description": "This is the official Pterodactyl egg for Open Ticket v4.1.1, 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"
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.0.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.0.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",
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.1.1)\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.1\"\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"
}
@@ -5,9 +5,9 @@
"update_url": null
},
"exported_at": "2025-03-16T18:10:18+01:00",
"name": "Open Ticket (v4.0.3)",
"name": "Open Ticket (v4.1.2)",
"author": "support@dj-dj.be",
"description": "This is the official Pterodactyl egg for Open Ticket v4.0.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!",
"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"
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.0.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.0.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",
"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"
}
@@ -5,9 +5,9 @@
"update_url": null
},
"exported_at": "2025-03-16T18:10:18+01:00",
"name": "Open Ticket (v4.0.0)",
"name": "Open Ticket (v4.1.3)",
"author": "support@dj-dj.be",
"description": "This is the official Pterodactyl egg for Open Ticket v4.0.0, 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!",
"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"
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.0.0)\r\n# Inspired by: Node.js Installation Script\r\n# \u00a9 DJdj Development\r\n\r\necho -e \"[OT INSTALLER] installing dependencies. please wait...\"\r\napt update\r\napt install -y git curl\r\n\r\necho -e \"[OT INSTALLER] updating npm. please wait...\"\r\nnpm install npm@latest --location=global\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBRANCH=\"v4.0.0\"\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",
"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"
}
@@ -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.2.0)",
"author": "support@dj-dj.be",
"description": "This is the official Pterodactyl egg for Open Ticket v4.2.0, 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.2.0)\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.2.0\"\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"
}
]
}
+7 -3
View File
@@ -17,6 +17,10 @@ otdebug.txt
*/*/*/.DS_Store
**/.DS_Store
.docs/*
!.docs/createDocs.js
!.docs/typedoc-config.json
.backup/*
.tools/*
!.tools/createSponsors.ts
!.tools/createContributors.ts
!.tools/mergeTranslations.ts
!.tools/docker-compose.yml
!.tools/build-docker.sh
+37
View File
@@ -0,0 +1,37 @@
#!/usr/bin/env bash
# build.sh — Build Open Ticket Docker images for all supported architectures.
#
# Usage: ./build.sh <image> [--no-push]
# image Full image name, e.g. djj123dj/open-ticket
#
# Example: ./build.sh djj123dj/open-ticket --no-push
set -euo pipefail
cd "$(dirname "$0")/.."
echo "✅ Switched working directory to Open Ticket root"
pwd
IMAGE="${1:?Usage: ./build-docker.sh <image> [--no-push]}"
PLATFORMS="linux/amd64,linux/arm64" # linux/arm/v6,linux/arm/v7,linux/s390x are taking too long to build, so we'll skip them for now
VERSION=$(node -p "require('./package.json').version")
# Create a multi-arch builder if it doesn't exist yet
docker buildx inspect ot-builder &>/dev/null \
|| docker buildx create --name ot-builder --driver docker-container --bootstrap --use
docker buildx use ot-builder
PUSH_FLAG="--push"
[[ "${2:-}" == "--no-push" ]] && PUSH_FLAG=""
docker buildx build \
--platform "$PLATFORMS" \
--tag "${IMAGE}:v${VERSION}" \
--tag "${IMAGE}:latest" \
--load \
$PUSH_FLAG \
.
[[ -n "$PUSH_FLAG" ]] \
&& echo "✅ Pushed ${IMAGE}:v${VERSION} and ${IMAGE}:latest" \
|| echo "✅ Built ${IMAGE}:v${VERSION} (not pushed)"
+130
View File
@@ -0,0 +1,130 @@
/// <reference types="node"/>
import fs from "fs"
import path from "path"
import crypto from "crypto"
const contributorData: {contributors:Contributor[],sections:Section[]} = JSON.parse(fs.readFileSync(path.join(process.cwd(),"./.github/CONTRIBUTORS.json")).toString())
//CONSTANTS
const CORNER_RADIUS = 10
const SPACE_MULTIPLIER = 1.2
const SVG_WIDTH = 1000
//TYPES
interface Contributor {
name:string,
pictureUrl:string,
profileUrl:string,
sectionId:string
}
interface Section {
name:string,
id:string,
pfpSize:number,
pfpColumns:number,
withNames:boolean
}
//FUNCTIONS
async function downloadPfpToBase64URL(url:string){
const res = await fetch(url,{method:"GET"})
if (!res.ok) return null
const buffer = Buffer.from(await res.arrayBuffer())
console.log("Downloaded picture URL:",url)
return "data:image/png;base64,"+buffer.toString("base64")
}
function createTitle(yPos:number,name:string){
return `<text x="${20}" y="${yPos+20}" text-anchor="start" class="contributor-tier-title">${name}</text>`
}
async function createPfp(yPos:number,xPos:number,size:number,contributor:Contributor,withNames:boolean){
const randomId = crypto.randomBytes(8).toString("hex")
const nameElement = (withNames) ? `<text x="${Math.round(xPos+(size/2))}" y="${yPos+size+20}" text-anchor="middle" fill="currentColor">${contributor.name}</text>` : ""
return (`<a href="${contributor.profileUrl}" class="contributor-link" target="_blank">
<clipPath id="clipPath-${randomId}">
<rect x="${xPos}" y="${yPos}" width="${size}" height="${size}" rx="${CORNER_RADIUS}" ry="${CORNER_RADIUS}"/>
</clipPath>
<image x="${xPos}" y="${yPos}" width="${size}" height="${size}" href="${await downloadPfpToBase64URL(contributor.pictureUrl)}" clip-path="url(#clipPath-${randomId})"/>
${nameElement}
</a>`)
}
async function generateSection(yPos:number,section:Section,contributors:Contributor[]){
let sectionHtml: string = ""
sectionHtml += createTitle(yPos,section.name)
const nameOffset = (section.withNames) ? 20 : 0
//divide contributors in rows
const groupedContributors: Contributor[][] = []
let currentGroup: Contributor[] = []
for (const contributor of contributors){
currentGroup.push(contributor)
if (currentGroup.length == section.pfpColumns){
groupedContributors.push(currentGroup)
currentGroup = []
}
}
if (currentGroup.length > 0) groupedContributors.push(currentGroup)
let y = 0
for (const contributorGroup of groupedContributors){
let x = 0
for (const contributor of contributorGroup){
const pfpYPos = 40 + yPos + (y * ((section.pfpSize * SPACE_MULTIPLIER) + nameOffset))
const pfpXPos = 20 + (x * section.pfpSize * SPACE_MULTIPLIER)
sectionHtml += await createPfp(pfpYPos,pfpXPos,section.pfpSize,contributor,section.withNames)
x++
}
y++
}
let sectionHeight: number = 40 + (y * ((section.pfpSize * SPACE_MULTIPLIER) + nameOffset))
return {sectionHtml,sectionHeight}
}
async function generateSections(sections:Section[],contributors:Contributor[]){
let finalHeight: number = 10
let finalHtml: string = ""
for (const section of sections){
const sectionContributors = contributors.filter((s) => s.sectionId === section.id)
if (sectionContributors.length < 1) continue
const {sectionHtml,sectionHeight} = await generateSection(finalHeight,section,sectionContributors)
finalHeight += sectionHeight
finalHtml += sectionHtml
}
finalHeight += 10
return {finalHeight,finalHtml}
}
function generateFinalHtml(sectionsHtml:string,sectionHeight:number){
return (`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 ${SVG_WIDTH} ${sectionHeight}" width="${SVG_WIDTH}" height="${sectionHeight}">
<style>
text {
font-weight: 300;
font-size: 14px;
fill: #777777;
font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
}
.contributor-link {
cursor: pointer;
}
.contributor-tier-title {
font-weight: 500;
font-size: 20px;
}
</style>
${sectionsHtml}
</svg>`)
}
//GENERATE CONTRIBUTORS SVG
async function main(){
const {finalHeight,finalHtml} = await generateSections(contributorData.sections,contributorData.contributors)
fs.writeFileSync(path.join(process.cwd(),"./.github/CONTRIBUTORS.svg"),generateFinalHtml(finalHtml,finalHeight))
}
main()
+132
View File
@@ -0,0 +1,132 @@
/// <reference types="node"/>
import fs from "fs"
import path from "path"
import crypto from "crypto"
const sponsorData: {sponsors:Sponsor[],sections:Section[]} = JSON.parse(fs.readFileSync(path.join(process.cwd(),"./.github/SPONSORS.json")).toString())
//CONSTANTS
const CORNER_RADIUS = 10
const SPACE_MULTIPLIER = 1.2
const SVG_WIDTH = 1000
//TYPES
interface Sponsor {
name:string,
pictureUrl:string,
profileUrl:string,
sectionId:string
}
interface Section {
name:string,
id:string,
pfpSize:number,
pfpColumns:number,
withNames:boolean
}
//FUNCTIONS
async function downloadPfpToBase64URL(url:string){
const res = await fetch(url,{method:"GET"})
if (!res.ok) return null
const buffer = Buffer.from(await res.arrayBuffer())
console.log("Downloaded picture URL:",url)
return "data:image/png;base64,"+buffer.toString("base64")
}
function createTitle(yPos:number,name:string){
return `<text x="${Math.round(SVG_WIDTH/2)}" y="${yPos+20}" text-anchor="middle" class="sponsor-tier-title">${name}</text>`
}
async function createPfp(yPos:number,xPos:number,size:number,sponsor:Sponsor,withNames:boolean){
const randomId = crypto.randomBytes(8).toString("hex")
const nameElement = (withNames) ? `<text x="${Math.round(xPos+(size/2))}" y="${yPos+size+20}" text-anchor="middle" fill="currentColor">${sponsor.name}</text>` : ""
return (`<a href="${sponsor.profileUrl}" class="sponsor-link" target="_blank">
<clipPath id="clipPath-${randomId}">
<rect x="${xPos}" y="${yPos}" width="${size}" height="${size}" rx="${CORNER_RADIUS}" ry="${CORNER_RADIUS}"/>
</clipPath>
<image x="${xPos}" y="${yPos}" width="${size}" height="${size}" href="${await downloadPfpToBase64URL(sponsor.pictureUrl)}" clip-path="url(#clipPath-${randomId})"/>
${nameElement}
</a>`)
}
async function generateSection(yPos:number,section:Section,sponsors:Sponsor[]){
let sectionHtml: string = ""
sectionHtml += createTitle(yPos,section.name)
const nameOffset = (section.withNames) ? 20 : 0
//divide sponsors in rows
const groupedSponsors: Sponsor[][] = []
let currentGroup: Sponsor[] = []
for (const sponsor of sponsors){
currentGroup.push(sponsor)
if (currentGroup.length == section.pfpColumns){
groupedSponsors.push(currentGroup)
currentGroup = []
}
}
if (currentGroup.length > 0) groupedSponsors.push(currentGroup)
let y = 0
for (const sponsorGroup of groupedSponsors){
const xOffset = Math.round((SVG_WIDTH - (sponsorGroup.length * section.pfpSize * SPACE_MULTIPLIER))/2)
let x = 0
for (const sponsor of sponsorGroup){
const pfpYPos = 40 + yPos + (y * ((section.pfpSize * SPACE_MULTIPLIER) + nameOffset))
const pfpXPos = xOffset + (x * section.pfpSize * SPACE_MULTIPLIER)
sectionHtml += await createPfp(pfpYPos,pfpXPos,section.pfpSize,sponsor,section.withNames)
x++
}
y++
}
let sectionHeight: number = 40 + (y * ((section.pfpSize * SPACE_MULTIPLIER) + nameOffset))
return {sectionHtml,sectionHeight}
}
async function generateSections(sections:Section[],sponsors:Sponsor[]){
let finalHeight: number = 10
let finalHtml: string = ""
for (const section of sections){
const sectionSponsors = sponsors.filter((s) => s.sectionId === section.id)
if (sectionSponsors.length < 1) continue
const {sectionHtml,sectionHeight} = await generateSection(finalHeight,section,sectionSponsors)
finalHeight += sectionHeight
finalHtml += sectionHtml
}
finalHeight += 10
return {finalHeight,finalHtml}
}
function generateFinalHtml(sectionsHtml:string,sectionHeight:number){
return (`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 ${SVG_WIDTH} ${sectionHeight}" width="${SVG_WIDTH}" height="${sectionHeight}">
<style>
text {
font-weight: 300;
font-size: 14px;
fill: #777777;
font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
}
.sponsor-link {
cursor: pointer;
}
.sponsor-tier-title {
font-weight: 500;
font-size: 20px;
}
</style>
<rect x="2" y="2" width="${SVG_WIDTH-4}" height="${sectionHeight-4}" rx="20" ry="20" style="fill:transparent;stroke:#f8ba00;stroke-width:3"></rect>
${sectionsHtml}
</svg>`)
}
//GENERATE SPONSORS SVG
async function main(){
const {finalHeight,finalHtml} = await generateSections(sponsorData.sections,sponsorData.sponsors)
fs.writeFileSync(path.join(process.cwd(),"./.github/SPONSORS.svg"),generateFinalHtml(finalHtml,finalHeight))
}
main()
+14
View File
@@ -0,0 +1,14 @@
# Docker Compose for Open Ticket
services:
openticket:
image: djj123dj/open-ticket:latest
volumes:
- config:/home/container/config
- database:/home/container/database
- plugins:/home/container/plugins
restart: unless-stopped
container_name: open-ticket
volumes:
config:
database:
plugins:
+671
View File
@@ -0,0 +1,671 @@
/// <reference types="node"/>
import fjs from "formatted-json-stringify"
import fs from "fs"
const formatter = new fjs.ObjectFormatter(null,true,[
new fjs.ObjectFormatter("_TRANSLATION",true,[
new fjs.PropertyFormatter("otversion"),
new fjs.ArrayFormatter("translators",false,new fjs.PropertyFormatter(null)),
new fjs.PropertyFormatter("lastedited"),
new fjs.PropertyFormatter("language"),
new fjs.PropertyFormatter("automated"),
]),
new fjs.ObjectFormatter("checker",true,[
new fjs.ObjectFormatter("system",true,[
new fjs.PropertyFormatter("typeError"),
new fjs.PropertyFormatter("headerOpenTicket"),
new fjs.PropertyFormatter("typeWarning"),
new fjs.PropertyFormatter("typeInfo"),
new fjs.PropertyFormatter("headerConfigChecker"),
new fjs.PropertyFormatter("headerDescription"),
new fjs.PropertyFormatter("footerError"),
new fjs.PropertyFormatter("footerWarning"),
new fjs.PropertyFormatter("footerSupport"),
new fjs.PropertyFormatter("compactInformation"),
new fjs.PropertyFormatter("dataPath"),
new fjs.PropertyFormatter("dataDocs"),
new fjs.PropertyFormatter("dataMessages"),
]),
new fjs.ObjectFormatter("messages",true,[
new fjs.PropertyFormatter("stringTooShort"),
new fjs.PropertyFormatter("stringTooLong"),
new fjs.PropertyFormatter("stringLengthInvalid"),
new fjs.PropertyFormatter("stringStartsWith"),
new fjs.PropertyFormatter("stringEndsWith"),
new fjs.PropertyFormatter("stringContains"),
new fjs.PropertyFormatter("stringChoices"),
new fjs.PropertyFormatter("stringRegex"),
new fjs.PropertyFormatter("stringInvertedContains"),
new fjs.PropertyFormatter("stringLowercase"),
new fjs.PropertyFormatter("stringUppercase"),
new fjs.PropertyFormatter("stringSpecialCharacters"),
new fjs.PropertyFormatter("stringNoSpaces"),
new fjs.PropertyFormatter("stringCapitalWord"),
new fjs.PropertyFormatter("stringCapitalSentence"),
new fjs.PropertyFormatter("stringPunctuation"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("numberTooShort"),
new fjs.PropertyFormatter("numberTooLong"),
new fjs.PropertyFormatter("numberLengthInvalid"),
new fjs.PropertyFormatter("numberTooSmall"),
new fjs.PropertyFormatter("numberTooLarge"),
new fjs.PropertyFormatter("numberNotEqual"),
new fjs.PropertyFormatter("numberStep"),
new fjs.PropertyFormatter("numberStepOffset"),
new fjs.PropertyFormatter("numberStartsWith"),
new fjs.PropertyFormatter("numberEndsWith"),
new fjs.PropertyFormatter("numberContains"),
new fjs.PropertyFormatter("numberChoices"),
new fjs.PropertyFormatter("numberFloat"),
new fjs.PropertyFormatter("numberNegative"),
new fjs.PropertyFormatter("numberPositive"),
new fjs.PropertyFormatter("numberZero"),
new fjs.PropertyFormatter("numberNan"),
new fjs.PropertyFormatter("numberInvertedContains"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("booleanTrue"),
new fjs.PropertyFormatter("booleanFalse"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("arrayEmptyDisabled"),
new fjs.PropertyFormatter("arrayEmptyRequired"),
new fjs.PropertyFormatter("arrayTooShort"),
new fjs.PropertyFormatter("arrayTooLong"),
new fjs.PropertyFormatter("arrayLengthInvalid"),
new fjs.PropertyFormatter("arrayInvalidTypes"),
new fjs.PropertyFormatter("arrayDouble"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("discordInvalidId"),
new fjs.PropertyFormatter("discordInvalidIdOptions"),
new fjs.PropertyFormatter("discordInvalidToken"),
new fjs.PropertyFormatter("colorInvalid"),
new fjs.PropertyFormatter("emojiTooShort"),
new fjs.PropertyFormatter("emojiTooLong"),
new fjs.PropertyFormatter("emojiCustom"),
new fjs.PropertyFormatter("emojiInvalid"),
new fjs.PropertyFormatter("urlInvalid"),
new fjs.PropertyFormatter("urlInvalidHttp"),
new fjs.PropertyFormatter("urlInvalidProtocol"),
new fjs.PropertyFormatter("urlInvalidHostname"),
new fjs.PropertyFormatter("urlInvalidExtension"),
new fjs.PropertyFormatter("urlInvalidPath"),
new fjs.PropertyFormatter("idNotUnique"),
new fjs.PropertyFormatter("idNonExistent"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("invalidType"),
new fjs.PropertyFormatter("propertyMissing"),
new fjs.PropertyFormatter("propertyOptional"),
new fjs.PropertyFormatter("objectDisabled"),
new fjs.PropertyFormatter("nullInvalid"),
new fjs.PropertyFormatter("switchInvalidType"),
new fjs.PropertyFormatter("objectSwitchInvalid"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("invalidLanguage"),
new fjs.PropertyFormatter("invalidButton"),
new fjs.PropertyFormatter("unusedOption"),
new fjs.PropertyFormatter("unusedQuestion"),
new fjs.PropertyFormatter("dropdownOption"),
new fjs.PropertyFormatter("customInvalidVersion"),
]),
]),
new fjs.ObjectFormatter("actions",true,[
new fjs.ObjectFormatter("buttons",true,[
new fjs.PropertyFormatter("create"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("clear"),
new fjs.PropertyFormatter("helpSwitchSlash"),
new fjs.PropertyFormatter("helpSwitchText"),
new fjs.PropertyFormatter("helpPage"),
new fjs.PropertyFormatter("withReason"),
new fjs.PropertyFormatter("withoutTranscript"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
]),
new fjs.ObjectFormatter("titles",true,[
new fjs.PropertyFormatter("created"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("rename"),
new fjs.PropertyFormatter("move"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("remove"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("help"),
new fjs.PropertyFormatter("statsReset"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
new fjs.PropertyFormatter("blacklistGet"),
new fjs.PropertyFormatter("blacklistView"),
new fjs.PropertyFormatter("blacklistAddDm"),
new fjs.PropertyFormatter("blacklistRemoveDm"),
new fjs.PropertyFormatter("clear"),
new fjs.PropertyFormatter("clearTickets"),
new fjs.PropertyFormatter("roles"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("autoclose"),
new fjs.PropertyFormatter("autocloseEnabled"),
new fjs.PropertyFormatter("autocloseDisabled"),
new fjs.PropertyFormatter("autodelete"),
new fjs.PropertyFormatter("autodeleteEnabled"),
new fjs.PropertyFormatter("autodeleteDisabled"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("topicSet"),
new fjs.PropertyFormatter("prioritySet"),
new fjs.PropertyFormatter("priorityGet"),
new fjs.PropertyFormatter("transfer"),
new fjs.PropertyFormatter("transcripts"),
]),
new fjs.ObjectFormatter("descriptions",true,[
new fjs.PropertyFormatter("create"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("rename"),
new fjs.PropertyFormatter("move"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("remove"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("helpExplanation"),
new fjs.PropertyFormatter("statsReset"),
new fjs.PropertyFormatter("statsError"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
new fjs.PropertyFormatter("blacklistGetSuccess"),
new fjs.PropertyFormatter("blacklistGetEmpty"),
new fjs.PropertyFormatter("blacklistViewEmpty"),
new fjs.PropertyFormatter("blacklistViewTip"),
new fjs.PropertyFormatter("clearVerify"),
new fjs.PropertyFormatter("clearReady"),
new fjs.PropertyFormatter("rolesEmpty"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("autocloseLeave"),
new fjs.PropertyFormatter("autocloseTimeout"),
new fjs.PropertyFormatter("autodeleteLeave"),
new fjs.PropertyFormatter("autodeleteTimeout"),
new fjs.PropertyFormatter("autocloseEnabled"),
new fjs.PropertyFormatter("autocloseDisabled"),
new fjs.PropertyFormatter("autodeleteEnabled"),
new fjs.PropertyFormatter("autodeleteDisabled"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("ticketMessageLimit"),
new fjs.PropertyFormatter("ticketMessageAutoclose"),
new fjs.PropertyFormatter("ticketMessageAutodelete"),
new fjs.PropertyFormatter("panelReady"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("topicSet"),
new fjs.PropertyFormatter("prioritySet"),
new fjs.PropertyFormatter("priorityGet"),
new fjs.PropertyFormatter("transfer"),
]),
new fjs.ObjectFormatter("modal",true,[
new fjs.PropertyFormatter("closePlaceholder"),
new fjs.PropertyFormatter("deletePlaceholder"),
new fjs.PropertyFormatter("reopenPlaceholder"),
new fjs.PropertyFormatter("claimPlaceholder"),
new fjs.PropertyFormatter("unclaimPlaceholder"),
new fjs.PropertyFormatter("pinPlaceholder"),
new fjs.PropertyFormatter("unpinPlaceholder"),
]),
new fjs.ObjectFormatter("logs",true,[
new fjs.PropertyFormatter("createLog"),
new fjs.PropertyFormatter("closeLog"),
new fjs.PropertyFormatter("closeDm"),
new fjs.PropertyFormatter("deleteLog"),
new fjs.PropertyFormatter("deleteDm"),
new fjs.PropertyFormatter("reopenLog"),
new fjs.PropertyFormatter("reopenDm"),
new fjs.PropertyFormatter("claimLog"),
new fjs.PropertyFormatter("claimDm"),
new fjs.PropertyFormatter("unclaimLog"),
new fjs.PropertyFormatter("unclaimDm"),
new fjs.PropertyFormatter("pinLog"),
new fjs.PropertyFormatter("pinDm"),
new fjs.PropertyFormatter("unpinLog"),
new fjs.PropertyFormatter("unpinDm"),
new fjs.PropertyFormatter("renameLog"),
new fjs.PropertyFormatter("renameDm"),
new fjs.PropertyFormatter("moveLog"),
new fjs.PropertyFormatter("moveDm"),
new fjs.PropertyFormatter("addLog"),
new fjs.PropertyFormatter("addDm"),
new fjs.PropertyFormatter("removeLog"),
new fjs.PropertyFormatter("removeDm"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("blacklistAddLog"),
new fjs.PropertyFormatter("blacklistRemoveLog"),
new fjs.PropertyFormatter("blacklistAddDm"),
new fjs.PropertyFormatter("blacklistRemoveDm"),
new fjs.PropertyFormatter("clearLog"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("transferLog"),
new fjs.PropertyFormatter("transferDm"),
new fjs.PropertyFormatter("prioritySetLog"),
new fjs.PropertyFormatter("prioritySetDm"),
new fjs.PropertyFormatter("roleUpdateLog"),
new fjs.PropertyFormatter("roleUpdateDm"),
new fjs.PropertyFormatter("topicSetLog"),
new fjs.PropertyFormatter("topicSetDm"),
]),
]),
new fjs.ObjectFormatter("transcripts",true,[
new fjs.ObjectFormatter("success",true,[
new fjs.PropertyFormatter("visit"),
new fjs.PropertyFormatter("ready"),
new fjs.PropertyFormatter("textFileDescription"),
new fjs.PropertyFormatter("htmlProgress"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("createdChannel"),
new fjs.PropertyFormatter("createdCreator"),
new fjs.PropertyFormatter("createdParticipant"),
new fjs.PropertyFormatter("createdActiveAdmin"),
new fjs.PropertyFormatter("createdEveryAdmin"),
new fjs.PropertyFormatter("createdOther"),
]),
new fjs.ObjectFormatter("errors",true,[
new fjs.PropertyFormatter("retry"),
new fjs.PropertyFormatter("continue"),
new fjs.PropertyFormatter("backup"),
new fjs.PropertyFormatter("error"),
new fjs.PropertyFormatter("title"),
new fjs.PropertyFormatter("noHistory"),
new fjs.PropertyFormatter("historyNotSupported"),
]),
new fjs.ObjectFormatter("text",true,[
new fjs.PropertyFormatter("messagesTitle"),
new fjs.PropertyFormatter("embedTitle"),
new fjs.PropertyFormatter("fileTitle"),
new fjs.PropertyFormatter("fieldsTitle"),
new fjs.PropertyFormatter("reactionsTitle"),
new fjs.PropertyFormatter("statsTitle"),
new fjs.PropertyFormatter("emptyContent"),
new fjs.PropertyFormatter("noTitle"),
new fjs.PropertyFormatter("noDesc"),
]),
]),
new fjs.ObjectFormatter("errors",true,[
new fjs.ObjectFormatter("titles",true,[
new fjs.PropertyFormatter("internalError"),
new fjs.PropertyFormatter("optionMissing"),
new fjs.PropertyFormatter("optionInvalid"),
new fjs.PropertyFormatter("unknownCommand"),
new fjs.PropertyFormatter("noPermissions"),
new fjs.PropertyFormatter("unknownTicket"),
new fjs.PropertyFormatter("deprecatedTicket"),
new fjs.PropertyFormatter("unknownOption"),
new fjs.PropertyFormatter("unknownPanel"),
new fjs.PropertyFormatter("notInGuild"),
new fjs.PropertyFormatter("channelRename"),
new fjs.PropertyFormatter("channelCategory"),
new fjs.PropertyFormatter("busy"),
new fjs.PropertyFormatter("permissionError"),
]),
new fjs.ObjectFormatter("descriptions",true,[
new fjs.PropertyFormatter("askForInfo"),
new fjs.PropertyFormatter("askForInfoResolve"),
new fjs.PropertyFormatter("internalError"),
new fjs.PropertyFormatter("optionMissing"),
new fjs.PropertyFormatter("optionInvalid"),
new fjs.PropertyFormatter("optionInvalidChoose"),
new fjs.PropertyFormatter("unknownCommand"),
new fjs.PropertyFormatter("noPermissions"),
new fjs.PropertyFormatter("noPermissionsList"),
new fjs.PropertyFormatter("noPermissionsCooldown"),
new fjs.PropertyFormatter("noPermissionsBlacklist"),
new fjs.PropertyFormatter("noPermissionsLimitGlobal"),
new fjs.PropertyFormatter("noPermissionsLimitGlobalUser"),
new fjs.PropertyFormatter("noPermissionsLimitOption"),
new fjs.PropertyFormatter("noPermissionsLimitOptionUser"),
new fjs.PropertyFormatter("unknownTicket"),
new fjs.PropertyFormatter("deprecatedTicket"),
new fjs.PropertyFormatter("notInGuild"),
new fjs.PropertyFormatter("channelRename"),
new fjs.PropertyFormatter("channelCategory"),
new fjs.PropertyFormatter("channelRenameSource"),
new fjs.PropertyFormatter("busy"),
new fjs.PropertyFormatter("closeBeforeMessage"),
new fjs.PropertyFormatter("closeBeforeAdminMessage"),
new fjs.PropertyFormatter("unableToCreateTicket"),
new fjs.PropertyFormatter("messageMissing"),
new fjs.PropertyFormatter("stateExpired"),
new fjs.PropertyFormatter("panelStateExpired"),
]),
new fjs.ObjectFormatter("optionInvalidReasons",true,[
new fjs.PropertyFormatter("stringRegex"),
new fjs.PropertyFormatter("stringMinLength"),
new fjs.PropertyFormatter("stringMaxLength"),
new fjs.PropertyFormatter("numberInvalid"),
new fjs.PropertyFormatter("numberMin"),
new fjs.PropertyFormatter("numberMax"),
new fjs.PropertyFormatter("numberDecimal"),
new fjs.PropertyFormatter("numberNegative"),
new fjs.PropertyFormatter("numberPositive"),
new fjs.PropertyFormatter("numberZero"),
new fjs.PropertyFormatter("channelNotFound"),
new fjs.PropertyFormatter("userNotFound"),
new fjs.PropertyFormatter("roleNotFound"),
new fjs.PropertyFormatter("memberNotFound"),
new fjs.PropertyFormatter("mentionableNotFound"),
new fjs.PropertyFormatter("channelType"),
new fjs.PropertyFormatter("notInGuild"),
]),
new fjs.ObjectFormatter("permissions",true,[
new fjs.PropertyFormatter("developer"),
new fjs.PropertyFormatter("owner"),
new fjs.PropertyFormatter("admin"),
new fjs.PropertyFormatter("moderator"),
new fjs.PropertyFormatter("support"),
new fjs.PropertyFormatter("member"),
new fjs.PropertyFormatter("discord-administrator"),
]),
new fjs.ObjectFormatter("actionInvalid",true,[
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("remove"),
]),
]),
new fjs.ObjectFormatter("params",true,[
new fjs.ObjectFormatter("uppercase",true,[
new fjs.PropertyFormatter("ticket"),
new fjs.PropertyFormatter("tickets"),
new fjs.PropertyFormatter("reason"),
new fjs.PropertyFormatter("creator"),
new fjs.PropertyFormatter("remaining"),
new fjs.PropertyFormatter("added"),
new fjs.PropertyFormatter("removed"),
new fjs.PropertyFormatter("filter"),
new fjs.PropertyFormatter("method"),
new fjs.PropertyFormatter("type"),
new fjs.PropertyFormatter("blacklisted"),
new fjs.PropertyFormatter("panel"),
new fjs.PropertyFormatter("command"),
new fjs.PropertyFormatter("system"),
new fjs.PropertyFormatter("true"),
new fjs.PropertyFormatter("false"),
new fjs.PropertyFormatter("syntax"),
new fjs.PropertyFormatter("originalName"),
new fjs.PropertyFormatter("newName"),
new fjs.PropertyFormatter("originalCategory"),
new fjs.PropertyFormatter("newCategory"),
new fjs.PropertyFormatter("until"),
new fjs.PropertyFormatter("validOptions"),
new fjs.PropertyFormatter("validPanels"),
new fjs.PropertyFormatter("autoclose"),
new fjs.PropertyFormatter("autodelete"),
new fjs.PropertyFormatter("startupDate"),
new fjs.PropertyFormatter("version"),
new fjs.PropertyFormatter("name"),
new fjs.PropertyFormatter("role"),
new fjs.PropertyFormatter("status"),
new fjs.PropertyFormatter("claimed"),
new fjs.PropertyFormatter("pinned"),
new fjs.PropertyFormatter("creationDate"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("noone"),
new fjs.PropertyFormatter("open"),
new fjs.PropertyFormatter("closed"),
new fjs.PropertyFormatter("priority"),
new fjs.PropertyFormatter("participants"),
new fjs.PropertyFormatter("yes"),
new fjs.PropertyFormatter("no"),
new fjs.PropertyFormatter("accept"),
new fjs.PropertyFormatter("cancel"),
new fjs.PropertyFormatter("option"),
new fjs.PropertyFormatter("topic"),
new fjs.PropertyFormatter("uptime"),
new fjs.PropertyFormatter("messages"),
new fjs.PropertyFormatter("embeds"),
new fjs.PropertyFormatter("files"),
new fjs.PropertyFormatter("components"),
new fjs.PropertyFormatter("cooldown"),
new fjs.PropertyFormatter("maxTickets"),
new fjs.PropertyFormatter("admins"),
new fjs.PropertyFormatter("roles"),
new fjs.PropertyFormatter("size"),
]),
new fjs.ObjectFormatter("lowercase",true,[
new fjs.PropertyFormatter("text"),
new fjs.PropertyFormatter("html"),
new fjs.PropertyFormatter("command"),
new fjs.PropertyFormatter("modal"),
new fjs.PropertyFormatter("button"),
new fjs.PropertyFormatter("dropdown"),
new fjs.PropertyFormatter("method"),
]),
]),
new fjs.ObjectFormatter("commands",true,[
new fjs.PropertyFormatter("reason"),
new fjs.PropertyFormatter("help"),
new fjs.PropertyFormatter("panel"),
new fjs.PropertyFormatter("panelId"),
new fjs.PropertyFormatter("panelAutoUpdate"),
new fjs.PropertyFormatter("ticket"),
new fjs.PropertyFormatter("ticketId"),
new fjs.PropertyFormatter("ticketOtherUser"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("deleteNoTranscript"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("claimUser"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("move"),
new fjs.PropertyFormatter("moveId"),
new fjs.PropertyFormatter("rename"),
new fjs.PropertyFormatter("renameName"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("addUser"),
new fjs.PropertyFormatter("remove"),
new fjs.PropertyFormatter("removeUser"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("blacklist"),
new fjs.PropertyFormatter("blacklistView"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
new fjs.PropertyFormatter("blacklistGet"),
new fjs.PropertyFormatter("blacklistGetUser"),
new fjs.PropertyFormatter("stats"),
new fjs.PropertyFormatter("statsReset"),
new fjs.PropertyFormatter("statsGlobal"),
new fjs.PropertyFormatter("statsUser"),
new fjs.PropertyFormatter("statsUserUser"),
new fjs.PropertyFormatter("statsTicket"),
new fjs.PropertyFormatter("statsTicketTicket"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("clear"),
new fjs.PropertyFormatter("clearFilter"),
new fjs.ObjectFormatter("clearFilters",true,[
new fjs.PropertyFormatter("all"),
new fjs.PropertyFormatter("open"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("autoclose"),
]),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("autoclose"),
new fjs.PropertyFormatter("autocloseDisable"),
new fjs.PropertyFormatter("autocloseEnable"),
new fjs.PropertyFormatter("autocloseEnableTime"),
new fjs.PropertyFormatter("autodelete"),
new fjs.PropertyFormatter("autodeleteDisable"),
new fjs.PropertyFormatter("autodeleteEnable"),
new fjs.PropertyFormatter("autodeleteEnableTime"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("topic"),
new fjs.PropertyFormatter("topicSet"),
new fjs.PropertyFormatter("topicValue"),
new fjs.PropertyFormatter("topicList"),
new fjs.PropertyFormatter("priority"),
new fjs.PropertyFormatter("prioritySet"),
new fjs.PropertyFormatter("priorityValue"),
new fjs.PropertyFormatter("priorityGet"),
new fjs.PropertyFormatter("priorityList"),
new fjs.PropertyFormatter("transfer"),
new fjs.PropertyFormatter("transferUser"),
new fjs.PropertyFormatter("transcripts"),
new fjs.PropertyFormatter("transcriptsUser"),
]),
new fjs.ObjectFormatter("helpMenu",true,[
new fjs.PropertyFormatter("help"),
new fjs.PropertyFormatter("ticket"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("move"),
new fjs.PropertyFormatter("rename"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("remove"),
new fjs.PropertyFormatter("panel"),
new fjs.PropertyFormatter("blacklistView"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
new fjs.PropertyFormatter("blacklistGet"),
new fjs.PropertyFormatter("statsGlobal"),
new fjs.PropertyFormatter("statsTicket"),
new fjs.PropertyFormatter("statsUser"),
new fjs.PropertyFormatter("statsReset"),
new fjs.PropertyFormatter("autocloseDisable"),
new fjs.PropertyFormatter("autocloseEnable"),
new fjs.PropertyFormatter("autodeleteDisable"),
new fjs.PropertyFormatter("autodeleteEnable"),
new fjs.ObjectFormatter("categories",true,[
new fjs.PropertyFormatter("general"),
new fjs.PropertyFormatter("basicTicket"),
new fjs.PropertyFormatter("advancedTicket"),
new fjs.PropertyFormatter("userTicket"),
new fjs.PropertyFormatter("admin"),
new fjs.PropertyFormatter("advanced"),
new fjs.PropertyFormatter("extra"),
])
]),
new fjs.ObjectFormatter("stats",true,[
new fjs.ObjectFormatter("scopes",true,[
new fjs.PropertyFormatter("global"),
new fjs.PropertyFormatter("system"),
new fjs.PropertyFormatter("user"),
new fjs.PropertyFormatter("ticket"),
new fjs.PropertyFormatter("participants"),
new fjs.PropertyFormatter("messages"),
]),
new fjs.ObjectFormatter("properties",true,[
new fjs.PropertyFormatter("ticketsCreated"),
new fjs.PropertyFormatter("ticketsClosed"),
new fjs.PropertyFormatter("ticketsDeleted"),
new fjs.PropertyFormatter("ticketsReopened"),
new fjs.PropertyFormatter("ticketsAutoclosed"),
new fjs.PropertyFormatter("ticketsClaimed"),
new fjs.PropertyFormatter("ticketsPinned"),
new fjs.PropertyFormatter("ticketsMoved"),
new fjs.PropertyFormatter("usersBlacklisted"),
new fjs.PropertyFormatter("transcriptsCreated"),
new fjs.PropertyFormatter("ticketsAutodeleted"),
new fjs.PropertyFormatter("ticketsTransferred"),
new fjs.PropertyFormatter("ticketVolume"),
new fjs.PropertyFormatter("averageTickets"),
new fjs.PropertyFormatter("currentTickets"),
new fjs.PropertyFormatter("age"),
new fjs.PropertyFormatter("responseTime"),
new fjs.PropertyFormatter("resolutionTime"),
new fjs.PropertyFormatter("createdOn"),
new fjs.PropertyFormatter("createdBy"),
new fjs.PropertyFormatter("closedOn"),
new fjs.PropertyFormatter("closedBy"),
new fjs.PropertyFormatter("claimedOn"),
new fjs.PropertyFormatter("claimedBy"),
new fjs.PropertyFormatter("pinnedOn"),
new fjs.PropertyFormatter("pinnedBy"),
new fjs.PropertyFormatter("deletedOn"),
new fjs.PropertyFormatter("deletedBy"),
]),
new fjs.ObjectFormatter("roles",true,[
new fjs.PropertyFormatter("developer"),
new fjs.PropertyFormatter("serverOwner"),
new fjs.PropertyFormatter("serverAdmin"),
new fjs.PropertyFormatter("moderator"),
new fjs.PropertyFormatter("support"),
new fjs.PropertyFormatter("member"),
])
]),
new fjs.ObjectFormatter("panel",true,[
new fjs.PropertyFormatter("selectTicket"),
new fjs.PropertyFormatter("selectRole"),
new fjs.PropertyFormatter("selectOption"),
new fjs.PropertyFormatter("selectPriorityLevel"),
]),
new fjs.ObjectFormatter("priorities",true,[
new fjs.PropertyFormatter("urgent"),
new fjs.PropertyFormatter("veryHigh"),
new fjs.PropertyFormatter("high"),
new fjs.PropertyFormatter("normal"),
new fjs.PropertyFormatter("low"),
new fjs.PropertyFormatter("veryLow"),
new fjs.PropertyFormatter("none"),
]),
])
for (const language of fs.readdirSync(".tools/languages/")){
if (!fs.existsSync("./languages/"+language)){
console.log("language:",language,"does not exist yet in the primary ./languages/ folder. Unable to merge!")
continue
}
console.log("merging "+language+"...")
const original = JSON.parse(fs.readFileSync("./languages/"+language).toString())
const newSentences = JSON.parse(fs.readFileSync(".tools/languages/"+language).toString())
for (const key of Object.keys(newSentences)){
if (key.startsWith("_")) continue
try{
const splitted = key.split(".")
let currentObject = original
splitted.forEach((property,index) => {
let shouldBeObject = (splitted.length-1 !== index)
if (shouldBeObject && typeof currentObject[property] == "object"){
currentObject = currentObject[property]
}else if (shouldBeObject && typeof currentObject[property] == "undefined"){
currentObject[property] = {}
currentObject = currentObject[property]
}else if (typeof currentObject[property] == "string" || typeof currentObject[property] == "undefined"){
currentObject[property] = newSentences[key]
}else{
console.log("Failed to merge key:",key,"in file:",language,"--> Invalid type:",typeof currentObject[property])
}
})
}catch(err){
console.log("Failed to merge key:",key,"in file:",language)
}
}
original["_TRANSLATION"]["lastedited"] = new Date().toLocaleDateString("nl-BE",{day:"2-digit",month:"2-digit",year:"numeric"})
original["_TRANSLATION"]["otversion"] = "v"+JSON.parse(fs.readFileSync("./package.json").toString()).version
const finalText = formatter.stringify(original)
fs.writeFileSync("./languages/"+language,finalText)
}
+21
View File
@@ -0,0 +1,21 @@
# Docker File for Open Ticket
FROM node:22-alpine
# /home/container keeps Pterodactyl panel compatibility
# chown the workdir so node user can create/remove subdirectories
RUN mkdir -p /home/container && chown node:node /home/container
WORKDIR /home/container
# Install dependencies
COPY --chown=node:node package*.json ./
RUN npm install
# Copy app source
COPY --chown=node:node . .
ENV NODE_ENV=production
# Run as the built-in non-root node user
USER node
CMD ["node", "index.js"]
+27 -4
View File
@@ -1,11 +1,17 @@
<!-- omit from toc -->
# Open Ticket (License)
© 2025 - DJj123dj & Contributors
© 2021 - 2026 - DJj123dj & Contributors
#### Table Of Contents
- [General License](#general-license)
- [Additional Terms for Open Ticket](#additional-terms-for-open-ticket)
### General License
```
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.
@@ -679,11 +685,28 @@ Public License instead of this License. But first, please read
```
### Additional Terms for Open Ticket
#### Terminology:
1. **“Software”**
Refers to the Open Ticket source code, documentation, and any associated files distributed under this license, including any modifications or derivative works thereof.
1. **“Public Discord Bot**
A Discord bot that is made publicly available for use by multiple, unrelated Discord servers or users, where the bot’s functionality is provided as a service rather than for private or personal use.
1. **“Monetized Service”**
Refers to any service or deployment that generates direct or indirect revenue through the use of the Software. This includes, but is not limited to, subscriptions, premium features, paid hosting, advertisements.
1. **“For-Profit Discord Server”**
Means a Discord server that generates income, revenue, or other material benefits, whether through memberships, donations, or other monetization strategies.
1. **“Private Use”**
Refers to using the Software on a limited number of Discord servers controlled or operated by a single individual or organization, not made available as a public service to multiple unrelated users.
#### Additional Terms:
The following additional terms apply to the use of this software:
1. This software may not be used as part of a public Discord bot service that is monetized (e.g., generating revenue through subscriptions, donations, or other forms of payment) without the prior written permission of the original author.
1. This software may not be used as (or part of) a public Discord bot that is monetized (e.g., generating revenue through subscriptions, donations, or other forms of payment) without the prior written permission of the original author.
2. This software may not be used as part of a public Discord bot service on multiple Discord servers without attribution to the original author.
2. This software may not be used as (or part of) a public Discord bot on multiple Discord servers without attribution to the original author.
3. You are allowed to use this bot in a Discord server that makes money or is for-profit, provided that the income is not generated directly from the ticket bot or its functionality.
+145 -200
View File
@@ -1,178 +1,175 @@
> ### 🎥 Content Creators 🎥
> Hey there! We're searching for content creators that would want 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.0.7"><img alt="Open Ticket Version" src="https://img.shields.io/badge/version-4.0.7-brightgreen.svg?style=flat-square"></img></a>
<a href="https://github.com/open-discord-bots/open-ticket/releases/tag/v4.2.0"><img alt="Open Ticket Version" src="https://img.shields.io/badge/version-4.2.0-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>
<br>
<a href="https://github.com/sponsors/DJj123dj"><img alt="Sponsor DJj123dj" src="https://img.shields.io/badge/sponsor-DJj123dj-ea4aaa?style=flat-square&logo=githubsponsors"></img></a>
<a href="https://hub.docker.com/repository/docker/djj123dj/open-ticket"><img alt="Open Ticket supports Docker!" src="https://img.shields.io/badge/docker-supported-2496ED?style=flat-square&logo=docker"></img></a>
<a href=".eggs/README.md"><img alt="Open Ticket supports Pterodactyl Eggs!" src="https://img.shields.io/badge/pterodactyl-supported-10539F?style=flat-square&logo=pterodactyl"></img></a>
<a href=".github/pterodactyl-eggs/README.md"><img alt="Open Ticket supports Pterodactyl Eggs!" src="https://img.shields.io/badge/pterodactyl-supported-10539F?style=flat-square&logo=pterodactyl"></img></a>
</p>
<p align="center">
Open Ticket is the most advanced & customisable discord ticket bot that you will ever find! You can customise up to 300+ variables! This includes <code>Html Transcripts</code>, <code>Advanced Plugins</code>, <code>Custom Embeds</code>, <code>Questions/Modals</code>, <code>Stats</code> & more!
You're also able to customise every little aspect of the bot! From embeds to transcripts. Open Ticket is also translated in more than <code>36 Languages</code>! 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 right now. It features more than <b>350+ configurable settings</b> to control almost every aspect of your ticket system.
From <code>HTML transcripts</code> and <code>Advanced Plugins</code> to <code>Claiming & Pinning</code>, <code>Modal Questions & Limits</code>, <code>Detailed Statistics</code>, and much more.
The bot is fully translated into <b>38+ languages</b> and has been battle-tested in large Discord servers. 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>
<p align="center"><b>⭐️ Help us grow by giving a star! ⭐️</b></p>
<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><br>
<img align="center" src=".github/SPONSORS.svg" alt="Open Ticket" width="800px">
</p>
---
> **[-> Navigate to (⏱️ Quick Setup)](#️-quick-start)**
> **[-> Navigate to (📚 Documentation)](https://otdocs.dj-dj.be)**
> **[-> Navigate to (📞 Support Server)](https://discord.dj-dj.be)**
> **[-> Navigate to (🧩 Plugins/Addons)](https://odplugins.dj-dj.be)**
> **[-> Navigate to (🦇 Pterodactyl Eggs)](.github/pterodactyl-eggs/README.md)**
### 📌 Features
- **🦇 pterodactyl support** - Open Ticket works perfect on Pterodactyl based panels! [(Download official eggs)](.eggs/README.md)
- **💩 no bloat** - Your Open Ticket bot doesn't contain any form of bloat or credits!
- **🔒 tested & secure** - Open Ticket has been battletested by thousands of servers and is very secure!
- **📈 scalable** - Open Ticket is made to handle huge servers! (Already tested in **servers with 100k members**)
- **📄 HTML transcripts** - Make use of the most customisable, beautiful and easy-to-use HTML Transcripts!
- **✅ ticket actions** - Close, Reopen, Delete, Claim, Pin, Rename & Move all your tickets!
- **🇬🇧 translation** - Open Ticket has been translated in more than **36 languages** by our community!
- **🎨 customisation** - Open Ticket has been created around customisation, everything can be customised!
- **🖥️ interactions** - The bot has full support for Buttons, Dropdowns, Slash Commands and Modals!
- **∞ unlimited** - Create an infinite amount of tickets & panels!
- **📝 advanced plugins** - Create advanced plugins or use pre-made ones by our community!
- **👥 user management** - Add & Remove users from all tickets!
- **📊 detailed stats** - Open Ticket has ticket, user & global staticstics available for everyone!
- **🚫 blacklist** - Blacklist users to prevent them from creating a ticket!
- **❓ questions** - Let users answer questions in a modal before the ticket is created!
- **📦 slash & text** - Open Ticket supports both slash & text commands!
- **📥 extra buttons** - The bot also supports Reaction Roles & Url Buttons, because why not ¯\\_(ツ)_/¯
- **✨ commands** - The bot contains more than 25 commands!
#### Core Features
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-management.svg"></img> **Ticket Management** - Close, reopen, delete, claim or pin tickets with ease.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-commands.svg"></img> **Powerful Commands** - Manage your support system with **30+ commands** for staff & users.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-questions.svg"></img> **Modal Questions** - Ask users **custom questions** before a ticket is created.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-priorities.svg"></img> **Priorities** - Assign **priority levels** to tickets to highlight urgent requests.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-participants.svg"></img> **Participants** - Add or remove participants & transfer ownership from one user to another.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-adjustments.svg"></img> **Adjustments** - Rename tickets, change ticket types or transfer ownership.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-blacklist.svg"></img> **Blacklist & Limits** - Prevent users from creating tickets and set per-user or global ticket limits.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-customisable.svg"></img> **Highly Customisable** - Configure **350+ settings** covering appearance and behaviour.
#### And more using plugins!
- **💬 reviews** - Create & customise your own review system!
- **📢 feedback** - Collect feedback & create forms for people to answer!
- **🏷️ tags** - Create tags & answer questions automatically using keywords!
- **📝 forms** - Create advanced forms and ask people for additional details!
- **🔄 rotating status** - Create a rotating bot status & use dynamic variables from the bot!
- **💾 sqlite database** - Use an `sqlite` database for increased performances!
- **🎉 custom embeds** - Create your own embeds and use them in your server!
- **⏰ reminders** - Create & manage customisable reminders in your server!
- **🎨 customisation** - Yep, you heard it right! Even more customisation!
- **😁 And so much more...**
#### Ticket Automation & Workflows
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/automation-unlimited.svg"></img> **Unlimited Possibilities** - Create unlimited tickets, panels & question flows.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/automation-autoclose.svg"></img> **Autoclose Tickets** - Automatically **close tickets** after predefined conditions.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/automation-autodelete.svg"></img> **Autodelete Tickets** - Automatically **delete closed tickets** to keep channels clean.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/automation-categories.svg"></img> **Category Routing** - Move tickets between categories based on claim or close state.
> ### 📦 Resources
> Not all resources are accurate yet! We are working on this.<br>
> <a href="https://www.youtube.com/watch?v=2jK9kAf6ASU"><img src="https://apis.dj-dj.be/cdn/openticket/open-ticket-tutorial.png" alt="Open Ticket Tutorial" width="180px"></a>
> <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-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>
#### Transcripts & Insights
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/insights-transcripts.svg"></img> **HTML Transcripts** - Generate beautiful, easy-to-read **HTML transcripts** for every ticket.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/insights-stats.svg"></img> **Detailed Statistics** - Track **50+ statistics** for tickets, users and server activity.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/insights-logs.svg"></img> **Ticket Logs** - Track **all ticket events** such as creation, closures, and staff actions.
### ❤️ Sponsors
A big thanks to all our sponsors! Without them, it wouldn't be possible to create this project!
#### User Experience
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ux-translated.svg"></img> **Fully Translated** - Available in **38+ languages**, translated and maintained by the community.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ux-interactions.svg"></img> **Modern Interactions** - Full support for buttons, dropdowns, slash/text commands & modals.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ux-panels.svg"></img> **Panels** - Create messages with buttons or a dropdown for users to open tickets.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ux-sub-panels.svg"></img> **Sub-Panels** - One panel not enough? Use multiple panels to offer more choices.
<table>
<tr>
<td><img src="https://github.com/guillee3.png" alt="Profile Picture" width="100px"></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/guillee3"><b>guillee3</b></a></td>
</tr>
</table>
#### Plugins & Ecosystem
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ecosystem-plugins.svg"></img> **Plugin System** - Use custom plugins to **add new features** or **modify existing behavior** of the bot.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ecosystem-community.svg"></img> **Community Plugins** - Use and share plugins built by the community.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ecosystem-api.svg"></img> **Advanced API** - Build advanced plugins with access to ticket events and internal systems.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ecosystem-integrations.svg"></img> **Integrations** - Connect Open Ticket with external services to automate workflows across platforms.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/ecosystem-bonus.svg"></img> **Bonus Features** - Somehow, we included Reaction Roles and URL Button support as well.
**Past Sponsors:**<br>
<a href="https://github.com/sponsors/DJj123dj">
<img src="https://github.com/SpyEye2.png" alt="SpyEye" width="40px">
<img src="https://github.com/mods-hd.png" alt="Mods HD" width="40px">
<img src="https://github.com/DOSEV5.png" alt="DOSEV5" width="40px">
<img src="https://github.com/BENZORICH.png" alt="BENZORICH" width="40px">
</a>
#### Deployment
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/deployment-quick.svg"></img> **Quick Setup** - Easy **5-minute configuration** using the Interactive Setup CLI.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/deployment-scale.svg"></img> **Scalable & Reliable** - Battle-tested in servers with **100k+ members**.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/deployment-secure.svg"></img> **Private & Secure** - Used by thousands of servers with respect for security & privacy.
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/deployment-pterodactyl.svg"></img> **Pterodactyl Support** - 100% compatible with Pterodactyl panels. [(Download official eggs)](.eggs/README.md)
- <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/deployment-docker.svg"></img> **Docker Support** - Deploy Open Ticket in minutes with Docker containers.
### ⏱️ Quick Setup
> 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 `v18`).
#### Extend functionality even more with our [pre-made community plugins](#-plugins)!
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-reviews.svg"></img> **Reviews** - Create and manage a support review system for tickets.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-tags.svg"></img> **Tags** - Define keywords that automatically trigger predefined responses.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-reminders.svg"></img> **Reminders** - Create and manage custom reminders for users or staff.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-ai.svg"></img> **AI Integrations** - Connect to AI providers such as ChatGPT, Claude, or Gemini.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-display.svg"></img> **Channel Display** - Create voice channels that display real-time ticket system statistics.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-forms.svg"></img> **Forms** - Build advanced forms for collecting structured information from users.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-embeds.svg"></img> **Custom Embeds** - Create and send custom embeds via commands.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/core-customisable.svg"></img> **Customization Tools** - Additional configuration options for advanced behavior and styling.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-dashboard.svg"></img> **Web Dashboard** - Configure and manage the bot through a remote web dashboard.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-feedback.svg"></img> **Feedback** - Collect user feedback after ticket deletion using forms.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-sqlite.svg"></img> **SQLite Database** - Use an SQLite backend for improved performance and lightweight storage.
> - <img align="center" src="https://apis.dj-dj.be/cdn/openticket/readme-icons/plugin-more.svg"></img> **And more** - Additional community plugins are available and actively expanding.
## ⏱️ Quick Start
> 1. Download the [latest version of Open Ticket](https://github.com/open-discord-bots/open-ticket/releases/latest).
> 2. Make sure you have installed Node.js on your system (check using `node -v`, minimum `v20`).
> 3. Install any required dependencies using `npm install`.
> 4. Configure the bot in the `./config/` directory.
> 5. 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.
> 6. Enjoy using Open Ticket!
> ### [📔 Visit Documentation](https://otdocs.dj-dj.be)
> 4. Configure the bot in one of the following ways:
> - Method 1 (Easy): Start the **Quick Setup CLI** using `npm run setup`.
> - Method 2 (Hard): Manual **JSON configuration** in `./config/...`
> 5. If using the **Quick Setup CLI**, click on `> ⏱️ Quick Setup` and follow the instructions.
> 6. Start the bot using `npm start` or `node index.js`
> - If any config errors occur, the bot will give you a report of how to solve them.
> - Follow the instructions and restart the bot.
> 7. Enjoy using Open Ticket!
> 8. Install plugins from the [**Official Plugin Repository**](https://github.com/open-discord-bots/plugins)
>
> ### 🖥️ Recommended Hostings
> - [⭐ **Peakhosting.nl**](https://peakhosting.nl/) - Official support for Open Ticket pterodactyl eggs.
> #### 🚦 Next Steps
> **[-> Navigate to (📚 Documentation)](https://otdocs.dj-dj.be)**
> **[-> Navigate to (📞 Support Server)](https://discord.dj-dj.be)**
> **[-> Navigate to (🧩 Plugins/Addons)](https://odplugins.dj-dj.be)**
> **[-> Navigate to (🦇 Pterodactyl Eggs)](.github/pterodactyl-eggs/README.md)**
>
> #### 🖥️ Recommended Hosting
> - **A VPS (Virtual Private Server)** - Extra customisation & more stability. Recommended for most servers.
> - **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">
<img alt="Examples of built-in commands." src="https://apis.dj-dj.be/cdn/openticket/preview-v4/command-examples.png">
## 📸 Previews
<img alt="Preview of: Advanced Ticket Management" src="https://apis.dj-dj.be/cdn/openticket/ot-previews/preview-1.png">
<img alt="Preview of: Customisable Ticket Panels" src="https://apis.dj-dj.be/cdn/openticket/ot-previews/preview-2.png">
<img alt="Preview of: Modal Questions & Forms" src="https://apis.dj-dj.be/cdn/openticket/ot-previews/preview-3.png">
<img alt="Preview of: Detailed Statistics & Insights" src="https://apis.dj-dj.be/cdn/openticket/ot-previews/preview-4.png">
<img alt="Preview of: 30+ Powerful Commands" src="https://apis.dj-dj.be/cdn/openticket/ot-previews/preview-5.png">
<img alt="Preview of: Buttons, Transcripts, Limits & More!" src="https://apis.dj-dj.be/cdn/openticket/ot-previews/preview-6.png">
## 🛠️ Contributors
### 🖥️ Team & Contributors
A list of people that contributed or provided the most support for Open Ticket.
<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/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/Roppl3r.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/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/Roppl3r">🧩 Roppl3r</a></th>
</tr>
</table>
## 💬 Translations
With the amazing support of our translators, we've been able to translate Open Ticket in more than **38 languages**!
#### Categories: 🟢 Available - 🤖 Partially Made Using AI - 🟠 Incomplete - 🔴 Unavailable/Outdated
### 💬 Translators
With the amazing support of our translators, we've been able to translate Open Ticket in more than **36 languages**!
As a result, you're able to enjoy using Open Ticket in your own native language.
- **Categories: 🟢 Available - 🤖 Made Using AI - 🔴 Unavailable/Outdated**
|🔍 |Languages (38) |Config Value |Maintainers (Github/Discord) |
|----|----------------------|------------------------|--------------------------------|
|🟢 |🇬🇧 English |`"english"` |djj123dj |
|🟢 |🇳🇱 Dutch |`"dutch"` |djj123dj |
|🟢 |🇩🇪 German |`"german"` |benzorich |
|🟢 |🇫🇷 French |`"french"` |guillee.3 |
|🟢 |🇪🇸 Spanish |`"spanish"` |Reddishye & josuens |
|🟢 |🇵🇹 Portuguese |`"portuguese"` |quiradon |
|🟢 |🇮🇹 Italian |`"italian"` |fraden1mvp. & imperatorix_17 |
|🟢 |🇸🇪 Swedish |`"swedish"` |NoOneNook |
|🟢 |🇳🇴 Norwegian |`"norwegian"` |NoOneNook |
|🟢 |🇹🇭 Thai |`"thai"` |modshd |
|🟢 |🇮🇳 Hindi |`"hindi"` |challenger_nova |
|🟢 |🇭🇺 Hungarian |`"hungarian"` |kornel0706 |
|🟢 |🇮🇩 Indonesian |`"indonesian"` |erxg |
|🟢 |🇱🇹 Lithuanian |`"lithuanian"` |tsgindrius |
|🟢 |🇺🇦 Ukrainian |`"ukrainian"` |anderskiy |
|🟢 |🇨🇿 Czech |`"czech"` |spyeye_ |
|🟢 |🇷🇴 Romanian |`"romanian"` |sankedev |
|🟢 |🇩🇰 Danish |`"danish"` |the_gamer |
|🟢 |🇹🇷 Turkish |`"turkish"` |palestinian |
|🟢 |🇦🇪 Arabic |`"arabic"` |palestinian |
|🟢 |🇵🇱 Polish |`"polish"` |danoglez |
|🟢 |🇮🇷 Persian |`"persian"` |dysashop & zhavis |
|🟢 |🇧🇩 Bengali |`"bengali"` |HanumeshGupta |
|🟢 |❓ Catalan |`"catalan"` |guillee3 |
|🟢 |🇨🇳 Traditional Chinese|`"traditional-chinese"` |me.october |
|🟢 |🇰🇭 Khmer (Cambodia) |`"khmer"` |yuuslokrobjakkroval |
|🤖 |🇪🇪 Estonian |`"estonian"` |iamnotmega |
|🤖 |🇫🇮 Finnish |`"finnish"` |iamnotmega |
|🤖 |🇯🇵 Japanese |`"japanese"` |HanumeshGupta |
|🤖 |🇬🇷 Greek |`"greek"` |HanumeshGupta |
|🤖 |🇸🇮 Slovenian |`"slovenian"` |HanumeshGupta |
|🤖 |🇰🇷 Korean |`"korean"` |HanumeshGupta |
|🤖 |🇮🇳 Tamil |`"tamil"` |HanumeshGupta |
|🤖 |❓ Kurdish |`"kurdish"` |HanumeshGupta |
|🤖 |🇷🇺 Russian |`"russian"` |NoOneNook |
|🤖 |🇱🇻 Latvian |`"latvian"` |NoOneNook |
|🤖 |🇻🇳 Vietnamese |`"vietnamese"` |ngocdiep2006 |
|🤖 |🇨🇳 Simplified Chinese |`"simplified-chinese"` |HanumeshGupta |
<!--[⭐ Contribute!](.github/CONTRIBUTING.md) -->
|🔍 |Languages (36) |Maintainer (Github/Discord) |
|---|---------------------|--------------------------------|
|🟢 |🇬🇧 English |djj123dj |
|🟢 |🇳🇱 Dutch |djj123dj |
|🟢 |🇩🇪 German |benzorich |
|🟢 |🇪🇸 Spanish |redactado & josuens |
|🟢 |🇵🇹 Portuguese |quiradon |
|🟢 |❓ Catalan |guillee3 |
|🟢 |🇨🇿 Czech |spyeye_ |
|🟢 |🇭🇺 Hungarian |kornel0706 |
|🟢 |🇷🇴 Romanian |sankedev |
|🟢 |🇺🇦 Ukrainian |anderskiy |
|🟢 |🇮🇩 Indonesian |erxg |
|🟢 |🇮🇹 Italian |fraden1mvp. |
|🟢 |🇩🇰 Danish |the_gamer |
|🟢 |🇹🇭 Thai |modshd |
|🟢 |🇹🇷 Turkish |palestinian |
|🟢 |🇫🇷 French |guillee.3 |
|🟢 |🇦🇪 Arabic |palestinian |
|🟢 |🇮🇳 Hindi |an_developer |
|🟢 |🇱🇹 Lithuanian |tsgindrius |
|🟢 |🇵🇱 Polish |danoglez |
|🟢 |🇳🇴 Norwegian |NoOneNook |
|🟢 |🇸🇪 Swedish |NoOneNook |
|🟢 |🇮🇷 Persian |dysashop & zhavis |
|🟢 |🇧🇩 Bengali |HanumeshGupta |
|🤖 |🇪🇪 Estonian |iamnotmega |
|🤖 |🇫🇮 Finnish |iamnotmega |
|🤖 |🇷🇺 Russian |NoOneNook |
|🤖 |🇱🇻 Latvian |NoOneNook |
|🤖 |🇻🇳 Vietnamese |ngocdiep2006 |
|🤖 |🇯🇵 Japanese |HanumeshGupta |
|🤖 |🇬🇷 Greek |HanumeshGupta |
|🤖 |🇸🇮 Slovenian |HanumeshGupta |
|🤖 |🇰🇷 Korean |HanumeshGupta |
|🤖 |🇮🇳 Tamil |HanumeshGupta |
|🤖 |🇨🇳 Simplified Chinese |HanumeshGupta |
|🤖 |❓ Kurdish |HanumeshGupta |
|🔴 |🇨🇳 Traditional Chinese|[⭐ Contribute!](.github/CONTRIBUTING.md)|
## 😎 Hall Of Fame
<img alt="The full list of contributors for Open Ticket and Open Discord." src=".github/CONTRIBUTORS.svg">
## ⭐️ Star History
Please give this repository a star if you like it.
If you enjoy using Open ticket, **consider starring** our repository.
This will help us grow and reach even more people!
<a href="https://star-history.com/#open-discord-bots/open-ticket&Date">
@@ -183,62 +180,10 @@ This will help us grow and reach even more people!
</picture>
</a>
## 🧩 Plugins
**Download all plugins in our [Official Plugin Repository](https://github.com/open-discord-bots/plugins)!**<br>
> #### ⭐ Featured Plugins (Top 5 Most Used)
> **[`ot-sqlite-database`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-sqlite-database/),
> [`ot-migrate-v3`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-migrate-v3/),
> [`ot-reviews`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-reviews/),
> [`ot-feedback`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-feedback/),
> [`ot-tags`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-tags/)**
### 📦 Official *(made by DJdj Development)*
|Name |Category |Description |
|----------------------------------------------------------------------|----------------------------|-------------------------|
|[`example-plugin`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/example-plugin/) |📄 Example |This is just an example plugin for people that want to create their own plugin. |
|[`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-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-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-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. |
|[`ot-tags`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-tags/) |💼 Management |Use tags to quickly reply with a pre-existing text. |
|[`ot-better-status`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-better-status/) |🤖 Client |An advanced status plugin to rotate between states. It also allows for the use of variables. |
### ✅ Verified *(made by community)*
|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-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. |
|[`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. |
### 📢 Categories
- **📄 Example** - These plugins serve as an example or starting template.
- **📢 Command** - These plugins add new commands to the bot.
- **⚙️ Utility** - These plugins help with backend & systems. You won't notice it in discord itself.
- **🎨 Customisation** - These plugins help you customise the bot even further.
- **💼 Management** - These plugins add features that help you manage your server.
- **🤖 Client** - These plugins add features affecting the discord client or bot itself.
---
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="170px">
**README.md**<br>
[changelog](https://otgithub.dj-dj.be/releases) - [documentation](https://otdocs.dj-dj.be) - [tutorial](https://www.youtube.com/watch?v=2jK9kAf6ASU) - [website](https://openticket.dj-dj.be) - [discord server](https://discord.dj-dj.be) - [license](./LICENSE.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)
-95
View File
@@ -1,95 +0,0 @@
{
"_INFO":{
"support":"https://otdocs.dj-dj.be",
"discord":"https://discord.dj-dj.be",
"version":"open-ticket-v4.0.7"
},
"token":"your bot token here! (or leave empty when using 'tokenFromENV')",
"tokenFromENV":false,
"mainColor":"#f8ba00",
"language":"english",
"prefix":"!ticket ",
"serverId":"discord server id",
"globalAdmins":["discord role id"],
"slashCommands":true,
"textCommands":true,
"status":{
"enabled":true,
"type":"listening OR watching OR playing OR custom",
"text":"/help",
"status":"online OR invisible OR idle OR dnd"
},
"system":{
"removeParticipantsOnClose":false,
"replyOnTicketCreation":true,
"replyOnReactionRole":true,
"useTranslatedConfigChecker":true,
"preferSlashOverText":true,
"sendErrorOnUnknownCommand":true,
"questionFieldsInCodeBlock":true,
"disableVerifyBars":false,
"useRedErrorEmbeds":true,
"emojiStyle":"before (OR after OR double OR disabled)",
"enableTicketClaimButtons":true,
"enableTicketCloseButtons":true,
"enableTicketPinButtons":true,
"enableTicketDeleteButtons":true,
"enableTicketActionWithReason":true,
"enableDeleteWithoutTranscript":true,
"logs":{
"enabled":false,
"channel":"discord channel id"
},
"limits":{
"enabled":true,
"globalMaximum":50,
"userMaximum":3
},
"permissions":{
"help":"everyone (OR admin OR none OR role id)",
"panel":"admin (OR everyone OR none OR role id)",
"ticket":"none (OR admin OR everyone OR role id)",
"close":"everyone (OR admin OR none OR role id)",
"delete":"admin (OR everyone OR none OR role id)",
"reopen":"everyone (OR admin OR none OR role id)",
"claim":"admin (OR everyone OR none OR role id)",
"unclaim":"admin (OR everyone OR none OR role id)",
"pin":"admin (OR everyone OR none OR role id)",
"unpin":"admin (OR everyone OR none OR role id)",
"move":"admin (OR everyone OR none OR role id)",
"rename":"admin (OR everyone OR none OR role id)",
"add":"admin (OR everyone OR none OR role id)",
"remove":"admin (OR everyone OR none OR role id)",
"blacklist":"admin (OR everyone OR none OR role id)",
"stats":"everyone (OR admin OR none OR role id)",
"clear":"admin (OR everyone OR none OR role id)",
"autoclose":"admin (OR everyone OR none OR role id)",
"autodelete":"admin (OR everyone OR none OR role id)"
},
"messages":{
"creation":{"dm":false, "logs":true},
"closing":{"dm":false, "logs":true},
"deleting":{"dm":false, "logs":true},
"reopening":{"dm":false, "logs":true},
"claiming":{"dm":false, "logs":true},
"pinning":{"dm":false, "logs":true},
"adding":{"dm":false, "logs":true},
"removing":{"dm":false, "logs":true},
"renaming":{"dm":false, "logs":true},
"moving":{"dm":false, "logs":true},
"blacklisting":{"dm":false, "logs":true},
"roleAdding":{"dm":false, "logs":true},
"roleRemoving":{"dm":false, "logs":true}
}
}
}
+175
View File
@@ -0,0 +1,175 @@
/*
* Hi there! Thank you for installing Open Ticket.
* ----------------------------------------------
* If you need any assistance with configuring the bot,
* feel free to use the documentation or join our Discord server:
* https://otdocs.dj-dj.be
* https://discord.dj-dj.be
* ----------------------------------------------
* SETUP:
* 1. Install the required dependencies using the command: "npm install"
* 2. Configure the bot in one of the following ways:
* a. (easy) Using the Quick Setup CLI Tool
* b. (difficult) Using the JSON files in `./config/`
*
* Start the Quick Setup CLI Tool using the command: "npm run setup"
* After configuration, start the bot using the command: "npm start"
*
* Good luck! DJj123dj & contributors
*/
{
"_CONFIG_VERSION":"open-ticket-v4.2.0",
/* Load the bot token from .env or the "token" field below. Leave "token" empty if using "tokenFromENV". */
"token":"INSERT_BOT_TOKEN",
"tokenFromENV":false,
"mainColor":"#f8ba00", //Hex color used in most embeds
"language":"english", //Visit README.md for list
"prefix":"!ticket ", //Prefix used in text commands
"serverId":"DISCORD_SERVER_ID",
"globalAdmins":["DISCORD_ROLE_ID"], //Have access to all commands
/* Enable/disable text or slash commands. */
"slashCommands":true,
"textCommands":true,
/* Configure the status of the bot. */
"status":{
"enabled":true,
"type":"listening", //Choices: listening, watching, playing, custom
"mode":"online", //Choices: online, invisible, idle, dnd
"text":"/help",
"state":"" //Additional text (Leave empty to disable)
},
/* Send ticket logs to a channel or in DM of the ticket creator. */
"logs":{
"enabled":false,
"channel":"DISCORD_CHANNEL_ID",
"logMessages":{
"creation":{"dm":false,"logs":true},
"closing":{"dm":false,"logs":true},
"deleting":{"dm":false,"logs":true},
"reopening":{"dm":false,"logs":true},
"claiming":{"dm":false,"logs":true},
"pinning":{"dm":false,"logs":true},
"adding":{"dm":false,"logs":true},
"removing":{"dm":false,"logs":true},
"renaming":{"dm":false,"logs":true},
"moving":{"dm":false,"logs":true},
"blacklisting":{"dm":false,"logs":true},
"transferring":{"dm":false,"logs":true},
"topicChange":{"dm":false,"logs":true},
"priorityChange":{"dm":false,"logs":true},
"reactionRole":{"dm":false,"logs":true}
}
},
/* A large collection of settings for the ticket system. */
"ticketSystem":{
"preferSlashOverText":true, //Show slashcmds in help menu's
"sendErrorOnUnknownCommand":true, //Send error when command not found
"questionFieldsInCodeBlock":true, //Put question answers in code blocks
"displayFieldsWithQuestions":false, //Display embed fields together with question answers
"showGlobalAdminsInPanelRoles":false, //Include "globalAdmins" in panel admin lists
"disableVerifyBars":false, //Disable the (❌/✅) buttons
"useRedErrorEmbeds":true, //Make errors embeds always red
"alwaysShowReason":false, //Show reason even if none is provided
"emojiStyle":"before", //The style of emoji's in embeds. Choices: before, after, double, disabled
"pinEmoji":"📌", //Channel emoji of pinned tickets (Leave empty to disable)
"closeEmoji":"", //Channel emoji of closed tickets (Leave empty to disable)
"replyOnTicketCreation":true, //Reply with a msg when a ticket is created
"replyOnReactionRole":true, //Reply with a msg when a reaction role is used
"askPriorityOnTicketCreation":true, //Show a dropdown to select priority
"removeParticipantsOnClose":false, //Remove non-admins when ticket is closed
"disableAutocloseAfterReopen":true, //Disable autoclose after ticket got reopened
"autodeleteRequiresClosedTicket":true, //A ticket must be closed before autodelete works
"adminOnlyDeleteWithoutTranscript":true, //Only allow "globalAdmins" to delete a ticket without transcript
"allowCloseBeforeMessage":false, //Allow closing before a message is sent
"allowCloseBeforeAdminMessage":true, //Allow closing before an admin has sent a message
"useTranslatedConfigChecker":true, //Translate config errors in the console
"pinFirstTicketMessage":true, //Pin the ticket message to the channel
/* Enable/disable certain buttons & features of the bot. */
"enableTicketClaimButtons":true,
"enableTicketCloseButtons":true,
"enableTicketPinButtons":true,
"enableTicketDeleteButtons":true,
"enableTicketActionWithReason":true,
"enableDeleteWithoutTranscript":true, //Allow deleting tickets without transcript
"enableCreateTicketForOtherUser":true, //Allow creating tickets for other users
/* Set the maximum amount of simultaneous tickets. */
"limits":{
"enabled":true,
"globalMaximum":50,
"userMaximum":3
},
/* Choose which data is shown in the channel topic. */
"channelTopic":{
"showOptionName":true,
"showOptionDescription":false,
"showOptionTopic":true,
"showPriority":false,
"showClosed":true,
"showClaimed":false,
"showPinned":false,
"showCreator":false,
"showParticipants":false
},
/* Move closed tickets to a separate category. */
"closedCategory":{
"enabled":false,
"categoryId":"DISCORD_CATEGORY_ID"
},
/* Create tickets in a backup category when the original category exceeds 50 channels. */
"backupCategory":{
"enabled":false,
"categoryId":"DISCORD_CATEGORY_ID"
},
/* Move claimed tickets to a matching category of the user that claimed the ticket. Set to empty list [] to disable. */
"claimedCategories":[
{"user":"DISCORD_USER_ID","category":"DISCORD_CATEGORY_ID"}
]
},
/*
* Set permissions for each individual command, button or action.
* CHOICES:
* >> "none" -> Command disabled
* >> "everyone" -> Allowed for everyone
* >> "admin" -> Global & ticket admins only
* >> "DISCORD_ROLE_ID" -> Custom role only
*/
"permissions":{
"help":"everyone",
"panel":"admin",
"ticket":"none",
"close":"everyone",
"delete":"admin",
"reopen":"everyone",
"claim":"admin",
"unclaim":"admin",
"pin":"admin",
"unpin":"admin",
"move":"admin",
"rename":"admin",
"add":"admin",
"remove":"admin",
"blacklist":"admin",
"stats":"everyone",
"clear":"admin",
"autoclose":"admin",
"autodelete":"admin",
"transfer":"admin",
"topic":"admin",
"priority":"admin",
"transcripts":"admin"
}
}
-122
View File
@@ -1,122 +0,0 @@
[
{
"id":"example-ticket",
"name":"Question",
"description":"Create this ticket if you have a question! (or leave empty)",
"type":"ticket",
"button":{
"emoji":"🎫 (or leave empty)",
"label":"question (or leave empty)",
"color":"gray OR red OR green OR blue"
},
"ticketAdmins":["discord role id"],
"readonlyAdmins":["discord role id"],
"allowCreationByBlacklistedUsers":false,
"questions":["example-question-1","example-question-2"],
"channel":{
"prefix":"question-",
"suffix":"user-name OR user-id OR random-number OR random-hex OR counter-dynamic OR counter-fixed",
"category":"category id (or leave empty)",
"closedCategory":"category id (or leave empty)",
"backupCategory":"category id (or leave empty)",
"claimedCategory":[
{"user":"user id","category":"category id"}
],
"description":"This is a question ticket (or leave empty)"
},
"dmMessage":{
"enabled":false,
"text":"Thank you for creating a ticket in our server! (or leave empty)",
"embed":{
"enabled":false,
"title":"Embed Title! (or leave empty)",
"description":"Description (or leave empty)",
"customColor":"#f8ab00 (or leave empty)",
"image":"https://www.example.com/image.png (or leave empty)",
"thumbnail":"https://www.example.com/image.png (or leave empty)",
"fields":[
{"name":"field name","value":"field value","inline":false}
],
"timestamp":false
}
},
"ticketMessage":{
"enabled":true,
"text":"",
"embed":{
"enabled":true,
"title":"Question Ticket",
"description":"Thank you for creating a 'Question' ticket in our server!\nOur support team will help you as soon as possible!",
"customColor":"#f8ab00 (or leave empty)",
"image":"https://www.example.com/image.png (or leave empty)",
"thumbnail":"https://www.example.com/image.png (or leave empty)",
"fields":[
{"name":"field name","value":"field value","inline":false}
],
"timestamp":false
},
"ping":{
"@here":true,
"@everyone":false,
"custom":["discord role id"]
}
},
"autoclose":{
"enableInactiveHours":false,
"inactiveHours":24,
"enableUserLeave":false,
"disableOnClaim":false
},
"autodelete":{
"enableInactiveDays":false,
"inactiveDays":7,
"enableUserLeave":false,
"disableOnClaim":false
},
"cooldown":{
"enabled":false,
"cooldownMinutes":10
},
"limits":{
"enabled":false,
"globalMaximum":20,
"userMaximum":3
}
},
{
"id":"example-website",
"name":"Website",
"description":"Go to our website.",
"type":"website",
"button":{
"emoji":"😃",
"label":"Visit our website"
},
"url":"https://www.dj-dj.be"
},
{
"id":"example-role",
"name":"Update Ping",
"description":"Click here to get notified on updates!",
"type":"role",
"button":{
"emoji":"📢",
"label":"Update Ping",
"color":"gray OR red OR green OR blue"
},
"roles":["discord role id"],
"mode":"add&remove OR remove OR add",
"removeRolesOnAdd":["discord role id"],
"addOnMemberJoin":false
}
]
+165
View File
@@ -0,0 +1,165 @@
/*
* OPEN TICKET BUTTON OPTIONS
* ----------------------------------------------
* Create customizable ticket, website, reaction-role or sub-panel button options.
* Up to 25 options can be added to each panel in (config/panels.jsonc)
* There are 4 types of options available: ticket, website, role, sub-panel
*
* TIP: Create new options by copying everything between and including the {...} brackets of an option. Paste it after the last option and make sure that they are seperated by a comma.
*/
[
{
/* A ticket option creates a button to open a ticket. */
"id":"example-ticket",
"name":"Question",
"description":"Want to tell us something? Create this ticket for general questions for our support team.", //Leave empty to disable
"type":"ticket",
"button":{
/* Configure the button style of this option. At least one of "emoji" or "label" must be provided. */
"emoji":"🎫",
"label":"Question",
"color":"gray" //Choices: gray, red, green, blue
},
/* Add up to 5 modal questions IDs from (config/questions.jsonc). */
"questions":["example-question-1","example-question-2"],
"ticketAdmins":["DISCORD_ROLE_ID"],
"readonlyAdmins":["DISCORD_ROLE_ID"],
"allowCreationByBlacklistedUsers":false,
"channel":{
/* Configure the name, topic and category of the ticket option. */
"prefix":"question-",
"suffix":"user-name", //Choices: user-name, user-id, random-number, random-hex, counter-dynamic, counter-fixed
"category":"DISCORD_CATEGORY_ID", //Leave empty to disable
"topic":"The ticket topic shown in the channel." //Leave empty to disable
},
"dmMessage":{
/* Send a customisable message in DM when creating a ticket. */
"enabled":false,
"text":"", //Leave empty to disable
"embed":{
"enabled":false,
"title":"Question Ticket", //Leave empty to disable
"description":"Thank you for creating a ticket in our server. We will try to help you as soon as possible.", //Leave empty to disable
"customColor":"#f8ab00", //Leave empty to use default color
"image":"", //Image URL. Leave empty to disable
"thumbnail":"", //Image URL. Leave empty to disable
/* Embed fields. Set to empty list [] to disable. */
"fields":[
{"name":"FIELD_NAME","value":"FIELD_VALUE","inline":false}
],
"timestamp":false
}
},
"ticketMessage":{
/* Send a customisable message in the ticket with close, claim, delete, ... buttons. */
"enabled":true,
"text":"", //Leave empty to disable
"embed":{
"enabled":true,
"title":"Question Ticket", //Leave empty to disable
"description":"Thank you for creating a ticket in our server.\nOur support team will assist you as soon as possible.", //Leave empty to disable
"customColor":"#f8ab00", //Leave empty to use default color
"image":"", //Image URL. Leave empty to disable
"thumbnail":"", //Image URL. Leave empty to disable
/* Embed fields. Set to empty list [] to disable. */
"fields":[
{"name":"FIELD_NAME","value":"FIELD_VALUE","inline":false}
],
"timestamp":false
},
"ping":{
/* Customise the user & role mentions of this ticket message. */
"@here":true,
"@everyone":false,
"custom":["DISCORD_ROLE_ID"]
}
},
"autoclose":{
/* Autoclose this ticket after a period of inactivity or when the creator leaves the server. */
"enableInactiveHours":false,
"inactiveHours":24,
"enableUserLeave":false,
"disableOnClaim":false
},
"autodelete":{
/* Autodelete this ticket after a period of inactivity or when the creator leaves the server. */
"enableInactiveDays":false,
"inactiveDays":7,
"enableUserLeave":false,
"disableOnClaim":false
},
"cooldown":{
/* Users must wait a certain period before being able to create another ticket of this type. */
"enabled":false,
"cooldownMinutes":10
},
"limits":{
/* Set the maximum amount of simultaneous tickets of this option. */
"enabled":false,
"globalMaximum":20,
"userMaximum":3
},
"slowMode":{
/* Enable slow-mode in the ticket channel. */
"enabled":false,
"slowModeSeconds":20
}
},
{
/* A website option creates a button with a URL to an external website. */
"id":"example-website",
"name":"Website",
"description":"Take a look at our amazing website.", //Leave empty to disable
"type":"website",
"button":{
/* Configure the button style of this option. At least one of "emoji" or "label" must be provided. */
"emoji":"😃",
"label":"Visit Website"
},
"url":"https://www.dj-dj.be"
},
{
/* A reaction-role option creates a button for members to choose roles. */
"id":"example-role",
"name":"Update Ping",
"description":"Receive notifications about updates in our server.", //Leave empty to disable
"type":"role",
"button":{
/* Configure the button style of this option. At least one of "emoji" or "label" must be provided. */
"emoji":"📢",
"label":"Update Ping",
"color":"gray" //Choices: gray, red, green, blue
},
"roles":["DISCORD_ROLE_ID"],
"mode":"add&remove OR remove OR add", //What to do with the roles. Choices: add&remove, add, remove
"removeRolesOnAdd":["DISCORD_ROLE_ID"], //Remove these old roles when new roles are added.
"addOnMemberJoin":false //Add these roles automatically when joining the server.
},
{
/* A sub-panel option creates a button which sends another panel for additional options. */
"id":"example-sub-panel",
"name":"Example Sub-Panel",
"description":"This is an example of how to implement a sub-panel in Open Ticket.", //Leave empty to disable
"type":"sub-panel",
"button":{
/* Configure the button style of this option. At least one of "emoji" or "label" must be provided. */
"emoji":"📋",
"label":"Sub-Panel Example",
"color":"gray" //Choices: gray, red, green, blue
},
"subPanelId":"example-panel" //Choose a panel ID from (config/panels.jsonc)
}
]
-39
View File
@@ -1,39 +0,0 @@
[
{
"id":"example-embed",
"name":"Example Embed",
"dropdown":false,
"options":["example-ticket","example-website","example-role"],
"text":"",
"embed":{
"enabled":true,
"title":"Tickets:",
"description":"Create a ticket by clicking one of the buttons below!",
"customColor":"#f8ab00 (or leave empty)",
"url":"https://openticket.dj-dj.be (or leave empty)",
"image":"https://www.example.com/image.png (or leave empty)",
"thumbnail":"https://www.example.com/image.png (or leave empty)",
"footer":"Open Ticket v4.0.7 (or leave empty)",
"fields":[
{"name":"field name","value":"field value","inline":false}
],
"timestamp":false
},
"settings":{
"dropdownPlaceholder":"Create a ticket!",
"enableMaxTicketsWarningInText":false,
"enableMaxTicketsWarningInEmbed":true,
"describeOptionsLayout":"simple OR normal OR detailed",
"describeOptionsCustomTitle":"",
"describeOptionsInText":false,
"describeOptionsInEmbedFields":true,
"describeOptionsInEmbedDescription":false
}
}
]
+57
View File
@@ -0,0 +1,57 @@
/*
* OPEN TICKET PANELS
* ----------------------------------------------
* Create customizable panel messages with buttons or a dropdown.
* Add up to 25 options to this panel from (config/options.jsonc)
* Panels can be customised with text, images, colors and more.
*
* Spawn the panel in Discord using: /panel <id>
*
* TIP: Create new panels by copying everything between and including the {...} brackets of an panel. Paste it after the last panel and make sure that they are seperated by a comma.
*/
[
{
/* A panel is creates a message with up to 25 options as buttons or dropdown. */
"id":"example-panel",
"name":"Example Panel",
"dropdown":false,
/* Add up to 5 option IDs from (config/options.jsonc). */
"options":["example-ticket","example-website","example-role"],
"text":"", //Leave empty to disable
"embed":{
"enabled":true,
"title":"Tickets:", //Leave empty to disable
"description":"Create a ticket by selecting one of the options below. Once selected, a private ticket will be created for you and our support team will be able to assist you directly.", //Leave empty to disable
"customColor":"#f8ab00", //Leave empty to use default color
"url":"", //URL. Leave empty to disable
"image":"", //Image URL. Leave empty to disable
"thumbnail":"", //Image URL. Leave empty to disable
"footer":"Open Ticket v4.2.0", //Leave empty to disable
/* Embed fields. Set to empty list [] to disable. */
"fields":[
{"name":"Field name","value":"Field value","inline":false}
],
"timestamp":false
},
"settings":{
"dropdownPlaceholder":"Create a ticket...", //Leave empty to use default.
"maximumButtonsPerRow":5,
/* Display the maximum amount of tickets per user. */
"enableMaxTicketsWarningInText":false,
"enableMaxTicketsWarningInEmbed":true,
/* Automatically generate option descriptions from (config/options.jsonc). */
"describeOptionsLayout":"normal", //Choices: simple, normal, detailed
"describeOptionsCustomTitle":"",
"describeOptionsInText":false,
"describeOptionsInEmbedFields":true,
"describeOptionsInEmbedDescription":false
}
}
]
-28
View File
@@ -1,28 +0,0 @@
[
{
"id":"example-question-1",
"name":"Example Question 1",
"type":"short",
"required":true,
"placeholder":"Insert your short answer here!",
"length":{
"enabled":false,
"min":0,
"max":1000
}
},
{
"id":"example-question-2",
"name":"Example Question 2",
"type":"paragraph",
"required":false,
"placeholder":"Insert your long answer here!",
"length":{
"enabled":false,
"min":0,
"max":1000
}
}
]
+102
View File
@@ -0,0 +1,102 @@
/*
* OPEN TICKET MODAL QUESTIONS
* ----------------------------------------------
* Create customizable modal questions that will be shown before creating a ticket.
* Each ticket option (config/options.jsonc) can contain a maximum of 5 questions.
* There are 6 types of questions available: short, paragraph, dropdown, radio-select, checkbox-select, text-display
*
* TIP: Create new questions by copying everything between and including the {...} brackets of a question. Paste it after the last question and make sure that they are seperated by a comma.
*/
[
{
/* A short text input modal question. */
"id":"example-question-1",
"name":"Example Question 1",
"description":"", //Leave empty to disable
"type":"short",
"required":true,
"placeholder":"Insert answer...",
"length":{
/* Configure length limits for the answer. */
"enabled":false,
"min":0,
"max":1000
}
},
{
/* A paragraph text input modal question. */
"id":"example-question-2",
"name":"Example Question 2",
"description":"", //Leave empty to disable
"type":"paragraph",
"required":false,
"placeholder":"Insert answer...",
"length":{
/* Configure length limits for the answer. */
"enabled":false,
"min":0,
"max":1000
}
},
{
/* A dropdown menu input modal question with up to 25 choices. "emoji" & "description" fields are optional. */
"id":"example-question-3",
"name":"Example Question 3",
"description":"This is a dropdown question.", //Leave empty to disable
"type":"dropdown",
"required":false,
"placeholder":"Choose your answer...",
"choices":[
{"title":"Choice A","description":"Apple","emoji":"🍎"},
{"title":"Choice B","description":"Banana","emoji":"🍌"},
{"title":"Choice C","description":"Orange","emoji":"🍊"},
{"title":"Choice D","description":"Kiwi","emoji":"🥝"}
]
},
{
/* A radio select input modal question with up to 10 choices. */
"id":"example-question-4",
"name":"Example Question 4",
"description":"This is a radio select question.", //Leave empty to disable
"type":"radio-select",
"required":true,
"choices":[
{"title":"Choice A","description":"Up","selectedByDefault":false},
{"title":"Choice B","description":"Down","selectedByDefault":false},
{"title":"Choice C","description":"Left","selectedByDefault":false},
{"title":"Choice D","description":"Right","selectedByDefault":false}
]
},
{
/* A checkbox select input modal question with up to 10 choices. */
"id":"example-question-5",
"name":"Example Question 5",
"description":"This is a checkbox select question.", //Leave empty to disable
"type":"checkbox-select",
"required":true,
"limits":{
/* Configure checkbox amount limits for the answer. */
"enabled":false,
"min":0,
"max":10
},
"choices":[
{"title":"Choice A","description":"Happiness","selectedByDefault":false},
{"title":"Choice B","description":"Anger","selectedByDefault":false},
{"title":"Choice C","description":"Sadness","selectedByDefault":false},
{"title":"Choice D","description":"Fear","selectedByDefault":false}
]
},
{
/* Show text in a modal to provide extra details or explain questions. */
"id":"example-text-display",
"type":"text-display",
"textContents":"This is a text display. It isn't a question, but allows you to display additional details."
}
]
-55
View File
@@ -1,55 +0,0 @@
{
"general":{
"enabled":false,
"enableChannel":false,
"enableCreatorDM":false,
"enableParticipantDM":false,
"enableActiveAdminDM":false,
"enableEveryAdminDM":false,
"channel":"transcript channel id (or leave empty)",
"mode":"html OR text"
},
"embedSettings":{
"customColor":"#f8ab00 (or leave empty)",
"listAllParticipants":false,
"includeTicketStats":false
},
"textTranscriptStyle":{
"layout":"simple OR normal OR detailed",
"includeStats":true,
"includeIds":false,
"includeEmbeds":true,
"includeFiles":true,
"includeBotMessages":true,
"fileMode":"custom OR channel-name OR channel-id OR user-name OR user-id",
"customFileName":"this-is-a-transcript (or leave empty)"
},
"htmlTranscriptStyle":{
"background":{
"enableCustomBackground":false,
"backgroundColor":"#f8ba00 (or leave empty)",
"backgroundImage":"https://www.example.com/image.png (or leave empty)"
},
"header":{
"enableCustomHeader":false,
"backgroundColor":"#202225",
"decoColor":"#f8ba00",
"textColor":"#ffffff"
},
"stats":{
"enableCustomStats":false,
"backgroundColor":"#202225",
"keyTextColor":"#737373",
"valueTextColor":"#ffffff",
"hideBackgroundColor":"#40444a",
"hideTextColor":"#ffffff"
},
"favicon":{
"enableCustomFavicon":false,
"imageUrl":"https://t.dj-dj.be/favicon.png"
}
}
}
+70
View File
@@ -0,0 +1,70 @@
/*
* OPEN TICKET TRANSCRIPTS
* ----------------------------------------------
* Enable transcript creation when tickets are deleted. There are 2 available transcript types: HTML & Text
*
* HTML Transcripts (recommended):
* Generate transcripts as HTML files to view in the browser. No server or domain required. HTML Transcripts use an external service to process and host the transcripts.
*
* Text Transcripts:
* Generate transcripts as simple .txt files with limited details. Processing happens fully local.
*/
{
"general":{
"enabled":false,
/* Choose which users and channel get the generated transcript. */
"enableChannel":false,
"enableCreatorDM":false,
"enableParticipantDM":false,
"enableActiveAdminDM":false,
"enableEveryAdminDM":false,
"channel":"DISCORD_CHANNEL_ID", //Where to send transcripts. Leave empty when disabled.
"mode":"html" //The type of transcript to use. Choices: html, text
},
"embedSettings":{
/* Customise the embed which contains the generated transcript file or URL. */
"customColor":"#f8ab00", //Leave empty to use default color
"listAllParticipants":false,
"includeTicketStats":false
},
"textTranscriptStyle":{
/* Customise layout of the text transcripts. */
"layout":"normal", //Choices: simple, normal, detailed
"includeStats":true,
"includeIds":false,
"includeEmbeds":true,
"includeFiles":true,
"includeBotMessages":true,
"fileMode":"custom", //How to name the transcript file? Choices: custom, channel-name, channel-id, user-name, user-id
"customFileName":"transcript" //Custom filename without extension
},
"htmlTranscriptStyle":{
/* Customise layout of the HTML transcripts. */
"background":{
"enableCustomBackground":false,
"backgroundColor":"#f8ba00", //Leave empty to use Open Ticket color (#f8ba00)
"backgroundImage":"https://www.example.com/image.png" //Image URL to fill entire background. Leave empty to disable
},
"header":{
"enableCustomHeader":false,
"backgroundColor":"#202225",
"decoColor":"#f8ba00",
"textColor":"#ffffff"
},
"stats":{
"enableCustomStats":false,
"backgroundColor":"#202225",
"keyTextColor":"#737373",
"valueTextColor":"#ffffff",
"hideBackgroundColor":"#40444a",
"hideTextColor":"#ffffff"
},
"favicon":{
"enableCustomFavicon":false,
"imageUrl":"https://t.dj-dj.be/favicon.png"
}
}
}
+1
View File
@@ -0,0 +1 @@
[]
-11
View File
@@ -1,11 +0,0 @@
# Docker Compose for Open Ticket v4
version: '3'
services:
openticket:
build: .
volumes:
- openticket:/home/container
restart: no
container_name: open-ticket
volumes:
openticket:
-18
View File
@@ -1,18 +0,0 @@
# Docker File for Open Ticket v4
# Use the official Node.js 20 image from Docker Hub
FROM node:20-alpine
# Set pterodactyl working directory inside the container
WORKDIR /home/container
# Copy package.json and package-lock.json into the container
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy the rest of your app's source code into the container
COPY . .
# Run the bot from index.js
CMD ["node", "index.js"]
+5 -111
View File
@@ -4,7 +4,6 @@ const flags = [
//PTERODACTYL PANEL
//add startup flags here (e.g. "--no-compile") when running via the panel
]
process.argv.push(...flags)
/////////////// STARTUP FLAGS ///////////////
/*
@@ -14,124 +13,19 @@ process.argv.push(...flags)
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██║██║ ██╔═██╗ ██╔══╝ ██║
╚██████╔╝██║ ███████╗██║ ╚████║ ██║ ██║╚██████╗██║ ██╗███████╗ ██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝
v4.0.7 - Made by DJj123dj & Contributors
v4.2.0 - Made by DJj123dj & Contributors
Discord: https://discord.dj-dj.be
Docs: https://otdocs.dj-dj.be
Support Us: https://github.com/sponsors/DJj123dj/
*/
///////////////////////////////////////////
////////// COMPILATION + STARTUP //////////
///////////////////////////////////////////
const fs = require("fs")
const ts = require("typescript")
const {createHash,Hash} = require("crypto")
const nodepath = require('path')
/** ## What is this?
* This is a function which compares `./src/` with a hash stored in `./dist/hash.txt`.
* The hash is based on the modified date & file metadata of all files in `./src/`.
*
* If the hash is different, the bot will automatically re-compile.
* This will help you save CPU resources because the bot shouldn't re-compile when nothing has been changed :)
*
* @param {string} dir
* @param {Hash|null} upperHash
*/
function computeSourceHash(dir,upperHash){
const hash = upperHash ? upperHash : createHash("sha256")
const info = fs.readdirSync(dir,{withFileTypes:true})
for (const file of info) {
const fullPath = nodepath.join(dir,file.name)
if (file.isFile() && [".js",".ts",".jsx",".tsx"].some((ext) => file.name.endsWith(ext))){
const statInfo = fs.statSync(fullPath)
//compute hash using file metadata
const fileInfo = `${fullPath}:${statInfo.size}:${statInfo.mtimeMs}`
hash.update(fileInfo)
}else if (file.isDirectory()){
//recursively compute all folders
computeSourceHash(fullPath,hash)
}
}
//return when not being called recursively
if (!upperHash) {
return hash.digest("hex")
}
}
function requiresCompilation(){
//check hashes when not using "--compile-only" flag
if (process.argv.includes("--compile-only")) return true
console.log("OT: Comparing prebuilds with source...")
const sourceHash = computeSourceHash("./src/")
const pluginHash = computeSourceHash("./plugins/")
const hash = sourceHash+":"+pluginHash
if (fs.existsSync("./dist/hash.txt")){
const distHash = fs.readFileSync("./dist/hash.txt").toString()
if (distHash === hash) return false
else return true
}else return true
}
function saveNewCompilationHash(){
const sourceHash = computeSourceHash("./src/")
const pluginHash = computeSourceHash("./plugins/")
const hash = sourceHash+":"+pluginHash
fs.writeFileSync("./dist/hash.txt",hash)
}
if (!process.argv.includes("--no-compile")){
if (requiresCompilation()){
console.log("OT: Compilation Required...")
//REMOVE EXISTING BUILDS
console.log("OT: Removing Prebuilds...")
fs.rmSync("./dist",{recursive:true,force:true})
//COMPILE TYPESCRIPT
console.log("OT: Compiling Typescript...")
const configPath = nodepath.resolve('./tsconfig.json')
const configFile = ts.readConfigFile(configPath,ts.sys.readFile)
//check for tsconfig errors
if (configFile.error){
const message = ts.formatDiagnosticsWithColorAndContext([configFile.error],ts.createCompilerHost({}))
console.error(message)
process.exit(1)
}
//parse tsconfig file
const parsedConfig = ts.parseJsonConfigFileContent(configFile.config,ts.sys,nodepath.dirname(configPath))
//create program/compiler
const program = ts.createProgram({
rootNames:parsedConfig.fileNames,
options:parsedConfig.options
import { frameworkStartup } from "@open-discord-bots/framework"
frameworkStartup(flags,"openticket",async () => {
await import("./dist/src/index.js")
})
//emit all compiled files
const emitResult = program.emit()
//print emit errors/warnings (type errors)
const allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics)
const formattedDiagnostics = ts.formatDiagnosticsWithColorAndContext(allDiagnostics, ts.createCompilerHost(parsedConfig.options))
console.log(formattedDiagnostics)
if (emitResult.emitSkipped || allDiagnostics.find((d) => d.category == ts.DiagnosticCategory.Error || d.category == ts.DiagnosticCategory.Warning)){
console.log("OT: Compilation Failed!")
process.exit(1)
}
}else console.log("OT: No Compilation Required...")
//save new compilation hash
saveNewCompilationHash()
}
//START BOT
console.log("OT: Compilation Succeeded!")
if (process.argv.includes("--compile-only")) process.exit(0) //exit when only compile is required!
console.log("OT: Starting Bot!")
require("./dist/src/index.js")
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion": "v4.0.7",
"otversion":"v4.2.0",
"translators":["palestinian"],
"lastedited": "06/12/2024",
"lastedited":"25/05/2026",
"language":"Arabic",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"يجب أن تحتوي هذه السلسلة على {0}!",
"stringChoices":"يمكن أن تكون هذه السلسلة واحدة فقط من القيم التالية: {0}!",
"stringRegex":"هذه السلسلة غير صالحة!",
"stringInvertedContains":"لا يُسمح لهذا النص باحتواء {0}!",
"stringLowercase":"يجب كتابة هذا النص بأحرف صغيرة فقط!",
"stringUppercase":"يجب كتابة هذا النص بأحرف كبيرة فقط!",
"stringSpecialCharacters":"لا يُسمح لهذا النص باحتواء أي رموز خاصة! (a-z، 0-9 والمسافة فقط)",
"stringNoSpaces":"لا يُسمح لهذا النص باحتواء مسافات!",
"stringCapitalWord":"يُنصح بأن تبدأ كل كلمة في هذا النص بحرف كبير!",
"stringCapitalSentence":"يبدو أن بعض الجمل في هذا النص لا تبدأ بحرف كبير!",
"stringPunctuation":"يبدو أن الجملة في هذا النص لا تنتهي بعلامة ترقيم!",
"numberTooShort":"لا يمكن أن يكون هذا الرقم أقصر من {0} حرفًا!",
"numberTooLong":"لا يمكن أن يكون هذا الرقم أطول من {0} حرفًا!",
@@ -48,6 +56,8 @@
"numberNegative":"لا يمكن أن يكون هذا الرقم سالبًا!",
"numberPositive":"لا يمكن أن يكون هذا الرقم موجبًا!",
"numberZero":"لا يمكن أن يكون هذا الرقم صفرًا!",
"numberNan":"لا يمكن أن يكون هذا الرقم NaN (Not A Number)!",
"numberInvertedContains":"لا يُسمح لهذا الرقم باحتواء {0}!",
"booleanTrue":"لا يمكن أن تكون هذه القيمة صحيحة!",
"booleanFalse":"لا يمكن أن تكون هذه القيمة خاطئة!",
@@ -89,7 +99,8 @@
"invalidButton":"يجب أن تحتوي هذه الزر على {0} أو {1} على الأقل!",
"unusedOption":"الخيار {0} غير مستخدم في أي مكان!",
"unusedQuestion":"السؤال {0} غير مستخدم في أي مكان!",
"dropdownOption": "يمكن أن تحتوي لوحة مع تمكين القائمة المنسدلة على خيارات من نوع 'تذكرة' فقط!"
"dropdownOption":"يمكن للوحة التي تحتوي على قائمة منسدلة أن تحتوي فقط على خيارات من الأنواع: 'ticket' أو 'role' أو 'sub-panel'.",
"customInvalidVersion":"الإصدار المحدد في الإعدادات غير متطابق! تأكد من تحديث الإعدادات إلى أحدث إصدار!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"عرض أوامر النص",
"helpPage":"صفحة {0}",
"withReason":"مع سبب",
"withoutTranscript": "بدون نص"
"withoutTranscript":"بدون نص",
"blacklistAdd":"إضافة المستخدم إلى القائمة السوداء",
"blacklistRemove":"إطلاق المستخدم"
},
"titles":{
"created":"تم إنشاء التذكرة",
@@ -132,6 +145,7 @@
"blacklistAddDm":"تمت إضافتك إلى القائمة السوداء",
"blacklistRemoveDm":"تمت إزالتك من القائمة السوداء",
"clear":"تم مسح التذاكر",
"clearTickets":"مسح التذاكر",
"roles":"تم تحديث الأدوار",
"autoclose":"تم إغلاق التذكرة تلقائيًا",
@@ -139,7 +153,13 @@
"autocloseDisabled":"تم تعطيل الإغلاق التلقائي",
"autodelete":"تم حذف التذكرة تلقائيًا",
"autodeleteEnabled":"تم تمكين الحذف التلقائي",
"autodeleteDisabled": "تم تعطيل الحذف التلقائي"
"autodeleteDisabled":"تم تعطيل الحذف التلقائي",
"topicSet":"تم تغيير الموضوع",
"prioritySet":"تم تغيير الأولوية",
"priorityGet":"أولوية التذكرة",
"transfer":"تم نقل التذكرة",
"transcripts":"سجل النصوص"
},
"descriptions":{
"create":"تم إنشاء تذكرتك. انقر على الزر أدناه للوصول إليها!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"يمكنك فقط إنشاء {0} تذكرة(ات) في نفس الوقت!",
"ticketMessageAutoclose":"ستغلق هذه التذكرة تلقائيًا عندما تكون غير نشطة لمدة {0} ساعة!",
"ticketMessageAutodelete":"ستحذف هذه التذكرة تلقائيًا عندما تكون غير نشطة لمدة {0} يوم!",
"panelReady": "يمكنك العثور على اللوحة أدناه!\nيمكن الآن حذف هذه الرسالة!"
"panelReady":"اللوحة متاحة في الرسالة التالية!\nيمكن الآن حذف هذه الرسالة!",
"topicSet":"تم تغيير موضوع القناة بنجاح بواسطة {0}!",
"prioritySet":"تم تغيير أولوية التذكرة إلى {0} بواسطة {1} بنجاح!",
"priorityGet":"الأولوية الحالية لهذه التذكرة هي {0}.",
"transfer":"تم نقل ملكية التذكرة من {0} إلى {1} بواسطة {2} بنجاح!"
},
"modal":{
"closePlaceholder":"لماذا أغلقت هذه التذكرة؟",
@@ -220,7 +245,16 @@
"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":"تم تحديث أدوارك في خادمنا!",
"topicSetLog":"تم تعيين أولوية هذه التذكرة إلى {0} بواسطة {1}.",
"topicSetDm":"تم تعيين أولوية تذكرتك إلى {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"إعادة المحاولة",
"continue":"حذف بدون نص",
"backup":"إنشاء نص احتياطي",
"error": "حدث خطأ أثناء محاولة إنشاء النص.\nماذا تريد أن تفعل؟\n\nلن يتم حذف هذه التذكرة حتى تضغط على أحد هذه الأزرار."
"error":"حدث خطأ أثناء محاولة إنشاء النص.\nماذا تريد أن تفعل؟\n\nلن يتم حذف هذه التذكرة حتى تضغط على أحد هذه الأزرار.",
"title":"خطأ في النسخ",
"noHistory":"لا يملك هذا المستخدم أي نصوص حتى الآن.",
"historyNotSupported":"سجل النصوص مدعوم حاليًا فقط مع HTML Transcripts.\nسيكون سجل النصوص النصية متاحًا في الإصدارات المستقبلية."
},
"text":{
"messagesTitle":"الرسائل",
"embedTitle":"EMBED",
"fileTitle":"ملف",
"fieldsTitle":"الحقول",
"reactionsTitle":"التفاعلات",
"statsTitle":"الإحصائيات",
"emptyContent":"<المحتوى فارغ>",
"noTitle":"<بدون-عنوان>",
"noDesc":"<بدون-وصف>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"لوحة غير معروفة",
"notInGuild":"غير موجود في الخادم",
"channelRename":"غير قادر على إعادة تسمية القناة",
"busy": "التذكرة مشغولة"
"channelCategory":"تعذر تغيير الفئة",
"busy":"التذكرة مشغولة",
"permissionError":"خطأ في الصلاحيات"
},
"descriptions":{
"askForInfo":"اتصل بمالك هذا البوت لمزيد من المعلومات!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"القناة الحالية ليست تذكرة صالحة! قد تكون تذكرة من إصدار قديم من Open Ticket!",
"notInGuild":"هذا {0} لا يعمل في DM! يرجى المحاولة مرة أخرى في خادم!",
"channelRename":"بسبب حدود معدل ديسكورد، من المستحيل حاليًا على البوت إعادة تسمية القناة. سيتم إعادة تسمية القناة تلقائيًا بعد 10 دقائق إذا لم يتم إعادة تشغيل البوت.",
"channelCategory":"بسبب حدود المعدل الخاصة بـ Discord، تعذر تغيير فئة القناة فورًا. سيتم تغييرها تلقائيًا خلال 10 دقائق إذا ظل البوت متصلاً.",
"channelRenameSource":"مصدر هذا الخطأ هو: {0}",
"busy": "غير قادر على استخدام هذا {0}!\nالتذكرة قيد المعالجة حاليًا بواسطة البوت.\n\nيرجى المحاولة مرة أخرى بعد بضع ثوانٍ!"
"busy":"غير قادر على استخدام هذا {0}!\nالتذكرة قيد المعالجة حاليًا بواسطة البوت.\n\nيرجى المحاولة مرة أخرى بعد بضع ثوانٍ!",
"closeBeforeMessage":"لا يمكن إغلاق/حذف هذه التذكرة قبل إرسال رسالة من مستخدم.",
"closeBeforeAdminMessage":"لا يمكن إغلاق/حذف هذه التذكرة قبل إرسال رسالة من مشرف تذاكر أو عضو دعم.",
"unableToCreateTicket":"لا يمكنك إنشاء تذكرة.",
"messageMissing":"تعذر العثور على رسالة التفاعل. استخدم الأمر `{0}` بدلاً من ذلك.",
"stateExpired":"لم تعد هذه العملية صالحة أو انتهت صلاحيتها. استخدم الأمر `{0}` بدلاً من ذلك. من الطبيعي ظهور هذا الخطأ بعد تحديث كبير لـ Open Ticket.",
"panelStateExpired":"لم تعد هذه اللوحة صالحة أو انتهت صلاحيتها. قم بإنشاء لوحة جديدة باستخدام `{0}` لحل المشكلة. من الطبيعي ظهور هذا الخطأ بعد تحديث كبير لـ Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"القيمة لا تتطابق مع النمط!",
@@ -331,7 +388,6 @@
"added":"تمت الإضافة",
"removed":"تمت الإزالة",
"filter":"تصفية",
"claimedBy": "مطالب بها من قبل {0}",
"method":"طريقة",
"type":"نوع",
"blacklisted":"محظور",
@@ -343,6 +399,8 @@
"syntax":"بناء الجملة",
"originalName":"الاسم الأصلي",
"newName":"الاسم الجديد",
"originalCategory":"الفئة الأصلية",
"newCategory":"الفئة الجديدة",
"until":"حتى",
"validOptions":"خيارات صالحة",
"validPanels":"لوحات صالحة",
@@ -352,10 +410,32 @@
"version":"إصدار",
"name":"اسم",
"role":"دور",
"status": "حالة",
"status":"الحالة",
"claimed":"مطالب بها",
"pinned":"مثبتة",
"creationDate": "تاريخ الإنشاء"
"creationDate":"تاريخ الإنشاء",
"noone":"لا أحد",
"open":"مفتوحة",
"closed":"مغلقة",
"priority":"الأولوية",
"participants":"المشاركون",
"yes":"نعم",
"no":"لا",
"accept":"قبول",
"cancel":"إلغاء",
"option":"خيار",
"topic":"الموضوع",
"uptime":"مدة تشغيل النظام",
"messages":"الرسائل",
"embeds":"EMBEDS",
"files":"الملفات",
"components":"المكونات",
"cooldown":"فترة الانتظار",
"maxTickets":"الحد الأقصى للتذاكر",
"admins":"المشرفون",
"roles":"الأدوار",
"size":"الحجم"
},
"lowercase":{
"text":"نص",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"هل تريد أن يتم تحديث هذه اللوحة تلقائيًا عند تعديلها؟",
"ticket":"قم بإنشاء تذكرة على الفور.",
"ticketId":"معرف التذكرة التي تريد إنشائها.",
"ticketOtherUser":"إنشاء تذكرة لمستخدم آخر.",
"close":"أغلق تذكرة.",
"delete":"احذف تذكرة.",
"deleteNoTranscript":"احذف هذه التذكرة دون إنشاء نص.",
@@ -384,6 +465,7 @@
"unclaim":"ألغِ مطالبة بتذكرة.",
"pin":"ثبّت تذكرة.",
"unpin":"ألغِ تثبيت تذكرة.",
"move":"انقل تذكرة.",
"moveId":"معرف الخيار الذي تريد الانتقال إليه.",
"rename":"أعد تسمية تذكرة.",
@@ -392,6 +474,7 @@
"addUser":"المستخدم الذي تريد إضافته.",
"remove":"إزالة مستخدم من تذكرة.",
"removeUser":"المستخدم الذي تريد إزالته.",
"blacklist":"إدارة القائمة السوداء للتذاكر.",
"blacklistView":"عرض قائمة بالمستخدمين المحظورين حاليًا.",
"blacklistAdd":"إضافة مستخدم إلى القائمة السوداء.",
@@ -405,6 +488,7 @@
"statsUserUser":"المستخدم الذي تريد عرض إحصائياته.",
"statsTicket":"عرض إحصائيات تذكرة في الخادم.",
"statsTicketTicket":"التذكرة التي تريد عرض إحصائياتها.",
"clear":"احذف عدة تذاكر في نفس الوقت.",
"clearFilter":"الفلتر لحذف التذاكر.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"غير مثبتة",
"autoclose":"مغلقة تلقائيًا"
},
"autoclose":"إدارة الإغلاق التلقائي في تذكرة.",
"autocloseDisable":"تعطيل الإغلاق التلقائي في هذه التذكرة.",
"autocloseEnable":"تمكين الإغلاق التلقائي في هذه التذكرة.",
@@ -424,7 +509,21 @@
"autodelete":"إدارة الحذف التلقائي في تذكرة.",
"autodeleteDisable":"تعطيل الحذف التلقائي في هذه التذكرة.",
"autodeleteEnable":"تمكين الحذف التلقائي في هذه التذكرة.",
"autodeleteEnableTime": "عدد الأيام التي تحتاجها هذه التذكرة لتكون غير نشطة لحذفها."
"autodeleteEnableTime":"عدد الأيام التي تحتاجها هذه التذكرة لتكون غير نشطة لحذفها.",
"topic":"إدارة موضوع قناة التذكرة.",
"topicSet":"تعيين موضوع قناة التذكرة.",
"topicValue":"الموضوع الجديد للقناة.",
"topicList":"الحصول على قائمة بجميع التذاكر مع مواضيعها وإحصائياتها.",
"priority":"إدارة أولوية التذكرة.",
"prioritySet":"تعيين أولوية التذكرة.",
"priorityValue":"أولوية القناة.",
"priorityGet":"الحصول على أولوية التذكرة.",
"priorityList":"الحصول على قائمة بجميع التذاكر مع حالة أولويتها.",
"transfer":"نقل ملكية التذكرة من مستخدم إلى آخر.",
"transferUser":"المستخدم الذي سيتم النقل إليه.",
"transcripts":"عرض سجل نصوص التذاكر لمستخدم.",
"transcriptsUser":"المستخدم المراد عرضه."
},
"helpMenu":{
"help":"احصل على قائمة بجميع الأوامر المتاحة.",
@@ -452,7 +551,16 @@
"autocloseDisable":"تعطيل الإغلاق التلقائي في هذه التذكرة.",
"autocloseEnable":"تمكين الإغلاق التلقائي في هذه الت ذكرة.",
"autodeleteDisable":"تعطيل الحذف التلقائي في هذه التذكرة.",
"autodeleteEnable": "تمكين الحذف التلقائي في هذه التذكرة."
"autodeleteEnable":"تمكين الحذف التلقائي في هذه التذكرة.",
"categories":{
"general":"الأوامر العامة",
"basicTicket":"أوامر التذاكر الأساسية",
"advancedTicket":"أوامر التذاكر المتقدمة",
"userTicket":"أوامر تذاكر المستخدم",
"admin":"أوامر المشرف",
"advanced":"أوامر متقدمة",
"extra":"أوامر إضافية"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"إحصائيات النظام",
"user":"إحصائيات المستخدم",
"ticket":"إحصائيات التذكرة",
"participants": "المشاركون"
"participants":"المشاركون",
"messages":"الرسائل"
},
"properties":{
"ticketsCreated":"التذاكر التي تم إنشاؤها",
@@ -472,7 +581,48 @@
"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":"اختر خيارك",
"selectPriorityLevel":"اختر مستوى الأولوية"
},
"priorities":{
"urgent":"عاجل",
"veryHigh":"عالية جدًا",
"high":"عالية",
"normal":"عادية",
"low":"منخفضة",
"veryLow":"منخفضة جدًا",
"none":"بدون"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["HanumeshGupta"],
"lastedited":"19/06/2025",
"lastedited":"25/05/2026",
"language":"Bengali",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"এই স্ট্রিংটিতে {0} থাকতে হবে!",
"stringChoices":"এই স্ট্রিংটি শুধুমাত্র নিম্নলিখিত মানগুলির একটি হতে পারে: {0}!",
"stringRegex":"এই স্ট্রিংটি অবৈধ!",
"stringInvertedContains":"এই স্ট্রিং-এ {0} থাকতে পারবে না!",
"stringLowercase":"এই স্ট্রিং শুধুমাত্র ছোট অক্ষরে লিখতে হবে!",
"stringUppercase":"এই স্ট্রিং শুধুমাত্র বড় অক্ষরে লিখতে হবে!",
"stringSpecialCharacters":"এই স্ট্রিং-এ কোনো বিশেষ চিহ্ন থাকতে পারবে না! (শুধুমাত্র a-z, 0-9 এবং স্পেস)",
"stringNoSpaces":"এই স্ট্রিং-এ স্পেস থাকতে পারবে না!",
"stringCapitalWord":"প্রতিটি শব্দ বড় অক্ষরে শুরু করা সুপারিশ করা হয়!",
"stringCapitalSentence":"দেখতে মনে হচ্ছে এই স্ট্রিং-এ কিছু বাক্য বড় অক্ষরে শুরু হয়নি!",
"stringPunctuation":"দেখতে মনে হচ্ছে এই স্ট্রিং-এর বাক্যটি পূর্ণবিরাম চিহ্নে শেষ হয়নি!",
"numberTooShort":"এই সংখ্যাটি {0} অঙ্কের চেয়ে ছোট হতে পারে না!",
"numberTooLong":"এই সংখ্যাটি {0} অঙ্কের চেয়ে বড় হতে পারে না!",
@@ -48,6 +56,8 @@
"numberNegative":"এই সংখ্যাটি ঋণাত্মক হতে পারে না!",
"numberPositive":"এই সংখ্যাটি ধনাত্মক হতে পারে না!",
"numberZero":"এই সংখ্যাটি শূন্য হতে পারে না!",
"numberNan":"এই সংখ্যা NaN (সংখ্যা নয়) হতে পারে না!",
"numberInvertedContains":"এই সংখ্যায় {0} থাকতে পারবে না!",
"booleanTrue":"এই বুলিয়ানটি সত্য হতে পারে না!",
"booleanFalse":"এই বুলিয়ানটি মিথ্যা হতে পারে না!",
@@ -89,7 +99,8 @@
"invalidButton":"এই বাটনটিতে কমপক্ষে একটি {0} বা {1} থাকতে হবে!",
"unusedOption":"অপশন {0} কোথাও ব্যবহার করা হয়নি!",
"unusedQuestion":"প্রশ্ন {0} কোথাও ব্যবহার করা হয়নি!",
"dropdownOption": "ড্রপডাউন সক্রিয় থাকা একটি প্যানেল শুধুমাত্র 'টিকেট' টাইপের অপশন ধারণ করতে পারে!"
"dropdownOption":"ড্রপডাউনসহ একটি প্যানেলে শুধুমাত্র এই ধরনের অপশন থাকতে পারে: 'ticket', 'role' বা 'sub-panel'।",
"customInvalidVersion":"আপনার কনফিগারেশনে উল্লেখিত সংস্করণ মেলছে না! নিশ্চিত করুন যে কনফিগারেশন সর্বশেষ সংস্করণে আপডেট হয়েছে!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"টেক্সট কমান্ড দেখুন",
"helpPage":"পৃষ্ঠা {0}",
"withReason":"কারণ সহ",
"withoutTranscript": "ট্রান্সক্রিপ্ট ছাড়া"
"withoutTranscript":"ট্রান্সক্রিপ্ট ছাড়া",
"blacklistAdd":"ব্যবহারকারীকে ব্ল্যাকলিস্টে যোগ করুন",
"blacklistRemove":"ব্যবহারকারীকে মুক্ত করুন"
},
"titles":{
"created":"টিকেট তৈরি হয়েছে",
@@ -132,6 +145,7 @@
"blacklistAddDm":"ব্ল্যাকলিস্টে যোগ করা হয়েছে",
"blacklistRemoveDm":"ব্ল্যাকলিস্ট থেকে সরানো হয়েছে",
"clear":"টিকেট সাফ করা হয়েছে",
"clearTickets":"টিকিট মুছে ফেলা",
"roles":"ভূমিকা আপডেট করা হয়েছে",
"autoclose":"টিকেট স্বয়ংক্রিয়ভাবে বন্ধ হয়েছে",
@@ -139,7 +153,13 @@
"autocloseDisabled":"স্বয়ংক্রিয় বন্ধ নিষ্ক্রিয়",
"autodelete":"টিকেট স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়েছে",
"autodeleteEnabled":"স্বয়ংক্রিয় মুছে ফেলা সক্রিয়",
"autodeleteDisabled": "স্বয়ংক্রিয় মুছে ফেলা নিষ্ক্রিয়"
"autodeleteDisabled":"স্বয়ংক্রিয় মুছে ফেলা নিষ্ক্রিয়",
"topicSet":"বিষয় পরিবর্তিত হয়েছে",
"prioritySet":"অগ্রাধিকার পরিবর্তিত হয়েছে",
"priorityGet":"টিকিটের অগ্রাধিকার",
"transfer":"টিকিট স্থানান্তরিত হয়েছে",
"transcripts":"ট্রান্সক্রিপ্ট ইতিহাস"
},
"descriptions":{
"create":"আপনার টিকেট তৈরি করা হয়েছে। এটি অ্যাক্সেস করতে নীচের বাটনে ক্লিক করুন!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"আপনি একই সময়ে শুধুমাত্র {0} টি টিকেট তৈরি করতে পারেন!",
"ticketMessageAutoclose":"এই টিকেটটি {0}ঘণ্টা নিষ্ক্রিয় থাকলে স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে!",
"ticketMessageAutodelete":"এই টিকেটটি {0} দিন নিষ্ক্রিয় থাকলে স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে!",
"panelReady": "আপনি নীচে প্যানেলটি খুঁজে পেতে পারেন!\nএই বার্তাটি এখন মুছে ফেলা যাবে!"
"panelReady":"প্যানেলটি ফলোআপ বার্তায় উপলব্ধ!\nএখন এই বার্তাটি মুছে ফেলা যেতে পারে!",
"topicSet":"চ্যানেলের বিষয় {0} দ্বারা সফলভাবে পরিবর্তন করা হয়েছে!",
"prioritySet":"টিকিটের অগ্রাধিকার {1} দ্বারা {0} এ সফলভাবে পরিবর্তন করা হয়েছে!",
"priorityGet":"এই টিকিটের বর্তমান অগ্রাধিকার হলো {0}.",
"transfer":"টিকিটের মালিকানা {2} দ্বারা {0} থেকে {1}-এ সফলভাবে স্থানান্তরিত হয়েছে!"
},
"modal":{
"closePlaceholder":"আপনি কেন এই টিকেটটি বন্ধ করলেন?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} কে ব্ল্যাকলিস্ট থেকে সরানো হয়েছে {1} দ্বারা!",
"blacklistAddDm":"আপনাকে আমাদের সার্ভারে ব্ল্যাকলিস্ট করা হয়েছে!\nএখন থেকে, আপনি একটি টিকেট তৈরি করতে পারবেন না!",
"blacklistRemoveDm":"আপনাকে আমাদের সার্ভারের ব্ল্যাকলিস্ট থেকে সরানো হয়েছে!\nএখন আপনি আবার টিকেট তৈরি করতে পারবেন!",
"clearLog": "{0} টি টিকেট মুছে ফেলা হয়েছে {1} দ্বারা!"
"clearLog":"{0} টি টিকেট মুছে ফেলা হয়েছে {1} দ্বারা!",
"transferLog":"এই টিকিটের মালিকানা {2} দ্বারা {0} থেকে {1}-এ স্থানান্তরিত হয়েছে!",
"transferDm":"আপনার টিকিটের মালিকানা আমাদের সার্ভারে {0} থেকে {1}-এ স্থানান্তরিত হয়েছে!",
"prioritySetLog":"এই টিকিটের অগ্রাধিকার {1} দ্বারা {0}-এ পরিবর্তিত হয়েছে!",
"prioritySetDm":"আপনার টিকিটের অগ্রাধিকার আমাদের সার্ভারে {0}-এ পরিবর্তিত হয়েছে!",
"roleUpdateLog":"{0} তাদের ভূমিকা আপডেট করেছেন!",
"roleUpdateDm":"আপনার সার্ভারে ভূমিকা আপডেট করা হয়েছে!",
"topicSetLog":"এই টিকিটের অগ্রাধিকার {1} দ্বারা {0} এ সেট করা হয়েছে।",
"topicSetDm":"আপনার টিকিটের অগ্রাধিকার {0} এ সেট করা হয়েছে।"
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"পুনরায় চেষ্টা করুন",
"continue":"ট্রান্সক্রিপ্ট ছাড়া মুছুন",
"backup":"ব্যাকআপ ট্রান্সক্রিপ্ট তৈরি করুন",
"error": "ট্রান্সক্রিপ্ট তৈরি করার সময় কিছু ভুল হয়েছে।\nআপনি কি করতে চান?\n\nআপনি এই বাটনগুলির একটিতে ক্লিক না করা পর্যন্ত এই টিকেটটি মুছে ফেলা হবে না।"
"error":"ট্রান্সক্রিপ্ট তৈরি করার সময় কিছু ভুল হয়েছে।\nআপনি কি করতে চান?\n\nআপনি এই বাটনগুলির একটিতে ক্লিক না করা পর্যন্ত এই টিকেটটি মুছে ফেলা হবে না।",
"title":"ট্রান্সক্রিপ্ট ত্রুটি",
"noHistory":"এই ব্যবহারকারীর এখনও কোনো ট্রান্সক্রিপ্ট নেই।",
"historyNotSupported":"ট্রান্সক্রিপ্ট ইতিহাস বর্তমানে শুধুমাত্র HTML Transcripts-এর সাথে সমর্থিত।\nটেক্সট ট্রান্সক্রিপ্ট ইতিহাস ভবিষ্যৎ সংস্করণে উপলব্ধ হবে।"
},
"text":{
"messagesTitle":"বার্তা",
"embedTitle":"এম্বেড",
"fileTitle":"ফাইল",
"fieldsTitle":"ফিল্ড",
"reactionsTitle":"প্রতিক্রিয়া",
"statsTitle":"পরিসংখ্যান",
"emptyContent":"<কোনো কনটেন্ট নেই>",
"noTitle":"<শিরোনাম নেই>",
"noDesc":"<বর্ণনা নেই>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"অজানা প্যানেল",
"notInGuild":"সার্ভারে নেই",
"channelRename":"চ্যানেলের নাম পরিবর্তন করতে অক্ষম",
"busy": "টিকেট ব্যস্ত"
"channelCategory":"ক্যাটাগরি পরিবর্তন করা যায়নি",
"busy":"টিকেট ব্যস্ত",
"permissionError":"অনুমতি ত্রুটি"
},
"descriptions":{
"askForInfo":"আরও তথ্যের জন্য এই বটের মালিকের সাথে যোগাযোগ করুন!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"বর্তমান চ্যানেলটি একটি বৈধ টিকেট নয়! এটি Open Ticket-এর পুরানো সংস্করণের একটি টিকেট হতে পারে!",
"notInGuild":"এই {0} DM-এ কাজ করে না! অনুগ্রহ করে এটি একটি সার্ভারে আবার চেষ্টা করুন!",
"channelRename":"ডিসকর্ড রেটলিমিটের কারণে, বটের পক্ষে চ্যানেলের নাম পরিবর্তন করা বর্তমানে অসম্ভব। বট রিবুট না করা হলে চ্যানেলটি ১০ মিনিটের মধ্যে স্বয়ংক্রিয়ভাবে নাম পরিবর্তন করা হবে।",
"channelCategory":"Discord রেট সীমার কারণে চ্যানেলের ক্যাটাগরি তাৎক্ষণিকভাবে পরিবর্তন করা সম্ভব নয়। বট অনলাইনে থাকলে এটি 10 মিনিটের মধ্যে স্বয়ংক্রিয়ভাবে পরিবর্তিত হবে।",
"channelRenameSource":"এই ত্রুটির উৎস হল: {0}",
"busy": "এই {0} ব্যবহার করতে অক্ষম!\nটিকেটটি বর্তমানে বট দ্বারা প্রক্রিয়াধীন রয়েছে।\n\nঅনুগ্রহ করে কয়েক সেকেন্ড পর আবার চেষ্টা করুন!"
"busy":"এই {0} ব্যবহার করতে অক্ষম!\nটিকেটটি বর্তমানে বট দ্বারা প্রক্রিয়াধীন রয়েছে।\n\nঅনুগ্রহ করে কয়েক সেকেন্ড পর আবার চেষ্টা করুন!",
"closeBeforeMessage":"একজন ব্যবহারকারী বার্তা পাঠানোর আগে এই টিকিট বন্ধ/মুছে ফেলা যাবে না।",
"closeBeforeAdminMessage":"একজন টিকিট অ্যাডমিন বা সাপোর্ট সদস্য বার্তা পাঠানোর আগে এই টিকিট বন্ধ/মুছে ফেলা যাবে না।",
"unableToCreateTicket":"আপনি টিকিট তৈরি করতে পারবেন না।",
"messageMissing":"ইন্টারঅ্যাকশনের বার্তা খুঁজে পাওয়া যায়নি। পরিবর্তে `{0}` কমান্ড ব্যবহার করুন।",
"stateExpired":"এই ইন্টারঅ্যাকশন আর বৈধ নয় বা মেয়াদোত্তীর্ণ হয়েছে। পরিবর্তে `{0}` কমান্ড ব্যবহার করুন। Open Ticket-এর বড় আপডেটের পরে এটি স্বাভাবিক।",
"panelStateExpired":"এই প্যানেল আর বৈধ নয় বা মেয়াদোত্তীর্ণ হয়েছে। সমস্যা সমাধানের জন্য `{0}` ব্যবহার করে একটি নতুন প্যানেল তৈরি করুন। Open Ticket-এর বড় আপডেটের পরে এটি স্বাভাবিক।"
},
"optionInvalidReasons":{
"stringRegex":"মান প্যাটার্নের সাথে মেলে না!",
@@ -331,7 +388,6 @@
"added":"যোগ করা হয়েছে",
"removed":"সরানো হয়েছে",
"filter":"ফিল্টার",
"claimedBy": "{0} দ্বারা দাবি করা হয়েছে",
"method":"পদ্ধতি",
"type":"ধরন",
"blacklisted":"ব্ল্যাকলিস্টেড",
@@ -343,6 +399,8 @@
"syntax":"সিনট্যাক্স",
"originalName":"আসল নাম",
"newName":"নতুন নাম",
"originalCategory":"মূল ক্যাটাগরি",
"newCategory":"নতুন ক্যাটাগরি",
"until":"যতক্ষণ না",
"validOptions":"বৈধ অপশনসমূহ",
"validPanels":"বৈধ প্যানেলসমূহ",
@@ -352,10 +410,32 @@
"version":"সংস্করণ",
"name":"নাম",
"role":"রোল",
"status": "স্থিতি",
"status":"অবস্থা",
"claimed":"দাবি করা হয়েছে",
"pinned":"পিন করা হয়েছে",
"creationDate": "তৈরির তারিখ"
"creationDate":"তৈরির তারিখ",
"noone":"কেউ নয়",
"open":"খোলা",
"closed":"বন্ধ",
"priority":"অগ্রাধিকার",
"participants":"অংশগ্রহণকারী",
"yes":"হ্যাঁ",
"no":"না",
"accept":"গ্রহণ করুন",
"cancel":"বাতিল",
"option":"বিকল্প",
"topic":"বিষয়",
"uptime":"সিস্টেম চালু সময়",
"messages":"বার্তা",
"embeds":"এম্বেড",
"files":"ফাইল",
"components":"কম্পোনেন্ট",
"cooldown":"কুলডাউন",
"maxTickets":"সর্বোচ্চ টিকিট",
"admins":"অ্যাডমিন",
"roles":"ভূমিকা",
"size":"আকার"
},
"lowercase":{
"text":"টেক্সট",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"আপনি কি এই প্যানেলটিকে সম্পাদনা করার সময় স্বয়ংক্রিয়ভাবে আপডেট করতে চান?",
"ticket":"তাৎক্ষণিকভাবে একটি টিকেট তৈরি করুন।",
"ticketId":"আপনি যে টিকেট তৈরি করতে চান তার আইডেন্টিফায়ার।",
"ticketOtherUser":"অন্য ব্যবহারকারীর জন্য একটি টিকিট তৈরি করুন।",
"close":"একটি টিকেট বন্ধ করুন।",
"delete":"একটি টিকেট মুছুন।",
"deleteNoTranscript":"ট্রান্সক্রিপ্ট তৈরি না করে এই টিকেটটি মুছুন।",
@@ -384,6 +465,7 @@
"unclaim":"একটি টিকেট দাবি ত্যাগ করুন।",
"pin":"একটি টিকেট পিন করুন।",
"unpin":"একটি টিকেট আনপিন করুন।",
"move":"একটি টিকেট সরান।",
"moveId":"আপনি যে অপশনে সরাতে চান তার আইডেন্টিফায়ার।",
"rename":"একটি টিকেটের নাম পরিবর্তন করুন।",
@@ -392,6 +474,7 @@
"addUser":"যোগ করার ব্যবহারকারী।",
"remove":"একটি টিকেট থেকে ব্যবহারকারী সরান।",
"removeUser":"সরানোর ব্যবহারকারী।",
"blacklist":"টিকেট ব্ল্যাকলিস্ট পরিচালনা করুন।",
"blacklistView":"বর্তমান ব্ল্যাকলিস্টের তালিকা দেখুন।",
"blacklistAdd":"ব্ল্যাকলিস্টে একজন ব্যবহারকারী যোগ করুন।",
@@ -405,6 +488,7 @@
"statsUserUser":"দেখার জন্য ব্যবহারকারী।",
"statsTicket":"সার্ভারে একটি টিকেটের পরিসংখ্যান দেখুন।",
"statsTicketTicket":"দেখার জন্য টিকেট।",
"clear":"একই সময়ে একাধিক টিকেট মুছুন।",
"clearFilter":"টিকেট সাফ করার জন্য ফিল্টার।",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"আনপিন করা",
"autoclose":"স্বয়ংক্রিয় বন্ধ"
},
"autoclose":"একটি টিকেটে স্বয়ংক্রিয় বন্ধ পরিচালনা করুন।",
"autocloseDisable":"এই টিকেটে স্বয়ংক্রিয় বন্ধ নিষ্ক্রিয় করুন।",
"autocloseEnable":"এই টিকেটে স্বয়ংক্রিয় বন্ধ সক্রিয় করুন।",
@@ -424,7 +509,21 @@
"autodelete":"একটি টিকেটে স্বয়ংক্রিয় মুছে ফেলা পরিচালনা করুন।",
"autodeleteDisable":"এই টিকেটে স্বয়ংক্রিয় মুছে ফেলা নিষ্ক্রিয় করুন।",
"autodeleteEnable":"এই টিকেটে স্বয়ংক্রিয় মুছে ফেলা সক্রিয় করুন।",
"autodeleteEnableTime": "এই টিকেটটি মুছে ফেলার জন্য কত দিন নিষ্ক্রিয় থাকতে হবে।"
"autodeleteEnableTime":"এই টিকেটটি মুছে ফেলার জন্য কত দিন নিষ্ক্রিয় থাকতে হবে।",
"topic":"টিকিট চ্যানেলের বিষয় পরিচালনা করুন।",
"topicSet":"টিকিট চ্যানেলের বিষয় সেট করুন।",
"topicValue":"চ্যানেলের নতুন বিষয়।",
"topicList":"সমস্ত টিকিটের তালিকা এবং তাদের বিষয় এবং পরিসংখ্যান দেখুন।",
"priority":"টিকিটের অগ্রাধিকার পরিচালনা করুন।",
"prioritySet":"টিকিটের অগ্রাধিকার সেট করুন।",
"priorityValue":"চ্যানেলের অগ্রাধিকার।",
"priorityGet":"টিকিটের অগ্রাধিকার দেখুন।",
"priorityList":"সমস্ত টিকিটের তালিকা এবং তাদের অগ্রাধিকার দেখুন।",
"transfer":"একজন ব্যবহারকারীর থেকে অন্য ব্যবহারকারীর কাছে টিকিটের মালিকানা স্থানান্তর করুন।",
"transferUser":"যার কাছে স্থানান্তর করতে হবে সেই ব্যবহারকারী।",
"transcripts":"একজন ব্যবহারকারীর টিকিট ট্রান্সক্রিপ্ট ইতিহাস দেখুন।",
"transcriptsUser":"যে ব্যবহারকারীকে দেখতে হবে।"
},
"helpMenu":{
"help":"সমস্ত উপলব্ধ কমান্ডের তালিকা পান।",
@@ -452,7 +551,16 @@
"autocloseDisable":"এই টিকেটে স্বয়ংক্রিয় বন্ধ নিষ্ক্রিয় করুন।",
"autocloseEnable":"এই টিকেটে স্বয়ংক্রিয় বন্ধ সক্রিয় করুন।",
"autodeleteDisable":"এই টিকেটে স্বয়ংক্রিয় মুছে ফেলা নিষ্ক্রিয় করুন।",
"autodeleteEnable": "এই টিকেটে স্বয়ংক্রিয় মুছে ফেলা সক্রিয় করুন।"
"autodeleteEnable":"এই টিকেটে স্বয়ংক্রিয় মুছে ফেলা সক্রিয় করুন।",
"categories":{
"general":"সাধারণ কমান্ড",
"basicTicket":"বেসিক টিকিট কমান্ড",
"advancedTicket":"উন্নত টিকিট কমান্ড",
"userTicket":"ব্যবহারকারী টিকিট কমান্ড",
"admin":"অ্যাডমিন কমান্ড",
"advanced":"উন্নত কমান্ড",
"extra":"অতিরিক্ত কমান্ড"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"সিস্টেম পরিসংখ্যান",
"user":"ব্যবহারকারী পরিসংখ্যান",
"ticket":"টিকেট পরিসংখ্যান",
"participants": "অংশগ্রহণকারী"
"participants":"অংশগ্রহণকারী",
"messages":"বার্তা"
},
"properties":{
"ticketsCreated":"টিকেট তৈরি হয়েছে",
@@ -472,7 +581,48 @@
"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":"আপনার বিকল্প নির্বাচন করুন",
"selectPriorityLevel":"অগ্রাধিকার স্তর নির্বাচন করুন"
},
"priorities":{
"urgent":"জরুরি",
"veryHigh":"খুব উচ্চ",
"high":"উচ্চ",
"normal":"সাধারণ",
"low":"নিম্ন",
"veryLow":"খুব নিম্ন",
"none":"কোনোটি নয়"
}
}
+167 -17
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["guillee3"],
"lastedited":"21/08/2024",
"lastedited":"25/05/2026",
"language":"Catalan",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Aquesta cadena ha de contenir {0}!",
"stringChoices":"Aquesta cadena només pot ser un dels valors següents: {0}!",
"stringRegex":"Aquesta cadena és invàlida!",
"stringInvertedContains":"Aquesta cadena no pot contenir {0}!",
"stringLowercase":"Aquesta cadena ha d'estar escrita només en minúscules!",
"stringUppercase":"Aquesta cadena ha d'estar escrita només en majúscules!",
"stringSpecialCharacters":"Aquesta cadena no pot contenir cap caràcter especial! (només a-z, 0-9 i espai)",
"stringNoSpaces":"Aquesta cadena no pot contenir espais!",
"stringCapitalWord":"Es recomana que cada paraula d'aquesta cadena comenci amb una lletra majúscula!",
"stringCapitalSentence":"Sembla que algunes frases d'aquesta cadena no comencen amb una lletra majúscula!",
"stringPunctuation":"Sembla que la frase d'aquesta cadena no acaba amb un signe de puntuació!",
"numberTooShort":"Aquest nombre no pot tenir menys de {0} caràcters!",
"numberTooLong":"Aquest nombre no pot tenir més de {0} caràcters!",
@@ -48,6 +56,8 @@
"numberNegative":"Aquest nombre no pot ser negatiu!",
"numberPositive":"Aquest nombre no pot ser positiu!",
"numberZero":"Aquest nombre no pot ser zero!",
"numberNan":"Aquest número no pot ser NaN (Not A Number)!",
"numberInvertedContains":"Aquest número no pot contenir {0}!",
"booleanTrue":"Aquest booleà no pot ser veritable!",
"booleanFalse":"Aquest booleà no pot ser fals!",
@@ -89,7 +99,8 @@
"invalidButton":"Aquest botó ha de tenir almenys un {0} o {1}!",
"unusedOption":"L'opció {0} no s'utilitza enlloc!",
"unusedQuestion":"La pregunta {0} no s'utilitza enlloc!",
"dropdownOption":"Un panell amb desplegable activat només pot contenir opcions del tipus 'ticket'!"
"dropdownOption":"Un panell amb desplegable només pot contenir opcions dels tipus: 'ticket', 'role' o 'sub-panel'.",
"customInvalidVersion":"La versió especificada a la teva configuració no coincideix! Assegura't d'haver actualitzat la configuració a la versió més recent!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Veure Comandes de Text",
"helpPage":"Pàgina {0}",
"withReason":"Amb Motiu",
"withoutTranscript":"Sense Transcripció"
"withoutTranscript":"Sense Transcripció",
"blacklistAdd":"Afegir Usuari a la Llista Negra",
"blacklistRemove":"Alliberar Usuari"
},
"titles":{
"created":"Ticket Creat",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Afegit a la Llista Negra",
"blacklistRemoveDm":"Eliminat de la Llista Negra",
"clear":"Tickets Netejats",
"clearTickets":"Netejar Tickets",
"roles":"Rols Actualitzats",
"autoclose":"Ticket Tancat Automàticament",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Tancament Automàtic Desactivat",
"autodelete":"Ticket Eliminat Automàticament",
"autodeleteEnabled":"Eliminació Automàtica Activada",
"autodeleteDisabled":"Eliminació Automàtica Desactivada"
"autodeleteDisabled":"Eliminació Automàtica Desactivada",
"topicSet":"Tema Canviat",
"prioritySet":"Prioritat Canviada",
"priorityGet":"Prioritat del Ticket",
"transfer":"Ticket Transferit",
"transcripts":"Historial de Transcripcions"
},
"descriptions":{
"create":"El teu ticket ha estat creat. Fes clic al botó a continuació per accedir-hi!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Només pots crear {0} ticket(s) al mateix temps!",
"ticketMessageAutoclose":"Aquest ticket es tancarà automàticament quan estigui inactiu durant {0}h!",
"ticketMessageAutodelete":"Aquest ticket es eliminarà automàticament quan estigui inactiu durant {0} dies!",
"panelReady":"Pots trobar el panell a continuació!\nAquest missatge ara es pot eliminar!"
"panelReady":"El panell està disponible en el missatge de seguiment!\nAquest missatge es pot eliminar ara!",
"topicSet":"El tema del canal ha estat canviat per {0} amb èxit!",
"prioritySet":"La prioritat del ticket ha estat canviada a {0} per {1} amb èxit!",
"priorityGet":"La prioritat actual d'aquest ticket és {0}.",
"transfer":"La propietat del ticket ha estat transferida de {0} a {1} per {2} amb èxit!"
},
"modal":{
"closePlaceholder":"Per què has tancat aquest ticket?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} ha estat eliminat de la llista negra per {1}!",
"blacklistAddDm":"Has estat afegit a la llista negra al nostre servidor!\nA partir d'ara, no pots crear cap ticket!",
"blacklistRemoveDm":"Has estat eliminat de la llista negra al nostre servidor!\nAra pots crear tickets de nou!",
"clearLog":"{0} tickets han estat eliminats per {1}!"
"clearLog":"{0} tickets han estat eliminats per {1}!",
"transferLog":"La propietat d'aquest ticket ha estat transferida de {0} a {1} per {2}!",
"transferDm":"La propietat del teu ticket ha estat transferida de {0} a {1} al nostre servidor!",
"prioritySetLog":"La prioritat d'aquest ticket ha estat canviada a {0} per {1}!",
"prioritySetDm":"La prioritat del teu ticket ha estat canviada a {0} al nostre servidor!",
"roleUpdateLog":"{0} ha actualitzat els seus rols!",
"roleUpdateDm":"Els teus rols al nostre servidor han estat actualitzats!",
"topicSetLog":"La prioritat d'aquest tiquet ha estat establerta a {0} per {1}.",
"topicSetDm":"La prioritat del teu tiquet ha estat establerta a {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Torna-ho a intentar",
"continue":"Elimina Sense Transcripció",
"backup":"Crea Transcripció de Backup",
"error":"Alguna cosa ha anat malament mentre intentàvem crear la transcripció.\nQuè t'agradaria fer?\n\nAquest ticket no s'eliminarà fins que facis clic en un d'aquests botons."
"error":"Alguna cosa ha anat malament mentre intentàvem crear la transcripció.\nQuè t'agradaria fer?\n\nAquest ticket no s'eliminarà fins que facis clic en un d'aquests botons.",
"title":"Error de transcripció",
"noHistory":"Aquest usuari encara no té cap transcripció.",
"historyNotSupported":"L'historial de transcripcions només és compatible actualment amb HTML Transcripts.\nL'historial de transcripcions de text estarà disponible en futures versions."
},
"text":{
"messagesTitle":"MISSATGES",
"embedTitle":"EMBED",
"fileTitle":"FITXER",
"fieldsTitle":"CAMPS",
"reactionsTitle":"REACCIONS",
"statsTitle":"ESTADÍSTIQUES",
"emptyContent":"<el contingut està buit>",
"noTitle":"<sense títol>",
"noDesc":"<sense descripció>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Panell Desconegut",
"notInGuild":"No Ets Al Servidor",
"channelRename":"No Es Pot Canviar El Nom Del Canal",
"busy":"El Ticket Està Ocupat"
"channelCategory":"No Es Pot Canviar la Categoria",
"busy":"El Ticket Està Ocupat",
"permissionError":"Error de Permisos"
},
"descriptions":{
"askForInfo":"Contacta amb el propietari d'aquest bot per obtenir més informació!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"El canal actual no és un ticket vàlid! Pot ser que fos un ticket d'una versió antiga de Open Ticket!",
"notInGuild":"Aquest {0} no funciona en DM! Si us plau, torna a intentar-ho en un servidor!",
"channelRename":"Degut a les limitacions de discord, actualment és impossible per al bot canviar el nom del canal. El canal es canviarà automàticament en 10 minuts si el bot no es reinicia.",
"channelCategory":"A causa dels límits de Discord, la categoria del canal no es pot canviar immediatament. Es canviarà automàticament en 10 minuts si el bot continua en línia.",
"channelRenameSource":"La font d'aquest error és: {0}",
"busy":"No es pot utilitzar aquest {0}!\nEl ticket està sent processat pel bot.\n\nSi us plau, torna a intentar-ho en uns segons!"
"busy":"No es pot utilitzar aquest {0}!\nEl ticket està sent processat pel bot.\n\nSi us plau, torna a intentar-ho en uns segons!",
"closeBeforeMessage":"Aquest ticket no pot ser tancat/eliminat abans que un usuari hagi enviat un missatge.",
"closeBeforeAdminMessage":"Aquest ticket no pot ser tancat/eliminat abans que un administrador o membre de suport hagi enviat un missatge.",
"unableToCreateTicket":"No pots crear cap ticket.",
"messageMissing":"No s'ha pogut localitzar el missatge de la interacció. Utilitza el comandament `{0}` en el seu lloc.",
"stateExpired":"Aquesta interacció ja no és vàlida o ha expirat. Utilitza el comandament `{0}` en el seu lloc. És normal rebre aquest error després d'una actualització important d'Open Ticket.",
"panelStateExpired":"Aquest panell ja no és vàlid o ha expirat. Crea un nou panell utilitzant `{0}` per solucionar el problema. És normal rebre aquest error després d'una actualització important d'Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"El valor no coincideix amb el patró!",
@@ -331,7 +388,6 @@
"added":"Afegit",
"removed":"Eliminat",
"filter":"Filtre",
"claimedBy":"Reclamat Per {0}",
"method":"Mètode",
"type":"Tipus",
"blacklisted":"Llista Negra",
@@ -343,6 +399,8 @@
"syntax":"Sintaxi",
"originalName":"Nom Original",
"newName":"Nom Nou",
"originalCategory":"Categoria Original",
"newCategory":"Nova Categoria",
"until":"Fins a",
"validOptions":"Opcions Vàlides",
"validPanels":"Panells Vàlids",
@@ -355,7 +413,29 @@
"status":"Estat",
"claimed":"Reclamat",
"pinned":"Fixat",
"creationDate":"Data de Creació"
"creationDate":"Data de Creació",
"noone":"Ningú",
"open":"Obert",
"closed":"Tancat",
"priority":"Prioritat",
"participants":"Participants",
"yes":"Si",
"no":"No",
"accept":"Acceptar",
"cancel":"Cancel·lar",
"option":"Opció",
"topic":"Tema",
"uptime":"Temps d'Activitat del Sistema",
"messages":"Missatges",
"embeds":"Embeds",
"files":"Fitxers",
"components":"Components",
"cooldown":"Refredament",
"maxTickets":"Max Tickets",
"admins":"Admins",
"roles":"Rols",
"size":"Mida"
},
"lowercase":{
"text":"text",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Vols que aquest panell s'actualitzi automàticament quan s'edita?",
"ticket":"Crea instantàniament un ticket.",
"ticketId":"L'identificador del ticket que vols crear.",
"ticketOtherUser":"Crea un tiquet per a un altre usuari.",
"close":"Tanca un ticket.",
"delete":"Elimina un ticket.",
"deleteNoTranscript":"Elimina aquest ticket sense crear una transcripció.",
@@ -384,6 +465,7 @@
"unclaim":"Allibera un ticket.",
"pin":"Fixa un ticket.",
"unpin":"Desfixa un ticket.",
"move":"Mou un ticket.",
"moveId":"L'identificador de l'opció a la qual vols moure't.",
"rename":"Renomena un ticket.",
@@ -392,6 +474,7 @@
"addUser":"L'usuari a afegir.",
"remove":"Elimina un usuari d'un ticket.",
"removeUser":"L'usuari a eliminar.",
"blacklist":"Gestiona la llista negra de tickets.",
"blacklistView":"Veure una llista de l'actual llista negra.",
"blacklistAdd":"Afegeix un usuari a la llista negra.",
@@ -405,6 +488,7 @@
"statsUserUser":"L'usuari del qual vols veure les estadístiques.",
"statsTicket":"Veure les estadístiques d'un ticket al servidor.",
"statsTicketTicket":"El ticket que vols veure.",
"clear":"Elimina múltiples tickets al mateix temps.",
"clearFilter":"El filtre per a la neteja de tickets.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Desfixats",
"autoclose":"Tancat Automàticaments"
},
"autoclose":"Gestiona el tancament automàtic en un ticket.",
"autocloseDisable":"Desactiva el tancament automàtic en aquest ticket.",
"autocloseEnable":"Activa el tancament automàtic en aquest ticket.",
@@ -424,7 +509,21 @@
"autodelete":"Gestiona l'eliminació automàtica en un ticket.",
"autodeleteDisable":"Desactiva l'eliminació automàtica en aquest ticket.",
"autodeleteEnable":"Activa l'eliminació automàtica en aquest ticket.",
"autodeleteEnableTime":"La quantitat de dies que aquest ticket ha d'estar inactiu per eliminar-lo."
"autodeleteEnableTime":"La quantitat de dies que aquest ticket ha d'estar inactiu per eliminar-lo.",
"topic":"Gestiona el tema del canal del ticket.",
"topicSet":"Estableix el tema del canal del ticket.",
"topicValue":"El nou tema del canal.",
"topicList":"Obté una llista de tots els tickets amb el seu tema i estadístiques.",
"priority":"Gestiona la prioritat del ticket.",
"prioritySet":"Estableix la prioritat del ticket.",
"priorityValue":"La prioritat del canal.",
"priorityGet":"Obtenir la prioritat del ticket.",
"priorityList":"Obté una llista de tots els tickets amb el seu estat de prioritat.",
"transfer":"Transfereix la propietat del ticket d'un usuari a un altre.",
"transferUser":"L'usuari al qual transferir.",
"transcripts":"Veure l'historial de transcripcions de tiquets d'un usuari.",
"transcriptsUser":"L'usuari a visualitzar."
},
"helpMenu":{
"help":"Obtingues una llista de totes les comandes disponibles.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Desactiva el tancament automàtic en aquest ticket.",
"autocloseEnable":"Activa el tancament automàtic en aquest ticket.",
"autodeleteDisable":"Desactiva l'eliminació automàtica en aquest ticket.",
"autodeleteEnable":"Activa l'eliminació automàtica en aquest ticket."
"autodeleteEnable":"Activa l'eliminació automàtica en aquest ticket.",
"categories":{
"general":"Comandes Generals",
"basicTicket":"Comandes Bàsiques de Tickets",
"advancedTicket":"Comandes Avançades de Tickets",
"userTicket":"Comandes de Tickets d'Usuari",
"admin":"Comandes d'Admin",
"advanced":"Comandes Avançades",
"extra":"Comandes Extra"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Estadístiques del Sistema",
"user":"Estadístiques d'Usuari",
"ticket":"Estadístiques de Ticket",
"participants":"Participants"
"participants":"Participants",
"messages":"Missatges"
},
"properties":{
"ticketsCreated":"Tickets Creats",
@@ -472,7 +581,48 @@
"ticketsPinned":"Tickets Fixats",
"ticketsMoved":"Tickets Moguts",
"usersBlacklisted":"Usuaris a la Llista Negra",
"transcriptsCreated":"Transcripcions Creades"
}
"transcriptsCreated":"Transcripcions Creades",
"ticketsAutodeleted":"Tickets Eliminats Automàticament",
"ticketsTransferred":"Tickets Transferits",
"ticketVolume":"Volum de Tickets",
"averageTickets":"Mitjana de Tickets/Usuari",
"currentTickets":"Tickets Actuals",
"age":"Edat del Ticket",
"responseTime":"Temps de Resposta",
"resolutionTime":"Temps de Resolució",
"createdOn":"Creat el",
"createdBy":"Creat per",
"closedOn":"Tancat el",
"closedBy":"Tancat per",
"claimedOn":"Reclamat el",
"claimedBy":"Reclamat per",
"pinnedOn":"Fixat el",
"pinnedBy":"Fixat per",
"deletedOn":"Eliminat el",
"deletedBy":"Eliminat per"
},
"roles":{
"developer":"Desenvolupador",
"serverOwner":"Propietari del Servidor",
"serverAdmin":"Admin del Servidor",
"moderator":"Equip de Moderació",
"support":"Equip de Suport",
"member":"Membre"
}
},
"panel":{
"selectTicket":"Selecciona el teu ticket",
"selectRole":"Selecciona el teu rol",
"selectOption":"Selecciona la teva opció",
"selectPriorityLevel":"Selecciona el nivell de prioritat"
},
"priorities":{
"urgent":"Urgent",
"veryHigh":"Molt Alt",
"high":"Alt",
"normal":"Normal",
"low":"Baix",
"veryLow":"Molt Baix",
"none":"Cap"
}
}
+438 -288
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["DJj123dj"],
"lastedited":"21/08/2024",
"lastedited":"25/05/2026",
"language":"Custom",
"automated":false
},
@@ -13,83 +13,94 @@
"typeWarning":"[WARNING]",
"typeInfo":"[INFO]",
"headerConfigChecker":"CONFIG CHECKER",
"headerDescription":"check for errors in your config files!",
"footerError":"the bot won't start until all {0}'s are fixed!",
"footerWarning":"it's recommended to fix all {0}'s before starting!",
"headerDescription":"Validating config files...",
"footerError":"The bot will not start until all {0}'s are resolved.",
"footerWarning":"The bot may behave unexpectedly until all {0}'s are resolved.",
"footerSupport":"SUPPORT: {0} - DOCS: {1}",
"compactInformation":"use {0} for more information!",
"compactInformation":"Use {0} for a detailed config report.",
"dataPath":"path",
"dataDocs":"docs",
"dataMessages":"message"
},
"messages":{
"stringTooShort":"This string can't be shorter than {0} characters!",
"stringTooLong":"This string can't be longer than {0} characters!",
"stringLengthInvalid":"This string needs to be {0} characters long!",
"stringStartsWith":"This string needs to start with {0}!",
"stringEndsWith":"This string needs to end with {0}!",
"stringContains":"This string needs to contain {0}!",
"stringChoices":"This string can only be one of the following values: {0}!",
"stringRegex":"This string is invalid!",
"stringTooShort":"Text must be at least {0} characters long",
"stringTooLong":"Text must be no longer than {0} characters",
"stringLengthInvalid":"Text must be exactly {0} characters long",
"stringStartsWith":"Text must start with {0}",
"stringEndsWith":"Text must end with {0}",
"stringContains":"Text must contain {0}",
"stringChoices":"Text must be one of the following: {0}",
"stringRegex":"Text does not match the required format",
"stringInvertedContains":"Text must not contain {0}",
"stringLowercase":"Text must be entirely lowercase",
"stringUppercase":"Text must be entirely uppercase",
"stringSpecialCharacters":"Text must only contain letters (a–z), numbers (0–9), and spaces",
"stringNoSpaces":"Text must not contain spaces",
"stringCapitalWord":"Each word in this value should start with a capital letter",
"stringCapitalSentence":"One or more sentences in this value do not start with a capital letter",
"stringPunctuation":"The sentence in this value does not end with a punctuation mark",
"numberTooShort":"This number can't be shorter than {0} characters!",
"numberTooLong":"This number can't be longer than {0} characters!",
"numberLengthInvalid":"This number needs to be {0} characters long!",
"numberTooSmall":"This number needs to be at least {0}!",
"numberTooLarge":"This number needs to be at most {0}!",
"numberNotEqual":"This number needs to be {0}!",
"numberStep":"This number needs to be a multiple of {0}!",
"numberStepOffset":"This number needs to be a multiple of {0} starting with {1}!",
"numberStartsWith":"This number needs to start with {0}!",
"numberEndsWith":"This number needs to end with {0}!",
"numberContains":"This number needs to contain {0}!",
"numberChoices":"This number can only be one of the following values: {0}!",
"numberFloat":"This number can't be a decimal!",
"numberNegative":"This number can't be negative!",
"numberPositive":"This number can't be positive!",
"numberZero":"This number can't be zero!",
"numberTooShort":"Number must be at least {0} digits long",
"numberTooLong":"Number must be no longer than {0} digits",
"numberLengthInvalid":"Number must be exactly {0} digits long",
"numberTooSmall":"Number must be at least {0}",
"numberTooLarge":"Number must be at most {0}",
"numberNotEqual":"Number must be exactly {0}",
"numberStep":"Number must be a multiple of {0}",
"numberStepOffset":"Number must be a multiple of {0}, starting from {1}",
"numberStartsWith":"Number must start with {0}",
"numberEndsWith":"Number must end with {0}",
"numberContains":"Number must contain {0}",
"numberChoices":"Number must be one of the following: {0}",
"numberFloat":"Number must be a whole number",
"numberNegative":"Number must be a positive number",
"numberPositive":"Number must be a negative number",
"numberZero":"Number must not be zero",
"numberNan":"Number must be a valid number",
"numberInvertedContains":"Number must not contain {0}",
"booleanTrue":"This boolean can't be true!",
"booleanFalse":"This boolean can't be false!",
"booleanTrue":"Boolean must be false",
"booleanFalse":"Boolean must be true",
"arrayEmptyDisabled":"This array isn't allowed to be empty!",
"arrayEmptyRequired":"This array is required to be empty!",
"arrayTooShort":"This array needs to have a length of at least {0}!",
"arrayTooLong":"This array needs to have a length of at most {0}!",
"arrayLengthInvalid":"This array needs to have a length of {0}!",
"arrayInvalidTypes":"This array can only contain the following types: {0}!",
"arrayDouble":"This array doesn't allow the same value twice!",
"arrayEmptyDisabled":"List must not be empty",
"arrayEmptyRequired":"List must be empty",
"arrayTooShort":"List must have at least {0} items",
"arrayTooLong":"List must have at most {0} items",
"arrayLengthInvalid":"List must have exactly {0} items",
"arrayInvalidTypes":"List may only contain the following types: {0}",
"arrayDouble":"List must not contain duplicate values",
"discordInvalidId":"This is an invalid discord {0} id!",
"discordInvalidIdOptions":"This is an invalid discord {0} id! You can also use one of these: {1}!",
"discordInvalidToken":"This is an invalid discord token (syntactically)!",
"colorInvalid":"This is an invalid hex color!",
"emojiTooShort":"This string needs to have at least {0} emoji's!",
"emojiTooLong":"This string needs to have at most {0} emoji's!",
"emojiCustom":"This emoji can't be a custom discord emoji!",
"emojiInvalid":"This is an invalid emoji!",
"urlInvalid":"This url is invalid!",
"urlInvalidHttp":"This url can only use the https:// protocol!",
"urlInvalidProtocol":"This url can only use the http:// & https:// protocols!",
"urlInvalidHostname":"This url has a disallowed hostname!",
"urlInvalidExtension":"This url has an invalid extension! Choose between: {0}!",
"urlInvalidPath":"This url has an invalid path!",
"idNotUnique":"This id isn't unique, use another id instead!",
"idNonExistent":"The id {0} doesn't exist!",
"discordInvalidId":"Invalid Discord {0} ID",
"discordInvalidIdOptions":"Invalid Discord {0} ID. Alternatively, use one of the following: {1}",
"discordInvalidToken":"Invalid Discord token",
"colorInvalid":"Invalid hex color",
"emojiTooShort":"Value must contain at least {0} emoji",
"emojiTooLong":"Value must contain at most {0} emoji",
"emojiCustom":"Custom Discord emojis are not allowed here",
"emojiInvalid":"Invalid emoji",
"urlInvalid":"Invalid URL",
"urlInvalidHttp":"URL must use the https:// protocol",
"urlInvalidProtocol":"URL must use the http:// or https:// protocol",
"urlInvalidHostname":"URL hostname is not allowed",
"urlInvalidExtension":"Invalid URL extension. Allowed extensions: {0}",
"urlInvalidPath":"Invalid URL path",
"idNotUnique":"This ID is already in use. Please choose a unique ID",
"idNonExistent":"ID {0} does not exist",
"invalidType":"This property needs to be the type: {0}!",
"propertyMissing":"The property {0} is missing from this object!",
"propertyOptional":"The property {0} is optional in this object!",
"objectDisabled":"This object is disabled, enable it using {0}!",
"nullInvalid":"This property can't be null!",
"switchInvalidType":"This needs to be one of the following types: {0}!",
"objectSwitchInvalid":"This object needs to be one of the following types: {0}!",
"invalidType":"Property must be of type: {0}",
"propertyMissing":"Required property {0} is missing from the object",
"propertyOptional":"Property {0} is optional in the object",
"objectDisabled":"This object is disabled. Enable it using {0}",
"nullInvalid":"Property must not be null",
"switchInvalidType":"Value must be one of the following types: {0}",
"objectSwitchInvalid":"Object must be one of the following types: {0}",
"invalidLanguage":"This is an invalid language!",
"invalidButton":"This button needs to have at least an {0} or {1}!",
"unusedOption":"The option {0} isn't used anywhere!",
"unusedQuestion":"The question {0} isn't used anywhere!",
"dropdownOption":"A panel with dropdown enabled can only contain options of the 'ticket' type!"
"invalidLanguage":"Invalid language",
"invalidButton":"Button must have at least an {0} or {1}",
"unusedOption":"Option {0} is not used anywhere",
"unusedQuestion":"Question {0} is not used anywhere",
"dropdownOption":"A panel with dropdown can only contain options of the types: 'ticket', 'role' or 'sub-panel'.",
"customInvalidVersion":"Config version mismatch. Make sure to update your config to the latest version"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"View Text Commands",
"helpPage":"Page {0}",
"withReason":"With Reason",
"withoutTranscript":"Without Transcript"
"withoutTranscript":"Without Transcript",
"blacklistAdd":"Blacklist User",
"blacklistRemove":"Release User"
},
"titles":{
"created":"Ticket Created",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Added To Blacklist",
"blacklistRemoveDm":"Removed From Blacklist",
"clear":"Tickets Cleared",
"clearTickets":"Clear Tickets",
"roles":"Roles Updated",
"autoclose":"Ticket Autoclosed",
@@ -139,109 +153,143 @@
"autocloseDisabled":"Autoclose Disabled",
"autodelete":"Ticket Autodeleted",
"autodeleteEnabled":"Autodelete Enabled",
"autodeleteDisabled":"Autodelete Disabled"
"autodeleteDisabled":"Autodelete Disabled",
"topicSet":"Topic Changed",
"prioritySet":"Priority Changed",
"priorityGet":"Ticket Priority",
"transfer":"Ticket Transferred",
"transcripts":"Transcript History"
},
"descriptions":{
"create":"Your ticket has been created. Click the button below to access it!",
"close":"The ticket has been closed successfully!",
"delete":"The ticket has been deleted successfully!",
"reopen":"The ticket has been reopened successfully!",
"claim":"The ticket has been claimed successfully!",
"unclaim":"The ticket has been unclaimed successfully!",
"pin":"The ticket has been pinned successfully!",
"unpin":"The ticket has been unpinned successfully!",
"rename":"The ticket has been renamed to {0} successfully!",
"move":"The ticket has been moved to {0} successfully!",
"add":"{0} has been added to the ticket successfully!",
"remove":"{0} has been removed from the ticket successfully!",
"create":"Your ticket is ready. Click the button below to view and continue.",
"close":"The ticket has been closed.",
"delete":"The ticket has been deleted.",
"reopen":"The ticket has been reopened.",
"claim":"The ticket has been claimed.",
"unclaim":"The ticket has been unclaimed.",
"pin":"The ticket has been pinned.",
"unpin":"The ticket has been unpinned.",
"rename":"The ticket has been renamed to {0}.",
"move":"The ticket has been moved to {0}.",
"add":"{0} has been added to the ticket.",
"remove":"{0} has been removed from the ticket.",
"helpExplanation":"`<name>` => required parameter\n`[name]` => optional parameter",
"statsReset":"The bot stats have been reset successfully!",
"statsError":"Unable to view ticket stats!\n{0} is not a ticket!",
"blacklistAdd":"{0} has been blacklisted successfully!",
"blacklistRemove":"{0} has been released successfully!",
"blacklistGetSuccess":"{0} is currently blacklisted!",
"blacklistGetEmpty":"{0} is currently not blacklisted!",
"blacklistViewEmpty":"No-one has been blacklisted yet!",
"blacklistViewTip":"Use \"/blacklist add\" to blacklist a user!",
"clearVerify":"Are you sure you want to delete multiple tickets?\nThis action can't be undone!",
"clearReady":"{0} tickets have been deleted successfully!",
"rolesEmpty":"No roles have been updated!",
"statsReset":"The bot statistics have been reset.",
"statsError":"Unable to retrieve ticket statistics.\n{0} is not a valid ticket.",
"blacklistAdd":"{0} has been blacklisted.",
"blacklistRemove":"{0} has been released.",
"blacklistGetSuccess":"{0} is blacklisted!",
"blacklistGetEmpty":"{0} is not blacklisted!",
"blacklistViewEmpty":"No users have been blacklisted yet.",
"blacklistViewTip":"Use \"/blacklist add\" to add a user to the blacklist.",
"clearVerify":"Are you sure you want to delete multiple tickets?\nThis action cannot be undone.",
"clearReady":"{0} ticket(s) have been deleted.",
"rolesEmpty":"No roles were modified.",
"autocloseLeave":"This ticket has been autoclosed because the creator left the server!",
"autocloseTimeout":"This ticket has been autoclosed because it has been inactive for more than `{0}h`!",
"autodeleteLeave":"This ticket has been autodeleted because the creator left the server!",
"autodeleteTimeout":"This ticket has been autodeleted because it has been inactive for more than `{0} days`!",
"autocloseEnabled":"Autoclose has been enabled in this ticket!\nIt will be closed when it is inactive for more than `{0}h`!",
"autocloseDisabled":"Autoclose has been disabled in this ticket!\nIt won't be closed automatically anymore!",
"autodeleteEnabled":"Autodelete has been enabled in this ticket!\nIt will be deleted when it is inactive for more than `{0} days`!",
"autodeleteDisabled":"Autodelete has been disabled in this ticket!\nIt won't be deleted automatically anymore!",
"autocloseLeave":"This ticket was automatically closed because its creator left the server.",
"autocloseTimeout":"This ticket was automatically closed due to inactivity exceeding `{0}h`.",
"autodeleteLeave":"This ticket was automatically deleted because its creator left the server.",
"autodeleteTimeout":"This ticket was automatically deleted due to inactivity exceeding `{0} days`.",
"autocloseEnabled":"Autoclose has been enabled for this ticket.\nIt will close after `{0}h` of inactivity.",
"autocloseDisabled":"Autoclose has been disabled for this ticket.\nThis ticket will no longer close automatically.",
"autodeleteEnabled":"Autodelete has been enabled for this ticket.\nIt will be deleted after `{0} days` of inactivity.",
"autodeleteDisabled":"Autodelete has been disabled for this ticket.\nThis ticket will no longer be deleted automatically.",
"ticketMessageLimit":"You can only create {0} ticket(s) at the same time!",
"ticketMessageAutoclose":"This ticket will be autoclosed when inactive for {0}h!",
"ticketMessageAutodelete":"This ticket will be autodeleted when inactive for {0} days!",
"panelReady":"You can find the panel below!\nThis message can now be deleted!"
"ticketMessageLimit":"You can only have {0} active ticket(s) at a time.",
"ticketMessageAutoclose":"This ticket will automatically close after `{0}h` of inactivity.",
"ticketMessageAutodelete":"This ticket will automatically be deleted after `{0} days` of inactivity.",
"panelReady":"The panel has been sent in the follow-up message.\nYou may now delete this message.",
"topicSet":"The channel topic has been changed by {0}.",
"prioritySet":"The ticket priority has been changed to {0} by {1}.",
"priorityGet":"The priority of this ticket is {0}.",
"transfer":"The ticket ownership has been transferred from {0} to {1} by {2}."
},
"modal":{
"closePlaceholder":"Why did you close this ticket?",
"deletePlaceholder":"Why did you delete this ticket?",
"reopenPlaceholder":"Why did you reopen this ticket?",
"claimPlaceholder":"Why did you claim this ticket?",
"unclaimPlaceholder":"Why did you unclaim this ticket?",
"pinPlaceholder":"Why did you pin this ticket?",
"unpinPlaceholder":"Why did you unpin this ticket?"
"closePlaceholder":"Why would you like to close this ticket?",
"deletePlaceholder":"Why would you like to delete this ticket?",
"reopenPlaceholder":"Why would you like to reopen this ticket?",
"claimPlaceholder":"Why would you like to claim this ticket?",
"unclaimPlaceholder":"Why would you like to unclaim this ticket?",
"pinPlaceholder":"Why would you like to pin this ticket?",
"unpinPlaceholder":"Why would you like to unpin this ticket?"
},
"logs":{
"createLog":"A new ticket got created by {0}!",
"closeLog":"This ticket has been closed by {0}!",
"closeDm":"Your ticket has been closed in our server!",
"deleteLog":"This ticket has been deleted by {0}!",
"deleteDm":"Your ticket has been deleted in our server!",
"reopenLog":"This ticket has been reopened by {0}!",
"reopenDm":"Your ticket has been reopened in our server!",
"claimLog":"This ticket has been claimed by {0}!",
"claimDm":"Your ticket has been claimed in our server!",
"unclaimLog":"This ticket has been unclaimed by {0}!",
"unclaimDm":"Your ticket has been unclaimed in our server!",
"pinLog":"This ticket has been pinned by {0}!",
"pinDm":"Your ticket has been pinned in our server!",
"unpinLog":"This ticket has been unpinned by {0}!",
"unpinDm":"Your ticket has been unpinned in our server!",
"renameLog":"This ticket has been renamed to {0} by {1}!",
"renameDm":"Your ticket has been renamed to {0} in our server!",
"moveLog":"This ticket has been moved to {0} by {1}!",
"moveDm":"Your ticket has been moved to {0} in our server!",
"addLog":"{0} has been added to this ticket by {1}!",
"addDm":"{0} has been added to your ticket in our server!",
"removeLog":"{0} has been removed from this ticket by {1}!",
"removeDm":"{0} has been removed from your ticket in our server!",
"createLog":"A new ticket got created by {0}.",
"closeLog":"This ticket has been closed by {0}.",
"closeDm":"Your ticket has been closed.",
"deleteLog":"This ticket has been deleted by {0}.",
"deleteDm":"Your ticket has been deleted.",
"reopenLog":"This ticket has been reopened by {0}.",
"reopenDm":"Your ticket has been reopened.",
"claimLog":"This ticket has been claimed by {0}.",
"claimDm":"Your ticket has been claimed.",
"unclaimLog":"This ticket has been unclaimed by {0}.",
"unclaimDm":"Your ticket has been unclaimed.",
"pinLog":"This ticket has been pinned by {0}.",
"pinDm":"Your ticket has been pinned.",
"unpinLog":"This ticket has been unpinned by {0}.",
"unpinDm":"Your ticket has been unpinned.",
"renameLog":"This ticket has been renamed to {0} by {1}.",
"renameDm":"Your ticket has been renamed to {0}.",
"moveLog":"This ticket has been moved to {0} by {1}.",
"moveDm":"Your ticket has been moved to {0}.",
"addLog":"{0} has been added to this ticket by {1}.",
"addDm":"{0} has been added to your ticket.",
"removeLog":"{0} has been removed from this ticket by {1}.",
"removeDm":"{0} has been removed from your ticket.",
"blacklistAddLog":"{0} was blacklisted by {1}!",
"blacklistRemoveLog":"{0} was removed from the blacklist by {1}!",
"blacklistAddDm":"You have been blacklisted in our server!\nFrom now on, you are unable to create a ticket!",
"blacklistRemoveDm":"You have been removed from the blacklist in our server!\nNow you can create tickets again!",
"clearLog":"{0} tickets have been deleted by {1}!"
"blacklistAddLog":"{0} has been blacklisted by {1}.",
"blacklistRemoveLog":"{0} has been removed from the blacklist by {1}.",
"blacklistAddDm":"You have been blacklisted from this server.\nYou are no longer able to create tickets.",
"blacklistRemoveDm":"You have been removed from the blacklist.\nYou can now create tickets again.",
"clearLog":"{0} ticket(s) have been deleted by {1}.",
"transferLog":"Ticket ownership has been transferred from {0} to {1} by {2}.",
"transferDm":"Ownership of your ticket has been transferred from {0} to {1}.",
"prioritySetLog":"The priority of this ticket has been set to {0} by {1}.",
"prioritySetDm":"The priority of your ticket has been set to {0}.",
"roleUpdateLog":"{0} has modified their roles.",
"roleUpdateDm":"Your roles have been modified.",
"topicSetLog":"The priority of this ticket has been set to {0} by {1}.",
"topicSetDm":"The priority of your ticket has been set to {0}."
}
},
"transcripts":{
"success":{
"visit":"Visit Transcript",
"ready":"Transcript Created",
"textFileDescription":"This is the text transcript of a deleted ticket!",
"htmlProgress":"Please wait while this html transcript is getting processed...",
"textFileDescription":"This is a text transcript of a deleted ticket.",
"htmlProgress":"Please wait while the HTML transcript is being generated...",
"createdChannel":"A new {0} transcript has been created in the server!",
"createdCreator":"A new {0} transcript has been created for one of your tickets!",
"createdParticipant":"A new {0} transcript has been created in one of the tickets you participated in!",
"createdActiveAdmin":"A new {0} transcript has been created in one of the tickets you participated as admin!",
"createdEveryAdmin":"A new {0} transcript has been created in one of the tickets you were admin in!",
"createdOther":"A new {0} transcript has been created!"
"createdChannel":"A new {0} transcript has been created in the server.",
"createdCreator":"A new {0} transcript has been created for one of your tickets.",
"createdParticipant":"A new {0} transcript has been created for a ticket you participated in.",
"createdActiveAdmin":"A new {0} transcript has been created for a ticket you participated in as an admin.",
"createdEveryAdmin":"A new {0} transcript has been created for a ticket you managed as an admin.",
"createdOther":"A new {0} transcript has been created."
},
"errors":{
"retry":"Retry",
"continue":"Delete Without Transcript",
"backup":"Create Backup Transcript",
"error":"Something went wrong while trying to create the transcript.\nWhat would you like to do?\n\nThis ticket won't be deleted until you click one of these buttons."
"error":"Something went wrong while creating the transcript.\nWhat would you like to do?\n\nThis ticket will not be deleted until you select one of the options below.",
"title":"Transcript Error",
"noHistory":"This user does not yet have any transcripts.",
"historyNotSupported":"Transcript history is currently only supported with HTML Transcripts.\nText transcript history will be available in future versions."
},
"text":{
"messagesTitle":"MESSAGES",
"embedTitle":"EMBED",
"fileTitle":"FILE",
"fieldsTitle":"FIELDS",
"reactionsTitle":"REACTIONS",
"statsTitle":"STATISTICS",
"emptyContent":"<content is empty>",
"noTitle":"<no-title>",
"noDesc":"<no-description>"
}
},
"errors":{
@@ -257,68 +305,77 @@
"unknownPanel":"Unknown Panel",
"notInGuild":"Not In Server",
"channelRename":"Unable To Rename Channel",
"busy":"Ticket Is Busy"
"channelCategory":"Unable To Change Category",
"busy":"Ticket Is Busy",
"permissionError":"Permission Error"
},
"descriptions":{
"askForInfo":"Contact the owner of this bot for more info!",
"askForInfoResolve":"Contact the bot owner of this bot if this issue doesn't resolve after a few tries.",
"internalError":"Failed to respond to this {0} due to an internal error!",
"optionMissing":"A required parameter is missing in this command!",
"optionInvalid":"A parameter in this command is invalid!",
"optionInvalidChoose":"Choose between",
"unknownCommand":"Try visiting the help menu for more info!",
"noPermissions":"You are not allowed to use this {0}!",
"noPermissionsList":"Required Permissions: (one of them)",
"noPermissionsCooldown":"You are not allowed to use this {0} because you have a cooldown!",
"noPermissionsBlacklist":"You are not allowed to use this {0} because you have been blacklisted!",
"noPermissionsLimitGlobal":"You are not allowed to create a ticket because the server reached the max tickets limit!",
"noPermissionsLimitGlobalUser":"You are not allowed to create a ticket because you reached the max tickets limit!",
"noPermissionsLimitOption":"You are not allowed to create a ticket because the server reached the max tickets limit for this option!",
"noPermissionsLimitOptionUser":"You are not allowed to create a ticket because you reached the max tickets limit for this option!",
"unknownTicket":"Try this command again in a valid ticket!",
"deprecatedTicket":"The current channel is not a valid ticket! It might have been a ticket from an old Open Ticket version!",
"notInGuild":"This {0} doesn't work in DM! Please try it again in a server!",
"channelRename":"Due to discord ratelimits, it's currently impossible for the bot to rename the channel. The channel will automatically be renamed over 10 minutes if the bot isn't rebooted.",
"channelRenameSource":"The source of this error is: {0}",
"busy":"Unable to use this {0}!\nThe ticket is currently being processed by the bot.\n\nPlease try again in a few seconds!"
"askForInfo":"Please contact the bot owner for more information.",
"askForInfoResolve":"If the issue persists after a few attempts, please contact the bot owner.",
"internalError":"An internal error occurred while processing this {0}.",
"optionMissing":"A required parameter is missing for this command.",
"optionInvalid":"One or more parameters provided for this command are invalid.",
"optionInvalidChoose":"Please choose between",
"unknownCommand":"Please use the help menu for more information.",
"noPermissions":"You are not permitted to use this {0}.",
"noPermissionsList":"Required permissions (one of the following):",
"noPermissionsCooldown":"You cannot use this {0} while on cooldown.",
"noPermissionsBlacklist":"You cannot use this {0} because you are blacklisted.",
"noPermissionsLimitGlobal":"You cannot create a ticket because the server has reached its maximum ticket limit.",
"noPermissionsLimitGlobalUser":"You cannot create a ticket because you have reached your maximum ticket limit.",
"noPermissionsLimitOption":"You cannot create a ticket because the server has reached the maximum ticket limit for this option.",
"noPermissionsLimitOptionUser":"You cannot create a ticket because you have reached the maximum ticket limit for this option.",
"unknownTicket":"Please run this command inside a valid ticket channel.",
"deprecatedTicket":"This channel is not recognized as a valid ticket. It may have been created with an older version of the bot.",
"notInGuild":"This {0} cannot be used in direct messages. Please use it in a server.",
"channelRename":"Due to Discord rate limits, the channel could not be renamed immediately. It will be renamed automatically within 10 minutes if the bot remains online.",
"channelCategory":"Due to Discord rate limits, the channel category could not be changed immediately. It will be changed automatically within 10 minutes if the bot remains online.",
"channelRenameSource":"Error source: {0}",
"busy":"This {0} is currently unavailable.\nThe ticket is being processed by the bot.\n\nPlease try again in a few seconds.",
"closeBeforeMessage":"This ticket cannot be closed or deleted before a user has sent a message.",
"closeBeforeAdminMessage":"This ticket cannot be closed or deleted before a support member or admin has sent a message.",
"unableToCreateTicket":"You are currently unable to create a ticket.",
"messageMissing":"Unable to locate message of interaction. Use the command `{0}` instead.",
"stateExpired":"This interaction is no longer valid or has expired. Use the command `{0}` instead. It is normal to receive this error after a major Open Ticket update.",
"panelStateExpired":"This panel is no longer valid or has expired. Create a new panel using `{0}` to solve the issue. It is normal to receive this error after a major Open Ticket update."
},
"optionInvalidReasons":{
"stringRegex":"Value doesn't match pattern!",
"stringMinLength":"Value needs to be at least {0} characters!",
"stringMaxLength":"Value needs to be at most {0} characters!",
"numberInvalid":"Invalid number!",
"numberMin":"Number needs to be at least {0}!",
"numberMax":"Number needs to be at most {0}!",
"numberDecimal":"Number is not allowed to be a decimal!",
"numberNegative":"Number is not allowed to be negative!",
"numberPositive":"Number is not allowed to be positive!",
"numberZero":"Number is not allowed to be zero!",
"channelNotFound":"Unable to find channel!",
"userNotFound":"Unable to find user!",
"roleNotFound":"Unable to find role!",
"memberNotFound":"Unable to find user!",
"mentionableNotFound":"Unable to find user or role!",
"channelType":"Invalid channel type!",
"notInGuild":"This option requires you to be in a server!"
"stringRegex":"The value does not match the required pattern.",
"stringMinLength":"The value must be at least {0} characters long.",
"stringMaxLength":"The value must be at most {0} characters long.",
"numberInvalid":"Invalid number provided.",
"numberMin":"The number must be at least {0}.",
"numberMax":"The number must be at most {0}.",
"numberDecimal":"Decimals are not allowed.",
"numberNegative":"Negative numbers are not allowed.",
"numberPositive":"Positive numbers are not allowed.",
"numberZero":"Zero is not allowed.",
"channelNotFound":"Channel not found.",
"userNotFound":"User not found.",
"roleNotFound":"Role not found.",
"memberNotFound":"Member not found.",
"mentionableNotFound":"User or role not found.",
"channelType":"Invalid channel type.",
"notInGuild":"This option can only be used in a server."
},
"permissions":{
"developer":"You need to be the developer of the bot.",
"owner":"You need to be the server owner.",
"admin":"You need to be a server admin.",
"moderator":"You need to be a moderator.",
"support":"You need to be in the support team.",
"member":"You need to be a member.",
"discord-administrator":"You need to have the `ADMINISTRATOR` permission."
"developer":"This action is restricted to the bot developer.",
"owner":"You must be the server owner to use this.",
"admin":"You must have administrator permissions to use this.",
"moderator":"You must be a moderator to use this.",
"support":"You must be part of the support team to use this.",
"member":"You must be a server member to use this.",
"discord-administrator":"You must have the `ADMINISTRATOR` permission."
},
"actionInvalid":{
"close":"Ticket is already closed!",
"reopen":"Ticket is not closed yet!",
"claim":"Ticket is already claimed!",
"unclaim":"Ticket is not claimed yet!",
"pin":"Ticket is already pinned!",
"unpin":"Ticket is not pinned yet!",
"add":"This user is already able to access the ticket!",
"remove":"Unable to remove this user from the ticket!"
"close":"This ticket is already closed.",
"reopen":"This ticket is not closed.",
"claim":"This ticket is already claimed.",
"unclaim":"This ticket is not claimed.",
"pin":"This ticket is already pinned.",
"unpin":"This ticket is not pinned.",
"add":"This user already has access to this ticket.",
"remove":"This user does not have access to this ticket."
}
},
"params":{
@@ -331,7 +388,6 @@
"added":"Added",
"removed":"Removed",
"filter":"Filter",
"claimedBy":"Claimed By {0}",
"method":"Method",
"type":"Type",
"blacklisted":"Blacklisted",
@@ -343,6 +399,8 @@
"syntax":"Syntax",
"originalName":"Original Name",
"newName":"New Name",
"originalCategory":"Original Category",
"newCategory":"New Category",
"until":"Until",
"validOptions":"Valid Options",
"validPanels":"Valid Panels",
@@ -355,7 +413,29 @@
"status":"Status",
"claimed":"Claimed",
"pinned":"Pinned",
"creationDate":"Creation Date"
"creationDate":"Creation Date",
"noone":"No-One",
"open":"Open",
"closed":"Closed",
"priority":"Priority",
"participants":"Participants",
"yes":"Yes",
"no":"No",
"accept":"Accept",
"cancel":"Cancel",
"option":"Option",
"topic":"Topic",
"uptime":"System Uptime",
"messages":"Messages",
"embeds":"Embeds",
"files":"Files",
"components":"Components",
"cooldown":"Cooldown",
"maxTickets":"Max Tickets",
"admins":"Admins",
"roles":"Roles",
"size":"Size"
},
"lowercase":{
"text":"text",
@@ -368,99 +448,128 @@
}
},
"commands":{
"reason":"Specify an optional reason that will be visible in logs.",
"help":"Get a list of all the available commands.",
"panel":"Spawn a message with a dropdown or buttons (for ticket creation).",
"panelId":"The identifier of the panel that you want to spawn.",
"panelAutoUpdate":"Do you want this panel to automatically update when edited?",
"ticket":"Instantly create a ticket.",
"ticketId":"The identifier of the ticket that you want to create.",
"close":"Close a ticket.",
"delete":"Delete a ticket.",
"deleteNoTranscript":"Delete this ticket without creating a transcript.",
"reopen":"Reopen a ticket.",
"claim":"Claim a ticket.",
"claimUser":"Claim this ticket to someone else instead of yourself.",
"unclaim":"Unclaim a ticket.",
"pin":"Pin a ticket.",
"unpin":"Unpin a ticket.",
"move":"Move a ticket.",
"moveId":"The identifier of the option that you want to move to.",
"rename":"Rename a ticket.",
"renameName":"The new name for this ticket.",
"add":"Add a user to a ticket.",
"addUser":"The user to add.",
"remove":"Remove a user from a ticket.",
"removeUser":"The user to remove.",
"blacklist":"Manage the ticket blacklist.",
"blacklistView":"View a list of the current blacklist.",
"reason":"Optional reason shown in logs.",
"help":"Display all available commands.",
"panel":"Create a ticket panel (buttons or dropdown).",
"panelId":"ID of the panel to spawn.",
"panelAutoUpdate":"Automatically update this panel when edited.",
"ticket":"Create a ticket instantly.",
"ticketId":"ID of the ticket to create.",
"ticketOtherUser":"Create a ticket for another user.",
"close":"Close this ticket.",
"delete":"Delete this ticket.",
"deleteNoTranscript":"Delete ticket without saving a transcript.",
"reopen":"Reopen a closed ticket.",
"claim":"Claim this ticket.",
"claimUser":"Claim the ticket for another user.",
"unclaim":"Unclaim this ticket.",
"pin":"Pin this ticket.",
"unpin":"Unpin this ticket.",
"move":"Move ticket to another option.",
"moveId":"Target option ID.",
"rename":"Rename this ticket.",
"renameName":"New name for the ticket.",
"add":"Add a user to this ticket.",
"addUser":"User to add.",
"remove":"Remove a user from this ticket.",
"removeUser":"User to remove.",
"blacklist":"Manage the blacklist.",
"blacklistView":"View all blacklisted users.",
"blacklistAdd":"Add a user to the blacklist.",
"blacklistRemove":"Remove a user from the blacklist.",
"blacklistGet":"Get the details from a blacklisted user.",
"blacklistGetUser":"The user to get details from.",
"stats":"View statistics from the bot, a member or a ticket.",
"statsReset":"Reset all the stats of the bot (and start counting from zero).",
"statsGlobal":"View the global stats.",
"statsUser":"View the stats from a user in the server.",
"statsUserUser":"The user to view.",
"statsTicket":"View the stats of a ticket in the server.",
"statsTicketTicket":"The ticket to view.",
"clear":"Delete multiple tickets at the same time.",
"clearFilter":"The filter for clearing tickets.",
"blacklistGet":"View blacklist entry details.",
"blacklistGetUser":"User to look up.",
"stats":"View bot, user or ticket statistics.",
"statsReset":"Reset all bot statistics.",
"statsGlobal":"View global bot statistics.",
"statsUser":"View a user's statistics.",
"statsUserUser":"User to view.",
"statsTicket":"View ticket statistics.",
"statsTicketTicket":"Ticket to view.",
"clear":"Delete multiple tickets at once.",
"clearFilter":"Filter used when clearing tickets.",
"clearFilters":{
"all":"All",
"open":"Open",
"close":"Closed",
"claim":"Claimed",
"unclaim":"Unclaimed",
"pin":"Pinned",
"unpin":"Unpinned",
"autoclose":"Autoclosed"
"all":"All tickets",
"open":"Open tickets",
"close":"Closed tickets",
"claim":"Claimed tickets",
"unclaim":"Unclaimed tickets",
"pin":"Pinned tickets",
"unpin":"Unpinned tickets",
"autoclose":"Autoclosed tickets"
},
"autoclose":"Manage autoclose in a ticket.",
"autocloseDisable":"Disable autoclose in this ticket.",
"autocloseEnable":"Enable autoclose in this ticket.",
"autocloseEnableTime":"The amount of hours this ticket needs to be inactive to close it.",
"autodelete":"Manage autodelete in a ticket.",
"autodeleteDisable":"Disable autodelete in this ticket.",
"autodeleteEnable":"Enable autodelete in this ticket.",
"autodeleteEnableTime":"The amount of days this ticket needs to be inactive to delete it."
"autoclose":"Manage ticket autoclose.",
"autocloseDisable":"Disable autoclose.",
"autocloseEnable":"Enable autoclose.",
"autocloseEnableTime":"Hours of inactivity before closing.",
"autodelete":"Manage ticket autodelete.",
"autodeleteDisable":"Disable autodelete.",
"autodeleteEnable":"Enable autodelete.",
"autodeleteEnableTime":"Days of inactivity before deletion.",
"topic":"Manage ticket channel topic.",
"topicSet":"Set the ticket channel topic.",
"topicValue":"New channel topic text.",
"topicList":"List all ticket channel topics.",
"priority":"Manage ticket priority.",
"prioritySet":"Set ticket priority.",
"priorityValue":"Priority level.",
"priorityGet":"View ticket priority.",
"priorityList":"List all ticket priorities.",
"transfer":"Transfer ticket ownership.",
"transferUser":"User to transfer to.",
"transcripts":"View ticket transcript history of a user.",
"transcriptsUser":"The user to view."
},
"helpMenu":{
"help":"Get a list of all the available commands.",
"ticket":"Instantly create a ticket.",
"close":"Close a ticket, this disables writing in this channel.",
"delete":"Delete a ticket, this creates a transcript when enabled.",
"reopen":"Reopen a ticket, this enables writing in this channel again.",
"pin":"Pin a ticket. This will move the ticket to the top and will add a '📌' emoij to the name.",
"unpin":"Unpin a ticket. The ticket will stay on it's position but will lose the '📌' emoij.",
"move":"Move a ticket. This will change the type of this ticket.",
"rename":"Rename a ticket. This will change the channel name of this ticket.",
"claim":"Claim a ticket. With this, you can let your team know you are handling this ticket.",
"unclaim":"Unclaim a ticket. With this, you can let your team know that this ticket is free again.",
"add":"Add a user to a ticket. This will allow the user to read & write in this ticket.",
"remove":"Remove a user from a ticket. This will remove the ability to read & write for a user in this ticket.",
"panel":"Spawn a message with a dropdown or buttons (for ticket creation).",
"blacklistView":"View a list of the current blacklist.",
"help":"View all available commands.",
"ticket":"Create a ticket instantly.",
"close":"Close this ticket and disable messaging in the channel.",
"delete":"Delete this ticket (creates a transcript if enabled).",
"reopen":"Reopen a closed ticket and restore messaging.",
"pin":"Pin this ticket and move it to the top with '📌'.",
"unpin":"Unpin this ticket and remove the '📌' emoji.",
"move":"Move this ticket to a different option or ticket type.",
"rename":"Rename this ticket channel.",
"claim":"Claim this ticket to show you are handling it.",
"unclaim":"Unclaim this ticket to mark it as available.",
"add":"Add a user to this ticket.",
"remove":"Remove a user's access from this ticket.",
"panel":"Create a ticket panel with buttons or a dropdown.",
"blacklistView":"View all blacklisted users.",
"blacklistAdd":"Add a user to the blacklist.",
"blacklistRemove":"Remove a user from the blacklist.",
"blacklistGet":"Get the details from a blacklisted user.",
"statsGlobal":"View the global stats.",
"statsTicket":"View the stats of a ticket in the server.",
"statsUser":"View the stats from a user in the server.",
"statsReset":"Reset all the stats of the bot (and start counting from zero).",
"autocloseDisable":"Disable autoclose in this ticket.",
"autocloseEnable":"Enable autoclose in this ticket.",
"autodeleteDisable":"Disable autodelete in this ticket.",
"autodeleteEnable":"Enable autodelete in this ticket."
"blacklistGet":"View details of a blacklisted user.",
"statsGlobal":"View global bot statistics.",
"statsTicket":"View statistics for a ticket.",
"statsUser":"View statistics for a user.",
"statsReset":"Reset all bot statistics.",
"autocloseDisable":"Disable autoclose for this ticket.",
"autocloseEnable":"Enable autoclose for this ticket.",
"autodeleteDisable":"Disable autodelete for this ticket.",
"autodeleteEnable":"Enable autodelete for this ticket.",
"categories":{
"general":"General Commands",
"basicTicket":"Basic Ticket Commands",
"advancedTicket":"Advanced Ticket Commands",
"userTicket":"User Ticket Commands",
"admin":"Admin Commands",
"advanced":"Advanced Commands",
"extra":"Extra Commands"
}
},
"stats":{
"scopes":{
"global":"Global Stats",
"system":"System Stats",
"user":"User Stats",
"ticket":"Ticket Stats",
"participants":"Participants"
"global":"Global Statistics",
"system":"System Statistics",
"user":"User Statistics",
"ticket":"Ticket Statistics",
"participants":"Participants",
"messages":"Messages"
},
"properties":{
"ticketsCreated":"Tickets Created",
@@ -472,7 +581,48 @@
"ticketsPinned":"Tickets Pinned",
"ticketsMoved":"Tickets Moved",
"usersBlacklisted":"Users Blacklisted",
"transcriptsCreated":"Transcripts Created"
}
"transcriptsCreated":"Transcripts Created",
"ticketsAutodeleted":"Tickets Autodeleted",
"ticketsTransferred":"Tickets Transferred",
"ticketVolume":"Ticket Volume",
"averageTickets":"Average Tickets/User",
"currentTickets":"Current Tickets",
"age":"Ticket Age",
"responseTime":"Response Time",
"resolutionTime":"Resolution Time",
"createdOn":"Created On",
"createdBy":"Created By",
"closedOn":"Closed On",
"closedBy":"Closed By",
"claimedOn":"Claimed On",
"claimedBy":"Claimed By",
"pinnedOn":"Pinned On",
"pinnedBy":"Pinned By",
"deletedOn":"Deleted On",
"deletedBy":"Deleted By"
},
"roles":{
"developer":"Developer",
"serverOwner":"Server Owner",
"serverAdmin":"Server Admin",
"moderator":"Moderator Team",
"support":"Support Team",
"member":"Member"
}
},
"panel":{
"selectTicket":"Select a ticket",
"selectRole":"Select a role",
"selectOption":"Select an option",
"selectPriorityLevel":"Select priority level"
},
"priorities":{
"urgent":"Urgent",
"veryHigh":"Very High",
"high":"High",
"normal":"Normal",
"low":"Low",
"veryLow":"Very Low",
"none":"None"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["spyeye_"],
"lastedited":"21/08/2024",
"lastedited":"25/05/2026",
"language":"Czech",
"automated":false
},
@@ -31,6 +31,14 @@
"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ů.!",
@@ -48,6 +56,8 @@
"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!",
@@ -89,7 +99,8 @@
"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 rozbalovací nabídkou může obsahovat pouze možnosti typu: 'ticket', 'role' nebo 'sub-panel'.",
"customInvalidVersion":"Verze uvedená ve vaší konfiguraci neodpovídá! Ujistěte se, že jste konfiguraci aktualizovali na nejnovější verzi!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Zobrazit textové příkazy",
"helpPage":"Strana {0}",
"withReason":"S důvodem",
"withoutTranscript":"Bez důvodu"
"withoutTranscript":"Bez důvodu",
"blacklistAdd":"Přidat Uživatele na Blacklist",
"blacklistRemove":"Uvolnit Uživatele"
},
"titles":{
"created":"Ticket vytvořen",
@@ -132,6 +145,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 +153,13 @@
"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",
"transcripts":"Historie Přepisů"
},
"descriptions":{
"create":"Tvůj ticket byl vytvořen. Klikni na tlačítko pod zprávou pro zobrazení!",
@@ -180,7 +200,12 @@
"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?",
@@ -220,7 +245,16 @@
"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!",
"topicSetLog":"Priorita tohoto ticketu byla nastavena na {0} uživatelem {1}.",
"topicSetDm":"Priorita vašeho ticketu byla nastavena na {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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",
"noHistory":"Tento uživatel zatím nemá žádné přepisy.",
"historyNotSupported":"Historie přepisů je momentálně podporována pouze s HTML Transcripts.\nHistorie textových přepisů bude dostupná v budoucích verzích."
},
"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 +305,9 @@
"unknownPanel":"Neznámý panel",
"notInGuild":"Nejsi na serveru",
"channelRename":"Nepodařilo se přejmenovat kanál",
"busy":"Ticket je zaneprázdněn"
"channelCategory":"Nelze Změnit Kategorii",
"busy":"Ticket je zaneprázdněn",
"permissionError":"Chyba oprávnění"
},
"descriptions":{
"askForInfo":"Pro více informací kontaktuj vlastníka tohoto bota!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Aktuální kanál není platný ticket! Může se jednat o ticket ze starší verze Open Ticketu!",
"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.",
"channelCategory":"Kvůli omezením Discord rate limitů nebylo možné kategorii kanálu okamžitě změnit. Pokud bot zůstane online, bude automaticky změněna do 10 minut.",
"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.",
"messageMissing":"Nepodařilo se najít zprávu interakce. Místo toho použijte příkaz `{0}`.",
"stateExpired":"Tato interakce již není platná nebo vypršela. Místo toho použijte příkaz `{0}`. Je normální obdržet tuto chybu po velké aktualizaci Open Ticket.",
"panelStateExpired":"Tento panel již není platný nebo vypršel. Vytvořte nový panel pomocí `{0}`, abyste problém vyřešili. Je normální obdržet tuto chybu po velké aktualizaci Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Hodnota neodpovídá vzoru!",
@@ -331,7 +388,6 @@
"added":"Přidáno",
"removed":"Odstraněno",
"filter":"Filtr",
"claimedBy":"Přiděleno uživatelem {0}",
"method":"Metoda",
"type":"Typ",
"blacklisted":"Na blacklistu",
@@ -343,6 +399,8 @@
"syntax":"Syntaxe",
"originalName":"Původní jméno",
"newName":"Nové jméno",
"originalCategory":"Původní Kategorie",
"newCategory":"Nová Kategorie",
"until":"Do",
"validOptions":"Platné možnosti",
"validPanels":"Platné panely",
@@ -352,10 +410,32 @@
"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",
"accept":"Přijmout",
"cancel":"Zrušit",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Chceš, aby se tento panel automaticky aktualizoval při úpravách?",
"ticket":"Okamžitě vytvoř ticket.",
"ticketId":"Identifikátor ticketu, který chceš vytvořit.",
"ticketOtherUser":"Vytvořit ticket pro jiného uživatele.",
"close":"Uzavři ticket.",
"delete":"Smaž ticket.",
"deleteNoTranscript":"Smaž tento ticket bez vytvoření přepisu.",
@@ -384,6 +465,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 +474,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 +488,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 +501,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 +509,21 @@
"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áší.",
"transcripts":"Zobrazit historii přepisů ticketů uživatele.",
"transcriptsUser":"Uživatel k zobrazení."
},
"helpMenu":{
"help":"Získej seznam všech dostupných příkazů.",
@@ -452,7 +551,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 +568,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 +581,48 @@
"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",
"selectPriorityLevel":"Vyberte úroveň priority"
},
"priorities":{
"urgent":"Naléhavé",
"veryHigh":"Velmi vysoké",
"high":"Vysoké",
"normal":"Normální",
"low":"Nízké",
"veryLow":"Velmi nízké",
"none":"Žádné"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["the_gamer"],
"lastedited":"26/09/2024",
"lastedited":"25/05/2026",
"language":"Danish",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Denne tekst skal indeholde {0}!",
"stringChoices":"Denne tekst kan kun være en af følgende værdier: {0}!",
"stringRegex":"Denne tekst er ugyldig!",
"stringInvertedContains":"Denne streng må ikke indeholde {0}!",
"stringLowercase":"Denne streng skal kun skrives med små bogstaver!",
"stringUppercase":"Denne streng skal kun skrives med store bogstaver!",
"stringSpecialCharacters":"Denne streng må ikke indeholde specialtegn! (kun a-z, 0-9 og mellemrum)",
"stringNoSpaces":"Denne streng må ikke indeholde mellemrum!",
"stringCapitalWord":"Det anbefales, at hvert ord i denne streng starter med stort bogstav!",
"stringCapitalSentence":"Det ser ud til, at nogle sætninger i denne streng ikke starter med stort bogstav!",
"stringPunctuation":"Det ser ud til, at sætningen i denne streng ikke slutter med tegnsætning!",
"numberTooShort":"Dette nummer kan ikke være kortere end {0} tegn!",
"numberTooLong":"Dette nummer kan ikke være længere end {0} tegn!",
@@ -48,6 +56,8 @@
"numberNegative":"Dette nummer kan ikke være negativt!",
"numberPositive":"Dette nummer kan ikke være positivt!",
"numberZero":"Dette nummer kan ikke være nul!",
"numberNan":"Dette tal kan ikke være NaN (ikke et tal)!",
"numberInvertedContains":"Dette tal må ikke indeholde {0}!",
"booleanTrue":"Denne boolean kan ikke være sand!",
"booleanFalse":"Denne boolean kan ikke være falsk!",
@@ -89,7 +99,8 @@
"invalidButton":"Denne knap skal have mindst en {0} eller {1}!",
"unusedOption":"Muligheden {0} bruges ikke nogen steder!",
"unusedQuestion":"Spørgsmålet {0} bruges ikke nogen steder!",
"dropdownOption": "Et panel med dropdown aktiveret kan kun indeholde muligheder af typen 'ticket'!"
"dropdownOption":"Et panel med rullemenu kan kun indeholde muligheder af typerne: 'ticket', 'role' eller 'sub-panel'.",
"customInvalidVersion":"Den version, der er angivet i din konfiguration, matcher ikke! Sørg for, at du har opdateret konfigurationen til den nyeste version!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Vis Tekst Kommandoer",
"helpPage":"Side {0}",
"withReason":"Med Årsag",
"withoutTranscript": "Uden Transkript"
"withoutTranscript":"Uden Transkript",
"blacklistAdd":"Blacklist Bruger",
"blacklistRemove":"Frigiv Bruger"
},
"titles":{
"created":"Ticket Oprettet",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Tilføjet til Blacklist",
"blacklistRemoveDm":"Fjernet fra Blacklist",
"clear":"Tickets Renset",
"clearTickets":"Ryd Tickets",
"roles":"Roller Opdateret",
"autoclose":"Ticket Autolukket",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Autolukning Deaktiveret",
"autodelete":"Ticket Autoslettet",
"autodeleteEnabled":"Autosletning Aktiveret",
"autodeleteDisabled": "Autosletning Deaktiveret"
"autodeleteDisabled":"Autosletning Deaktiveret",
"topicSet":"Emne Ændret",
"prioritySet":"Prioritet Ændret",
"priorityGet":"Ticket Prioritet",
"transfer":"Ticket Overført",
"transcripts":"Transskript Historik"
},
"descriptions":{
"create":"Din ticket er blevet oprettet. Klik på knappen nedenfor for at få adgang til den!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Du kan kun oprette {0} ticket(ter) ad gangen!",
"ticketMessageAutoclose":"Denne ticket vil blive autolukket, når den er inaktiv i {0}h!",
"ticketMessageAutodelete":"Denne ticket vil blive autoslettet, når den er inaktiv i {0} dage!",
"panelReady": "Du kan finde panelet nedenfor!\nDenne besked kan nu slettes!"
"panelReady":"Panelet er tilgængeligt i opfølgningsmeddelelsen!\nDenne meddelelse kan nu slettes!",
"topicSet":"Kanalens emne blev ændret af {0}!",
"prioritySet":"Ticket-prioriteten blev ændret til {0} af {1}!",
"priorityGet":"Den aktuelle prioritet for denne ticket er {0}.",
"transfer":"Ticket-ejerskab blev overført fra {0} til {1} af {2}!"
},
"modal":{
"closePlaceholder":"Hvorfor lukkede du denne ticket?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} er blevet fjernet fra blacklisten af {1}!",
"blacklistAddDm":"Du er blevet blacklistet på vores server!\nFra nu af kan du ikke oprette en ticket!",
"blacklistRemoveDm":"Du er blevet fjernet fra blacklisten på vores server!\nNu kan du igen oprette ticketter!",
"clearLog": "{0} ticketter er blevet slettet af {1}!"
"clearLog":"{0} ticketter er blevet slettet af {1}!",
"transferLog":"Ejerskabet af denne ticket er blevet overført fra {0} til {1} af {2}!",
"transferDm":"Ejerskabet af din ticket er blevet overført fra {0} til {1} på vores server!",
"prioritySetLog":"Prioriteten af denne ticket er blevet ændret til {0} af {1}!",
"prioritySetDm":"Prioriteten af din ticket er blevet ændret til {0} på vores server!",
"roleUpdateLog":"{0} har opdateret deres roller!",
"roleUpdateDm":"Dine roller på vores server er blevet opdateret!",
"topicSetLog":"Prioriteten for denne ticket er blevet sat til {0} af {1}.",
"topicSetDm":"Prioriteten for din ticket er blevet sat til {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Prøv igen",
"continue":"Slet uden transkript",
"backup":"Opret backup-transkript",
"error": "Noget gik galt, da vi forsøgte at oprette transkriptet.\nHvad vil du gerne gøre?\n\nDenne ticket bliver ikke slettet, før du klikker på en af disse knapper."
"error":"Noget gik galt, da vi forsøgte at oprette transkriptet.\nHvad vil du gerne gøre?\n\nDenne ticket bliver ikke slettet, før du klikker på en af disse knapper.",
"title":"Transkriptfejl",
"noHistory":"Denne bruger har endnu ingen transskripter.",
"historyNotSupported":"Transskript historik understøttes i øjeblikket kun med HTML Transcripts.\nTeksttransskript historik vil være tilgængelig i fremtidige versioner."
},
"text":{
"messagesTitle":"BESKEDER",
"embedTitle":"EMBED",
"fileTitle":"FIL",
"fieldsTitle":"FELTER",
"reactionsTitle":"REAKTIONER",
"statsTitle":"STATISTIK",
"emptyContent":"<indhold tomt>",
"noTitle":"<ingen titel>",
"noDesc":"<ingen beskrivelse>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Ukendt panel",
"notInGuild":"Ikke på server",
"channelRename":"Kan ikke omdøbe kanalen",
"busy": "Ticket er optaget"
"channelCategory":"Kan Ikke Ændre Kategori",
"busy":"Ticket er optaget",
"permissionError":"Tilladelsesfejl"
},
"descriptions":{
"askForInfo":"Kontakt ejeren af denne bot for mere info!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Den aktuelle kanal er ikke en gyldig ticket! Det kan være en ticket fra en ældre version af Open Ticket!",
"notInGuild":"Denne {0} virker ikke i DM! Prøv igen på en server!",
"channelRename":"På grund af Discord-ratelimits er det i øjeblikket umuligt for botten at omdøbe kanalen. Kanalen vil automatisk blive omdøbt inden for 10 minutter, hvis botten ikke genstartes.",
"channelCategory":"På grund af Discord rate limits kunne kanalens kategori ikke ændres med det samme. Den vil automatisk blive ændret inden for 10 minutter, hvis botten forbliver online.",
"channelRenameSource":"Kilden til denne fejl er: {0}",
"busy": "Kan ikke bruge denne {0}!\nTicketen bliver i øjeblikket behandlet af botten.\n\nPrøv igen om et par sekunder!"
"busy":"Kan ikke bruge denne {0}!\nTicketen bliver i øjeblikket behandlet af botten.\n\nPrøv igen om et par sekunder!",
"closeBeforeMessage":"Denne ticket kan ikke lukkes/slettes, før en bruger har sendt en besked.",
"closeBeforeAdminMessage":"Denne ticket kan ikke lukkes/slettes, før en ticket-admin eller supportmedlem har sendt en besked.",
"unableToCreateTicket":"Du kan ikke oprette en ticket.",
"messageMissing":"Kunne ikke finde interaktionsbeskeden. Brug kommandoen `{0}` i stedet.",
"stateExpired":"Denne interaktion er ikke længere gyldig eller er udløbet. Brug kommandoen `{0}` i stedet. Det er normalt at modtage denne fejl efter en større Open Ticket-opdatering.",
"panelStateExpired":"Dette panel er ikke længere gyldigt eller er udløbet. Opret et nyt panel med `{0}` for at løse problemet. Det er normalt at modtage denne fejl efter en større Open Ticket-opdatering."
},
"optionInvalidReasons":{
"stringRegex":"Værdien matcher ikke mønsteret!",
@@ -331,7 +388,6 @@
"added":"Tilføjet",
"removed":"Fjernet",
"filter":"Filter",
"claimedBy": "Gjort krav på af {0}",
"method":"Metode",
"type":"Type",
"blacklisted":"Sortlistet",
@@ -343,6 +399,8 @@
"syntax":"Syntaks",
"originalName":"Originalt navn",
"newName":"Nyt navn",
"originalCategory":"Original Kategori",
"newCategory":"Ny Kategori",
"until":"Indtil",
"validOptions":"Gyldige indstillinger",
"validPanels":"Gyldige paneler",
@@ -352,10 +410,32 @@
"version":"Version",
"name":"Navn",
"role":"Rolle",
"status": "Status",
"status":"STATUS",
"claimed":"Gjort krav på",
"pinned":"Fastgjort",
"creationDate": "Oprettelsesdato"
"creationDate":"Oprettelsesdato",
"noone":"Ingen",
"open":"ÅBEN",
"closed":"LUKKET",
"priority":"PRIORITET",
"participants":"DELTAGERE",
"yes":"Ja",
"no":"Nej",
"accept":"Accepter",
"cancel":"Annuller",
"option":"Mulighed",
"topic":"Emne",
"uptime":"System Oppetid",
"messages":"Beskeder",
"embeds":"Embeds",
"files":"Filer",
"components":"Komponenter",
"cooldown":"Cooldown",
"maxTickets":"Maks Tickets",
"admins":"Admins",
"roles":"Roller",
"size":"Størrelse"
},
"lowercase":{
"text":"tekst",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Vil du have, at dette panel automatisk opdateres, når det redigeres?",
"ticket":"Opret en ticket med det samme.",
"ticketId":"Identifikatoren for ticketen, som du vil oprette.",
"ticketOtherUser":"Opret en ticket for en anden bruger.",
"close":"Luk en ticket.",
"delete":"Slet en ticket.",
"deleteNoTranscript":"Slet denne ticket uden at oprette et transkript.",
@@ -384,6 +465,7 @@
"unclaim":"Afstå fra krav på en ticket.",
"pin":"Fastgør en ticket.",
"unpin":"Frigør en fastgjort ticket.",
"move":"Flyt en ticket.",
"moveId":"Identifikatoren for den indstilling, du vil flytte til.",
"rename":"Omdøb en ticket.",
@@ -392,6 +474,7 @@
"addUser":"Brugeren, der skal tilføjes.",
"remove":"Fjern en bruger fra en ticket.",
"removeUser":"Brugeren, der skal fjernes.",
"blacklist":"Administrer ticket-blacklisten.",
"blacklistView":"Se en liste over den nuværende blacklist.",
"blacklistAdd":"Tilføj en bruger til blacklisten.",
@@ -405,6 +488,7 @@
"statsUserUser":"Brugeren, der skal vises.",
"statsTicket":"Se statistik for en ticket på serveren.",
"statsTicketTicket":"Ticketen, der skal vises.",
"clear":"Slet flere tickets på samme tid.",
"clearFilter":"Filteret til at rydde tickets.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Ikke fastgjort",
"autoclose":"Auto-lukket"
},
"autoclose":"Administrer auto-lukning i en ticket.",
"autocloseDisable":"Deaktiver auto-lukning i denne ticket.",
"autocloseEnable":"Aktiver auto-lukning i denne ticket.",
@@ -424,7 +509,21 @@
"autodelete":"Administrer auto-sletning i en ticket.",
"autodeleteDisable":"Deaktiver auto-sletning i denne ticket.",
"autodeleteEnable":"Aktiver auto-sletning i denne ticket.",
"autodeleteEnableTime": "Antal dage, denne ticket skal være inaktiv for at slette den."
"autodeleteEnableTime":"Antal dage, denne ticket skal være inaktiv for at slette den.",
"topic":"Administrer emnet for ticket-kanalen.",
"topicSet":"Indstil emnet for ticket-kanalen.",
"topicValue":"Det nye emne for kanalen.",
"topicList":"Få en liste over alle tickets med deres emner og statistik.",
"priority":"Administrer prioriteten for ticketen.",
"prioritySet":"Indstil prioritet for ticketen.",
"priorityValue":"Prioritet for kanalen.",
"priorityGet":"Få prioritet for ticketen.",
"priorityList":"Få en liste over alle tickets med deres prioritet.",
"transfer":"Overfør ticket-ejerskab fra en bruger til en anden.",
"transferUser":"Brugeren der skal overføres til.",
"transcripts":"Se en brugers ticket transskript historik.",
"transcriptsUser":"Brugeren der skal vises."
},
"helpMenu":{
"help":"Få en liste over alle de tilgængelige kommandoer.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Deaktiver auto-lukning i denne ticket.",
"autocloseEnable":"Aktiver auto-lukning i denne ticket.",
"autodeleteDisable":"Deaktiver auto-sletning i denne ticket.",
"autodeleteEnable": "Aktiver auto-sletning i denne ticket."
"autodeleteEnable":"Aktiver auto-sletning i denne ticket.",
"categories":{
"general":"Generelle Kommandoer",
"basicTicket":"Grundlæggende Ticket Kommandoer",
"advancedTicket":"Avancerede Ticket Kommandoer",
"userTicket":"Bruger Ticket Kommandoer",
"admin":"Admin Kommandoer",
"advanced":"Avancerede Kommandoer",
"extra":"Ekstra Kommandoer"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Systemstatistikker",
"user":"Brugerstatistikker",
"ticket":"Ticketstatistikker",
"participants": "Deltagere"
"participants":"Deltagere",
"messages":"Beskeder"
},
"properties":{
"ticketsCreated":"Oprettede Tickets",
@@ -472,7 +581,48 @@
"ticketsPinned":"Fastgjorte Tickets",
"ticketsMoved":"Flyttede Tickets",
"usersBlacklisted":"Sortlistede Brugere",
"transcriptsCreated": "Oprettede Transkripter"
}
"transcriptsCreated":"Oprettede Transkripter",
"ticketsAutodeleted":"Tickets Auto-slettet",
"ticketsTransferred":"Tickets Overført",
"ticketVolume":"Ticket Volume",
"averageTickets":"Gennemsnitlige Tickets/Bruger",
"currentTickets":"Nuværende Tickets",
"age":"Ticket Alder",
"responseTime":"Responstid",
"resolutionTime":"Løsningstid",
"createdOn":"Oprettet den",
"createdBy":"Oprettet af",
"closedOn":"Lukket den",
"closedBy":"Lukket af",
"claimedOn":"Tildelt den",
"claimedBy":"Tildelt af",
"pinnedOn":"Fastgjort den",
"pinnedBy":"Fastgjort af",
"deletedOn":"Slettet den",
"deletedBy":"Slettet af"
},
"roles":{
"developer":"Udvikler",
"serverOwner":"Serverejer",
"serverAdmin":"Server Admin",
"moderator":"Moderator Team",
"support":"Support Team",
"member":"Medlem"
}
},
"panel":{
"selectTicket":"Vælg din ticket",
"selectRole":"Vælg din rolle",
"selectOption":"Vælg dit valg",
"selectPriorityLevel":"Vælg prioritetsniveau"
},
"priorities":{
"urgent":"Haster",
"veryHigh":"Meget Høj",
"high":"Høj",
"normal":"Normal",
"low":"Lav",
"veryLow":"Meget Lav",
"none":"Ingen"
}
}
+172 -22
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["DJj123dj"],
"lastedited":"21/08/2024",
"lastedited":"25/05/2026",
"language":"Dutch",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Deze tekst moet {0} bevatten!",
"stringChoices":"Deze tekst kan alleen de volgende waardes bevatten: {0}!",
"stringRegex":"Deze tekst is ongeldig!",
"stringInvertedContains":"Deze tekst mag niet {0} bevatten!",
"stringLowercase":"Deze tekst moet in kleine letters geschreven zijn!",
"stringUppercase":"Deze tekst moet in hoofdletters geschreven zijn!",
"stringSpecialCharacters":"Deze tekst mag geen speciale karakters bevatten! (enkel a-z, 0-9 & spatie)",
"stringNoSpaces":"Deze tekst mag geen spaties bevatten!",
"stringCapitalWord":"Het is aangeraden om ieder woord in de zin te laten starten met een hoofdletter!",
"stringCapitalSentence":"Het ziet er naar uit dat sommige zinnen in deze tekst niet met een hoofdletter beginnen!",
"stringPunctuation":"Het ziet er naar uit dat de zin in deze tekst niet met een leesteken eindigt!",
"numberTooShort":"Dit nummer kan niet korter dan {0} karakters zijn!",
"numberTooLong":"Dit nummer kan niet langer dan {0} karakters zijn!",
@@ -48,6 +56,8 @@
"numberNegative":"Dit nummer kan niet negatief zijn!",
"numberPositive":"Dit nummer kan niet positief zijn!",
"numberZero":"Dit nummer kan niet nul zijn!",
"numberNan":"Dit nummer kan geen NaN (Not A Number) zijn!",
"numberInvertedContains":"Dit nummer mag niet {0} bevatten!",
"booleanTrue":"Deze boolean kan niet true zijn!",
"booleanFalse":"Deze boolean kan niet false zijn!",
@@ -89,7 +99,8 @@
"invalidButton":"Deze knop moet een {0} of {1} hebben!",
"unusedOption":"De optie {0} wordt nergens gebruikt!",
"unusedQuestion":"The vraag {0} wordt nergens gebruikt!",
"dropdownOption":"Een paneel met dropdown mag alleen opties bevaten van het 'ticket' type!"
"dropdownOption":"Een paneel met dropdown kan alleen opties bevatten van de types: 'ticket', 'role' of 'sub-panel'.",
"customInvalidVersion":"De versie gespecificeerd in u configbestand komt niet overeen! Zorg dat u het configbestand geüpdatet heeft naar de laatste versie!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Bekijk Text Commands",
"helpPage":"Pagina {0}",
"withReason":"Met Reden",
"withoutTranscript":"Zonder Transcript"
"withoutTranscript":"Zonder Transcript",
"blacklistAdd":"Gebruiker Blacklisten",
"blacklistRemove":"Gebruiker Vrijgeven"
},
"titles":{
"created":"Ticket Gecreëerd",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Toegevoegd Aan Blacklist",
"blacklistRemoveDm":"Verwijderd Van Blacklist",
"clear":"Tickets Opgeruimd",
"clearTickets":"Tickets Opruimen",
"roles":"Rollen Bijgewerkt",
"autoclose":"Ticket Automatisch Gesloten",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Autoclose Uitgeschakeld",
"autodelete":"Ticket Automatisch Verwijderd",
"autodeleteEnabled":"Autodelete Ingeschakeld",
"autodeleteDisabled":"Autodelete Uitgeschakeld"
"autodeleteDisabled":"Autodelete Uitgeschakeld",
"topicSet":"Onderwerp Veranderd",
"prioritySet":"Prioriteit Veranderd",
"priorityGet":"Ticket Prioriteit",
"transfer":"Ticket Overgedragen",
"transcripts":"Transcript Geschiedenis"
},
"descriptions":{
"create":"Je ticket is aangemaakt. Klik op de knop hier onder om er naar toe te gaan!",
@@ -169,18 +189,23 @@
"rolesEmpty":"Geen enkele rollen zijn bijgewerkt!",
"autocloseLeave":"Dit ticket is automatisch gesloten omdat de maker de server verlaten is!",
"autocloseTimeout":"Dit ticket is automatisch gesloten omdat het inactief was voor meer dan `{0} uur`!",
"autocloseTimeout":"Dit ticket is automatisch gesloten omdat het meer dan `{0} uur` inactief was!",
"autodeleteLeave":"Dit ticket is automatisch verwijderd omdat de maker de server verlaten is!",
"autodeleteTimeout":"Dit ticket is automatisch verwijderd omdat het inactief was voor meer dan `{0} dagen`!",
"autocloseEnabled":"Autoclose is ingeschakeld in dit ticket!\nHet wordt gesloten wanneer het inactief is voor meer dan `{0} uur`!",
"autodeleteTimeout":"Dit ticket is automatisch verwijderd omdat het meer dan `{0} dagen` inactief was!",
"autocloseEnabled":"Autoclose is ingeschakeld in dit ticket!\nHet wordt gesloten na `{0} uur` inactiviteit!",
"autocloseDisabled":"Autoclose is uitgeschakeld in dit ticket!\nHet wordt niet meer automatisch gesloten!",
"autodeleteEnabled":"Autodelete is ingeschakeld in dit ticket!\nHet wordt verwijderd wanneer het inactief is voor meer dan `{0} dagen`!",
"autodeleteEnabled":"Autodelete is ingeschakeld in dit ticket!\nHet wordt verwijderd na `{0} dagen` inactiviteit!",
"autodeleteDisabled":"Autodelete is uitgeschakeld in dit ticket!\nHet wordt niet meer automatisch verwijderd!",
"ticketMessageLimit":"Je kan maar {0} ticket(s) op het zelfde moment aanmaken!",
"ticketMessageAutoclose":"Dit ticket wordt automatisch gesloten wanneer het inactief is voor {0} uur!",
"ticketMessageAutodelete":"Dit ticket wordt automatisch verwijderd wanneer het inactief is voor {0} dagen!",
"panelReady":"Je kan het paneel hier onder vinden!\nDit bericht kan nu verwijderd worden!"
"panelReady":"Het paneel is beschikbaar in het volgende bericht!\nDit bericht kan verwijderd worden!",
"topicSet":"Het kanaalsonderwerp is succesvol veranderd naar {0}!",
"prioritySet":"De ticket prioriteit is succesvol veranderd naar {0} door {1}!",
"priorityGet":"De huidige prioriteit van dit ticket is {0}.",
"transfer":"Het ticket is succesvol overgedragen van {0} naar {1} door {2}!"
},
"modal":{
"closePlaceholder":"Waarom heb je dit ticket gesloten?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} is verwijderd van de blacklist door {1}!",
"blacklistAddDm":"Je bent geblacklist in onze server!\nVanaf nu kan je geen tickets meer aanmaken!",
"blacklistRemoveDm":"Je bent verwijderd van de blacklist in onze server!\nNormaal zou je nu terug tickets kunnen aanmaken!",
"clearLog":"{0} tickets zijn verwijderd door by {1}!"
"clearLog":"{0} tickets zijn verwijderd door by {1}!",
"transferLog":"Het ticket is overgedragen van {0} naar {1} door {2}!",
"transferDm":"U ticket is overgedragen van {0} naar {1} in onze server!",
"prioritySetLog":"De prioriteit van dit ticket is veranderd naar {0} door {1}!",
"prioritySetDm":"De prioriteit van u ticket is veranderd naar {0} in onze server!",
"roleUpdateLog":"{0} heeft zijn/haar rollen bewerkt!",
"roleUpdateDm":"U rollen in onze server zijn veranderd!",
"topicSetLog":"De prioriteit van dit ticket is ingesteld op {0} door {1}.",
"topicSetDm":"De prioriteit van je ticket is ingesteld op {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Herprobeer",
"continue":"Verwijder Zonder Transcript",
"backup":"Maak Backup Transcript",
"error":"Er is iets misgegaan bij het maken van het transcript.\nWat wil je doen?\n\nDit ticket wordt niet meer verwijderd to je een van de onderstaande knoppen gebruikt."
"error":"Er is iets misgegaan bij het maken van het transcript.\nWat wil je doen?\n\nDit ticket wordt niet meer verwijderd to je een van de onderstaande knoppen gebruikt.",
"title":"Transcript Error",
"noHistory":"Deze gebruiker heeft nog geen transcripts.",
"historyNotSupported":"Transcriptgeschiedenis wordt momenteel alleen ondersteund met HTML Transcripts.\nGeschiedenis van teksttranscripts zal beschikbaar zijn in toekomstige versies."
},
"text":{
"messagesTitle":"BERICHTEN",
"embedTitle":"EMBED",
"fileTitle":"BESTAND",
"fieldsTitle":"VELDEN",
"reactionsTitle":"REACTIES",
"statsTitle":"STATS",
"emptyContent":"<inhoud is leeg>",
"noTitle":"<geen-titel>",
"noDesc":"<geen-beschrijving>"
}
},
"errors":{
@@ -257,10 +305,12 @@
"unknownPanel":"Onbekend Paneel",
"notInGuild":"Niet In Server",
"channelRename":"Kan Kanaal Niet Hernoemen",
"busy":"Ticket Is Bezig"
"channelCategory":"Kan Categorie Niet Wijzigen",
"busy":"Ticket Is Bezig",
"permissionError":"Permission Error"
},
"descriptions":{
"askForInfo":"Contacteer the eigenaar van deze bot voor meer info!",
"askForInfo":"Contacteer de eigenaar van deze bot voor meer info!",
"askForInfoResolve":"Contacteer de eigenaar van deze bot als het probleem niet opgelost wordt na enkele keren.",
"internalError":"Gefaald om te reageren op deze {0} door een interne error!",
"optionMissing":"Een verplichte parameter mist in deze command!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Het huidige kanaal is geen geldig ticket! Het is misschien een ticket van een oudere Open Ticket versie!",
"notInGuild":"Deze {0} werkt niet in DM! Probeer het opnieuw in een server!",
"channelRename":"Door discord ratelimits is het op dit moment onmogelijk voor de bot om het kanaal te hernoemen. Het kanaal zal automatisch hernoemd worden over 10 min als de bot niet herstart wordt.",
"channelCategory":"Vanwege Discord rate limits kon de kanaalcategorie niet onmiddellijk worden gewijzigd. Deze wordt automatisch binnen 10 minuten gewijzigd als de bot online blijft.",
"channelRenameSource":"De bron van deze error is: {0}",
"busy":"Kan deze {0} niet gebruiken!\nHet ticket wordt op dit moment verwerkt door de bot.\n\nProbeer het opnieuw binnen een paar seconden!"
"busy":"Kan deze {0} niet gebruiken!\nHet ticket wordt op dit moment verwerkt door de bot.\n\nProbeer het opnieuw binnen een paar seconden!",
"closeBeforeMessage":"Dit ticket kan niet gesloten/verwijderd worden vooraleer er een bericht door een gebruiker verstuurd is.",
"closeBeforeAdminMessage":"Dit ticket kan niet gesloten/verwijderd worden vooraleer er een bericht door een ticket admin of supportlid verstuurd is.",
"unableToCreateTicket":"U kunt geen ticket aanmaken.",
"messageMissing":"Kan het bericht van de interactie niet vinden. Gebruik in plaats daarvan het commando `{0}`.",
"stateExpired":"Deze interactie is niet langer geldig of is verlopen. Gebruik in plaats daarvan het commando `{0}`. Het is normaal om deze fout te ontvangen na een grote Open Ticket-update.",
"panelStateExpired":"Dit paneel is niet langer geldig of is verlopen. Maak een nieuw paneel met `{0}` om het probleem op te lossen. Het is normaal om deze fout te ontvangen na een grote Open Ticket-update."
},
"optionInvalidReasons":{
"stringRegex":"Waarde is niet gelijk aan het patroon!",
@@ -331,7 +388,6 @@
"added":"Toegevoegd",
"removed":"Verwijderd",
"filter":"Filter",
"claimedBy":"Geclaimd Door {0}",
"method":"Methode",
"type":"Type",
"blacklisted":"Geblacklist",
@@ -343,6 +399,8 @@
"syntax":"Syntax",
"originalName":"Originele Naam",
"newName":"Nieuwe Naam",
"originalCategory":"Originele Categorie",
"newCategory":"Nieuwe Categorie",
"until":"Tot",
"validOptions":"Geldige Opties",
"validPanels":"Geldige Panelen",
@@ -355,7 +413,29 @@
"status":"Status",
"claimed":"Geclaimd",
"pinned":"Gepind",
"creationDate":"Aanmaakdatum"
"creationDate":"Aanmaakdatum",
"noone":"Niemand",
"open":"Open",
"closed":"Gesloten",
"priority":"Prioriteit",
"participants":"Deelnemers",
"yes":"Ja",
"no":"Nee",
"accept":"Accepteren",
"cancel":"Annuleren",
"option":"Optie",
"topic":"Onderwerp",
"uptime":"Systeem Uptime",
"messages":"Berichten",
"embeds":"Embeds",
"files":"Bestanden",
"components":"Componenten",
"cooldown":"Cooldown",
"maxTickets":"Max Tickets",
"admins":"Admins",
"roles":"Rollen",
"size":"Grootte"
},
"lowercase":{
"text":"tekst",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Wil je dat dit paneel automatisch bijwerkt wanneer het aangepast wordt?",
"ticket":"Maak een instant ticket.",
"ticketId":"Het id van het ticket dat je wilt aanmaken.",
"ticketOtherUser":"Maak een ticket aan voor een andere gebruiker.",
"close":"Sluit een ticket, dit schakelt schrijven in het kanaal uit.",
"delete":"Verwijder een ticket, dit maakt een transcript waneer ingeschakeld.",
"deleteNoTranscript":"Verwijder dit ticket zonder een transcript aan te maken.",
@@ -384,6 +465,7 @@
"unclaim":"Ontclaim dit ticket.",
"pin":"Pin dit ticket.",
"unpin":"Maak dit ticket los.",
"move":"Verplaats een ticket.",
"moveId":"Het id van de optie waarnaar je wilt verplaatsen.",
"rename":"Hernoem een ticket.",
@@ -392,6 +474,7 @@
"addUser":"De gebruiker om toe te voegen.",
"remove":"Verwijder een user van dit ticket.",
"removeUser":"De gebruiker om te verwijderen.",
"blacklist":"Beheer de ticket blacklist.",
"blacklistView":"Bekijk de huidige blacklist.",
"blacklistAdd":"Voeg een gebruiker toe aan de blacklist.",
@@ -405,6 +488,7 @@
"statsUserUser":"De gebruiker om te bekijken.",
"statsTicket":"Bekijk de stats van een ticket in de server.",
"statsTicketTicket":"Het ticket om te bekijken.",
"clear":"Verwijder meerdere tickets tegelijkertijd.",
"clearFilter":"De filter om tickets op te ruimen.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Losgemaakt (niet gepind)",
"autoclose":"Automatisch Gesloten"
},
"autoclose":"Beheer autoclose in een ticket.",
"autocloseDisable":"Schakel autoclose in dit ticket uit.",
"autocloseEnable":"Schakel autoclose in dit ticket in.",
@@ -424,7 +509,21 @@
"autodelete":"Beheer autodelete in een ticket.",
"autodeleteDisable":"Schakel autodelete in dit ticket aan.",
"autodeleteEnable":"Schakel autodelete in dit ticket aan.",
"autodeleteEnableTime":"De hoeveelheid dagen dat dit ticket inactief moet zijn voor het te verwijderen."
"autodeleteEnableTime":"De hoeveelheid dagen dat dit ticket inactief moet zijn voor het te verwijderen.",
"topic":"Beheer het onderwerp van een ticket kanaal.",
"topicSet":"Verander het onderwerp van een ticket kanaal.",
"topicValue":"Het nieuwe onderwerp van het kanaal.",
"topicList":"Bekijk een lijst van alle tickets met hun onderwerp en stats.",
"priority":"Beheer de prioriteit van een ticket.",
"prioritySet":"Verander de prioriteit van een ticket.",
"priorityValue":"De prioriteit van het kanaal.",
"priorityGet":"Bekijk de prioriteit van een ticket.",
"priorityList":"Bekijk een lijst van alle tickets met hun prioriteit.",
"transfer":"Draag het ticket eigendom over van de ene naar de andere gebruiker.",
"transferUser":"De user om naar over te dragen.",
"transcripts":"Bekijk de ticket transcriptgeschiedenis van een gebruiker.",
"transcriptsUser":"De gebruiker om te bekijken."
},
"helpMenu":{
"help":"Krijg een lijst van alle beschikbare commands.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Zet autoclose uit in dit ticket.",
"autocloseEnable":"Zet autoclose in aan dit ticket.",
"autodeleteDisable":"Zet autodelete uit in dit ticket.",
"autodeleteEnable":"Zet autodelete aan in dit ticket."
"autodeleteEnable":"Zet autodelete aan in dit ticket.",
"categories":{
"general":"Algemene Commands",
"basicTicket":"Basis Ticket Commands",
"advancedTicket":"Geavanceerde Ticket Commands",
"userTicket":"Gebruiker Ticket Commands",
"admin":"Admin Commands",
"advanced":"Geavanceerde Commands",
"extra":"Extra Commands"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Systeem Stats",
"user":"User Stats",
"ticket":"Ticket Stats",
"participants":"Deelnemers"
"participants":"Deelnemers",
"messages":"Berichten"
},
"properties":{
"ticketsCreated":"Tickets Aangemaakt",
@@ -472,7 +581,48 @@
"ticketsPinned":"Tickets Gepind",
"ticketsMoved":"Tickets Verplaatst",
"usersBlacklisted":"Users Geblacklist",
"transcriptsCreated":"Transcripts Aangemaakt"
}
"transcriptsCreated":"Transcripts Aangemaakt",
"ticketsAutodeleted":"Tickets Autodeleted",
"ticketsTransferred":"Tickets Overgedragen",
"ticketVolume":"Ticket Volume",
"averageTickets":"Gemiddelde Tickets/Gebruiker",
"currentTickets":"Huidige Tickets",
"age":"Ticket Leeftijd",
"responseTime":"Antwoordtijd",
"resolutionTime":"Oplostijd",
"createdOn":"Gemaakt Op",
"createdBy":"Gemaakt Door",
"closedOn":"Gesloten Op",
"closedBy":"Gesloten Door",
"claimedOn":"Geclaimed Op",
"claimedBy":"Geclaimed Door",
"pinnedOn":"Gepint Op",
"pinnedBy":"Gepint Door",
"deletedOn":"Verwijderd Op",
"deletedBy":"Verwijderd Door"
},
"roles":{
"developer":"Developer",
"serverOwner":"Server Eigenaar",
"serverAdmin":"Server Admin",
"moderator":"Moderator Team",
"support":"Support Team",
"member":"Serverlid"
}
},
"panel":{
"selectTicket":"Selecteer u ticket",
"selectRole":"Selecteer u rol",
"selectOption":"Selecteer u optie",
"selectPriorityLevel":"Selecteer prioriteitsniveau"
},
"priorities":{
"urgent":"Urgent",
"veryHigh":"Zeer Hoog",
"high":"Hoog",
"normal":"Normaal",
"low":"Laag",
"veryLow":"Zeer Laag",
"none":"Geen"
}
}
+438 -288
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["DJj123dj"],
"lastedited":"21/08/2024",
"lastedited":"25/05/2026",
"language":"English",
"automated":false
},
@@ -13,83 +13,94 @@
"typeWarning":"[WARNING]",
"typeInfo":"[INFO]",
"headerConfigChecker":"CONFIG CHECKER",
"headerDescription":"check for errors in your config files!",
"footerError":"the bot won't start until all {0}'s are fixed!",
"footerWarning":"it's recommended to fix all {0}'s before starting!",
"headerDescription":"Validating config files...",
"footerError":"The bot will not start until all {0}'s are resolved.",
"footerWarning":"The bot may behave unexpectedly until all {0}'s are resolved.",
"footerSupport":"SUPPORT: {0} - DOCS: {1}",
"compactInformation":"use {0} for more information!",
"compactInformation":"Use {0} for a detailed config report.",
"dataPath":"path",
"dataDocs":"docs",
"dataMessages":"message"
},
"messages":{
"stringTooShort":"This string can't be shorter than {0} characters!",
"stringTooLong":"This string can't be longer than {0} characters!",
"stringLengthInvalid":"This string needs to be {0} characters long!",
"stringStartsWith":"This string needs to start with {0}!",
"stringEndsWith":"This string needs to end with {0}!",
"stringContains":"This string needs to contain {0}!",
"stringChoices":"This string can only be one of the following values: {0}!",
"stringRegex":"This string is invalid!",
"stringTooShort":"Text must be at least {0} characters long",
"stringTooLong":"Text must be no longer than {0} characters",
"stringLengthInvalid":"Text must be exactly {0} characters long",
"stringStartsWith":"Text must start with {0}",
"stringEndsWith":"Text must end with {0}",
"stringContains":"Text must contain {0}",
"stringChoices":"Text must be one of the following: {0}",
"stringRegex":"Text does not match the required format",
"stringInvertedContains":"Text must not contain {0}",
"stringLowercase":"Text must be entirely lowercase",
"stringUppercase":"Text must be entirely uppercase",
"stringSpecialCharacters":"Text must only contain letters (a–z), numbers (0–9), and spaces",
"stringNoSpaces":"Text must not contain spaces",
"stringCapitalWord":"Each word in this value should start with a capital letter",
"stringCapitalSentence":"One or more sentences in this value do not start with a capital letter",
"stringPunctuation":"The sentence in this value does not end with a punctuation mark",
"numberTooShort":"This number can't be shorter than {0} characters!",
"numberTooLong":"This number can't be longer than {0} characters!",
"numberLengthInvalid":"This number needs to be {0} characters long!",
"numberTooSmall":"This number needs to be at least {0}!",
"numberTooLarge":"This number needs to be at most {0}!",
"numberNotEqual":"This number needs to be {0}!",
"numberStep":"This number needs to be a multiple of {0}!",
"numberStepOffset":"This number needs to be a multiple of {0} starting with {1}!",
"numberStartsWith":"This number needs to start with {0}!",
"numberEndsWith":"This number needs to end with {0}!",
"numberContains":"This number needs to contain {0}!",
"numberChoices":"This number can only be one of the following values: {0}!",
"numberFloat":"This number can't be a decimal!",
"numberNegative":"This number can't be negative!",
"numberPositive":"This number can't be positive!",
"numberZero":"This number can't be zero!",
"numberTooShort":"Number must be at least {0} digits long",
"numberTooLong":"Number must be no longer than {0} digits",
"numberLengthInvalid":"Number must be exactly {0} digits long",
"numberTooSmall":"Number must be at least {0}",
"numberTooLarge":"Number must be at most {0}",
"numberNotEqual":"Number must be exactly {0}",
"numberStep":"Number must be a multiple of {0}",
"numberStepOffset":"Number must be a multiple of {0}, starting from {1}",
"numberStartsWith":"Number must start with {0}",
"numberEndsWith":"Number must end with {0}",
"numberContains":"Number must contain {0}",
"numberChoices":"Number must be one of the following: {0}",
"numberFloat":"Number must be a whole number",
"numberNegative":"Number must be a positive number",
"numberPositive":"Number must be a negative number",
"numberZero":"Number must not be zero",
"numberNan":"Number must be a valid number",
"numberInvertedContains":"Number must not contain {0}",
"booleanTrue":"This boolean can't be true!",
"booleanFalse":"This boolean can't be false!",
"booleanTrue":"Boolean must be false",
"booleanFalse":"Boolean must be true",
"arrayEmptyDisabled":"This array isn't allowed to be empty!",
"arrayEmptyRequired":"This array is required to be empty!",
"arrayTooShort":"This array needs to have a length of at least {0}!",
"arrayTooLong":"This array needs to have a length of at most {0}!",
"arrayLengthInvalid":"This array needs to have a length of {0}!",
"arrayInvalidTypes":"This array can only contain the following types: {0}!",
"arrayDouble":"This array doesn't allow the same value twice!",
"arrayEmptyDisabled":"List must not be empty",
"arrayEmptyRequired":"List must be empty",
"arrayTooShort":"List must have at least {0} items",
"arrayTooLong":"List must have at most {0} items",
"arrayLengthInvalid":"List must have exactly {0} items",
"arrayInvalidTypes":"List may only contain the following types: {0}",
"arrayDouble":"List must not contain duplicate values",
"discordInvalidId":"This is an invalid discord {0} id!",
"discordInvalidIdOptions":"This is an invalid discord {0} id! You can also use one of these: {1}!",
"discordInvalidToken":"This is an invalid discord token (syntactically)!",
"colorInvalid":"This is an invalid hex color!",
"emojiTooShort":"This string needs to have at least {0} emoji's!",
"emojiTooLong":"This string needs to have at most {0} emoji's!",
"emojiCustom":"This emoji can't be a custom discord emoji!",
"emojiInvalid":"This is an invalid emoji!",
"urlInvalid":"This url is invalid!",
"urlInvalidHttp":"This url can only use the https:// protocol!",
"urlInvalidProtocol":"This url can only use the http:// & https:// protocols!",
"urlInvalidHostname":"This url has a disallowed hostname!",
"urlInvalidExtension":"This url has an invalid extension! Choose between: {0}!",
"urlInvalidPath":"This url has an invalid path!",
"idNotUnique":"This id isn't unique, use another id instead!",
"idNonExistent":"The id {0} doesn't exist!",
"discordInvalidId":"Invalid Discord {0} ID",
"discordInvalidIdOptions":"Invalid Discord {0} ID. Alternatively, use one of the following: {1}",
"discordInvalidToken":"Invalid Discord token",
"colorInvalid":"Invalid hex color",
"emojiTooShort":"Value must contain at least {0} emoji",
"emojiTooLong":"Value must contain at most {0} emoji",
"emojiCustom":"Custom Discord emojis are not allowed here",
"emojiInvalid":"Invalid emoji",
"urlInvalid":"Invalid URL",
"urlInvalidHttp":"URL must use the https:// protocol",
"urlInvalidProtocol":"URL must use the http:// or https:// protocol",
"urlInvalidHostname":"URL hostname is not allowed",
"urlInvalidExtension":"Invalid URL extension. Allowed extensions: {0}",
"urlInvalidPath":"Invalid URL path",
"idNotUnique":"This ID is already in use. Please choose a unique ID",
"idNonExistent":"ID {0} does not exist",
"invalidType":"This property needs to be the type: {0}!",
"propertyMissing":"The property {0} is missing from this object!",
"propertyOptional":"The property {0} is optional in this object!",
"objectDisabled":"This object is disabled, enable it using {0}!",
"nullInvalid":"This property can't be null!",
"switchInvalidType":"This needs to be one of the following types: {0}!",
"objectSwitchInvalid":"This object needs to be one of the following types: {0}!",
"invalidType":"Property must be of type: {0}",
"propertyMissing":"Required property {0} is missing from the object",
"propertyOptional":"Property {0} is optional in the object",
"objectDisabled":"This object is disabled. Enable it using {0}",
"nullInvalid":"Property must not be null",
"switchInvalidType":"Value must be one of the following types: {0}",
"objectSwitchInvalid":"Object must be one of the following types: {0}",
"invalidLanguage":"This is an invalid language!",
"invalidButton":"This button needs to have at least an {0} or {1}!",
"unusedOption":"The option {0} isn't used anywhere!",
"unusedQuestion":"The question {0} isn't used anywhere!",
"dropdownOption":"A panel with dropdown enabled can only contain options of the 'ticket' type!"
"invalidLanguage":"Invalid language",
"invalidButton":"Button must have at least an {0} or {1}",
"unusedOption":"Option {0} is not used anywhere",
"unusedQuestion":"Question {0} is not used anywhere",
"dropdownOption":"A panel with dropdown can only contain options of the types: 'ticket', 'role' or 'sub-panel'.",
"customInvalidVersion":"Config version mismatch. Make sure to update your config to the latest version"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"View Text Commands",
"helpPage":"Page {0}",
"withReason":"With Reason",
"withoutTranscript":"Without Transcript"
"withoutTranscript":"Without Transcript",
"blacklistAdd":"Blacklist User",
"blacklistRemove":"Release User"
},
"titles":{
"created":"Ticket Created",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Added To Blacklist",
"blacklistRemoveDm":"Removed From Blacklist",
"clear":"Tickets Cleared",
"clearTickets":"Clear Tickets",
"roles":"Roles Updated",
"autoclose":"Ticket Autoclosed",
@@ -139,109 +153,143 @@
"autocloseDisabled":"Autoclose Disabled",
"autodelete":"Ticket Autodeleted",
"autodeleteEnabled":"Autodelete Enabled",
"autodeleteDisabled":"Autodelete Disabled"
"autodeleteDisabled":"Autodelete Disabled",
"topicSet":"Topic Changed",
"prioritySet":"Priority Changed",
"priorityGet":"Ticket Priority",
"transfer":"Ticket Transferred",
"transcripts":"Transcript History"
},
"descriptions":{
"create":"Your ticket has been created. Click the button below to access it!",
"close":"The ticket has been closed successfully!",
"delete":"The ticket has been deleted successfully!",
"reopen":"The ticket has been reopened successfully!",
"claim":"The ticket has been claimed successfully!",
"unclaim":"The ticket has been unclaimed successfully!",
"pin":"The ticket has been pinned successfully!",
"unpin":"The ticket has been unpinned successfully!",
"rename":"The ticket has been renamed to {0} successfully!",
"move":"The ticket has been moved to {0} successfully!",
"add":"{0} has been added to the ticket successfully!",
"remove":"{0} has been removed from the ticket successfully!",
"create":"Your ticket is ready. Click the button below to view and continue.",
"close":"The ticket has been closed.",
"delete":"The ticket has been deleted.",
"reopen":"The ticket has been reopened.",
"claim":"The ticket has been claimed.",
"unclaim":"The ticket has been unclaimed.",
"pin":"The ticket has been pinned.",
"unpin":"The ticket has been unpinned.",
"rename":"The ticket has been renamed to {0}.",
"move":"The ticket has been moved to {0}.",
"add":"{0} has been added to the ticket.",
"remove":"{0} has been removed from the ticket.",
"helpExplanation":"`<name>` => required parameter\n`[name]` => optional parameter",
"statsReset":"The bot stats have been reset successfully!",
"statsError":"Unable to view ticket stats!\n{0} is not a ticket!",
"blacklistAdd":"{0} has been blacklisted successfully!",
"blacklistRemove":"{0} has been released successfully!",
"blacklistGetSuccess":"{0} is currently blacklisted!",
"blacklistGetEmpty":"{0} is currently not blacklisted!",
"blacklistViewEmpty":"No-one has been blacklisted yet!",
"blacklistViewTip":"Use \"/blacklist add\" to blacklist a user!",
"clearVerify":"Are you sure you want to delete multiple tickets?\nThis action can't be undone!",
"clearReady":"{0} tickets have been deleted successfully!",
"rolesEmpty":"No roles have been updated!",
"statsReset":"The bot statistics have been reset.",
"statsError":"Unable to retrieve ticket statistics.\n{0} is not a valid ticket.",
"blacklistAdd":"{0} has been blacklisted.",
"blacklistRemove":"{0} has been released.",
"blacklistGetSuccess":"{0} is blacklisted!",
"blacklistGetEmpty":"{0} is not blacklisted!",
"blacklistViewEmpty":"No users have been blacklisted yet.",
"blacklistViewTip":"Use \"/blacklist add\" to add a user to the blacklist.",
"clearVerify":"Are you sure you want to delete multiple tickets?\nThis action cannot be undone.",
"clearReady":"{0} ticket(s) have been deleted.",
"rolesEmpty":"No roles were modified.",
"autocloseLeave":"This ticket has been autoclosed because the creator left the server!",
"autocloseTimeout":"This ticket has been autoclosed because it has been inactive for more than `{0}h`!",
"autodeleteLeave":"This ticket has been autodeleted because the creator left the server!",
"autodeleteTimeout":"This ticket has been autodeleted because it has been inactive for more than `{0} days`!",
"autocloseEnabled":"Autoclose has been enabled in this ticket!\nIt will be closed when it is inactive for more than `{0}h`!",
"autocloseDisabled":"Autoclose has been disabled in this ticket!\nIt won't be closed automatically anymore!",
"autodeleteEnabled":"Autodelete has been enabled in this ticket!\nIt will be deleted when it is inactive for more than `{0} days`!",
"autodeleteDisabled":"Autodelete has been disabled in this ticket!\nIt won't be deleted automatically anymore!",
"autocloseLeave":"This ticket was automatically closed because its creator left the server.",
"autocloseTimeout":"This ticket was automatically closed due to inactivity exceeding `{0}h`.",
"autodeleteLeave":"This ticket was automatically deleted because its creator left the server.",
"autodeleteTimeout":"This ticket was automatically deleted due to inactivity exceeding `{0} days`.",
"autocloseEnabled":"Autoclose has been enabled for this ticket.\nIt will close after `{0}h` of inactivity.",
"autocloseDisabled":"Autoclose has been disabled for this ticket.\nThis ticket will no longer close automatically.",
"autodeleteEnabled":"Autodelete has been enabled for this ticket.\nIt will be deleted after `{0} days` of inactivity.",
"autodeleteDisabled":"Autodelete has been disabled for this ticket.\nThis ticket will no longer be deleted automatically.",
"ticketMessageLimit":"You can only create {0} ticket(s) at the same time!",
"ticketMessageAutoclose":"This ticket will be autoclosed when inactive for {0}h!",
"ticketMessageAutodelete":"This ticket will be autodeleted when inactive for {0} days!",
"panelReady":"You can find the panel below!\nThis message can now be deleted!"
"ticketMessageLimit":"You can only have {0} active ticket(s) at a time.",
"ticketMessageAutoclose":"This ticket will automatically close after `{0}h` of inactivity.",
"ticketMessageAutodelete":"This ticket will automatically be deleted after `{0} days` of inactivity.",
"panelReady":"The panel has been sent in the follow-up message.\nYou may now delete this message.",
"topicSet":"The channel topic has been changed by {0}.",
"prioritySet":"The ticket priority has been changed to {0} by {1}.",
"priorityGet":"The priority of this ticket is {0}.",
"transfer":"The ticket ownership has been transferred from {0} to {1} by {2}."
},
"modal":{
"closePlaceholder":"Why did you close this ticket?",
"deletePlaceholder":"Why did you delete this ticket?",
"reopenPlaceholder":"Why did you reopen this ticket?",
"claimPlaceholder":"Why did you claim this ticket?",
"unclaimPlaceholder":"Why did you unclaim this ticket?",
"pinPlaceholder":"Why did you pin this ticket?",
"unpinPlaceholder":"Why did you unpin this ticket?"
"closePlaceholder":"Why would you like to close this ticket?",
"deletePlaceholder":"Why would you like to delete this ticket?",
"reopenPlaceholder":"Why would you like to reopen this ticket?",
"claimPlaceholder":"Why would you like to claim this ticket?",
"unclaimPlaceholder":"Why would you like to unclaim this ticket?",
"pinPlaceholder":"Why would you like to pin this ticket?",
"unpinPlaceholder":"Why would you like to unpin this ticket?"
},
"logs":{
"createLog":"A new ticket got created by {0}!",
"closeLog":"This ticket has been closed by {0}!",
"closeDm":"Your ticket has been closed in our server!",
"deleteLog":"This ticket has been deleted by {0}!",
"deleteDm":"Your ticket has been deleted in our server!",
"reopenLog":"This ticket has been reopened by {0}!",
"reopenDm":"Your ticket has been reopened in our server!",
"claimLog":"This ticket has been claimed by {0}!",
"claimDm":"Your ticket has been claimed in our server!",
"unclaimLog":"This ticket has been unclaimed by {0}!",
"unclaimDm":"Your ticket has been unclaimed in our server!",
"pinLog":"This ticket has been pinned by {0}!",
"pinDm":"Your ticket has been pinned in our server!",
"unpinLog":"This ticket has been unpinned by {0}!",
"unpinDm":"Your ticket has been unpinned in our server!",
"renameLog":"This ticket has been renamed to {0} by {1}!",
"renameDm":"Your ticket has been renamed to {0} in our server!",
"moveLog":"This ticket has been moved to {0} by {1}!",
"moveDm":"Your ticket has been moved to {0} in our server!",
"addLog":"{0} has been added to this ticket by {1}!",
"addDm":"{0} has been added to your ticket in our server!",
"removeLog":"{0} has been removed from this ticket by {1}!",
"removeDm":"{0} has been removed from your ticket in our server!",
"createLog":"A new ticket got created by {0}.",
"closeLog":"This ticket has been closed by {0}.",
"closeDm":"Your ticket has been closed.",
"deleteLog":"This ticket has been deleted by {0}.",
"deleteDm":"Your ticket has been deleted.",
"reopenLog":"This ticket has been reopened by {0}.",
"reopenDm":"Your ticket has been reopened.",
"claimLog":"This ticket has been claimed by {0}.",
"claimDm":"Your ticket has been claimed.",
"unclaimLog":"This ticket has been unclaimed by {0}.",
"unclaimDm":"Your ticket has been unclaimed.",
"pinLog":"This ticket has been pinned by {0}.",
"pinDm":"Your ticket has been pinned.",
"unpinLog":"This ticket has been unpinned by {0}.",
"unpinDm":"Your ticket has been unpinned.",
"renameLog":"This ticket has been renamed to {0} by {1}.",
"renameDm":"Your ticket has been renamed to {0}.",
"moveLog":"This ticket has been moved to {0} by {1}.",
"moveDm":"Your ticket has been moved to {0}.",
"addLog":"{0} has been added to this ticket by {1}.",
"addDm":"{0} has been added to your ticket.",
"removeLog":"{0} has been removed from this ticket by {1}.",
"removeDm":"{0} has been removed from your ticket.",
"blacklistAddLog":"{0} was blacklisted by {1}!",
"blacklistRemoveLog":"{0} was removed from the blacklist by {1}!",
"blacklistAddDm":"You have been blacklisted in our server!\nFrom now on, you are unable to create a ticket!",
"blacklistRemoveDm":"You have been removed from the blacklist in our server!\nNow you can create tickets again!",
"clearLog":"{0} tickets have been deleted by {1}!"
"blacklistAddLog":"{0} has been blacklisted by {1}.",
"blacklistRemoveLog":"{0} has been removed from the blacklist by {1}.",
"blacklistAddDm":"You have been blacklisted from this server.\nYou are no longer able to create tickets.",
"blacklistRemoveDm":"You have been removed from the blacklist.\nYou can now create tickets again.",
"clearLog":"{0} ticket(s) have been deleted by {1}.",
"transferLog":"Ticket ownership has been transferred from {0} to {1} by {2}.",
"transferDm":"Ownership of your ticket has been transferred from {0} to {1}.",
"prioritySetLog":"The priority of this ticket has been set to {0} by {1}.",
"prioritySetDm":"The priority of your ticket has been set to {0}.",
"roleUpdateLog":"{0} has modified their roles.",
"roleUpdateDm":"Your roles have been modified.",
"topicSetLog":"The priority of this ticket has been set to {0} by {1}.",
"topicSetDm":"The priority of your ticket has been set to {0}."
}
},
"transcripts":{
"success":{
"visit":"Visit Transcript",
"ready":"Transcript Created",
"textFileDescription":"This is the text transcript of a deleted ticket!",
"htmlProgress":"Please wait while this html transcript is getting processed...",
"textFileDescription":"This is a text transcript of a deleted ticket.",
"htmlProgress":"Please wait while the HTML transcript is being generated...",
"createdChannel":"A new {0} transcript has been created in the server!",
"createdCreator":"A new {0} transcript has been created for one of your tickets!",
"createdParticipant":"A new {0} transcript has been created in one of the tickets you participated in!",
"createdActiveAdmin":"A new {0} transcript has been created in one of the tickets you participated as admin!",
"createdEveryAdmin":"A new {0} transcript has been created in one of the tickets you were admin in!",
"createdOther":"A new {0} transcript has been created!"
"createdChannel":"A new {0} transcript has been created in the server.",
"createdCreator":"A new {0} transcript has been created for one of your tickets.",
"createdParticipant":"A new {0} transcript has been created for a ticket you participated in.",
"createdActiveAdmin":"A new {0} transcript has been created for a ticket you participated in as an admin.",
"createdEveryAdmin":"A new {0} transcript has been created for a ticket you managed as an admin.",
"createdOther":"A new {0} transcript has been created."
},
"errors":{
"retry":"Retry",
"continue":"Delete Without Transcript",
"backup":"Create Backup Transcript",
"error":"Something went wrong while trying to create the transcript.\nWhat would you like to do?\n\nThis ticket won't be deleted until you click one of these buttons."
"error":"Something went wrong while creating the transcript.\nWhat would you like to do?\n\nThis ticket will not be deleted until you select one of the options below.",
"title":"Transcript Error",
"noHistory":"This user does not yet have any transcripts.",
"historyNotSupported":"Transcript history is currently only supported with HTML Transcripts.\nText transcript history will be available in future versions."
},
"text":{
"messagesTitle":"MESSAGES",
"embedTitle":"EMBED",
"fileTitle":"FILE",
"fieldsTitle":"FIELDS",
"reactionsTitle":"REACTIONS",
"statsTitle":"STATISTICS",
"emptyContent":"<content is empty>",
"noTitle":"<no-title>",
"noDesc":"<no-description>"
}
},
"errors":{
@@ -257,68 +305,77 @@
"unknownPanel":"Unknown Panel",
"notInGuild":"Not In Server",
"channelRename":"Unable To Rename Channel",
"busy":"Ticket Is Busy"
"channelCategory":"Unable To Change Category",
"busy":"Ticket Is Busy",
"permissionError":"Permission Error"
},
"descriptions":{
"askForInfo":"Contact the owner of this bot for more info!",
"askForInfoResolve":"Contact the bot owner of this bot if this issue doesn't resolve after a few tries.",
"internalError":"Failed to respond to this {0} due to an internal error!",
"optionMissing":"A required parameter is missing in this command!",
"optionInvalid":"A parameter in this command is invalid!",
"optionInvalidChoose":"Choose between",
"unknownCommand":"Try visiting the help menu for more info!",
"noPermissions":"You are not allowed to use this {0}!",
"noPermissionsList":"Required Permissions: (one of them)",
"noPermissionsCooldown":"You are not allowed to use this {0} because you have a cooldown!",
"noPermissionsBlacklist":"You are not allowed to use this {0} because you have been blacklisted!",
"noPermissionsLimitGlobal":"You are not allowed to create a ticket because the server reached the max tickets limit!",
"noPermissionsLimitGlobalUser":"You are not allowed to create a ticket because you reached the max tickets limit!",
"noPermissionsLimitOption":"You are not allowed to create a ticket because the server reached the max tickets limit for this option!",
"noPermissionsLimitOptionUser":"You are not allowed to create a ticket because you reached the max tickets limit for this option!",
"unknownTicket":"Try this command again in a valid ticket!",
"deprecatedTicket":"The current channel is not a valid ticket! It might have been a ticket from an old Open Ticket version!",
"notInGuild":"This {0} doesn't work in DM! Please try it again in a server!",
"channelRename":"Due to discord ratelimits, it's currently impossible for the bot to rename the channel. The channel will automatically be renamed over 10 minutes if the bot isn't rebooted.",
"channelRenameSource":"The source of this error is: {0}",
"busy":"Unable to use this {0}!\nThe ticket is currently being processed by the bot.\n\nPlease try again in a few seconds!"
"askForInfo":"Please contact the bot owner for more information.",
"askForInfoResolve":"If the issue persists after a few attempts, please contact the bot owner.",
"internalError":"An internal error occurred while processing this {0}.",
"optionMissing":"A required parameter is missing for this command.",
"optionInvalid":"One or more parameters provided for this command are invalid.",
"optionInvalidChoose":"Please choose between",
"unknownCommand":"Please use the help menu for more information.",
"noPermissions":"You are not permitted to use this {0}.",
"noPermissionsList":"Required permissions (one of the following):",
"noPermissionsCooldown":"You cannot use this {0} while on cooldown.",
"noPermissionsBlacklist":"You cannot use this {0} because you are blacklisted.",
"noPermissionsLimitGlobal":"You cannot create a ticket because the server has reached its maximum ticket limit.",
"noPermissionsLimitGlobalUser":"You cannot create a ticket because you have reached your maximum ticket limit.",
"noPermissionsLimitOption":"You cannot create a ticket because the server has reached the maximum ticket limit for this option.",
"noPermissionsLimitOptionUser":"You cannot create a ticket because you have reached the maximum ticket limit for this option.",
"unknownTicket":"Please run this command inside a valid ticket channel.",
"deprecatedTicket":"This channel is not recognized as a valid ticket. It may have been created with an older version of the bot.",
"notInGuild":"This {0} cannot be used in direct messages. Please use it in a server.",
"channelRename":"Due to Discord rate limits, the channel could not be renamed immediately. It will be renamed automatically within 10 minutes if the bot remains online.",
"channelCategory":"Due to Discord rate limits, the channel category could not be changed immediately. It will be changed automatically within 10 minutes if the bot remains online.",
"channelRenameSource":"Error source: {0}",
"busy":"This {0} is currently unavailable.\nThe ticket is being processed by the bot.\n\nPlease try again in a few seconds.",
"closeBeforeMessage":"This ticket cannot be closed or deleted before a user has sent a message.",
"closeBeforeAdminMessage":"This ticket cannot be closed or deleted before a support member or admin has sent a message.",
"unableToCreateTicket":"You are currently unable to create a ticket.",
"messageMissing":"Unable to locate message of interaction. Use the command `{0}` instead.",
"stateExpired":"This interaction is no longer valid or has expired. Use the command `{0}` instead. It is normal to receive this error after a major Open Ticket update.",
"panelStateExpired":"This panel is no longer valid or has expired. Create a new panel using `{0}` to solve the issue. It is normal to receive this error after a major Open Ticket update."
},
"optionInvalidReasons":{
"stringRegex":"Value doesn't match pattern!",
"stringMinLength":"Value needs to be at least {0} characters!",
"stringMaxLength":"Value needs to be at most {0} characters!",
"numberInvalid":"Invalid number!",
"numberMin":"Number needs to be at least {0}!",
"numberMax":"Number needs to be at most {0}!",
"numberDecimal":"Number is not allowed to be a decimal!",
"numberNegative":"Number is not allowed to be negative!",
"numberPositive":"Number is not allowed to be positive!",
"numberZero":"Number is not allowed to be zero!",
"channelNotFound":"Unable to find channel!",
"userNotFound":"Unable to find user!",
"roleNotFound":"Unable to find role!",
"memberNotFound":"Unable to find user!",
"mentionableNotFound":"Unable to find user or role!",
"channelType":"Invalid channel type!",
"notInGuild":"This option requires you to be in a server!"
"stringRegex":"The value does not match the required pattern.",
"stringMinLength":"The value must be at least {0} characters long.",
"stringMaxLength":"The value must be at most {0} characters long.",
"numberInvalid":"Invalid number provided.",
"numberMin":"The number must be at least {0}.",
"numberMax":"The number must be at most {0}.",
"numberDecimal":"Decimals are not allowed.",
"numberNegative":"Negative numbers are not allowed.",
"numberPositive":"Positive numbers are not allowed.",
"numberZero":"Zero is not allowed.",
"channelNotFound":"Channel not found.",
"userNotFound":"User not found.",
"roleNotFound":"Role not found.",
"memberNotFound":"Member not found.",
"mentionableNotFound":"User or role not found.",
"channelType":"Invalid channel type.",
"notInGuild":"This option can only be used in a server."
},
"permissions":{
"developer":"You need to be the developer of the bot.",
"owner":"You need to be the server owner.",
"admin":"You need to be a server admin.",
"moderator":"You need to be a moderator.",
"support":"You need to be in the support team.",
"member":"You need to be a member.",
"discord-administrator":"You need to have the `ADMINISTRATOR` permission."
"developer":"This action is restricted to the bot developer.",
"owner":"You must be the server owner to use this.",
"admin":"You must have administrator permissions to use this.",
"moderator":"You must be a moderator to use this.",
"support":"You must be part of the support team to use this.",
"member":"You must be a server member to use this.",
"discord-administrator":"You must have the `ADMINISTRATOR` permission."
},
"actionInvalid":{
"close":"Ticket is already closed!",
"reopen":"Ticket is not closed yet!",
"claim":"Ticket is already claimed!",
"unclaim":"Ticket is not claimed yet!",
"pin":"Ticket is already pinned!",
"unpin":"Ticket is not pinned yet!",
"add":"This user is already able to access the ticket!",
"remove":"Unable to remove this user from the ticket!"
"close":"This ticket is already closed.",
"reopen":"This ticket is not closed.",
"claim":"This ticket is already claimed.",
"unclaim":"This ticket is not claimed.",
"pin":"This ticket is already pinned.",
"unpin":"This ticket is not pinned.",
"add":"This user already has access to this ticket.",
"remove":"This user does not have access to this ticket."
}
},
"params":{
@@ -331,7 +388,6 @@
"added":"Added",
"removed":"Removed",
"filter":"Filter",
"claimedBy":"Claimed By {0}",
"method":"Method",
"type":"Type",
"blacklisted":"Blacklisted",
@@ -343,6 +399,8 @@
"syntax":"Syntax",
"originalName":"Original Name",
"newName":"New Name",
"originalCategory":"Original Category",
"newCategory":"New Category",
"until":"Until",
"validOptions":"Valid Options",
"validPanels":"Valid Panels",
@@ -355,7 +413,29 @@
"status":"Status",
"claimed":"Claimed",
"pinned":"Pinned",
"creationDate":"Creation Date"
"creationDate":"Creation Date",
"noone":"No-One",
"open":"Open",
"closed":"Closed",
"priority":"Priority",
"participants":"Participants",
"yes":"Yes",
"no":"No",
"accept":"Accept",
"cancel":"Cancel",
"option":"Option",
"topic":"Topic",
"uptime":"System Uptime",
"messages":"Messages",
"embeds":"Embeds",
"files":"Files",
"components":"Components",
"cooldown":"Cooldown",
"maxTickets":"Max Tickets",
"admins":"Admins",
"roles":"Roles",
"size":"Size"
},
"lowercase":{
"text":"text",
@@ -368,99 +448,128 @@
}
},
"commands":{
"reason":"Specify an optional reason that will be visible in logs.",
"help":"Get a list of all the available commands.",
"panel":"Spawn a message with a dropdown or buttons (for ticket creation).",
"panelId":"The identifier of the panel that you want to spawn.",
"panelAutoUpdate":"Do you want this panel to automatically update when edited?",
"ticket":"Instantly create a ticket.",
"ticketId":"The identifier of the ticket that you want to create.",
"close":"Close a ticket.",
"delete":"Delete a ticket.",
"deleteNoTranscript":"Delete this ticket without creating a transcript.",
"reopen":"Reopen a ticket.",
"claim":"Claim a ticket.",
"claimUser":"Claim this ticket to someone else instead of yourself.",
"unclaim":"Unclaim a ticket.",
"pin":"Pin a ticket.",
"unpin":"Unpin a ticket.",
"move":"Move a ticket.",
"moveId":"The identifier of the option that you want to move to.",
"rename":"Rename a ticket.",
"renameName":"The new name for this ticket.",
"add":"Add a user to a ticket.",
"addUser":"The user to add.",
"remove":"Remove a user from a ticket.",
"removeUser":"The user to remove.",
"blacklist":"Manage the ticket blacklist.",
"blacklistView":"View a list of the current blacklist.",
"reason":"Optional reason shown in logs.",
"help":"Display all available commands.",
"panel":"Create a ticket panel (buttons or dropdown).",
"panelId":"ID of the panel to spawn.",
"panelAutoUpdate":"Automatically update this panel when edited.",
"ticket":"Create a ticket instantly.",
"ticketId":"ID of the ticket to create.",
"ticketOtherUser":"Create a ticket for another user.",
"close":"Close this ticket.",
"delete":"Delete this ticket.",
"deleteNoTranscript":"Delete ticket without saving a transcript.",
"reopen":"Reopen a closed ticket.",
"claim":"Claim this ticket.",
"claimUser":"Claim the ticket for another user.",
"unclaim":"Unclaim this ticket.",
"pin":"Pin this ticket.",
"unpin":"Unpin this ticket.",
"move":"Move ticket to another option.",
"moveId":"Target option ID.",
"rename":"Rename this ticket.",
"renameName":"New name for the ticket.",
"add":"Add a user to this ticket.",
"addUser":"User to add.",
"remove":"Remove a user from this ticket.",
"removeUser":"User to remove.",
"blacklist":"Manage the blacklist.",
"blacklistView":"View all blacklisted users.",
"blacklistAdd":"Add a user to the blacklist.",
"blacklistRemove":"Remove a user from the blacklist.",
"blacklistGet":"Get the details from a blacklisted user.",
"blacklistGetUser":"The user to get details from.",
"stats":"View statistics from the bot, a member or a ticket.",
"statsReset":"Reset all the stats of the bot (and start counting from zero).",
"statsGlobal":"View the global stats.",
"statsUser":"View the stats from a user in the server.",
"statsUserUser":"The user to view.",
"statsTicket":"View the stats of a ticket in the server.",
"statsTicketTicket":"The ticket to view.",
"clear":"Delete multiple tickets at the same time.",
"clearFilter":"The filter for clearing tickets.",
"blacklistGet":"View blacklist entry details.",
"blacklistGetUser":"User to look up.",
"stats":"View bot, user or ticket statistics.",
"statsReset":"Reset all bot statistics.",
"statsGlobal":"View global bot statistics.",
"statsUser":"View a user's statistics.",
"statsUserUser":"User to view.",
"statsTicket":"View ticket statistics.",
"statsTicketTicket":"Ticket to view.",
"clear":"Delete multiple tickets at once.",
"clearFilter":"Filter used when clearing tickets.",
"clearFilters":{
"all":"All",
"open":"Open",
"close":"Closed",
"claim":"Claimed",
"unclaim":"Unclaimed",
"pin":"Pinned",
"unpin":"Unpinned",
"autoclose":"Autoclosed"
"all":"All tickets",
"open":"Open tickets",
"close":"Closed tickets",
"claim":"Claimed tickets",
"unclaim":"Unclaimed tickets",
"pin":"Pinned tickets",
"unpin":"Unpinned tickets",
"autoclose":"Autoclosed tickets"
},
"autoclose":"Manage autoclose in a ticket.",
"autocloseDisable":"Disable autoclose in this ticket.",
"autocloseEnable":"Enable autoclose in this ticket.",
"autocloseEnableTime":"The amount of hours this ticket needs to be inactive to close it.",
"autodelete":"Manage autodelete in a ticket.",
"autodeleteDisable":"Disable autodelete in this ticket.",
"autodeleteEnable":"Enable autodelete in this ticket.",
"autodeleteEnableTime":"The amount of days this ticket needs to be inactive to delete it."
"autoclose":"Manage ticket autoclose.",
"autocloseDisable":"Disable autoclose.",
"autocloseEnable":"Enable autoclose.",
"autocloseEnableTime":"Hours of inactivity before closing.",
"autodelete":"Manage ticket autodelete.",
"autodeleteDisable":"Disable autodelete.",
"autodeleteEnable":"Enable autodelete.",
"autodeleteEnableTime":"Days of inactivity before deletion.",
"topic":"Manage ticket channel topic.",
"topicSet":"Set the ticket channel topic.",
"topicValue":"New channel topic text.",
"topicList":"List all ticket channel topics.",
"priority":"Manage ticket priority.",
"prioritySet":"Set ticket priority.",
"priorityValue":"Priority level.",
"priorityGet":"View ticket priority.",
"priorityList":"List all ticket priorities.",
"transfer":"Transfer ticket ownership.",
"transferUser":"User to transfer to.",
"transcripts":"View ticket transcript history of a user.",
"transcriptsUser":"The user to view."
},
"helpMenu":{
"help":"Get a list of all the available commands.",
"ticket":"Instantly create a ticket.",
"close":"Close a ticket, this disables writing in this channel.",
"delete":"Delete a ticket, this creates a transcript when enabled.",
"reopen":"Reopen a ticket, this enables writing in this channel again.",
"pin":"Pin a ticket. This will move the ticket to the top and will add a '📌' emoij to the name.",
"unpin":"Unpin a ticket. The ticket will stay on it's position but will lose the '📌' emoij.",
"move":"Move a ticket. This will change the type of this ticket.",
"rename":"Rename a ticket. This will change the channel name of this ticket.",
"claim":"Claim a ticket. With this, you can let your team know you are handling this ticket.",
"unclaim":"Unclaim a ticket. With this, you can let your team know that this ticket is free again.",
"add":"Add a user to a ticket. This will allow the user to read & write in this ticket.",
"remove":"Remove a user from a ticket. This will remove the ability to read & write for a user in this ticket.",
"panel":"Spawn a message with a dropdown or buttons (for ticket creation).",
"blacklistView":"View a list of the current blacklist.",
"help":"View all available commands.",
"ticket":"Create a ticket instantly.",
"close":"Close this ticket and disable messaging in the channel.",
"delete":"Delete this ticket (creates a transcript if enabled).",
"reopen":"Reopen a closed ticket and restore messaging.",
"pin":"Pin this ticket and move it to the top with '📌'.",
"unpin":"Unpin this ticket and remove the '📌' emoji.",
"move":"Move this ticket to a different option or ticket type.",
"rename":"Rename this ticket channel.",
"claim":"Claim this ticket to show you are handling it.",
"unclaim":"Unclaim this ticket to mark it as available.",
"add":"Add a user to this ticket.",
"remove":"Remove a user's access from this ticket.",
"panel":"Create a ticket panel with buttons or a dropdown.",
"blacklistView":"View all blacklisted users.",
"blacklistAdd":"Add a user to the blacklist.",
"blacklistRemove":"Remove a user from the blacklist.",
"blacklistGet":"Get the details from a blacklisted user.",
"statsGlobal":"View the global stats.",
"statsTicket":"View the stats of a ticket in the server.",
"statsUser":"View the stats from a user in the server.",
"statsReset":"Reset all the stats of the bot (and start counting from zero).",
"autocloseDisable":"Disable autoclose in this ticket.",
"autocloseEnable":"Enable autoclose in this ticket.",
"autodeleteDisable":"Disable autodelete in this ticket.",
"autodeleteEnable":"Enable autodelete in this ticket."
"blacklistGet":"View details of a blacklisted user.",
"statsGlobal":"View global bot statistics.",
"statsTicket":"View statistics for a ticket.",
"statsUser":"View statistics for a user.",
"statsReset":"Reset all bot statistics.",
"autocloseDisable":"Disable autoclose for this ticket.",
"autocloseEnable":"Enable autoclose for this ticket.",
"autodeleteDisable":"Disable autodelete for this ticket.",
"autodeleteEnable":"Enable autodelete for this ticket.",
"categories":{
"general":"General Commands",
"basicTicket":"Basic Ticket Commands",
"advancedTicket":"Advanced Ticket Commands",
"userTicket":"User Ticket Commands",
"admin":"Admin Commands",
"advanced":"Advanced Commands",
"extra":"Extra Commands"
}
},
"stats":{
"scopes":{
"global":"Global Stats",
"system":"System Stats",
"user":"User Stats",
"ticket":"Ticket Stats",
"participants":"Participants"
"global":"Global Statistics",
"system":"System Statistics",
"user":"User Statistics",
"ticket":"Ticket Statistics",
"participants":"Participants",
"messages":"Messages"
},
"properties":{
"ticketsCreated":"Tickets Created",
@@ -472,7 +581,48 @@
"ticketsPinned":"Tickets Pinned",
"ticketsMoved":"Tickets Moved",
"usersBlacklisted":"Users Blacklisted",
"transcriptsCreated":"Transcripts Created"
}
"transcriptsCreated":"Transcripts Created",
"ticketsAutodeleted":"Tickets Autodeleted",
"ticketsTransferred":"Tickets Transferred",
"ticketVolume":"Ticket Volume",
"averageTickets":"Average Tickets/User",
"currentTickets":"Current Tickets",
"age":"Ticket Age",
"responseTime":"Response Time",
"resolutionTime":"Resolution Time",
"createdOn":"Created On",
"createdBy":"Created By",
"closedOn":"Closed On",
"closedBy":"Closed By",
"claimedOn":"Claimed On",
"claimedBy":"Claimed By",
"pinnedOn":"Pinned On",
"pinnedBy":"Pinned By",
"deletedOn":"Deleted On",
"deletedBy":"Deleted By"
},
"roles":{
"developer":"Developer",
"serverOwner":"Server Owner",
"serverAdmin":"Server Admin",
"moderator":"Moderator Team",
"support":"Support Team",
"member":"Member"
}
},
"panel":{
"selectTicket":"Select a ticket",
"selectRole":"Select a role",
"selectOption":"Select an option",
"selectPriorityLevel":"Select priority level"
},
"priorities":{
"urgent":"Urgent",
"veryHigh":"Very High",
"high":"High",
"normal":"Normal",
"low":"Low",
"veryLow":"Very Low",
"none":"None"
}
}
+167 -17
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["iamnotmega","ChatGPT"],
"lastedited":"21/10/2024",
"lastedited":"25/05/2026",
"language":"Estonian",
"automated":true
},
@@ -31,6 +31,14 @@
"stringContains":"See string peab sisaldama {0}!",
"stringChoices":"See string võib olla ainult üks järgmistest väärtustest: {0}!",
"stringRegex":"See string on kehtetu!",
"stringInvertedContains":"See string ei tohi sisaldada {0}!",
"stringLowercase":"See string peab olema kirjutatud ainult väikeste tähtedega!",
"stringUppercase":"See string peab olema kirjutatud ainult suurte tähtedega!",
"stringSpecialCharacters":"See string ei tohi sisaldada erimärke! (ainult a-z, 0-9 ja tühik)",
"stringNoSpaces":"See string ei tohi sisaldada tühikuid!",
"stringCapitalWord":"Soovitatav on, et iga sõna selles stringis algaks suure tähega!",
"stringCapitalSentence":"Tundub, et mõned laused selles stringis ei alga suure tähega!",
"stringPunctuation":"Tundub, et lause selles stringis ei lõpe kirjavahemärgiga!",
"numberTooShort":"See number ei tohi olla lühem kui {0} tähemärki!",
"numberTooLong":"See number ei tohi olla pikem kui {0} tähemärki!",
@@ -48,6 +56,8 @@
"numberNegative":"See arv ei saa olla negatiivne!",
"numberPositive":"See arv ei saa olla positiivne!",
"numberZero":"See arv ei saa olla null!",
"numberNan":"See number ei tohi olla NaN (mitte number)!",
"numberInvertedContains":"See number ei tohi sisaldada {0}!",
"booleanTrue":"See tõeväärtus ei saa olla tõsi!",
"booleanFalse":"See tõeväärtus ei saa olla vale!",
@@ -89,7 +99,8 @@
"invalidButton":"Sellel nupul peab olema vähemalt {0} või {1}!",
"unusedOption":"Valik {0} ei ole kusagil kasutusel!",
"unusedQuestion":"Küsimust {0} ei kasutata kuskil!",
"dropdownOption":"Lubatud rippmenüüga paneel võib sisaldada ainult \"pileti\" tüüpi valikuid!"
"dropdownOption":"Rippmenüüga paneel võib sisaldada ainult järgmisi valikuid: 'ticket', 'role' või 'sub-panel'.",
"customInvalidVersion":"Teie konfiguratsioonis määratud versioon ei ühti! Veenduge, et olete konfiguratsiooni uuendanud uusimale versioonile!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Vaadake tekstikäske",
"helpPage":"Leht {0}",
"withReason":"Põhjusega",
"withoutTranscript":"Ilma ärakirjata"
"withoutTranscript":"Ilma ärakirjata",
"blacklistAdd":"Lisa kasutaja musta nimekirja",
"blacklistRemove":"Vabasta kasutaja"
},
"titles":{
"created":"Pilet loodud",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Lisatud musta nimekirja",
"blacklistRemoveDm":"Eemaldatud mustast nimekirjast",
"clear":"Piletid kustutatud",
"clearTickets":"Kustuta Piletid",
"roles":"Rollid uuendatud",
"autoclose":"Pilet automaatselt suletud",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Automaatne sulgemine keelatud",
"autodelete":"Pilet on automaatselt kustutatud",
"autodeleteEnabled":"Automaatne kustutamine lubatud",
"autodeleteDisabled":"Automaatne kustutamine keelatud"
"autodeleteDisabled":"Automaatne kustutamine keelatud",
"topicSet":"Teema Muudetud",
"prioritySet":"Prioriteet Muudetud",
"priorityGet":"Pileti Prioriteet",
"transfer":"Pilet Üle Antud",
"transcripts":"Transkripti ajalugu"
},
"descriptions":{
"create":"Teie pilet on loodud. Sellele juurdepääsuks klõpsake alloleval nupul!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Saate korraga luua ainult {0} piletit!",
"ticketMessageAutoclose":"See pilet suletakse automaatselt, kui see on {0} tundi passiivne!",
"ticketMessageAutodelete":"See pilet kustutatakse automaatselt, kui see on {0} päeva passiivne!",
"panelReady":"Paneeli leiate altpoolt!\nSelle sõnumi saab nüüd kustutada!"
"panelReady":"Paneel on saadaval järelteates!\nSelle sõnumi võib nüüd kustutada!",
"topicSet":"Kanaliteema on edukalt muudetud kasutaja {0} poolt!",
"prioritySet":"Pileti prioriteet on edukalt muudetud väärtuseks {0} kasutaja {1} poolt!",
"priorityGet":"Selle pileti praegune prioriteet on {0}.",
"transfer":"Pileti omand on edukalt üle antud kasutajalt {0} kasutajale {1} kasutaja {2} poolt!"
},
"modal":{
"closePlaceholder":"Miks sa selle pileti kinni panid?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"Kasutaja {1} eemaldas kasutaja {0} mustast nimekirjast!",
"blacklistAddDm":"Olete meie serveris mustas nimekirjas!\nNüüdsest ei saa te piletit luua!",
"blacklistRemoveDm":"Teid on meie serveri mustast nimekirjast eemaldatud!\nNüüd saate uuesti pileteid luua!",
"clearLog":"{1} on kustutanud {0} piletit!"
"clearLog":"{1} on kustutanud {0} piletit!",
"transferLog":"Selle pileti omand on üle antud kasutajalt {0} kasutajale {1} kasutaja {2} poolt!",
"transferDm":"Teie pileti omand on üle antud kasutajalt {0} kasutajale {1} meie serveris!",
"prioritySetLog":"Selle pileti prioriteet on muudetud väärtuseks {0} kasutaja {1} poolt!",
"prioritySetDm":"Teie pileti prioriteet on muudetud väärtuseks {0} meie serveris!",
"roleUpdateLog":"{0} uuendas oma rolle!",
"roleUpdateDm":"Teie rolle meie serveris on uuendatud!",
"topicSetLog":"Selle pileti prioriteedi määras {1} väärtusele {0}.",
"topicSetDm":"Sinu pileti prioriteet on seatud väärtusele {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Proovi uuesti",
"continue":"Kustuta ilma ärakirjata",
"backup":"Loo varukoopia ärakirjast",
"error":"Midagi läks ärakirja loomisel valesti.\nMida sa teha tahaksid?\n\nSeda piletit ei kustutata enne, kui klõpsate ühel neist nuppudest."
"error":"Midagi läks ärakirja loomisel valesti.\nMida sa teha tahaksid?\n\nSeda piletit ei kustutata enne, kui klõpsate ühel neist nuppudest.",
"title":"Transkriptsiooniviga",
"noHistory":"Sellel kasutajal ei ole veel ühtegi transkripti.",
"historyNotSupported":"Transkripti ajalugu on praegu toetatud ainult HTML Transcriptsiga.\nTekstiliste transkriptide ajalugu on saadaval tulevastes versioonides."
},
"text":{
"messagesTitle":"SÕNUMID",
"embedTitle":"EMBED",
"fileTitle":"FAIL",
"fieldsTitle":"VÄLJAD",
"reactionsTitle":"REAKTSIOONID",
"statsTitle":"STATISTIKA",
"emptyContent":"<sisu on tühi>",
"noTitle":"<pealkiri puudub>",
"noDesc":"<kirjeldus puudub>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Tundmatu paneel",
"notInGuild":"Pole serveris",
"channelRename":"Kanalit ei saa ümber nimetada",
"busy":"Pilet on kinni"
"channelCategory":"Kategooriat ei saa muuta",
"busy":"Pilet on kinni",
"permissionError":"Õiguste Viga"
},
"descriptions":{
"askForInfo":"Lisateabe saamiseks võtke ühendust selle roboti omanikuga!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Praegune kanal ei ole kehtiv pilet! See võis olla pilet vanast Open Ticketi versioonist!",
"notInGuild":"See {0} ei tööta DM-is! Palun proovi uuesti serveris!",
"channelRename":"Ebakõlaliste kiiruspiirangute tõttu on robotil praegu võimatu kanalit ümber nimetada. Kui robotit ei taaskäivitata, nimetatakse kanal 10 minuti jooksul automaatselt ümber.",
"channelCategory":"Discordi kiiruspiirangute tõttu ei saanud kanali kategooriat kohe muuta. Kui bot jääb võrgus, muudetakse see automaatselt 10 minuti jooksul.",
"channelRenameSource":"Selle vea allikas on: {0}",
"busy":"Seda {0} ei saa kasutada!\nPiletit töötleb praegu bot.\n\nPalun proovige mõne sekundi pärast uuesti!"
"busy":"Seda {0} ei saa kasutada!\nPiletit töötleb praegu bot.\n\nPalun proovige mõne sekundi pärast uuesti!",
"closeBeforeMessage":"Seda piletit ei saa sulgeda/kustutada enne, kui kasutaja on sõnumi saatnud.",
"closeBeforeAdminMessage":"Seda piletit ei saa sulgeda/kustutada enne, kui piletihaldur või tugiliige on sõnumi saatnud.",
"unableToCreateTicket":"Te ei saa piletit luua.",
"messageMissing":"Interaktsiooni sõnumit ei leitud. Kasuta selle asemel käsku `{0}`.",
"stateExpired":"See interaktsioon ei ole enam kehtiv või on aegunud. Kasuta selle asemel käsku `{0}`. See on tavaline pärast Open Ticket suurt uuendust.",
"panelStateExpired":"See paneel ei ole enam kehtiv või on aegunud. Loo uus paneel kasutades `{0}`, et probleem lahendada. See on tavaline pärast Open Ticket suurt uuendust."
},
"optionInvalidReasons":{
"stringRegex":"Väärtus ei vasta mustrile!",
@@ -331,7 +388,6 @@
"added":"Lisatud",
"removed":"Eemaldatud",
"filter":"Filter",
"claimedBy":"Nõude esitas {0}",
"method":"Meetod",
"type":"Tüüp",
"blacklisted":"Mustas nimekirjas",
@@ -343,6 +399,8 @@
"syntax":"Süntaks",
"originalName":"Algne nimi",
"newName":"Uus nimi",
"originalCategory":"Algne kategooria",
"newCategory":"Uus kategooria",
"until":"Kuni",
"validOptions":"Kehtivad valikud",
"validPanels":"Kehtivad paneelid",
@@ -355,7 +413,29 @@
"status":"Olek",
"claimed":"Nõutud",
"pinned":"Kinnitatud",
"creationDate":"Loomise kuupäev"
"creationDate":"Loomise kuupäev",
"noone":"Mitte Keegi",
"open":"Avatud",
"closed":"Suletud",
"priority":"Prioriteet",
"participants":"Osalejad",
"yes":"Jah",
"no":"Ei",
"accept":"Nõustu",
"cancel":"Tühista",
"option":"Valik",
"topic":"Teema",
"uptime":"Süsteemi Töötamise Aeg",
"messages":"Sõnumid",
"embeds":"Embedid",
"files":"Failid",
"components":"Komponendid",
"cooldown":"Jahtumisaeg",
"maxTickets":"Maksimaalselt Pileteid",
"admins":"Adminid",
"roles":"Rollid",
"size":"Suurus"
},
"lowercase":{
"text":"tekst",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Kas soovite seda paneeli redigeerimisel automaatselt värskendada?",
"ticket":"Looge pilet koheselt.",
"ticketId":"Pileti identifikaator, mille soovite luua.",
"ticketOtherUser":"Loo pilet teisele kasutajale.",
"close":"Sulgege pilet.",
"delete":"Kustuta pilet.",
"deleteNoTranscript":"Kustutage see pilet ilma ärakirja loomata.",
@@ -384,6 +465,7 @@
"unclaim":"Tühista pilet.",
"pin":"Kinnitage pilet.",
"unpin":"Vabastage pilet.",
"move":"Liigutage pilet.",
"moveId":"Selle valiku identifikaator, millele soovite liikuda.",
"rename":"Nimetage pilet ümber.",
@@ -392,6 +474,7 @@
"addUser":"Lisatav kasutaja.",
"remove":"Kasutaja eemaldamine piletist.",
"removeUser":"Eemaldatav kasutaja.",
"blacklist":"Hallake piletite musta nimekirja.",
"blacklistView":"Vaadake praeguse musta nimekirja loendit.",
"blacklistAdd":"Lisage kasutaja musta nimekirja.",
@@ -405,6 +488,7 @@
"statsUserUser":"Kasutaja vaatamiseks.",
"statsTicket":"Vaadake serveris pileti statistikat.",
"statsTicketTicket":"Pilet vaatamiseks.",
"clear":"Kustutage mitu piletit korraga.",
"clearFilter":"Piletite puhastamise filter.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Vabastatud",
"autoclose":"Automaatselt suletud"
},
"autoclose":"Hallake piletis automaatset sulgemist.",
"autocloseDisable":"Keela sellel piletil automaatne sulgemine.",
"autocloseEnable":"Luba sellel piletil automaatne sulgemine.",
@@ -424,7 +509,21 @@
"autodelete":"Automaatse kustutamise haldamine piletis.",
"autodeleteDisable":"Keela sellel piletil automaatne kustutamine.",
"autodeleteEnable":"Luba sellel piletil automaatne kustutamine.",
"autodeleteEnableTime":"Päevade arv, mille jooksul see pilet peab olema selle kustutamiseks passiivne."
"autodeleteEnableTime":"Päevade arv, mille jooksul see pilet peab olema selle kustutamiseks passiivne.",
"topic":"Halda pileti kanali teemat.",
"topicSet":"Määra pileti kanali teema.",
"topicValue":"Kanali uus teema.",
"topicList":"Hangi nimekiri kõigist piletitest koos nende teemade ja statistikaga.",
"priority":"Halda pileti prioriteeti.",
"prioritySet":"Määra pileti prioriteet.",
"priorityValue":"Kanali prioriteet.",
"priorityGet":"Hangi pileti prioriteet.",
"priorityList":"Hangi nimekiri kõigist piletitest ja nende prioriteedi olekust.",
"transfer":"Anna pileti omand üle ühelt kasutajalt teisele.",
"transferUser":"Kasutaja, kellele omand üle anda.",
"transcripts":"Vaata kasutaja piletite transkripti ajalugu.",
"transcriptsUser":"Kasutaja, keda vaadata."
},
"helpMenu":{
"help":"Hankige kõigi saadaolevate käskude loend.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Keela sellel piletil automaatne sulgemine.",
"autocloseEnable":"Luba sellel piletil automaatne sulgemine.",
"autodeleteDisable":"Keela sellel piletil automaatne kustutamine.",
"autodeleteEnable":"Luba sellel piletil automaatne kustutamine."
"autodeleteEnable":"Luba sellel piletil automaatne kustutamine.",
"categories":{
"general":"Üldised Käsud",
"basicTicket":"Põhilised Piletikäsud",
"advancedTicket":"Täpsemad Piletikäsud",
"userTicket":"Kasutaja Piletikäsud",
"admin":"Admini Käsud",
"advanced":"Täpsemad Käsud",
"extra":"Lisakäsud"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Süsteemi statistika",
"user":"Kasutaja statistika",
"ticket":"Piletistatistika",
"participants":"Osalejad"
"participants":"Osalejad",
"messages":"Sõnumid"
},
"properties":{
"ticketsCreated":"Pileteid loodud",
@@ -472,7 +581,48 @@
"ticketsPinned":"Pileteid kinnitatud",
"ticketsMoved":"Pileteid teisaldatud",
"usersBlacklisted":"Kasutajaid mustas nimekirjas",
"transcriptsCreated":"Loodud ärakirjad"
}
"transcriptsCreated":"Loodud ärakirjad",
"ticketsAutodeleted":"Piletid Automaatselt Kustutatud",
"ticketsTransferred":"Piletid Üle Antud",
"ticketVolume":"Piletite Arv",
"averageTickets":"Keskmine Piletite Arv/Kasutaja",
"currentTickets":"Praegused Piletid",
"age":"Pileti Vanus",
"responseTime":"Reageerimisaeg",
"resolutionTime":"Lahendusaeg",
"createdOn":"Loodud",
"createdBy":"Looja",
"closedOn":"Suletud",
"closedBy":"Sulgenud",
"claimedOn":"Võetud",
"claimedBy":"Võtnud",
"pinnedOn":"Kinnitatud",
"pinnedBy":"Kinnitanud",
"deletedOn":"Kustutatud",
"deletedBy":"Kustutanud"
},
"roles":{
"developer":"Arendaja",
"serverOwner":"Serveri Omanik",
"serverAdmin":"Serveri Administraator",
"moderator":"Moderaatorite Meeskond",
"support":"Tugimeeskond",
"member":"Liige"
}
},
"panel":{
"selectTicket":"Vali oma pilet",
"selectRole":"Vali oma roll",
"selectOption":"Vali oma valik",
"selectPriorityLevel":"Vali prioriteeditase"
},
"priorities":{
"urgent":"Kiireloomuline",
"veryHigh":"Väga Kõrge",
"high":"Kõrge",
"normal":"Tavaline",
"low":"Madal",
"veryLow":"Väga Madal",
"none":"Puudub"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["iamnotmega","ChatGPT"],
"lastedited":"21/10/2024",
"lastedited":"25/05/2026",
"language":"Finnish",
"automated":true
},
@@ -31,6 +31,14 @@
"stringContains":"Tämän merkkijonon täytyy sisältää {0}!",
"stringChoices":"Tämä merkkijono voi olla vain yksi seuraavista arvoista: {0}!",
"stringRegex":"Tämä merkkijono on virheellinen!",
"stringInvertedContains":"Tämä merkkijono ei saa sisältää {0}!",
"stringLowercase":"Tämä merkkijono on kirjoitettava vain pienillä kirjaimilla!",
"stringUppercase":"Tämä merkkijono on kirjoitettava vain isoilla kirjaimilla!",
"stringSpecialCharacters":"Tämä merkkijono ei saa sisältää erikoismerkkejä! (vain a–z, 0–9 ja välilyönti)",
"stringNoSpaces":"Tämä merkkijono ei saa sisältää välilyöntejä!",
"stringCapitalWord":"On suositeltavaa, että jokainen sana tässä merkkijonossa alkaa isolla kirjaimella!",
"stringCapitalSentence":"Näyttää siltä, että jotkut lauseet tässä merkkijonossa eivät ala isolla kirjaimella!",
"stringPunctuation":"Näyttää siltä, että tämän merkkijonon lause ei pääty välimerkkiin!",
"numberTooShort":"Tämä numero ei voi olla lyhyempi kuin {0} merkkiä!",
"numberTooLong":"Tämä numero ei voi olla pidempi kuin {0} merkkiä!",
@@ -48,6 +56,8 @@
"numberNegative":"Tämä luku ei voi olla negatiivinen!",
"numberPositive":"Tämä luku ei voi olla positiivinen!",
"numberZero":"Tämä luku ei voi olla nolla!",
"numberNan":"Tämä numero ei voi olla NaN (ei numero)!",
"numberInvertedContains":"Tämä numero ei saa sisältää {0}!",
"booleanTrue":"Tämä boolean ei voi olla totta!",
"booleanFalse":"Tämä boolean ei voi olla väärä!",
@@ -89,7 +99,8 @@
"invalidButton":"Tässä painikkeessa on oltava vähintään {0} tai {1}!",
"unusedOption":"Vaihtoehtoa {0} ei käytetä missään!",
"unusedQuestion":"Kysymystä {0} ei käytetä missään!",
"dropdownOption":"Paneeli, jossa pudotusvalikko on käytössä, voi sisältää vain \"lippu\"-tyyppisiä vaihtoehtoja!"
"dropdownOption":"Pudotusvalikollinen paneeli voi sisältää vain seuraavia vaihtoehtoja: 'ticket', 'role' tai 'sub-panel'.",
"customInvalidVersion":"Määritetty versio kokoonpanossasi ei vastaa! Varmista, että olet päivittänyt kokoonpanon uusimpaan versioon!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Näytä tekstikomennot",
"helpPage":"Sivu {0}",
"withReason":"Syyllä",
"withoutTranscript":"Ilman transkriptiota"
"withoutTranscript":"Ilman transkriptiota",
"blacklistAdd":"Lisää käyttäjä mustalle listalle",
"blacklistRemove":"Vapauta käyttäjä"
},
"titles":{
"created":"Lippu luotu",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Lisätty mustalle listalle",
"blacklistRemoveDm":"Poistettu mustalta listalta",
"clear":"Liput tyhjennetty",
"clearTickets":"Tyhjennä Tiketit",
"roles":"Roolit päivitetty",
"autoclose":"Lippu suljettu automaattisesti",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Automaattinen sulkeminen pois käytöstä",
"autodelete":"Lippu poistettu automaattisesti",
"autodeleteEnabled":"Automaattinen poisto käytössä",
"autodeleteDisabled":"Automaattinen poisto poissa käytöstä"
"autodeleteDisabled":"Automaattinen poisto poissa käytöstä",
"topicSet":"Aihe Muutettu",
"prioritySet":"Prioriteetti Muutettu",
"priorityGet":"Tiketin Prioriteetti",
"transfer":"Tiketti Siirretty",
"transcripts":"Transkriptien historia"
},
"descriptions":{
"create":"Lippusi on luotu. Napsauta alla olevaa painiketta päästäksesi siihen!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Voit luoda vain {0} lippua samanaikaisesti!",
"ticketMessageAutoclose":"Tämä lippu suljetaan automaattisesti, kun se ei ole aktiivinen {0} tuntia!",
"ticketMessageAutodelete":"Tämä lippu poistetaan automaattisesti, kun se ei ole aktiivinen {0} päivään!",
"panelReady":"Löydät paneelin alta! Tämä viesti voidaan nyt poistaa!"
"panelReady":"Paneeli on saatavilla jatkoviestissä!\nTämä viesti voidaan nyt poistaa!",
"topicSet":"Kanavan aihe on vaihdettu käyttäjän {0} toimesta onnistuneesti!",
"prioritySet":"Tiketin prioriteetti on vaihdettu arvoksi {0} käyttäjän {1} toimesta onnistuneesti!",
"priorityGet":"Tämän tiketin nykyinen prioriteetti on {0}.",
"transfer":"Tiketin omistus on siirretty käyttäjältä {0} käyttäjälle {1} käyttäjän {2} toimesta onnistuneesti!"
},
"modal":{
"closePlaceholder":"Miksi suljit tämän lipun?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{1} poisti käyttäjän {0} mustalta listalta!",
"blacklistAddDm":"Sinut on mustalla listalla palvelimellamme! Tästä eteenpäin et voi luoda lippua!",
"blacklistRemoveDm":"Sinut on poistettu palvelimemme mustalta listalta! Nyt voit luoda lippuja uudelleen!",
"clearLog":"{1} on poistanut {0} lippua!"
"clearLog":"{1} on poistanut {0} lippua!",
"transferLog":"Tämän tiketin omistus on siirretty käyttäjältä {0} käyttäjälle {1} käyttäjän {2} toimesta!",
"transferDm":"Tiketin omistus on siirretty käyttäjältä {0} käyttäjälle {1} palvelimellamme!",
"prioritySetLog":"Tämän tiketin prioriteetti on vaihdettu arvoksi {0} käyttäjän {1} toimesta!",
"prioritySetDm":"Tiketin prioriteetti on vaihdettu arvoksi {0} palvelimellamme!",
"roleUpdateLog":"{0} on päivittänyt roolinsa!",
"roleUpdateDm":"Roolisi palvelimellamme on päivitetty!",
"topicSetLog":"Tämän tiketin prioriteetti asetettiin arvoon {0} käyttäjän {1} toimesta.",
"topicSetDm":"Tikettisi prioriteetti on asetettu arvoon {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Yritä uudelleen",
"continue":"Poista ilman transkriptiota",
"backup":"Luo varmuuskopio",
"error":"Jotain meni pieleen, kun yritettiin luoda transkriptiota. Mitä haluaisit tehdä? Tätä lippua ei poisteta, ennen kuin napsautat jotakin näistä painikkeista. "
"error":"Jotain meni pieleen, kun yritettiin luoda transkriptiota. Mitä haluaisit tehdä? Tätä lippua ei poisteta, ennen kuin napsautat jotakin näistä painikkeista. ",
"title":"Transkriptiovirhe",
"noHistory":"Tällä käyttäjällä ei ole vielä transkriptejä.",
"historyNotSupported":"Transkriptien historiaa tuetaan tällä hetkellä vain HTML Transcriptsilla.\nTekstimuotoinen transkriptien historia tulee saataville tulevissa versioissa."
},
"text":{
"messagesTitle":"VIESTIT",
"embedTitle":"UPOTUS",
"fileTitle":"TIEDOSTO",
"fieldsTitle":"KENTÄT",
"reactionsTitle":"REAKTIOT",
"statsTitle":"TILASTOT",
"emptyContent":"<sisältö on tyhjä>",
"noTitle":"<ei-otsikkoa>",
"noDesc":"<ei-kuvausta>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Tuntematon paneeli",
"notInGuild":"Ei Palvelimessa",
"channelRename":"Kanavaa ei voi nimetä uudelleen",
"busy":"Lippu on varattu"
"channelCategory":"Luokan Vaihto Ei Onnistu",
"busy":"Lippu on varattu",
"permissionError":"Käyttöoikeusvirhe"
},
"descriptions":{
"askForInfo":"Ota yhteyttä tämän botin omistajaan saadaksesi lisätietoja!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Nykyinen kanava ei ole kelvollinen lippu! Se saattoi olla lippu vanhasta Open Ticket -versiosta!",
"notInGuild":"Tämä {0} ei toimi DM:ssä! Ole hyvä ja yritä uudelleen palvelimella!",
"channelRename":"Discordin nopeusrajoitusten vuoksi botin on tällä hetkellä mahdotonta nimetä kanavaa uudelleen. Kanava nimetään automaattisesti uudelleen 10 minuutin kuluttua, jos bottia ei käynnistetä uudelleen.",
"channelCategory":"Discordin nopeusrajoitusten vuoksi kanavan luokkaa ei voitu muuttaa heti. Se päivitetään automaattisesti 10 minuutin kuluessa, jos botti pysyy online-tilassa.",
"channelRenameSource":"Tämän virheen lähde on: {0}",
"busy":"Tätä {0} ei voi käyttää! Botti käsittelee lippua parhaillaan. Yritä uudelleen muutaman sekunnin kuluttua!"
"busy":"Tätä {0} ei voi käyttää! Botti käsittelee lippua parhaillaan. Yritä uudelleen muutaman sekunnin kuluttua!",
"closeBeforeMessage":"Tätä tikettiä ei voi sulkea/poistaa ennen kuin käyttäjä on lähettänyt viestin.",
"closeBeforeAdminMessage":"Tätä tikettiä ei voi sulkea/poistaa ennen kuin tikettien ylläpitäjä tai tukihenkilö on lähettänyt viestin.",
"unableToCreateTicket":"Et voi luoda tikettiä.",
"messageMissing":"Vuorovaikutuksen viestiä ei löytynyt. Käytä sen sijaan komentoa `{0}`.",
"stateExpired":"Tämä vuorovaikutus ei ole enää voimassa tai on vanhentunut. Käytä sen sijaan komentoa `{0}`. Tämä on normaalia suuren Open Ticket -päivityksen jälkeen.",
"panelStateExpired":"Tämä paneeli ei ole enää voimassa tai on vanhentunut. Luo uusi paneeli käyttämällä `{0}` ongelman ratkaisemiseksi. Tämä on normaalia suuren Open Ticket -päivityksen jälkeen."
},
"optionInvalidReasons":{
"stringRegex":"Arvo ei vastaa mallia!",
@@ -331,7 +388,6 @@
"added":"Lisätty",
"removed":"Poistettu",
"filter":"Suodattaa",
"claimedBy":"Vaatimuksen tekijä: {0}",
"method":"Menetelmä",
"type":"Tyyppi",
"blacklisted":"Mustalla listalla",
@@ -343,6 +399,8 @@
"syntax":"Syntaksi",
"originalName":"Alkuperäinen Nimi",
"newName":"Alkuperäinen Nimi",
"originalCategory":"Alkuperäinen Kategoria",
"newCategory":"Uusi Kategoria",
"until":"Kunnes",
"validOptions":"Kelvolliset vaihtoehdot",
"validPanels":"Kelvolliset paneelit",
@@ -352,10 +410,32 @@
"version":"Versio",
"name":"Nimi",
"role":"Rooli",
"status":"Status",
"status":"Tila",
"claimed":"Väitetty",
"pinned":"Kiinnitetty",
"creationDate":"Luontipäivämäärä"
"creationDate":"Luontipäivämäärä",
"noone":"Ei Kukaan",
"open":"Avoin",
"closed":"Suljettu",
"priority":"Prioriteetti",
"participants":"Osallistujat",
"yes":"Kyllä",
"no":"Ei",
"accept":"Hyväksy",
"cancel":"Peruuta",
"option":"Vaihtoehto",
"topic":"Aihe",
"uptime":"Järjestelmän Käyttöaika",
"messages":"Viestit",
"embeds":"Upotukset",
"files":"Tiedostot",
"components":"Komponentit",
"cooldown":"Jäähy",
"maxTickets":"Maksimi Tiketit",
"admins":"Ylläpitäjät",
"roles":"Roolit",
"size":"Koko"
},
"lowercase":{
"text":"teksti",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Haluatko tämän paneelin päivittyvän automaattisesti, kun sitä muokataan?",
"ticket":"Luo lippu välittömästi.",
"ticketId":"Sen lipun tunniste, jonka haluat luoda.",
"ticketOtherUser":"Luo tiketti toiselle käyttäjälle.",
"close":"Sulje lippu.",
"delete":"Poista lippu.",
"deleteNoTranscript":"Poista tämä lippu luomatta transkriptiota.",
@@ -384,6 +465,7 @@
"unclaim":"Peruuta lippu.",
"pin":"Kiinnitä lippu.",
"unpin":"Irrota lippu.",
"move":"Siirrä lippu.",
"moveId":"Sen vaihtoehdon tunniste, johon haluat siirtyä.",
"rename":"Nimeä lippu uudelleen.",
@@ -392,6 +474,7 @@
"addUser":"Lisättävä käyttäjä.",
"remove":"Poista käyttäjä lipusta.",
"removeUser":"Poistettava käyttäjä.",
"blacklist":"Hallitse lippujen mustaa listaa.",
"blacklistView":"Näytä luettelo nykyisestä mustasta listasta.",
"blacklistAdd":"Lisää käyttäjä mustalle listalle.",
@@ -405,6 +488,7 @@
"statsUserUser":"Käyttäjä katsella.",
"statsTicket":"Tarkastele lipun tilastoja palvelimella.",
"statsTicketTicket":"Lippu katsottavaksi.",
"clear":"Poista useita lippuja samanaikaisesti.",
"clearFilter":"Lippujen tyhjennyssuodatin.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Irrotettu",
"autoclose":"Automaattisuljettu"
},
"autoclose":"Hallitse automaattista sulkemista lipussa.",
"autocloseDisable":"Poista automaattinen sulkeminen käytöstä tässä lipussa.",
"autocloseEnable":"Ota automaattinen sulkeminen käyttöön tässä lipussa.",
@@ -424,7 +509,21 @@
"autodelete":"Hallitse automaattista poistoa lipussa.",
"autodeleteDisable":"Poista automaattinen poisto käytöstä tässä lipussa.",
"autodeleteEnable":"Ota automaattinen poisto käyttöön tässä lipussa.",
"autodeleteEnableTime":"Kuinka monta päivää tämän lipun on oltava passiivinen, jotta se voidaan poistaa."
"autodeleteEnableTime":"Kuinka monta päivää tämän lipun on oltava passiivinen, jotta se voidaan poistaa.",
"topic":"Hallitse tikettikanavan aihetta.",
"topicSet":"Aseta tikettikanavan aihe.",
"topicValue":"Kanavan uusi aihe.",
"topicList":"Hae lista kaikista tiketeistä niiden aiheen ja tilastojen kanssa.",
"priority":"Hallitse tiketin prioriteettia.",
"prioritySet":"Aseta tiketin prioriteetti.",
"priorityValue":"Kanavan prioriteetti.",
"priorityGet":"Hae tiketin prioriteetti.",
"priorityList":"Hae lista kaikista tiketeistä ja niiden prioriteettitilasta.",
"transfer":"Siirrä tiketin omistus käyttäjältä toiselle.",
"transferUser":"Käyttäjä, jolle omistus siirretään.",
"transcripts":"Näytä käyttäjän tikettien transkriptien historia.",
"transcriptsUser":"Käyttäjä, jota tarkastellaan."
},
"helpMenu":{
"help":"Hanki luettelo kaikista käytettävissä olevista komennoista.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Poista automaattinen sulkeminen käytöstä tässä lipussa.",
"autocloseEnable":"Ota automaattinen sulkeminen käyttöön tässä lipussa.",
"autodeleteDisable":"Poista automaattinen poisto käytöstä tässä lipussa.",
"autodeleteEnable":"Ota automaattinen poisto käyttöön tässä lipussa."
"autodeleteEnable":"Ota automaattinen poisto käyttöön tässä lipussa.",
"categories":{
"general":"Yleiset Komennot",
"basicTicket":"Perus Tikettikomennot",
"advancedTicket":"Edistyneet Tikettikomennot",
"userTicket":"Käyttäjän Tikettikomennot",
"admin":"Ylläpitäjäkomennot",
"advanced":"Edistyneet Komennot",
"extra":"Lisäkomennot"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Järjestelmätilastot",
"user":"Käyttäjätilastot",
"ticket":"Lipputilastot",
"participants":"Osallistujat"
"participants":"Osallistujat",
"messages":"Viestit"
},
"properties":{
"ticketsCreated":"Liput luotu",
@@ -472,7 +581,48 @@
"ticketsPinned":"Liput kiinni",
"ticketsMoved":"Liput siirretty",
"usersBlacklisted":"Käyttäjät mustalla listalla",
"transcriptsCreated":"Transkriptiot luotu"
}
"transcriptsCreated":"Transkriptiot luotu",
"ticketsAutodeleted":"Tiketit Automaattisesti Poistettu",
"ticketsTransferred":"Tiketit Siirretty",
"ticketVolume":"Tikettilukumäärä",
"averageTickets":"Keskimääräiset Tiketit/Käyttäjä",
"currentTickets":"Nykyiset Tiketit",
"age":"Tiketin Ikä",
"responseTime":"Vastausaika",
"resolutionTime":"Ratkaisuaika",
"createdOn":"Luotu",
"createdBy":"Luonut",
"closedOn":"Suljettu",
"closedBy":"Sulkenut",
"claimedOn":"Otettu Vastaan",
"claimedBy":"Vastaanottanut",
"pinnedOn":"Kiinnitetty",
"pinnedBy":"Kiinnittänyt",
"deletedOn":"Poistettu",
"deletedBy":"Poistanut"
},
"roles":{
"developer":"Kehittäjä",
"serverOwner":"Palvelimen Omistaja",
"serverAdmin":"Palvelimen Ylläpitäjä",
"moderator":"Moderaattoritiimi",
"support":"Tukitiimi",
"member":"Jäsen"
}
},
"panel":{
"selectTicket":"Valitse tikettisi",
"selectRole":"Valitse roolisi",
"selectOption":"Valitse vaihtoehtosi",
"selectPriorityLevel":"Valitse prioriteettitaso"
},
"priorities":{
"urgent":"Kiireellinen",
"veryHigh":"Erittäin Korkea",
"high":"Korkea",
"normal":"Normaali",
"low":"Matala",
"veryLow":"Erittäin Matala",
"none":"Ei Mikään"
}
}
+167 -17
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["guillee3"],
"lastedited":"04/12/2024",
"lastedited":"25/05/2026",
"language":"French",
"automated":false
},
@@ -31,6 +31,14 @@
"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!",
@@ -48,6 +56,8 @@
"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!",
@@ -89,7 +99,8 @@
"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 menu déroulant peut uniquement contenir des options des types : 'ticket', 'role' ou 'sub-panel'.",
"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":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Voir les Commandes Textuelles",
"helpPage":"Page {0}",
"withReason":"Avec Raison",
"withoutTranscript":"Sans Transcription"
"withoutTranscript":"Sans Transcription",
"blacklistAdd":"Mettre l'Utilisateur en Liste Noire",
"blacklistRemove":"Retirer l'Utilisateur"
},
"titles":{
"created":"Ticket Créé",
@@ -132,6 +145,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 +153,13 @@
"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é",
"transcripts":"Historique des Transcriptions"
},
"descriptions":{
"create":"Votre ticket a été créé. Cliquez sur le bouton ci-dessous pour y accéder!",
@@ -180,7 +200,12 @@
"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?",
@@ -220,7 +245,16 @@
"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!",
"topicSetLog":"La priorité de ce ticket a été définie sur {0} par {1}.",
"topicSetDm":"La priorité de votre ticket a été définie sur {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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",
"noHistory":"Cet utilisateur n'a pas encore de transcriptions.",
"historyNotSupported":"L'historique des transcriptions est actuellement uniquement pris en charge avec HTML Transcripts.\nL'historique des transcriptions texte sera disponible dans les prochaines versions."
},
"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 +305,9 @@
"unknownPanel":"Panneau Inconnu",
"notInGuild":"Pas Dans le Serveur",
"channelRename":"Impossible de Renommer le Canal",
"busy":"Ticket Occupé"
"channelCategory":"Impossible de Modifier la Catégorie",
"busy":"Ticket Occupé",
"permissionError":"Erreur de permission"
},
"descriptions":{
"askForInfo":"Contactez le propriétaire de ce bot pour plus d'informations!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Le canal actuel n'est pas un ticket valide! Il pourrait s'agir d'un ticket provenant d'une ancienne version d'Open Ticket!",
"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é.",
"channelCategory":"En raison des limites de taux de Discord, la catégorie du salon n'a pas pu être modifiée immédiatement. Elle sera modifiée automatiquement dans les 10 minutes si le bot reste en ligne.",
"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.",
"messageMissing":"Impossible de localiser le message de l'interaction. Utilisez la commande `{0}` à la place.",
"stateExpired":"Cette interaction n'est plus valide ou a expiré. Utilisez la commande `{0}` à la place. Il est normal de recevoir cette erreur après une mise à jour majeure d'Open Ticket.",
"panelStateExpired":"Ce panneau n'est plus valide ou a expiré. Créez un nouveau panneau avec `{0}` pour résoudre le problème. Il est normal de recevoir cette erreur après une mise à jour majeure d'Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"La valeur ne correspond pas au modèle!",
@@ -331,7 +388,6 @@
"added":"Ajouté",
"removed":"Retiré",
"filter":"Filtre",
"claimedBy":"Pris en charge par {0}",
"method":"Méthode",
"type":"Type",
"blacklisted":"Liste Noire",
@@ -343,6 +399,8 @@
"syntax":"Syntaxe",
"originalName":"Nom Original",
"newName":"Nouveau Nom",
"originalCategory":"Catégorie d'Origine",
"newCategory":"Nouvelle Catégorie",
"until":"Jusqu'à",
"validOptions":"Options Valides",
"validPanels":"Panneaux Valides",
@@ -355,7 +413,29 @@
"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",
"accept":"Accepter",
"cancel":"Annuler",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Voulez-vous que ce panneau se mette à jour automatiquement lorsqu'il est modifié?",
"ticket":"Créez instantanément un ticket.",
"ticketId":"L'identifiant du ticket que vous souhaitez créer.",
"ticketOtherUser":"Créer un ticket pour un autre utilisateur.",
"close":"Fermez un ticket.",
"delete":"Supprimez un ticket.",
"deleteNoTranscript":"Supprimez ce ticket sans créer de transcription.",
@@ -384,6 +465,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 +474,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 +488,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 +501,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 +509,21 @@
"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.",
"transcripts":"Voir l'historique des transcriptions de tickets d'un utilisateur.",
"transcriptsUser":"L'utilisateur à afficher."
},
"helpMenu":{
"help":"Obtenez une liste de toutes les commandes disponibles.",
@@ -452,7 +551,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 +568,8 @@
"system":"Statistiques Système",
"user":"Statistiques Utilisateur",
"ticket":"Statistiques Ticket",
"participants":"Participants"
"participants":"Participants",
"messages":"Messages"
},
"properties":{
"ticketsCreated":"Tickets Créés",
@@ -472,7 +581,48 @@
"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",
"selectPriorityLevel":"Sélectionner le niveau de priorité"
},
"priorities":{
"urgent":"Urgent",
"veryHigh":"Très élevée",
"high":"Élevée",
"normal":"Normale",
"low":"Faible",
"veryLow":"Très faible",
"none":"Aucune"
}
}
+169 -19
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["benzorich"],
"lastedited":"06/10/2024",
"lastedited":"25/05/2026",
"language":"German",
"automated":false
},
@@ -14,8 +14,8 @@
"typeInfo":"[INFO]",
"headerConfigChecker":"CONFIG CHECKER",
"headerDescription":"Prüfen Sie auf Fehler in Ihrer Konfigurationsdateien!",
"footerError":"Der Bot wird nicht starten, bis alle {0}'s repariert sind!",
"footerWarning":"Es wird empfohlen, vor dem Start alle {0}'s zu korrigieren!",
"footerError":"Der Bot wird nicht starten, bis alle {0}en repariert sind!",
"footerWarning":"Es wird empfohlen, vor dem Start alle {0}en zu korrigieren!",
"footerSupport":"SUPPORT: {0} - DOCS: {1}",
"compactInformation":"Verwenden Sie {0} für weitere Informationen!",
"dataPath":"Pfad",
@@ -31,6 +31,14 @@
"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!",
@@ -48,6 +56,8 @@
"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!",
@@ -89,7 +99,8 @@
"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 Dropdown kann nur Optionen der Typen 'ticket', 'role' oder 'sub-panel' enthalten.",
"customInvalidVersion":"Die in deiner Konfiguration angegebene Version stimmt nicht überein! Stelle sicher, dass du die Konfiguration auf die neueste Version aktualisiert hast!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Textbefehle anzeigen",
"helpPage":"Seite {0}",
"withReason":"Mit Grund",
"withoutTranscript":"Ohne Transkription"
"withoutTranscript":"Ohne Transkription",
"blacklistAdd":"Benutzer Blacklisten",
"blacklistRemove":"Benutzer Freigeben"
},
"titles":{
"created":"Ticket erstellt",
@@ -132,6 +145,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 +153,13 @@
"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",
"transcripts":"Transkriptverlauf"
},
"descriptions":{
"create":"Ihr Ticket wurde bereits erstellt. Klicken Sie auf die Button unten, um es zu öffnen!",
@@ -180,7 +200,12 @@
"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?",
@@ -220,7 +245,16 @@
"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!",
"topicSetLog":"Die Priorität dieses Tickets wurde von {1} auf {0} gesetzt.",
"topicSetDm":"Die Priorität deines Tickets wurde auf {0} gesetzt."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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",
"noHistory":"Dieser Benutzer hat noch keine Transkripte.",
"historyNotSupported":"Der Transkriptverlauf wird derzeit nur mit HTML Transcripts unterstützt.\nDer Verlauf von Texttranskripten wird in zukünftigen Versionen verfügbar sein."
},
"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 +305,9 @@
"unknownPanel":"Unbekanntes Panel",
"notInGuild":"Nicht auf dem Server",
"channelRename":"Kanal kann nicht umbenannt werden",
"busy":"Ticket ist besetzt"
"channelCategory":"Kategorie Kann Nicht Geändert Werden",
"busy":"Ticket ist besetzt",
"permissionError":"Berechtigungsfehler"
},
"descriptions":{
"askForInfo":"Kontaktieren Sie den Besitzer dieses Bots für weitere Informationen!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Der aktuelle Kanal ist kein gültiges Ticket! Es könnte sich um ein Ticket aus einer alten Open Ticket Version handeln!",
"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.",
"channelCategory":"Aufgrund von Discord-Rate-Limits konnte die Kanalkategorie nicht sofort geändert werden. Sie wird automatisch innerhalb von 10 Minuten geändert, sofern der Bot online bleibt.",
"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.",
"messageMissing":"Die Nachricht der Interaktion konnte nicht gefunden werden. Verwende stattdessen den Befehl `{0}`.",
"stateExpired":"Diese Interaktion ist nicht mehr gültig oder abgelaufen. Verwende stattdessen den Befehl `{0}`. Es ist normal, diesen Fehler nach einem größeren Open Ticket-Update zu erhalten.",
"panelStateExpired":"Dieses Panel ist nicht mehr gültig oder abgelaufen. Erstelle ein neues Panel mit `{0}`, um das Problem zu beheben. Es ist normal, diesen Fehler nach einem größeren Open Ticket-Update zu erhalten."
},
"optionInvalidReasons":{
"stringRegex":"Wert stimmt nicht mit Muster überein!",
@@ -331,7 +388,6 @@
"added":"Hinzugefügt",
"removed":"Entfernt",
"filter":"Filter",
"claimedBy":"Beansprucht von {0}",
"method":"Methode",
"type":"Typ",
"blacklisted":"Gesperrt",
@@ -343,6 +399,8 @@
"syntax":"Syntax",
"originalName":"Ursprünglicher Name",
"newName":"Neuer Name",
"originalCategory":"Originalkategorie",
"newCategory":"Neue Kategorie",
"until":"Bis",
"validOptions":"Gültige Optionen",
"validPanels":"Gültige Panels",
@@ -355,7 +413,29 @@
"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",
"accept":"Akzeptieren",
"cancel":"Abbrechen",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Möchten Sie, dass dieses Feld bei der Bearbeitung automatisch aktualisiert wird?",
"ticket":"Erstellen Sie sofort ein Ticket.",
"ticketId":"Der Kennung des Panels, das Sie erzeugen wollen.",
"ticketOtherUser":"Ein Ticket für einen anderen Benutzer erstellen.",
"close":"Schließen Sie ein Ticket.",
"delete":"Ein Ticket löschen.",
"deleteNoTranscript":"Löschen Sie dieses Ticket, ohne ein Transkript zu erstellen.",
@@ -384,6 +465,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 +474,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 +488,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 +501,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 +509,21 @@
"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.",
"transcripts":"Den Ticket-Transkriptverlauf eines Benutzers anzeigen.",
"transcriptsUser":"Der anzuzeigende Benutzer."
},
"helpMenu":{
"help":"Erhalten Sie eine Liste mit allen verfügbaren Befehlen.",
@@ -452,7 +551,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 +568,8 @@
"system":"System-Statistiken",
"user":"Benutzer-Statistiken",
"ticket":"Ticket-Statistiken",
"participants":"Teilnehmer"
"participants":"Teilnehmer",
"messages":"Nachrichten"
},
"properties":{
"ticketsCreated":"Tickets erstellt",
@@ -472,7 +581,48 @@
"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",
"selectPriorityLevel":"Prioritätsstufe auswählen"
},
"priorities":{
"urgent":"Dringend",
"veryHigh":"Sehr Hoch",
"high":"Hoch",
"normal":"Normal",
"low":"Niedrig",
"veryLow":"Sehr Niedrig",
"none":"Keine"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["HanumeshGupta"],
"lastedited":"19/06/2025",
"otversion":"v4.2.0",
"translators":["HanumeshGupta","ChatGPT"],
"lastedited":"25/05/2026",
"language":"Greek",
"automated":true
},
@@ -31,6 +31,14 @@
"stringContains":"Αυτή η συμβολοσειρά πρέπει να περιέχει {0}!",
"stringChoices":"Αυτή η συμβολοσειρά μπορεί να είναι μόνο μία από τις ακόλουθες τιμές: {0}!",
"stringRegex":"Αυτή η συμβολοσειρά είναι άκυρη!",
"stringInvertedContains":"Αυτή η συμβολοσειρά δεν επιτρέπεται να περιέχει {0}!",
"stringLowercase":"Αυτή η συμβολοσειρά πρέπει να είναι γραμμένη μόνο με πεζά!",
"stringUppercase":"Αυτή η συμβολοσειρά πρέπει να είναι γραμμένη μόνο με κεφαλαία!",
"stringSpecialCharacters":"Αυτή η συμβολοσειρά δεν επιτρέπεται να περιέχει ειδικούς χαρακτήρες! (a-z, 0-9 & κενό μόνο)",
"stringNoSpaces":"Αυτή η συμβολοσειρά δεν επιτρέπεται να περιέχει κενά!",
"stringCapitalWord":"Συνιστάται κάθε λέξη σε αυτήν τη συμβολοσειρά να ξεκινά με κεφαλαίο γράμμα!",
"stringCapitalSentence":"Φαίνεται ότι ορισμένες προτάσεις σε αυτήν τη συμβολοσειρά δεν ξεκινούν με κεφαλαίο γράμμα!",
"stringPunctuation":"Φαίνεται ότι η πρόταση σε αυτήν τη συμβολοσειρά δεν τελειώνει με σημείο στίξης!",
"numberTooShort":"Αυτός ο αριθμός δεν μπορεί να είναι μικρότερος από {0} ψηφία!",
"numberTooLong":"Αυτός ο αριθμός δεν μπορεί να είναι μεγαλύτερος από {0} ψηφία!",
@@ -48,6 +56,8 @@
"numberNegative":"Αυτός ο αριθμός δεν μπορεί να είναι αρνητικός!",
"numberPositive":"Αυτός ο αριθμός δεν μπορεί να είναι θετικός!",
"numberZero":"Αυτός ο αριθμός δεν μπορεί να είναι μηδέν!",
"numberNan":"Αυτός ο αριθμός δεν μπορεί να είναι NaN (Not A Number)!",
"numberInvertedContains":"Αυτός ο αριθμός δεν επιτρέπεται να περιέχει {0}!",
"booleanTrue":"Αυτό το boolean δεν μπορεί να είναι true!",
"booleanFalse":"Αυτό το boolean δεν μπορεί να είναι false!",
@@ -89,7 +99,8 @@
"invalidButton":"Αυτό το κουμπί πρέπει να έχει τουλάχιστον ένα {0} ή {1}!",
"unusedOption":"Η επιλογή {0} δεν χρησιμοποιείται πουθενά!",
"unusedQuestion":"Η ερώτηση {0} δεν χρησιμοποιείται πουθενά!",
"dropdownOption":"Ένα πάνελ με ενεργοποιημένο dropdown μπορεί να περιέχει μόνο επιλογές τύπου 'ticket'!"
"dropdownOption":"Ένα πάνελ με αναπτυσσόμενο μενού μπορεί να περιέχει μόνο επιλογές των τύπων: 'ticket', 'role' ή 'sub-panel'.",
"customInvalidVersion":"Η έκδοση που καθορίστηκε στο config σας δεν ταιριάζει! Βεβαιωθείτε ότι έχετε ενημερώσει το config στην πιο πρόσφατη έκδοση!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Προβολή Εντολών Κειμένου",
"helpPage":"Σελίδα {0}",
"withReason":"Με Λόγο",
"withoutTranscript":"Χωρίς Αντίγραφο"
"withoutTranscript":"Χωρίς Αντίγραφο",
"blacklistAdd":"Προσθήκη Χρήστη στη Μαύρη Λίστα",
"blacklistRemove":"Απελευθέρωση Χρήστη"
},
"titles":{
"created":"Δημιουργήθηκε Εισιτήριο",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Προστέθηκε στη Μαύρη Λίστα",
"blacklistRemoveDm":"Αφαιρέθηκε από τη Μαύρη Λίστα",
"clear":"Εισιτήρια Διαγράφηκαν",
"clearTickets":"Εκκαθάριση Tickets",
"roles":"Ενημέρωση Ρόλων",
"autoclose":"Αυτόματο Κλείσιμο",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Απενεργοποιήθηκε Αυτόματο Κλείσιμο",
"autodelete":"Αυτόματη Διαγραφή",
"autodeleteEnabled":"Ενεργοποιήθηκε Αυτόματη Διαγραφή",
"autodeleteDisabled":"Απενεργοποιήθηκε Αυτόματη Διαγραφή"
"autodeleteDisabled":"Απενεργοποιήθηκε Αυτόματη Διαγραφή",
"topicSet":"Το Θέμα Αλλάχθηκε",
"prioritySet":"Η Προτεραιότητα Αλλάχθηκε",
"priorityGet":"Προτεραιότητα Ticket",
"transfer":"Το Ticket Μεταφέρθηκε",
"transcripts":"Ιστορικό Μεταγραφών"
},
"descriptions":{
"create":"Το εισιτήριό σας δημιουργήθηκε. Κάντε κλικ στο παρακάτω κουμπί για να το προσπελάσετε!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Μπορείτε να δημιουργήσετε μόνο {0} εισιτήρια ταυτόχρονα!",
"ticketMessageAutoclose":"Αυτό το εισιτήριο θα κλείσει αυτόματα όταν είναι ανενεργό για {0} ώρες!",
"ticketMessageAutodelete":"Αυτό το εισιτήριο θα διαγραφεί αυτόματα όταν είναι ανενεργό για {0} ημέρες!",
"panelReady":"Μπορείτε να βρείτε το πάνελ παρακάτω!\nΑυτό το μήνυμα μπορεί τώρα να διαγραφεί!"
"panelReady":"Το πάνελ είναι διαθέσιμο στο επόμενο μήνυμα!\nΑυτό το μήνυμα μπορεί τώρα να διαγραφεί!",
"topicSet":"Το θέμα του καναλιού άλλαξε επιτυχώς από τον/την {0}!",
"prioritySet":"Η προτεραιότητα του ticket άλλαξε σε {0} από τον/την {1} επιτυχώς!",
"priorityGet":"Η τρέχουσα προτεραιότητα αυτού του ticket είναι {0}.",
"transfer":"Η ιδιοκτησία του ticket μεταφέρθηκε από τον/την {0} στον/στην {1} από τον/την {2} επιτυχώς!"
},
"modal":{
"closePlaceholder":"Γιατί έκλεισες αυτό το εισιτήριο;",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"Ο {0} αφαιρέθηκε από τη μαύρη λίστα από τον {1}!",
"blacklistAddDm":"Έχετε προστεθεί στη μαύρη λίστα στον server μας!\nΑπό τώρα, δεν μπορείτε να δημιουργήσετε εισιτήριο!",
"blacklistRemoveDm":"Έχετε αφαιρεθεί από τη μαύρη λίστα στον server μας!\nΤώρα μπορείτε να δημιουργήσετε εισιτήρια ξανά!",
"clearLog":"{0} εισιτήρια διαγράφηκαν από τον {1}!"
"clearLog":"{0} εισιτήρια διαγράφηκαν από τον {1}!",
"transferLog":"Η ιδιοκτησία αυτού του ticket μεταφέρθηκε από τον/την {0} στον/στην {1} από τον/την {2}!",
"transferDm":"Η ιδιοκτησία του ticket σας μεταφέρθηκε από τον/την {0} στον/στην {1} στον server μας!",
"prioritySetLog":"Η προτεραιότητα αυτού του ticket άλλαξε σε {0} από τον/την {1}!",
"prioritySetDm":"Η προτεραιότητα του ticket σας άλλαξε σε {0} στον server μας!",
"roleUpdateLog":"Ο/Η {0} ενημέρωσε τους ρόλους του/της!",
"roleUpdateDm":"Οι ρόλοι σας στον server μας έχουν ενημερωθεί!",
"topicSetLog":"Η προτεραιότητα αυτού του ticket ορίστηκε σε {0} από τον/την {1}.",
"topicSetDm":"Η προτεραιότητα του ticket σας ορίστηκε σε {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Επανάληψη",
"continue":"Διαγραφή Χωρίς Αντίγραφο",
"backup":"Δημιουργία Αντιγράφου Ασφαλείας",
"error":"Κάτι πήγε στραβά κατά τη δημιουργία του αντιγράφου.\nΤι θα θέλατε να κάνετε;\n\nΑυτό το εισιτήριο δεν θα διαγραφεί μέχρι να κάνετε κλικ σε ένα από αυτά τα κουμπιά."
"error":"Κάτι πήγε στραβά κατά τη δημιουργία του αντιγράφου.\nΤι θα θέλατε να κάνετε;\n\nΑυτό το εισιτήριο δεν θα διαγραφεί μέχρι να κάνετε κλικ σε ένα από αυτά τα κουμπιά.",
"title":"Σφάλμα Transcript",
"noHistory":"Αυτός ο χρήστης δεν έχει ακόμη κανένα ιστορικό μεταγραφών.",
"historyNotSupported":"Το ιστορικό μεταγραφών υποστηρίζεται προς το παρόν μόνο με HTML Transcripts.\nΤο ιστορικό κειμενικών μεταγραφών θα είναι διαθέσιμο σε μελλοντικές εκδόσεις."
},
"text":{
"messagesTitle":"ΜΗΝΥΜΑΤΑ",
"embedTitle":"EMBED",
"fileTitle":"ΑΡΧΕΙΟ",
"fieldsTitle":"ΠΕΔΙΑ",
"reactionsTitle":"ΑΝΤΙΔΡΑΣΕΙΣ",
"statsTitle":"ΣΤΑΤΙΣΤΙΚΑ",
"emptyContent":"<το περιεχόμενο είναι κενό>",
"noTitle":"<χωρίς τίτλο>",
"noDesc":"<χωρίς περιγραφή>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Άγνωστο Πάνελ",
"notInGuild":"Δεν Είστε σε Server",
"channelRename":"Αδυναμία Μετονομασίας Κανάλι",
"busy":"Το Εισιτήριο Είναι Απασχολημένο"
"channelCategory":"Αδυναμία Αλλαγής Κατηγορίας",
"busy":"Το Εισιτήριο Είναι Απασχολημένο",
"permissionError":"Σφάλμα Δικαιωμάτων"
},
"descriptions":{
"askForInfo":"Επικοινωνήστε με τον ιδιοκτήτη αυτού του bot για περισσότερες πληροφορίες!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Το τρέχον κανάλι δεν είναι έγκυρο εισιτήριο! Μπορεί να ήταν εισιτήριο από παλιά έκδοση του Open Ticket!",
"notInGuild":"Αυτό το {0} δεν λειτουργεί σε DM! Παρακαλώ δοκιμάστε ξανά σε έναν server!",
"channelRename":"Λόγω discord ratelimits, είναι αδύνατο για το bot να μετονομάσει το κανάλι. Το κανάλι θα μετονομαστεί αυτόματα σε 10 λεπτά αν το bot δεν επανεκκινηθεί.",
"channelCategory":"Λόγω περιορισμών ρυθμού του Discord, η κατηγορία καναλιού δεν μπορεί να αλλάξει άμεσα. Θα αλλάξει αυτόματα μέσα σε 10 λεπτά αν το bot παραμείνει online.",
"channelRenameSource":"Η πηγή αυτού του σφάλματος είναι: {0}",
"busy":"Αδυναμία χρήσης αυτού του {0}!\nΤο εισιτήριο είναι αυτή τη στιγμή σε επεξεργασία από το bot.\n\nΠαρακαλώ δοκιμάστε ξανά σε λίγα δευτερόλεπτα!"
"busy":"Αδυναμία χρήσης αυτού του {0}!\nΤο εισιτήριο είναι αυτή τη στιγμή σε επεξεργασία από το bot.\n\nΠαρακαλώ δοκιμάστε ξανά σε λίγα δευτερόλεπτα!",
"closeBeforeMessage":"Αυτό το ticket δεν μπορεί να κλείσει/διαγραφεί πριν σταλεί ένα μήνυμα από έναν χρήστη.",
"closeBeforeAdminMessage":"Αυτό το ticket δεν μπορεί να κλείσει/διαγραφεί πριν σταλεί μήνυμα από έναν ticket admin ή μέλος υποστήριξης.",
"unableToCreateTicket":"Δεν μπορείτε να δημιουργήσετε ticket.",
"messageMissing":"Δεν ήταν δυνατός ο εντοπισμός του μηνύματος αλληλεπίδρασης. Χρησιμοποιήστε την εντολή `{0}` αντί αυτού.",
"stateExpired":"Αυτή η αλληλεπίδραση δεν είναι πλέον έγκυρη ή έχει λήξει. Χρησιμοποιήστε την εντολή `{0}` αντί αυτού. Είναι φυσιολογικό μετά από μεγάλη ενημέρωση του Open Ticket.",
"panelStateExpired":"Αυτό το πάνελ δεν είναι πλέον έγκυρο ή έχει λήξει. Δημιουργήστε νέο πάνελ χρησιμοποιώντας `{0}` για να επιλύσετε το πρόβλημα. Είναι φυσιολογικό μετά από μεγάλη ενημέρωση του Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Η τιμή δεν ταιριάζει με το μοτίβο!",
@@ -331,7 +388,6 @@
"added":"Προστέθηκε",
"removed":"Αφαιρέθηκε",
"filter":"Φίλτρο",
"claimedBy":"Αναλήφθηκε Από {0}",
"method":"Μέθοδος",
"type":"Τύπος",
"blacklisted":"Στη Μαύρη Λίστα",
@@ -343,6 +399,8 @@
"syntax":"Σύνταξη",
"originalName":"Αρχικό Όνομα",
"newName":"Νέο Όνομα",
"originalCategory":"Αρχική Κατηγορία",
"newCategory":"Νέα Κατηγορία",
"until":"Μέχρι",
"validOptions":"Έγκυρες Επιλογές",
"validPanels":"Έγκυρα Πάνελ",
@@ -355,7 +413,29 @@
"status":"Κατάσταση",
"claimed":"Αναληφθείς",
"pinned":"Καρφιτσωμένο",
"creationDate":"Ημερομηνία Δημιουργίας"
"creationDate":"Ημερομηνία Δημιουργίας",
"noone":"Κανείς",
"open":"Ανοιχτό",
"closed":"Κλειστό",
"priority":"Προτεραιότητα",
"participants":"Συμμετέχοντες",
"yes":"Ναι",
"no":"Όχι",
"accept":"Αποδοχή",
"cancel":"Ακύρωση",
"option":"Επιλογή",
"topic":"Θέμα",
"uptime":"Χρόνος Λειτουργίας Συστήματος",
"messages":"Μηνύματα",
"embeds":"Embeds",
"files":"Αρχεία",
"components":"Στοιχεία",
"cooldown":"Χρόνος Αναμονής",
"maxTickets":"Μέγιστος Αριθμός Tickets",
"admins":"Διαχειριστές",
"roles":"Ρόλοι",
"size":"Μέγεθος"
},
"lowercase":{
"text":"κείμενο",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Θέλετε αυτό το πάνελ να ενημερώνεται αυτόματα όταν επεξεργαστεί;",
"ticket":"Δημιουργία εισιτηρίου αμέσως.",
"ticketId":"Το αναγνωριστικό του εισιτηρίου που θέλετε να δημιουργήσετε.",
"ticketOtherUser":"Δημιουργήστε ένα ticket για άλλον χρήστη.",
"close":"Κλείσιμο εισιτηρίου.",
"delete":"Διαγραφή εισιτηρίου.",
"deleteNoTranscript":"Διαγραφή αυτού του εισιτηρίου χωρίς δημιουργία μεταγραφής.",
@@ -384,6 +465,7 @@
"unclaim":"Ακύρωση αιτηματοποίησης εισιτηρίου.",
"pin":"Καρφίτσωμα εισιτηρίου.",
"unpin":"Ξεκαρφίτσωμα εισιτηρίου.",
"move":"Μετακίνηση εισιτηρίου.",
"moveId":"Το αναγνωριστικό της επιλογής στην οποία θέλετε να μετακινήσετε.",
"rename":"Μετονομασία εισιτηρίου.",
@@ -392,6 +474,7 @@
"addUser":"Ο χρήστης που θα προστεθεί.",
"remove":"Αφαίρεση χρήστη από εισιτήριο.",
"removeUser":"Ο χρήστης που θα αφαιρεθεί.",
"blacklist":"Διαχείριση μαύρης λίστας εισιτηρίων.",
"blacklistView":"Προβολή λίστας της τρέχουσας μαύρης λίστας.",
"blacklistAdd":"Προσθήκη χρήστη στη μαύρη λίστα.",
@@ -405,6 +488,7 @@
"statsUserUser":"Ο χρήστης που θα προβληθεί.",
"statsTicket":"Προβολή στατιστικών ενός εισιτηρίου στον server.",
"statsTicketTicket":"Το εισιτήριο που θα προβληθεί.",
"clear":"Διαγραφή πολλαπλών εισιτηρίων ταυτόχρονα.",
"clearFilter":"Το φίλτρο για την εκκαθάριση εισιτηρίων.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Μη καρφιτσωμένα",
"autoclose":"Αυτόματα κλειστά"
},
"autoclose":"Διαχείριση αυτόματου κλεισίματος σε εισιτήριο.",
"autocloseDisable":"Απενεργοποίηση αυτόματου κλεισίματος σε αυτό το εισιτήριο.",
"autocloseEnable":"Ενεργοποίηση αυτόματου κλεισίματος σε αυτό το εισιτήριο.",
@@ -424,7 +509,21 @@
"autodelete":"Διαχείριση αυτόματης διαγραφής σε εισιτήριο.",
"autodeleteDisable":"Απενεργοποίηση αυτόματης διαγραφής σε αυτό το εισιτήριο.",
"autodeleteEnable":"Ενεργοποίηση αυτόματης διαγραφής σε αυτό το εισιτήριο.",
"autodeleteEnableTime": "Ο αριθμός των ημερών που απαιτείται για να διαγραφεί αυτόματα το εισιτήριο λόγω αδράνειας."
"autodeleteEnableTime":"Ο αριθμός των ημερών που απαιτείται για να διαγραφεί αυτόματα το εισιτήριο λόγω αδράνειας.",
"topic":"Διαχειριστείτε το θέμα του καναλιού ticket.",
"topicSet":"Ορίστε το θέμα του καναλιού ticket.",
"topicValue":"Το νέο θέμα του καναλιού.",
"topicList":"Λάβετε μια λίστα όλων των tickets με το θέμα και τα στατιστικά τους.",
"priority":"Διαχειριστείτε την προτεραιότητα του ticket.",
"prioritySet":"Ορίστε την προτεραιότητα του ticket.",
"priorityValue":"Η προτεραιότητα του καναλιού.",
"priorityGet":"Λάβετε την προτεραιότητα του ticket.",
"priorityList":"Λάβετε μια λίστα όλων των tickets με την κατάσταση προτεραιότητάς τους.",
"transfer":"Μεταφέρετε την ιδιοκτησία του ticket από έναν χρήστη σε άλλον.",
"transferUser":"Ο χρήστης στον οποίο θα γίνει η μεταφορά.",
"transcripts":"Προβολή ιστορικού μεταγραφών ticket ενός χρήστη.",
"transcriptsUser":"Ο χρήστης προς προβολή."
},
"helpMenu":{
"help":"Λήψη λίστας όλων των διαθέσιμων εντολών.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Απενεργοποίηση αυτόματου κλεισίματος σε αυτό το εισιτήριο.",
"autocloseEnable":"Ενεργοποίηση αυτόματου κλεισίματος σε αυτό το εισιτήριο.",
"autodeleteDisable":"Απενεργοποίηση αυτόματης διαγραφής σε αυτό το εισιτήριο.",
"autodeleteEnable": "Ενεργοποίηση αυτόματης διαγραφής σε αυτό το εισιτήριο."
"autodeleteEnable":"Ενεργοποίηση αυτόματης διαγραφής σε αυτό το εισιτήριο.",
"categories":{
"general":"Γενικές Εντολές",
"basicTicket":"Βασικές Εντολές Ticket",
"advancedTicket":"Προχωρημένες Εντολές Ticket",
"userTicket":"Εντολές Ticket Χρήστη",
"admin":"Εντολές Διαχειριστή",
"advanced":"Προχωρημένες Εντολές",
"extra":"Επιπλέον Εντολές"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Στατιστικά Συστήματος",
"user":"Στατιστικά Χρήστη",
"ticket":"Στατιστικά Εισιτηρίου",
"participants": "Συμμετέχοντες"
"participants":"Συμμετέχοντες",
"messages":"Μηνύματα"
},
"properties":{
"ticketsCreated":"Εισιτήρια Δημιουργήθηκαν",
@@ -472,7 +581,48 @@
"ticketsPinned":"Εισιτήρια Καρφιτσώθηκαν",
"ticketsMoved":"Εισιτήρια Μετακινήθηκαν",
"usersBlacklisted":"Χρήστες στη Μαύρη Λίστα",
"transcriptsCreated": "Μεταγραφές Δημιουργήθηκαν"
}
"transcriptsCreated":"Μεταγραφές Δημιουργήθηκαν",
"ticketsAutodeleted":"Tickets Αυτόματης Διαγραφής",
"ticketsTransferred":"Tickets Μεταφερμένα",
"ticketVolume":"Όγκος Tickets",
"averageTickets":"Μέσος Όρος Tickets/Χρήστη",
"currentTickets":"Τρέχοντα Tickets",
"age":"Ηλικία Ticket",
"responseTime":"Χρόνος Απόκρισης",
"resolutionTime":"Χρόνος Επίλυσης",
"createdOn":"Δημιουργήθηκε Στις",
"createdBy":"Δημιουργήθηκε Από",
"closedOn":"Έκλεισε Στις",
"closedBy":"Έκλεισε Από",
"claimedOn":"Διεκδικήθηκε Στις",
"claimedBy":"Διεκδικήθηκε Από",
"pinnedOn":"Καρφιτσώθηκε Στις",
"pinnedBy":"Καρφιτσώθηκε Από",
"deletedOn":"Διαγράφηκε Στις",
"deletedBy":"Διαγράφηκε Από"
},
"roles":{
"developer":"Developer",
"serverOwner":"Ιδιοκτήτης Server",
"serverAdmin":"Διαχειριστής Server",
"moderator":"Ομάδα Moderators",
"support":"Ομάδα Υποστήριξης",
"member":"Μέλος"
}
},
"panel":{
"selectTicket":"Επιλέξτε το ticket σας",
"selectRole":"Επιλέξτε τον ρόλο σας",
"selectOption":"Επιλέξτε την επιλογή σας",
"selectPriorityLevel":"Επιλέξτε επίπεδο προτεραιότητας"
},
"priorities":{
"urgent":"Επείγον",
"veryHigh":"Πολύ Υψηλή",
"high":"Υψηλή",
"normal":"Κανονική",
"low":"Χαμηλή",
"veryLow":"Πολύ Χαμηλή",
"none":"Καμία"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["an_developer"],
"lastedited":"14/12/2024",
"otversion":"v4.2.0",
"translators":["challenger_nova"],
"lastedited":"25/05/2026",
"language":"Hindi",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"इस स्ट्रिंग में {0} होना आवश्यक है!",
"stringChoices":"यह स्ट्रिंग केवल निम्नलिखित मानों में से एक हो सकती है: {0}!",
"stringRegex":"यह स्ट्रिंग अमान्य है!",
"stringInvertedContains":"इस स्ट्रिंग में {0} शामिल नहीं होना चाहिए!",
"stringLowercase":"यह स्ट्रिंग केवल छोटे अक्षरों में लिखी जानी चाहिए!",
"stringUppercase":"यह स्ट्रिंग केवल बड़े अक्षरों में लिखी जानी चाहिए!",
"stringSpecialCharacters":"इस स्ट्रिंग में कोई विशेष अक्षर नहीं होना चाहिए! (केवल a-z, 0-9 और स्पेस अनुमत हैं)",
"stringNoSpaces":"इस स्ट्रिंग में स्पेस नहीं होना चाहिए!",
"stringCapitalWord":"यह अनुशंसा की जाती है कि इस स्ट्रिंग के प्रत्येक शब्द की शुरुआत बड़े अक्षर से हो!",
"stringCapitalSentence":"ऐसा लगता है कि इस स्ट्रिंग में कुछ वाक्य बड़े अक्षर से शुरू नहीं होते हैं!",
"stringPunctuation":"ऐसा लगता है कि इस स्ट्रिंग का वाक्य विराम चिह्न के साथ समाप्त नहीं होता है!",
"numberTooShort":"यह संख्या {0} वर्णों से छोटी नहीं हो सकती!",
"numberTooLong":"यह संख्या {0} वर्णों से अधिक लंबी नहीं हो सकती!",
@@ -48,6 +56,8 @@
"numberNegative":"यह संख्या ऋणात्मक नहीं हो सकती!",
"numberPositive":"यह संख्या सकारात्मक नहीं हो सकती!",
"numberZero":"यह संख्या शून्य नहीं हो सकती!",
"numberNan":"यह संख्या NaN (Not A Number) नहीं हो सकती!",
"numberInvertedContains":"इस संख्या में {0} शामिल नहीं होना चाहिए!",
"booleanTrue":"यह बूलियन सत्य नहीं हो सकता!",
"booleanFalse":"यह बूलियन झूठा नहीं हो सकता!",
@@ -89,7 +99,8 @@
"invalidButton":"इस बटन पर कम से कम {0} या {1} होना आवश्यक है!",
"unusedOption":"विकल्प {0} का उपयोग कहीं भी नहीं किया जाता है!",
"unusedQuestion":"प्रश्न {0} का प्रयोग कहीं भी नहीं किया गया है!",
"dropdownOption":"ड्रॉपडाउन सक्षम पैनल में केवल 'टिकट' प्रकार के विकल्प हो सकते हैं!"
"dropdownOption":"ड्रॉपडाउन वाला पैनल केवल इन प्रकारों के विकल्प रख सकता है: 'ticket', 'role' या 'sub-panel'.",
"customInvalidVersion":"आपके कॉन्फ़िग में निर्दिष्ट संस्करण मेल नहीं खाता! कृपया सुनिश्चित करें कि आपने कॉन्फ़िग को नवीनतम संस्करण में अपडेट किया है!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"टेक्स्ट कमांड देखें",
"helpPage":"पेज {0}",
"withReason":"कारण के साथ",
"withoutTranscript":"प्रतिलेख के बिना"
"withoutTranscript":"प्रतिलेख के बिना",
"blacklistAdd":"उपयोगकर्ता को ब्लैकलिस्ट करें",
"blacklistRemove":"उपयोगकर्ता को रिलीज़ करें"
},
"titles":{
"created":"टिकट बनाया गया",
@@ -132,6 +145,7 @@
"blacklistAddDm":"ब्लैकलिस्ट में जोड़ा गया",
"blacklistRemoveDm":"काली सूची से हटाया गया",
"clear":"टिकट साफ़ हो गए",
"clearTickets":"टिकट साफ़ करें",
"roles":"भूमिकाएँ अद्यतन की गईं",
"autoclose":"टिकट स्वतः बंद",
@@ -139,7 +153,13 @@
"autocloseDisabled":"स्वत: बंद अक्षम",
"autodelete":"टिकट स्वतः हटा दिया गया",
"autodeleteEnabled":"स्वतः हटाना सक्षम",
"autodeleteDisabled":"स्वतः हटाना अक्षम"
"autodeleteDisabled":"स्वतः हटाना अक्षम",
"topicSet":"विषय बदला गया",
"prioritySet":"प्राथमिकता बदली गई",
"priorityGet":"टिकट प्राथमिकता",
"transfer":"टिकट स्थानांतरित किया गया",
"transcripts":"ट्रांसक्रिप्ट इतिहास"
},
"descriptions":{
"create":"आपका टिकट बन गया है. ",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"आप एक ही समय में केवल {0} टिकट बना सकते हैं!",
"ticketMessageAutoclose":"{0}घंटे तक निष्क्रिय रहने पर यह टिकट स्वतः बंद हो जाएगा!",
"ticketMessageAutodelete":"{0} दिनों तक निष्क्रिय रहने पर यह टिकट स्वतः हटा दिया जाएगा!",
"panelReady":"आप नीचे पैनल पा सकते हैं!\n"
"panelReady":"पैनल फॉलोअप संदेश में उपलब्ध है!\nयह संदेश अब हटाया जा सकता है!",
"topicSet":"चैनल का विषय {0} द्वारा सफलतापूर्वक बदल दिया गया है!",
"prioritySet":"टिकट की प्राथमिकता {1} द्वारा {0} में सफलतापूर्वक बदल दी गई है!",
"priorityGet":"इस टिकट की वर्तमान प्राथमिकता {0} है।",
"transfer":"टिकट का स्वामित्व {0} से {1} में {2} द्वारा सफलतापूर्वक स्थानांतरित कर दिया गया है!"
},
"modal":{
"closePlaceholder":"आपने यह टिकट क्यों बंद कर दिया?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} को {1} द्वारा काली सूची से हटा दिया गया था!",
"blacklistAddDm":"आपको हमारे सर्वर में काली सूची में डाल दिया गया है!\n",
"blacklistRemoveDm":"आपको हमारे सर्वर में ब्लैकलिस्ट से हटा दिया गया है!\n",
"clearLog":"{0} टिकटें {1} द्वारा हटा दी गई हैं!"
"clearLog":"{0} टिकटें {1} द्वारा हटा दी गई हैं!",
"transferLog":"इस टिकट का स्वामित्व {0} से {1} में {2} द्वारा स्थानांतरित किया गया है!",
"transferDm":"आपके टिकट का स्वामित्व हमारे सर्वर में {0} से {1} में स्थानांतरित कर दिया गया है!",
"prioritySetLog":"इस टिकट की प्राथमिकता {1} द्वारा {0} में बदल दी गई है!",
"prioritySetDm":"आपके टिकट की प्राथमिकता हमारे सर्वर में {0} में बदल दी गई है!",
"roleUpdateLog":"{0} ने अपनी भूमिकाएँ अपडेट की हैं!",
"roleUpdateDm":"आपकी भूमिकाएँ हमारे सर्वर में अपडेट कर दी गई हैं!",
"topicSetLog":"इस टिकट की प्राथमिकता {1} द्वारा {0} पर सेट की गई है।",
"topicSetDm":"आपके टिकट की प्राथमिकता {0} पर सेट की गई है।"
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"पुन: प्रयास करें",
"continue":"प्रतिलेख के बिना हटाएँ",
"backup":"बैकअप ट्रांस्क्रिप्ट बनाएं",
"error":"प्रतिलेख बनाने का प्रयास करते समय कुछ गलत हो गया।\n"
"error":"प्रतिलेख बनाने का प्रयास करते समय कुछ गलत हो गया।\n",
"title":"ट्रांसक्रिप्ट त्रुटि",
"noHistory":"इस उपयोगकर्ता के पास अभी तक कोई ट्रांसक्रिप्ट नहीं है।",
"historyNotSupported":"ट्रांसक्रिप्ट इतिहास वर्तमान में केवल HTML Transcripts के साथ समर्थित है।\nटेक्स्ट ट्रांसक्रिप्ट इतिहास भविष्य के संस्करणों में उपलब्ध होगा।"
},
"text":{
"messagesTitle":"संदेश",
"embedTitle":"एम्बेड",
"fileTitle":"फ़ाइल",
"fieldsTitle":"फ़ील्ड्स",
"reactionsTitle":"प्रतिक्रियाएँ",
"statsTitle":"आँकड़े",
"emptyContent":"<सामग्री खाली है>",
"noTitle":"<कोई शीर्षक नहीं>",
"noDesc":"<कोई विवरण नहीं>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"अज्ञात पैनल",
"notInGuild":"सर्वर में नहीं",
"channelRename":"चैनल का नाम बदलने में असमर्थ",
"busy":"टिकट व्यस्त है"
"channelCategory":"श्रेणी बदलने में असमर्थ",
"busy":"टिकट व्यस्त है",
"permissionError":"अनुमति त्रुटि"
},
"descriptions":{
"askForInfo":"अधिक जानकारी के लिए इस बॉट के मालिक से संपर्क करें!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"वर्तमान चैनल वैध टिकट नहीं है! ",
"notInGuild":"यह {0} डीएम में काम नहीं करता! ",
"channelRename":"विवाद की दर सीमा के कारण, वर्तमान में बॉट के लिए चैनल का नाम बदलना असंभव है। ",
"channelCategory":"Discord rate limits के कारण चैनल श्रेणी तुरंत नहीं बदली जा सकी। यदि बॉट ऑनलाइन रहता है तो यह 10 मिनट के भीतर स्वतः बदल दी जाएगी।",
"channelRenameSource":"इस त्रुटि का स्रोत है: {0}",
"busy":"इस {0} का उपयोग करने में असमर्थ!\n"
"busy":"इस {0} का उपयोग करने में असमर्थ!\n",
"closeBeforeMessage":"किसी उपयोगकर्ता द्वारा संदेश भेजे जाने से पहले इस टिकट को बंद/हटाया नहीं जा सकता।",
"closeBeforeAdminMessage":"टिकट एडमिन या सपोर्ट सदस्य द्वारा संदेश भेजे जाने से पहले इस टिकट को बंद/हटाया नहीं जा सकता।",
"unableToCreateTicket":"आप टिकट बनाने में असमर्थ हैं।",
"messageMissing":"इंटरैक्शन का संदेश नहीं मिल सका। इसके बजाय `{0}` कमांड का उपयोग करें।",
"stateExpired":"यह इंटरैक्शन अब मान्य नहीं है या समाप्त हो चुका है। इसके बजाय `{0}` कमांड का उपयोग करें। Open Ticket के बड़े अपडेट के बाद यह त्रुटि मिलना सामान्य है।",
"panelStateExpired":"यह पैनल अब मान्य नहीं है या समाप्त हो चुका है। समस्या हल करने के लिए `{0}` का उपयोग करके नया पैनल बनाएं। Open Ticket के बड़े अपडेट के बाद यह त्रुटि मिलना सामान्य है।"
},
"optionInvalidReasons":{
"stringRegex":"मान पैटर्न से मेल नहीं खाता!",
@@ -331,7 +388,6 @@
"added":"जोड़ा",
"removed":"निकाला गया",
"filter":"फ़िल्टर",
"claimedBy":"{0} द्वारा दावा किया गया",
"method":"तरीका",
"type":"प्रकार",
"blacklisted":"ब्लैक लिस्ट किया",
@@ -343,6 +399,8 @@
"syntax":"सिंटेक्स",
"originalName":"मूल नाम",
"newName":"नया नाम",
"originalCategory":"मूल श्रेणी",
"newCategory":"नई श्रेणी",
"until":"जब तक",
"validOptions":"वैध विकल्प",
"validPanels":"वैध पैनल",
@@ -355,7 +413,29 @@
"status":"स्थिति",
"claimed":"दावा किया",
"pinned":"पिन की गई",
"creationDate":"निर्माण तिथि"
"creationDate":"निर्माण तिथि",
"noone":"कोई नहीं",
"open":"खुला",
"closed":"बंद",
"priority":"प्राथमिकता",
"participants":"प्रतिभागी",
"yes":"हाँ",
"no":"नहीं",
"accept":"स्वीकार करें",
"cancel":"रद्द करें",
"option":"विकल्प",
"topic":"विषय",
"uptime":"सिस्टम अपटाइम",
"messages":"संदेश",
"embeds":"एम्बेड्स",
"files":"फ़ाइलें",
"components":"घटक",
"cooldown":"कूलडाउन",
"maxTickets":"अधिकतम टिकट",
"admins":"एडमिन",
"roles":"भूमिकाएँ",
"size":"आकार"
},
"lowercase":{
"text":"मूलपाठ",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"क्या आप चाहते हैं कि संपादित होने पर यह पैनल स्वचालित रूप से अपडेट हो जाए?",
"ticket":"तुरंत टिकट बनाएं.",
"ticketId":"उस टिकट का पहचानकर्ता जिसे आप बनाना चाहते हैं.",
"ticketOtherUser":"किसी अन्य उपयोगकर्ता के लिए टिकट बनाएं।",
"close":"एक टिकट बंद करें.",
"delete":"एक टिकट हटाएँ.",
"deleteNoTranscript":"प्रतिलेख बनाए बिना इस टिकट को हटा दें।",
@@ -384,6 +465,7 @@
"unclaim":"टिकट का दावा रद्द करें.",
"pin":"टिकट पिन करें.",
"unpin":"टिकट अनपिन करें.",
"move":"एक टिकट ले जाएँ.",
"moveId":"उस विकल्प का पहचानकर्ता जिस पर आप जाना चाहते हैं.",
"rename":"टिकट का नाम बदलें.",
@@ -392,6 +474,7 @@
"addUser":"उपयोगकर्ता को जोड़ना है.",
"remove":"किसी उपयोगकर्ता को टिकट से हटाएँ.",
"removeUser":"उपयोगकर्ता को हटाना है.",
"blacklist":"टिकट ब्लैकलिस्ट प्रबंधित करें.",
"blacklistView":"वर्तमान ब्लैकलिस्ट की सूची देखें.",
"blacklistAdd":"किसी उपयोगकर्ता को काली सूची में जोड़ें.",
@@ -405,6 +488,7 @@
"statsUserUser":"देखने के लिए उपयोगकर्ता.",
"statsTicket":"सर्वर में टिकट के आँकड़े देखें।",
"statsTicketTicket":"देखने के लिए टिकट.",
"clear":"एक ही समय में एकाधिक टिकट हटाएँ।",
"clearFilter":"टिकट साफ़ करने के लिए फ़िल्टर.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"अनपिन किया गया",
"autoclose":"स्वतः बंद"
},
"autoclose":"किसी टिकट में ऑटोक्लोज़ प्रबंधित करें.",
"autocloseDisable":"इस टिकट में ऑटोक्लोज़ अक्षम करें.",
"autocloseEnable":"इस टिकट में ऑटोक्लोज़ सक्षम करें।",
@@ -424,7 +509,21 @@
"autodelete":"किसी टिकट में स्वत: हटाना प्रबंधित करें.",
"autodeleteDisable":"इस टिकट में ऑटोडिलीट अक्षम करें।",
"autodeleteEnable":"इस टिकट में ऑटोडिलीट सक्षम करें।",
"autodeleteEnableTime":"इस टिकट को हटाने के लिए उतने दिनों की संख्या निष्क्रिय होनी चाहिए।"
"autodeleteEnableTime":"इस टिकट को हटाने के लिए उतने दिनों की संख्या निष्क्रिय होनी चाहिए।",
"topic":"टिकट चैनल के विषय का प्रबंधन करें।",
"topicSet":"टिकट चैनल का विषय सेट करें।",
"topicValue":"चैनल का नया विषय।",
"topicList":"सभी टिकटों की सूची प्राप्त करें जिनके विषय और आँकड़े शामिल हैं।",
"priority":"टिकट की प्राथमिकता का प्रबंधन करें।",
"prioritySet":"टिकट की प्राथमिकता सेट करें।",
"priorityValue":"चैनल की प्राथमिकता।",
"priorityGet":"टिकट की प्राथमिकता प्राप्त करें।",
"priorityList":"सभी टिकटों की प्राथमिकता स्थिति की सूची प्राप्त करें।",
"transfer":"टिकट का स्वामित्व एक उपयोगकर्ता से दूसरे को स्थानांतरित करें।",
"transferUser":"जिस उपयोगकर्ता को स्थानांतरित करना है।",
"transcripts":"किसी उपयोगकर्ता का टिकट ट्रांसक्रिप्ट इतिहास देखें।",
"transcriptsUser":"देखने के लिए उपयोगकर्ता।"
},
"helpMenu":{
"help":"सभी उपलब्ध आदेशों की सूची प्राप्त करें.",
@@ -452,7 +551,16 @@
"autocloseDisable":"इस टिकट में ऑटोक्लोज़ अक्षम करें.",
"autocloseEnable":"इस टिकट में ऑटोक्लोज़ सक्षम करें।",
"autodeleteDisable":"इस टिकट में ऑटोडिलीट अक्षम करें।",
"autodeleteEnable":"इस टिकट में ऑटोडिलीट सक्षम करें।"
"autodeleteEnable":"इस टिकट में ऑटोडिलीट सक्षम करें।",
"categories":{
"general":"सामान्य कमांड्स",
"basicTicket":"मूल टिकट कमांड्स",
"advancedTicket":"उन्नत टिकट कमांड्स",
"userTicket":"उपयोगकर्ता टिकट कमांड्स",
"admin":"एडमिन कमांड्स",
"advanced":"उन्नत कमांड्स",
"extra":"अतिरिक्त कमांड्स"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"सिस्टम आँकड़े",
"user":"उपयोगकर्ता आँकड़े",
"ticket":"टिकट आँकड़े",
"participants":"प्रतिभागियों"
"participants":"प्रतिभागियों",
"messages":"संदेश"
},
"properties":{
"ticketsCreated":"टिकट बनाये गये",
@@ -472,7 +581,48 @@
"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":"अपना विकल्प चुनें",
"selectPriorityLevel":"प्राथमिकता स्तर चुनें"
},
"priorities":{
"urgent":"अत्यावश्यक",
"veryHigh":"बहुत उच्च",
"high":"उच्च",
"normal":"सामान्य",
"low":"निम्न",
"veryLow":"बहुत निम्न",
"none":"कोई नहीं"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["Kornel0706"],
"lastedited":"22/08/2024",
"lastedited":"25/05/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,6 +56,8 @@
"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!",
@@ -89,7 +99,8 @@
"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":"A legördülő menüvel rendelkező panel csak a következő típusú opciókat tartalmazhatja: 'ticket', 'role' vagy 'sub-panel'.",
"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":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Szöveges parancsok megtekintése",
"helpPage":"Oldal {0}",
"withReason":"Indoklással",
"withoutTranscript":"Átirat nélkül"
"withoutTranscript":"Átirat nélkül",
"blacklistAdd":"Felhasználó Tiltólistára Helyezése",
"blacklistRemove":"Felhasználó Feloldása"
},
"titles":{
"created":"Jegy létrehozva",
@@ -132,6 +145,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 +153,13 @@
"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",
"transcripts":"Átirat Előzmények"
},
"descriptions":{
"create":"A jegyed létrejött. Kattints az alábbi gombra, hogy hozzáférj!",
@@ -180,7 +200,12 @@
"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?",
@@ -220,7 +245,16 @@
"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!",
"topicSetLog":"A jegy prioritását {1} {0} értékre állította.",
"topicSetDm":"A jegyed prioritása {0} értékre lett állítva."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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",
"noHistory":"Ennek a felhasználónak még nincsenek átiratai.",
"historyNotSupported":"Az átirat előzmények jelenleg csak HTML Transcripts használatával támogatottak.\nA szöveges átirat előzmények a jövőbeli verziókban lesznek elérhetők."
},
"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 +305,9 @@
"unknownPanel":"Ismeretlen Panel",
"notInGuild":"Nem a Szerveren",
"channelRename":"Nem sikerült átnevezni a csatornát",
"busy":"A Jegy Elfoglalt"
"channelCategory":"A Kategória Nem Módosítható",
"busy":"A Jegy Elfoglalt",
"permissionError":"Engedély hiba"
},
"descriptions":{
"askForInfo":"Lépj kapcsolatba a bot tulajdonosával további információkért!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Az aktuális csatorna nem egy érvényes jegy! Lehet, hogy ez egy régi Open Ticket verzióból származó jegy volt!",
"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.",
"channelCategory":"A Discord sebességkorlátai miatt a csatorna kategóriája nem módosítható azonnal. Automatikusan módosul 10 percen belül, ha a bot online marad.",
"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.",
"messageMissing":"Nem található az interakció üzenete. Használd helyette a(z) `{0}` parancsot.",
"stateExpired":"Ez az interakció már nem érvényes vagy lejárt. Használd helyette a(z) `{0}` parancsot. Ez a hiba normális egy nagyobb Open Ticket frissítés után.",
"panelStateExpired":"Ez a panel már nem érvényes vagy lejárt. Hozz létre egy új panelt a(z) `{0}` használatával a probléma megoldásához. Ez a hiba normális egy nagyobb Open Ticket frissítés után."
},
"optionInvalidReasons":{
"stringRegex":"Az érték nem felel meg a mintának!",
@@ -331,7 +388,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",
@@ -343,6 +399,8 @@
"syntax":"Szintaxis",
"originalName":"Eredeti Név",
"newName":"Új Név",
"originalCategory":"Eredeti Kategória",
"newCategory":"Új Kategória",
"until":"Amíg",
"validOptions":"Érvényes Opciók",
"validPanels":"Érvényes Panelek",
@@ -352,10 +410,32 @@
"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",
"accept":"Elfogadás",
"cancel":"Mégse",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Szeretnéd, hogy ez a panel automatikusan frissüljön szerkesztéskor?",
"ticket":"Azonnal hozz létre egy jegyet.",
"ticketId":"Az azonosítója annak a jegynek, amelyet létre szeretnél hozni.",
"ticketOtherUser":"Jegy létrehozása egy másik felhasználó számára.",
"close":"Zárjon be egy jegyet.",
"delete":"Jegy törlése.",
"deleteNoTranscript":"Töröld ezt a jegyet átirat nélkül.",
@@ -384,6 +465,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 +474,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 +488,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 +501,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 +509,21 @@
"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.",
"transcripts":"Egy felhasználó jegy átirat előzményeinek megtekintése.",
"transcriptsUser":"A megtekintendő felhasználó."
},
"helpMenu":{
"help":"Parancsok listájának megtekintése.",
@@ -452,7 +551,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 +568,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 +581,48 @@
"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",
"selectPriorityLevel":"Prioritási szint kiválasztása"
},
"priorities":{
"urgent":"Sürgős",
"veryHigh":"Nagyon magas",
"high":"Magas",
"normal":"Normál",
"low":"Alacsony",
"veryLow":"Nagyon alacsony",
"none":"Nincs"
}
}
+169 -19
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["erxg"],
"lastedited":"25/08/2024",
"lastedited":"25/05/2026",
"language":"Indonesian",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"String ini harus mengandung {0}!",
"stringChoices":"String ini hanya dapat berupa salah satu dari nilai berikut ini: {0}!",
"stringRegex":"String ini tidak valid!",
"stringInvertedContains":"Teks ini tidak boleh mengandung {0}!",
"stringLowercase":"Teks ini harus ditulis dalam huruf kecil saja!",
"stringUppercase":"Teks ini harus ditulis dalam huruf kecil besar!",
"stringSpecialCharacters":"Teks ini tidak boleh mengandung karakter khusus apa pun! (Hanya huruf a-z, angka 0-9, dan spasi)",
"stringNoSpaces":"Teks ini tidak boleh mengandung spasi",
"stringCapitalWord":"Disarankan agar setiap kata dalam teks ini dimulai dengan huruf kapital!",
"stringCapitalSentence":"Sepertinya beberapa kalimat dalam teks ini tidak dimulai dengan huruf kapital!",
"stringPunctuation":"Sepertinya kalimat dalam teks ini tidak diakhiri dengan tanda baca!",
"numberTooShort":"Nomor ini tidak boleh lebih pendek dari {0} karakter!",
"numberTooLong":"Nomor ini tidak boleh lebih panjang dari {0} karakter!",
@@ -48,6 +56,8 @@
"numberNegative":"Nomor ini tidak boleh negatif!",
"numberPositive":"Nomor ini tidak boleh positif!",
"numberZero":"Nomor ini tidak boleh nol!",
"numberNan":"Nomor ini tidak boleh NaN (Bukan Angka)!",
"numberInvertedContains":"Nomor ini tidak boleh mengandung {0}!",
"booleanTrue":"Boolean ini tidak boleh benar!",
"booleanFalse":"Boolean ini tidak boleh salah!",
@@ -89,7 +99,8 @@
"invalidButton":"Tombol ini harus memiliki setidaknya {0} atau {1}!",
"unusedOption":"Opsi {0} tidak digunakan di mana pun!",
"unusedQuestion":"Pertanyaan {0} tidak digunakan di mana pun!",
"dropdownOption":"Panel dengan menu tarik-ulur yang diaktifkan hanya dapat berisi opsi dengan tipe 'tiket'!"
"dropdownOption":"Panel dengan dropdown hanya dapat berisi opsi dengan tipe: 'ticket', 'role' atau 'sub-panel'.",
"customInvalidVersion":"Versi yang ditetapkan dalam konfigurasi tidak sesuai! Pastikan konfigurasi Anda telah diperbarui ke versi terbaru!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Lihat Perintah Teks",
"helpPage":"Halaman {0}",
"withReason":"Dengan Alasan",
"withoutTranscript":"Tanpa Transkrip"
"withoutTranscript":"Tanpa Transkrip",
"blacklistAdd":"Masukkan Pengguna ke Daftar Hitam",
"blacklistRemove":"Lepaskan Pengguna"
},
"titles":{
"created":"Tiket Dibuat",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Ditambahkan ke Daftar Hitam",
"blacklistRemoveDm":"Dihapus dari Daftar Hitam",
"clear":"Tiket dibersihkan.",
"clearTickets":"Bersihkan Tiket",
"roles":"Peran Diperbarui",
"autoclose":"Tiket Ditutup Otomatis",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Tutup Otomatis Dimatikan",
"autodelete":"Tiket Dihapus Otomatis",
"autodeleteEnabled":"Hapus Otomatis Diaktifkan",
"autodeleteDisabled":"Hapus Otomatis Dinonaktifkan"
"autodeleteDisabled":"Hapus Otomatis Dinonaktifkan",
"topicSet":"Topik Diganti",
"prioritySet":"Prioritas Berganti",
"priorityGet":"Prioritas Tiket",
"transfer":"Tiket Ditransfer",
"transcripts":"Riwayat Transkrip"
},
"descriptions":{
"create":"Tiket kamu telah dibuat. Klik tombol di bawah ini untuk mengaksesnya!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Anda hanya dapat membuat {0} tiket pada saat yang bersamaan!",
"ticketMessageAutoclose":"Tiket ini akan ditutup secara otomatis ketika tidak aktif selama {0} jam!",
"ticketMessageAutodelete":"Tiket ini akan dihapus secara otomatis ketika tidak aktif selama {0} hari!",
"panelReady":"Anda dapat menemukan panel di bawah ini!\nPesan ini sekarang dapat dihapus!"
"panelReady":"Panel ini tersedia dalam pesan tindak lanjut!\nPesan ini sekarang dapat dihapus!",
"topicSet":"Topik kanal ini telah diubah oleh {0}!",
"prioritySet":"Prioritas tiket ini telah diubah menjadi {0} oleh {1}!",
"priorityGet":"Prioritas tiket ini pada saat ini adalah {0}.",
"transfer":"Status kepemilikan tiket telah berhasil dipindahkan dari {0} ke {1} oleh {2}!"
},
"modal":{
"closePlaceholder":"Mengapa kamu menutup tiket ini?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} dihapus dari daftar hitam oleh {1}!",
"blacklistAddDm":"Anda telah masuk ke dalam daftar hitam di server kami!\nMulai sekarang, Anda tidak dapat membuat tiket!",
"blacklistRemoveDm":"Kamu telah dihapus dari daftar hitam di server kami!\nSekarang Anda dapat membuat tiket lagi!",
"clearLog":"Tiket {0} telah dihapus oleh {1}!"
"clearLog":"Tiket {0} telah dihapus oleh {1}!",
"transferLog":"Kepemilikan tiket ini telah berhasil dipindahkan dari {0} ke {1} oleh {2}",
"transferDm":"Kepemilikan tiket kamu sudah dialihkan dari {0} ke {1} di server kami!",
"prioritySetLog":"Prioritas tiket ini telah diubah menjadi {0} oleh {1}!",
"prioritySetDm":"Prioritas tiket kamu telah diubah menjadi {0} di server kami!",
"roleUpdateLog":"{0} telah memperbarui status mereka!",
"roleUpdateDm":"Status kamu di server kami telah diperbarui!",
"topicSetLog":"Prioritas tiket ini telah diatur ke {0} oleh {1}.",
"topicSetDm":"Prioritas tiket Anda telah diatur ke {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Coba Ulang",
"continue":"Hapus Tanpa Transkrip",
"backup":"Membuat Transkrip Cadangan",
"error":"Terjadi kesalahan saat mencoba membuat transkrip.\nApa yang ingin Anda lakukan?\n\nTiket ini tidak akan dihapus hingga Anda mengeklik salah satu tombol ini."
"error":"Terjadi kesalahan saat mencoba membuat transkrip.\nApa yang ingin Anda lakukan?\n\nTiket ini tidak akan dihapus hingga Anda mengeklik salah satu tombol ini.",
"title":"Kesalahan Dalam Pembuatan Transkrip",
"noHistory":"Pengguna ini belum memiliki transkrip.",
"historyNotSupported":"Riwayat transkrip saat ini hanya didukung dengan HTML Transcripts.\nRiwayat transkrip teks akan tersedia di versi mendatang."
},
"text":{
"messagesTitle":"PESAN",
"embedTitle":"SEMATAN",
"fileTitle":"BERKAS",
"fieldsTitle":"BIDANG",
"reactionsTitle":"REAKSI",
"statsTitle":"STATUS",
"emptyContent":"<isi dokumen kosong>",
"noTitle":"<tidak-ada-judul>",
"noDesc":"<tidak-ada-deskripsi>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Panel Tidak Diketahui",
"notInGuild":"Tidak Berada Di Dalam Server",
"channelRename":"Tidak Dapat Mengganti Nama Saluran",
"busy":"Tidak Sedang Sibuk"
"channelCategory":"Tidak Dapat Mengubah Kategori",
"busy":"Tidak Sedang Sibuk",
"permissionError":"Terjadi Kesalahan Hak Akses"
},
"descriptions":{
"askForInfo":"Hubungi pemilik bot ini untuk info lebih lanjut!",
@@ -272,15 +322,22 @@
"noPermissionsCooldown":"Anda tidak diperbolehkan menggunakan {0} karena kamu sedang dalam cooldown!",
"noPermissionsBlacklist":"Anda tidak diperbolehkan menggunakan {0} karena Anda telah masuk dalam daftar hitam!",
"noPermissionsLimitGlobal":"Anda tidak diizinkan untuk membuat tiket karena server telah mencapai batas maksimal tiket!",
"noPermissionsLimitGlobalPengguna":"Anda tidak dapat membuat tiket karena Anda telah mencapai batas maksimal tiket!",
"noPermissionsLimitGlobalUser":"Anda tidak dapat membuat tiket karena Anda telah mencapai batas maksimal tiket!",
"noPermissionsLimitOption":"Anda tidak diizinkan untuk membuat tiket karena server telah mencapai batas maksimal tiket untuk opsi ini!",
"noPermissionsLimitOptionPengguna":"Anda tidak dapat membuat tiket karena Anda telah mencapai batas maksimal tiket untuk opsi ini!",
"noPermissionsLimitOptionUser":"Anda tidak dapat membuat tiket karena Anda telah mencapai batas maksimal tiket untuk opsi ini!",
"unknownTicket":"Gunakan perintah ini lagi dalam tiket yang valid!",
"deprecatedTicket":"Saluran saat ini bukanlah tiket yang valid! Ini mungkin merupakan tiket dari versi Open Tiket yang lama!",
"notInGuild":"Ini {0} tidak berfungsi di DM! Silakan coba lagi di server!",
"channelRename":"Karena batasan rasio Discord, saat ini bot tidak mungkin mengganti nama saluran. Saluran akan secara otomatis diganti namanya dalam waktu 10 menit jika bot tidak di-boot ulang.",
"channelCategory":"Karena batas rate Discord, kategori channel tidak dapat diubah segera. Kategori akan diubah secara otomatis dalam 10 menit jika bot tetap online.",
"channelRenameSource":"Sumber dari masalah: {0}",
"busy":"Dapat dapat menggunakan {0}!\nTiket sedang diproses oleh bot.\n\nMohon coba beberapa saat lagi!"
"busy":"Dapat dapat menggunakan {0}!\nTiket sedang diproses oleh bot.\n\nMohon coba beberapa saat lagi!",
"closeBeforeMessage":"Tiket ini tidak dapat ditutup ataupun dihapus sebelum pesan dikirim oleh seseorang.",
"closeBeforeAdminMessage":"Tiket ini tidak dapat ditutup ataupun dihapus sebelum admin tiket atau anggota tim dukungan mengirimkan pesan.",
"unableToCreateTicket":"Anda tidak dapat membuat tiket..",
"messageMissing":"Tidak dapat menemukan pesan interaksi. Gunakan perintah `{0}` sebagai gantinya.",
"stateExpired":"Interaksi ini sudah tidak valid atau telah kedaluwarsa. Gunakan perintah `{0}` sebagai gantinya. Kesalahan ini normal terjadi setelah pembaruan besar Open Ticket.",
"panelStateExpired":"Panel ini sudah tidak valid atau telah kedaluwarsa. Buat panel baru menggunakan `{0}` untuk menyelesaikan masalah. Kesalahan ini normal terjadi setelah pembaruan besar Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Nilai tidak sesuai pola!",
@@ -331,7 +388,6 @@
"added":"Ditambahkan",
"removed":"Dikeluarkan",
"filter":"Penyaring",
"claimedBy":"Diklaim oleh {0}",
"method":"Metode",
"type":"Tipe",
"blacklisted":"Daftar hitam",
@@ -343,6 +399,8 @@
"syntax":"Sintaks",
"originalName":"Nama asli",
"newName":"Nama Yang Baru",
"originalCategory":"Kategori Asli",
"newCategory":"Kategori Baru",
"until":"Hingga",
"validOptions":"Opsi Yang Valid",
"validPanels":"Panel Yang Valid",
@@ -355,7 +413,29 @@
"status":"Status",
"claimed":"Diklaim",
"pinned":"Disematkan",
"creationDate":"Tanggal Pembuatan"
"creationDate":"Tanggal Pembuatan",
"noone":"Tidak Seorangpun",
"open":"Buka",
"closed":"Tutup",
"priority":"Prioritas",
"participants":"Para Partisipan",
"yes":"Ya",
"no":"Tidak",
"accept":"Terima",
"cancel":"Batal",
"option":"Opsi",
"topic":"Topik",
"uptime":"Waktu Aktif Sistem",
"messages":"Pesan",
"embeds":"Sematan",
"files":"Berkas",
"components":"Komponen",
"cooldown":"Cooldown",
"maxTickets":"Tiket Maksimum",
"admins":"Admin",
"roles":"Hak",
"size":"Ukuran"
},
"lowercase":{
"text":"teks",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Apa Anda ingin panel ini diperbarui secara otomatis ketika diubah?",
"ticket":"Buat tiket secara instan.",
"ticketId":"Penanda tiket yang ingin anda buat.",
"ticketOtherUser":"Buat tiket untuk pengguna lain.",
"close":"Tutup tiket.",
"delete":"Hapus tiket.",
"deleteNoTranscript":"Hapus tiket tanpa membuat transkrip.",
@@ -384,6 +465,7 @@
"unclaim":"Batalkan klaim tiket.",
"pin":"Sematkan sebuah tiket.",
"unpin":"Batalkan penyematan tiket.",
"move":"Pindahkan tiket.",
"moveId":"Penanda opsi yang ingin anda pindahkan.",
"rename":"Ganti nama tiket.",
@@ -392,6 +474,7 @@
"addUser":"Pengguna yang akan ditambahkan.",
"remove":"Keluarkan seseorang dari tiket.",
"removeUser":"Pengguna yang akan dikeluarkan.",
"blacklist":"Kelola the Tiket blacklist.",
"blacklistView":"Lihat daftar yang masuk ke dalam daftar hitam.",
"blacklistAdd":"Tambahkan seseorang ke dalam daftar hitam.",
@@ -405,6 +488,7 @@
"statsUserUser":"Pengguna yang akan dilihat.",
"statsTicket":"Lihat status dari sebuah tiket di server.",
"statsTicketTicket":"Tiket yang akan dilihat.",
"clear":"Hapus banyak tiket sekaligus.",
"clearFilter":"Filter untuk menghapus tiket.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Pembatalan penyematan",
"autoclose":"Ditutup otomatis"
},
"autoclose":"Kelola penutupan otomatis tiket.",
"autocloseDisable":"Non-aktifkan penutupan otomatis.",
"autocloseEnable":"Aktifkan penutupan otomatis.",
@@ -424,7 +509,21 @@
"autodelete":"Kelola penghapusan otomatis tiket.",
"autodeleteDisable":"Non-aktifkan penghapusan otomatis.",
"autodeleteEnable":"Aktifkan penghapusan otomatis.",
"autodeleteEnableTime":"Lama waktu saluran tidak aktif sebelum dihapus."
"autodeleteEnableTime":"Lama waktu saluran tidak aktif sebelum dihapus.",
"topic":"Kelola topik kanal tiket.",
"topicSet":"Tentukan topik kanal tiket.",
"topicValue":"Topik baru kanal ini.",
"topicList":"Dapatkan informasi lengkap tentang semua tiket beserta topik dan statistiknya.",
"priority":"Kelola prioritas tiket.",
"prioritySet":"Tentukan prioritas tiket.",
"priorityValue":"Prioritas kanal.",
"priorityGet":"Dapatkan prioritas tiket.",
"priorityList":"Dapatkan daftar semua tiket beserta status prioritasnya.",
"transfer":"Alihkan kepemilikan tiket dari satu pengguna ke pengguna lain..",
"transferUser":"Pengguna yang akan ditransferkan.",
"transcripts":"Lihat riwayat transkrip tiket pengguna.",
"transcriptsUser":"Pengguna yang ingin dilihat."
},
"helpMenu":{
"help":"Dapatkan daftar perintah yang tersedia.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Nonaktifkan penutupan otomatis.",
"autocloseEnable":"Aktifkan penutupan otomatis.",
"autodeleteDisable":"Non-aktifkan penghapusan otomatis.",
"autodeleteEnable":"Aktifkan penghapusan otomatis."
"autodeleteEnable":"Aktifkan penghapusan otomatis.",
"categories":{
"general":"Perintah Umum",
"basicTicket":"Perintah Dasar Tiket",
"advancedTicket":"Perintah Lanjutan Ticket",
"userTicket":"Perintah Tiket untuk Pengguna",
"admin":"Perintah Admin",
"advanced":"Perintah Lanjutan",
"extra":"Perintah Tambahan"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Status Sistem",
"user":"Status Pengguna",
"ticket":"Status Tiket",
"participants":"Partisipan"
"participants":"Partisipan",
"messages":"Pesan"
},
"properties":{
"ticketsCreated":"Tiket Dibuat",
@@ -472,7 +581,48 @@
"ticketsPinned":"Tiket Disematkan",
"ticketsMoved":"Tickets Dipindahkan",
"usersBlacklisted":"Pengguna Masuk Ke Dalam Daftar Hitam",
"transcriptsCreated":"Transkrip Dibuat"
}
"transcriptsCreated":"Transkrip Dibuat",
"ticketsAutodeleted":"Tiket Dihapus Secara Otomatis",
"ticketsTransferred":"Tiket Dipindahkan",
"ticketVolume":"Kapasitas Tiket",
"averageTickets":"Rata-rata Tiket per Pengguna",
"currentTickets":"Tiket Saat Ini",
"age":"Umur Tiket",
"responseTime":"Waktu Respons",
"resolutionTime":"Resolution Time",
"createdOn":"Dibuat Pada",
"createdBy":"Dibuat Oleh",
"closedOn":"Ditutup Pada",
"closedBy":"Ditutup Oleh",
"claimedOn":"Diklaim Pada",
"claimedBy":"Diklaim Oleh",
"pinnedOn":"Disematkan Pada",
"pinnedBy":"Disematkan Oleh",
"deletedOn":"Dihapus Pada",
"deletedBy":"Dihapus Oleh"
},
"roles":{
"developer":"Pembuat",
"serverOwner":"Pemilik Server",
"serverAdmin":"Admin Server",
"moderator":"Tim Moderator",
"support":"Tim Pendukung",
"member":"Anggota"
}
},
"panel":{
"selectTicket":"Pilih tiket kamu",
"selectRole":"Pilih status kamu",
"selectOption":"Pilih opsi kamu",
"selectPriorityLevel":"Pilih tingkat prioritas"
},
"priorities":{
"urgent":"Sangat Penting",
"veryHigh":"Sangat Tinggi",
"high":"Tinggi",
"normal":"Normal",
"low":"Rendah",
"veryLow":"Sangat Rendah",
"none":"Tidak Ada"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["fraden1mvp."],
"lastedited":"08/10/2024",
"otversion":"v4.2.0",
"translators":["fraden1mvp.","imperatorix_17"],
"lastedited":"25/05/2026",
"language":"Italian",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Questa stringa deve contenere {0}!",
"stringChoices":"Questa stringa può essere solo uno dei seguenti valori: {0}!",
"stringRegex":"Questa stringa non è valida!",
"stringInvertedContains":"Questa stringa non può contenere {0}!",
"stringLowercase":"Questa stringa deve essere scritta solo in minuscolo!",
"stringUppercase":"Questa stringa deve essere scritta solo in maiuscolo!",
"stringSpecialCharacters":"Questa stringa non può contenere caratteri speciali! (solo a-z, 0-9 e spazio consentiti)",
"stringNoSpaces":"Questa stringa non può contenere spazi!",
"stringCapitalWord":"È consigliato che ogni parola in questa stringa inizi con una lettera maiuscola!",
"stringCapitalSentence":"Sembra che alcune frasi in questa stringa non inizino con una lettera maiuscola!",
"stringPunctuation":"Sembra che la frase in questa stringa non termini con un segno di punteggiatura!",
"numberTooShort":"Questo numero non può essere più corto di {0} caratteri!",
"numberTooLong":"Questo numero non può essere più lungo di {0} caratteri!",
@@ -48,6 +56,8 @@
"numberNegative":"Questo numero non può essere negativo!",
"numberPositive":"Questo numero non può essere positivo!",
"numberZero":"Questo numero non può essere zero!",
"numberNan":"Questo numero non può essere NaN (Non Un Numero)!",
"numberInvertedContains":"Questo numero non può contenere {0}!",
"booleanTrue":"Questo booleano non può essere vero!",
"booleanFalse":"Questo booleano non può essere falso!",
@@ -89,7 +99,8 @@
"invalidButton":"Questo pulsante deve avere almeno un {0} o {1}!",
"unusedOption":"L'opzione {0} non è utilizzata da nessuna parte!",
"unusedQuestion":"La domanda {0} non è utilizzata da nessuna parte!",
"dropdownOption":"Un pannello con il dropdown attivato può contenere solo opzioni di tipo 'ticket'!"
"dropdownOption":"Un pannello con menu a discesa può contenere solo opzioni dei tipi: 'ticket', 'role' o 'sub-panel'.",
"customInvalidVersion":"La versione specificata nella tua configurazione non corrisponde! Assicurati di aver aggiornato la configurazione all'ultima versione!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Visualizza Comandi Testo",
"helpPage":"Pagina {0}",
"withReason":"Con Motivo",
"withoutTranscript":"Senza Trascrizione"
"withoutTranscript":"Senza Trascrizione",
"blacklistAdd":"Metti Utente in Blacklist",
"blacklistRemove":"Rilascia Utente"
},
"titles":{
"created":"Ticket Creato",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Aggiunto alla Blacklist",
"blacklistRemoveDm":"Rimosso dalla Blacklist",
"clear":"Tickets Cancellati",
"clearTickets":"Pulisci Ticket",
"roles":"Ruoli Aggiornati",
"autoclose":"Ticket Autochiuso",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Autochiusura Disabilitata",
"autodelete":"Ticket Autocancellato",
"autodeleteEnabled":"Autocancellazione Abilitata",
"autodeleteDisabled":"Autocancellazione Disabilitata"
"autodeleteDisabled":"Autocancellazione Disabilitata",
"topicSet":"Argomento Cambiato",
"prioritySet":"Priorità Cambiata",
"priorityGet":"Priorità Ticket",
"transfer":"Ticket Trasferito",
"transcripts":"Cronologia Trascrizioni"
},
"descriptions":{
"create":"Il tuo ticket è stato creato. Clicca il pulsante qui sotto per accedervi!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Puoi creare solo {0} ticket contemporaneamente!",
"ticketMessageAutoclose":"Questo ticket sarà autochiuso quando sarà inattivo per {0}h!",
"ticketMessageAutodelete":"Questo ticket sarà autocancellato quando sarà inattivo per {0} giorni!",
"panelReady":"Puoi trovare il pannello qui sotto!\nQuesto messaggio può ora essere eliminato!"
"panelReady":"Il pannello è disponibile nel messaggio successivo!\nQuesto messaggio ora può essere eliminato!",
"topicSet":"L’argomento del canale è stato cambiato con successo da {0}!",
"prioritySet":"La priorità del ticket è stata cambiata in {0} da {1} con successo!",
"priorityGet":"La priorità attuale di questo ticket è {0}.",
"transfer":"La proprietà del ticket è stata trasferita da {0} a {1} da {2} con successo!"
},
"modal":{
"closePlaceholder":"Perché hai chiuso questo ticket?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} è stato rimosso dalla blacklist da {1}!",
"blacklistAddDm":"Sei stato aggiunto alla blacklist nel nostro server!\nD'ora in poi, non puoi creare ticket!",
"blacklistRemoveDm":"Sei stato rimosso dalla blacklist nel nostro server!\nOra puoi creare ticket di nuovo!",
"clearLog":"{0} tickets sono stati eliminati da {1}!"
"clearLog":"{0} tickets sono stati eliminati da {1}!",
"transferLog":"La proprietà di questo ticket è stata trasferita da {0} a {1} da {2}!",
"transferDm":"La proprietà del tuo ticket è stata trasferita da {0} a {1} nel nostro server!",
"prioritySetLog":"La priorità di questo ticket è stata cambiata in {0} da {1}!",
"prioritySetDm":"La priorità del tuo ticket è stata cambiata in {0} nel nostro server!",
"roleUpdateLog":"{0} ha aggiornato i propri ruoli!",
"roleUpdateDm":"I tuoi ruoli nel nostro server sono stati aggiornati!",
"topicSetLog":"La priorità di questo ticket è stata impostata su {0} da {1}.",
"topicSetDm":"La priorità del tuo ticket è stata impostata su {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Riprova",
"continue":"Elimina Senza Trascrizione",
"backup":"Crea Trascrizione di Backup",
"error":"Qualcosa è andato storto durante la creazione della trascrizione.\nCosa vuoi fare?\n\nQuesto ticket non sarà eliminato finché non clicchi su uno di questi pulsanti."
"error":"Qualcosa è andato storto durante la creazione della trascrizione.\nCosa vuoi fare?\n\nQuesto ticket non sarà eliminato finché non clicchi su uno di questi pulsanti.",
"title":"Errore nel Transcript",
"noHistory":"Questo utente non ha ancora alcuna trascrizione.",
"historyNotSupported":"La cronologia delle trascrizioni è attualmente supportata solo con HTML Transcripts.\nLa cronologia delle trascrizioni testuali sarà disponibile nelle versioni future."
},
"text":{
"messagesTitle":"MESSAGGI",
"embedTitle":"EMBED",
"fileTitle":"FILE",
"fieldsTitle":"CAMPI",
"reactionsTitle":"REAZIONI",
"statsTitle":"STATISTICHE",
"emptyContent":"<il contenuto è vuoto>",
"noTitle":"<no-titolo>",
"noDesc":"<no-descrizione>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Pannello Sconosciuto",
"notInGuild":"Non nel Server",
"channelRename":"Impossibile Rinominare il Canale",
"busy":"Ticket Occupato"
"channelCategory":"Impossibile Cambiare Categoria",
"busy":"Ticket Occupato",
"permissionError":"Errore di Permesso"
},
"descriptions":{
"askForInfo":"Contatta il proprietario di questo bot per ulteriori informazioni!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Il canale attuale non è un ticket valido! Potrebbe essere un ticket di una vecchia versione di Open Ticket!",
"notInGuild":"Questo {0} non funziona in DM! Riprova in un server!",
"channelRename":"A causa dei limiti di Discord, al momento non è possibile rinominare il canale. Il canale verrà automaticamente rinominato in oltre 10 minuti se il bot non viene riavviato.",
"channelCategory":"A causa dei limiti di frequenza di Discord, la categoria del canale non può essere modificata immediatamente. Verrà modificata automaticamente entro 10 minuti se il bot rimane online.",
"channelRenameSource":"La fonte di questo errore è: {0}",
"busy":"Impossibile utilizzare questo {0}!\nIl ticket è attualmente in fase di elaborazione dal bot.\n\nPer favore riprova tra pochi secondi!"
"busy":"Impossibile utilizzare questo {0}!\nIl ticket è attualmente in fase di elaborazione dal bot.\n\nPer favore riprova tra pochi secondi!",
"closeBeforeMessage":"Questo ticket non può essere chiuso/eliminato prima che un messaggio sia stato inviato da un utente.",
"closeBeforeAdminMessage":"Questo ticket non può essere chiuso/eliminato prima che un messaggio sia stato inviato da un admin del ticket o da un membro del supporto.",
"unableToCreateTicket":"Non puoi creare un ticket.",
"messageMissing":"Impossibile trovare il messaggio dell'interazione. Usa invece il comando `{0}`.",
"stateExpired":"Questa interazione non è più valida o è scaduta. Usa invece il comando `{0}`. È normale ricevere questo errore dopo un importante aggiornamento di Open Ticket.",
"panelStateExpired":"Questo pannello non è più valido o è scaduto. Crea un nuovo pannello usando `{0}` per risolvere il problema. È normale ricevere questo errore dopo un importante aggiornamento di Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Il valore non corrisponde al modello!",
@@ -331,7 +388,6 @@
"added":"Aggiunto",
"removed":"Rimosso",
"filter":"Filtro",
"claimedBy":"Rivendicato Da {0}",
"method":"Metodo",
"type":"Tipo",
"blacklisted":"Blacklistato",
@@ -343,6 +399,8 @@
"syntax":"Sintassi",
"originalName":"Nome Originale",
"newName":"Nuovo Nome",
"originalCategory":"Categoria Originale",
"newCategory":"Nuova Categoria",
"until":"Fino a",
"validOptions":"Opzioni Valide",
"validPanels":"Pannelli Validi",
@@ -355,7 +413,29 @@
"status":"Stato",
"claimed":"Rivendicato",
"pinned":"Fissato",
"creationDate":"Data di Creazione"
"creationDate":"Data di Creazione",
"noone":"No-One",
"open":"Aperto",
"closed":"Chiuso",
"priority":"Priorità",
"participants":"Partecipanti",
"yes":"Si",
"no":"No",
"accept":"Accetta",
"cancel":"Annulla",
"option":"Opzione",
"topic":"Argomento",
"uptime":"Uptime Sistema",
"messages":"Messaggi",
"embeds":"Embeds",
"files":"Files",
"components":"Componenti",
"cooldown":"Cooldown",
"maxTickets":"Max Tickets",
"admins":"Admins",
"roles":"Ruoli",
"size":"Dimensione"
},
"lowercase":{
"text":"testo",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Vuoi che questo pannello si aggiorni automaticamente quando viene modificato?",
"ticket":"Crea istantaneamente un ticket.",
"ticketId":"L'identificatore del ticket che vuoi creare.",
"ticketOtherUser":"Crea un ticket per un altro utente.",
"close":"Chiudi un ticket.",
"delete":"Elimina un ticket.",
"deleteNoTranscript":"Elimina questo ticket senza creare una trascrizione.",
@@ -384,6 +465,7 @@
"unclaim":"Rimuovi la rivendicazione di un ticket.",
"pin":"Fissa un ticket.",
"unpin":"Sblocca un ticket.",
"move":"Sposta un ticket.",
"moveId":"L'identificatore dell'opzione a cui vuoi spostare.",
"rename":"Rinomina un ticket.",
@@ -392,6 +474,7 @@
"addUser":"L'utente da aggiungere.",
"remove":"Rimuovi un utente da un ticket.",
"removeUser":"L'utente da rimuovere.",
"blacklist":"Gestisci la blacklist del ticket.",
"blacklistView":"Visualizza un elenco della blacklist attuale.",
"blacklistAdd":"Aggiungi un utente alla blacklist.",
@@ -405,6 +488,7 @@
"statsUserUser":"L'utente di cui visualizzare le statistiche.",
"statsTicket":"Visualizza le statistiche di un ticket nel server.",
"statsTicketTicket":"Il ticket da visualizzare.",
"clear":"Elimina più ticket contemporaneamente.",
"clearFilter":"Il filtro per eliminare ticket.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Non Fissati",
"autoclose":"Chiusura Automatica"
},
"autoclose":"Gestisci la chiusura automatica in un ticket.",
"autocloseDisable":"Disabilita la chiusura automatica in questo ticket.",
"autocloseEnable":"Abilita la chiusura automatica in questo ticket.",
@@ -424,7 +509,21 @@
"autodelete":"Gestisci la cancellazione automatica in un ticket.",
"autodeleteDisable":"Disabilita la cancellazione automatica in questo ticket.",
"autodeleteEnable":"Abilita la cancellazione automatica in questo ticket.",
"autodeleteEnableTime":"Il numero di giorni in cui questo ticket deve essere inattivo per eliminarlo."
"autodeleteEnableTime":"Il numero di giorni in cui questo ticket deve essere inattivo per eliminarlo.",
"topic":"Gestisci l'argomento del canale ticket.",
"topicSet":"Inserisci l'argomento del canale ticket.",
"topicValue":"Il nuovo argomento del canale ticket.",
"topicList":"Ottieni una lista di tutti i ticket con i loro argomenti e statistiche.",
"priority":"Gestisci la priorità del ticket.",
"prioritySet":"Inserisci la priorità del ticket.",
"priorityValue":"La priorità del canale.",
"priorityGet":"Ottieni la priorità del ticket.",
"priorityList":"Ottieni una lista di tutti i ticket con il loro stato di priorità.",
"transfer":"Trasferisci la proprietà da un utente ad un'altro.",
"transferUser":"L'utente al quale trasferire.",
"transcripts":"Visualizza la cronologia delle trascrizioni dei ticket di un utente.",
"transcriptsUser":"L'utente da visualizzare."
},
"helpMenu":{
"help":"Ottieni un elenco di tutti i comandi disponibili.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Disabilita la chiusura automatica in questo ticket.",
"autocloseEnable":"Abilita la chiusura automatica in questo ticket.",
"autodeleteDisable":"Disabilita la cancellazione automatica in questo ticket.",
"autodeleteEnable":"Abilita la cancellazione automatica in questo ticket."
"autodeleteEnable":"Abilita la cancellazione automatica in questo ticket.",
"categories":{
"general":"Comandi generali",
"basicTicket":"Comandi basici ticket",
"advancedTicket":"Comandi avanzati ticket",
"userTicket":"Comandi ticket utente",
"admin":"Comandi admin",
"advanced":"Comandi avanzati",
"extra":"Comandi extra"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Statistiche di Sistema",
"user":"Statistiche Utente",
"ticket":"Statistiche Ticket",
"participants":"Partecipanti"
"participants":"Partecipanti",
"messages":"Messaggi"
},
"properties":{
"ticketsCreated":"Ticket Creati",
@@ -472,7 +581,48 @@
"ticketsPinned":"Ticket Fissati",
"ticketsMoved":"Ticket Spostati",
"usersBlacklisted":"Utenti Blacklistati",
"transcriptsCreated":"Trascrizioni Create"
}
"transcriptsCreated":"Trascrizioni Create",
"ticketsAutodeleted":"Tickets Autoeliminati",
"ticketsTransferred":"Tickets Trasferiti",
"ticketVolume":"Volume dei Ticket",
"averageTickets":"Ticket medi/Utente",
"currentTickets":"Ticket Attuali",
"age":"Età Ticket",
"responseTime":"Tempo di Risposta",
"resolutionTime":"Tempo di Risoluzione",
"createdOn":"Creato il",
"createdBy":"Creato da",
"closedOn":"Chiuso il",
"closedBy":"Chiuso da",
"claimedOn":"Claimato il",
"claimedBy":"Claimato da",
"pinnedOn":"Fissato il",
"pinnedBy":"Fissato da",
"deletedOn":"Eliminato il",
"deletedBy":"Eliminato da"
},
"roles":{
"developer":"Developer",
"serverOwner":"Proprietario Server",
"serverAdmin":"Admin Server",
"moderator":"Team di Moderazione",
"support":"Team di Supporto",
"member":"Membro"
}
},
"panel":{
"selectTicket":"Seleziona il tuo Ticket",
"selectRole":"Seleziona il tuo ruolo",
"selectOption":"Seleziona la tua opzione",
"selectPriorityLevel":"Seleziona livello di priorità"
},
"priorities":{
"urgent":"Urgente",
"veryHigh":"Molto Alto",
"high":"Alto",
"normal":"Normale",
"low":"Basso",
"veryLow":"Molto Basso",
"none":"Nullo"
}
}
+174 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["HanumeshGupta"],
"lastedited":"19/06/2025",
"otversion":"v4.2.0",
"translators":["HanumeshGupta","ChatGPT"],
"lastedited":"25/05/2026",
"language":"Japanese",
"automated":true
},
@@ -31,6 +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}桁でなければなりません!",
@@ -47,8 +56,12 @@
"numberNegative":"この数値は負の値にできません!",
"numberPositive":"この数値は正の値にできません!",
"numberZero":"この数値はゼロにできません!",
"numberNan":"この数値は NaN(Not A Number)であってはなりません!",
"numberInvertedContains":"この数値には {0} を含めることはできません!",
"booleanTrue":"このブール値はtrueにできません!",
"booleanFalse":"このブール値はfalseにできません!",
"arrayEmptyDisabled":"この配列を空にすることは許可されていません!",
"arrayEmptyRequired":"この配列は空でなければなりません!",
"arrayTooShort":"この配列の長さは少なくとも{0}でなければなりません!",
@@ -56,6 +69,7 @@
"arrayLengthInvalid":"この配列の長さは{0}でなければなりません!",
"arrayInvalidTypes":"この配列に含めることができる型は次のみです: {0}!",
"arrayDouble":"この配列では同じ値を2回使用できません!",
"discordInvalidId":"これは無効なDiscordの{0}IDです!",
"discordInvalidIdOptions":"これは無効なDiscordの{0}IDです! 代わりに次のいずれかを使用できます: {1}!",
"discordInvalidToken":"これは無効なDiscordトークンです(構文的に)!",
@@ -72,6 +86,7 @@
"urlInvalidPath":"このURLのパスが無効です!",
"idNotUnique":"このIDは一意ではありません。別のIDを使用してください!",
"idNonExistent":"ID「{0}」は存在しません!",
"invalidType":"このプロパティは{0}型でなければなりません!",
"propertyMissing":"このオブジェクトにはプロパティ「{0}」がありません!",
"propertyOptional":"このオブジェクトではプロパティ「{0}」はオプションです!",
@@ -79,11 +94,13 @@
"nullInvalid":"このプロパティはnullにできません!",
"switchInvalidType":"これは次のいずれかの型でなければなりません: {0}!",
"objectSwitchInvalid":"このオブジェクトは次のいずれかの型でなければなりません: {0}!",
"invalidLanguage":"これは無効な言語です!",
"invalidButton":"このボタンには少なくとも「{0}」または「{1}」が必要です!",
"unusedOption":"オプション「{0}」はどこでも使用されていません!",
"unusedQuestion":"質問「{0}」はどこでも使用されていません!",
"dropdownOption": "ドロップダウンが有効なパネルには「ticket」タイプのオプションのみ含めることができます!"
"dropdownOption":"ドロップダウン付きパネルには次の種類のオプションのみ含めることができます:'ticket'、'role'、または'sub-panel'。",
"customInvalidVersion":"設定ファイルに指定されたバージョンが一致しません! 設定を最新バージョンに更新してください!"
}
},
"actions":{
@@ -101,7 +118,9 @@
"helpSwitchText":"テキストコマンドを表示",
"helpPage":"ページ {0}",
"withReason":"理由を付ける",
"withoutTranscript":"トランスクリプトなし"
"withoutTranscript":"トランスクリプトなし",
"blacklistAdd":"ユーザーをブラックリストに追加",
"blacklistRemove":"ユーザーのブラックリスト解除"
},
"titles":{
"created":"チケットが作成されました",
@@ -126,6 +145,7 @@
"blacklistAddDm":"ブラックリストに追加されました",
"blacklistRemoveDm":"ブラックリストから解除されました",
"clear":"チケットが一括削除されました",
"clearTickets":"チケットをクリア",
"roles":"ロールが更新されました",
"autoclose":"チケットが自動閉じされました",
@@ -133,7 +153,13 @@
"autocloseDisabled":"自動閉じが無効化されました",
"autodelete":"チケットが自動削除されました",
"autodeleteEnabled":"自動削除が有効化されました",
"autodeleteDisabled":"自動削除が無効化されました"
"autodeleteDisabled":"自動削除が無効化されました",
"topicSet":"トピックが変更されました",
"prioritySet":"優先度が変更されました",
"priorityGet":"チケットの優先度",
"transfer":"チケットが転送されました",
"transcripts":"トランスクリプト履歴"
},
"descriptions":{
"create":"チケットが作成されました。下のボタンをクリックしてアクセスしてください!",
@@ -174,7 +200,12 @@
"ticketMessageLimit":"同時に作成できるチケットは{0}件までです!",
"ticketMessageAutoclose":"このチケットは{0}時間非アクティブの場合に自動閉じされます!",
"ticketMessageAutodelete":"このチケットは{0}日間非アクティブの場合に自動削除されます!",
"panelReady":"下にパネルが表示されます!\nこのメッセージは削除可能です!"
"panelReady":"パネルは次のメッセージで利用できます!\nこのメッセージは削除しても構いません!",
"topicSet":"チャンネルのトピックは {0} によって正常に変更されました!",
"prioritySet":"チケットの優先度は {1} により {0} に正常に変更されました!",
"priorityGet":"このチケットの現在の優先度は {0} です。",
"transfer":"チケットの所有権は {2} によって {0} から {1} に正常に転送されました!"
},
"modal":{
"closePlaceholder":"このチケットを閉じた理由は?",
@@ -214,7 +245,16 @@
"blacklistRemoveLog":"{1}によって{0}がブラックリストから解除されました!",
"blacklistAddDm":"あなたはサーバーのブラックリストに追加されました!\n今後チケットを作成できなくなります!",
"blacklistRemoveDm":"あなたはサーバーのブラックリストから解除されました!\n再びチケットを作成できるようになりました!",
"clearLog":"{1}によって{0}件のチケットが削除されました!"
"clearLog":"{1}によって{0}件のチケットが削除されました!",
"transferLog":"このチケットの所有権は {2} によって {0} から {1} に転送されました!",
"transferDm":"あなたのチケットの所有権はサーバー内で {0} から {1} に転送されました!",
"prioritySetLog":"このチケットの優先度は {1} により {0} に変更されました!",
"prioritySetDm":"あなたのチケットの優先度はサーバー内で {0} に変更されました!",
"roleUpdateLog":"{0} がロールを更新しました!",
"roleUpdateDm":"サーバー内のあなたのロールが更新されました!",
"topicSetLog":"このチケットの優先度は {1} により {0} に設定されました。",
"topicSetDm":"あなたのチケットの優先度は {0} に設定されました。"
}
},
"transcripts":{
@@ -235,7 +275,21 @@
"retry":"再試行",
"continue":"トランスクリプトなしで削除",
"backup":"バックアップトランスクリプトを作成",
"error":"トランスクリプトの作成中にエラーが発生しました。\nどうしますか?\n\nいずれかのボタンをクリックするまでチケットは削除されません。"
"error":"トランスクリプトの作成中にエラーが発生しました。\nどうしますか?\n\nいずれかのボタンをクリックするまでチケットは削除されません。",
"title":"トランスクリプトエラー",
"noHistory":"このユーザーにはまだトランスクリプトがありません。",
"historyNotSupported":"トランスクリプト履歴は現在HTML Transcriptsのみ対応しています。\nテキストトランスクリプト履歴は今後のバージョンで利用可能になります。"
},
"text":{
"messagesTitle":"メッセージ",
"embedTitle":"EMBED",
"fileTitle":"ファイル",
"fieldsTitle":"フィールド",
"reactionsTitle":"リアクション",
"statsTitle":"統計",
"emptyContent":"<内容は空です>",
"noTitle":"<タイトルなし>",
"noDesc":"<説明なし>"
}
},
"errors":{
@@ -251,7 +305,9 @@
"unknownPanel":"不明なパネル",
"notInGuild":"サーバー内にいません",
"channelRename":"チャンネル名を変更できません",
"busy":"チケットは使用中です"
"channelCategory":"カテゴリを変更できません",
"busy":"チケットは使用中です",
"permissionError":"権限エラー"
},
"descriptions":{
"askForInfo":"詳細はボットの所有者に問い合わせてください!",
@@ -273,8 +329,15 @@
"deprecatedTicket":"現在のチャンネルは有効なチケットではありません!旧バージョンのチケットかもしれません!",
"notInGuild":"この{0}はDMでは動作しません!サーバー内で再試行してください!",
"channelRename":"Discordのレートリミットにより、現在チャンネル名を変更できません。10分以内に自動的に変更されます。",
"channelCategory":"Discordのレート制限のため、チャンネルカテゴリをすぐに変更できません。ボットがオンラインであれば10分以内に自動で変更されます。",
"channelRenameSource":"エラーの原因:{0}",
"busy":"この{0}は使用できません!\nチケットは現在処理中です。\n\n数秒後にもう一度お試しください!"
"busy":"この{0}は使用できません!\nチケットは現在処理中です。\n\n数秒後にもう一度お試しください!",
"closeBeforeMessage":"ユーザーがメッセージを送信する前に、このチケットを閉じたり削除したりすることはできません。",
"closeBeforeAdminMessage":"チケット管理者またはサポートメンバーがメッセージを送信する前に、このチケットを閉じたり削除したりすることはできません。",
"unableToCreateTicket":"チケットを作成することはできません。",
"messageMissing":"インタラクションのメッセージを見つけられませんでした。代わりにコマンド `{0}` を使用してください。",
"stateExpired":"このインタラクションは無効または期限切れです。代わりにコマンド `{0}` を使用してください。Open Ticketの大規模アップデート後にはこのエラーは正常です。",
"panelStateExpired":"このパネルは無効または期限切れです。問題を解決するには `{0}` を使用して新しいパネルを作成してください。Open Ticketの大規模アップデート後にはこのエラーは正常です。"
},
"optionInvalidReasons":{
"stringRegex":"値がパターンに一致しません!",
@@ -325,7 +388,6 @@
"added":"追加済み",
"removed":"削除済み",
"filter":"フィルター",
"claimedBy":"{0}が引き受け",
"method":"方法",
"type":"タイプ",
"blacklisted":"ブラックリスト",
@@ -337,6 +399,8 @@
"syntax":"構文",
"originalName":"元の名前",
"newName":"新しい名前",
"originalCategory":"元のカテゴリ",
"newCategory":"新しいカテゴリ",
"until":"期限",
"validOptions":"有効なオプション",
"validPanels":"有効なパネル",
@@ -349,7 +413,29 @@
"status":"ステータス",
"claimed":"引き受け済み",
"pinned":"ピン留め済み",
"creationDate":"作成日時"
"creationDate":"作成日時",
"noone":"該当なし",
"open":"オープン",
"closed":"クローズ",
"priority":"優先度",
"participants":"参加者",
"yes":"はい",
"no":"いいえ",
"accept":"承認",
"cancel":"キャンセル",
"option":"オプション",
"topic":"トピック",
"uptime":"システム稼働時間",
"messages":"メッセージ",
"embeds":"埋め込み",
"files":"ファイル",
"components":"コンポーネント",
"cooldown":"クールダウン",
"maxTickets":"最大チケット数",
"admins":"管理者",
"roles":"ロール",
"size":"サイズ"
},
"lowercase":{
"text":"テキスト",
@@ -369,6 +455,7 @@
"panelAutoUpdate":"編集時にこのパネルを自動更新しますか?",
"ticket":"すぐにチケットを作成します。",
"ticketId":"作成したいチケットの識別子。",
"ticketOtherUser":"別のユーザーのチケットを作成します。",
"close":"チケットを閉じます。",
"delete":"チケットを削除します。",
"deleteNoTranscript":"トランスクリプトを作成せずにチケットを削除します。",
@@ -378,6 +465,7 @@
"unclaim":"チケットの引き受けを解除します。",
"pin":"チケットをピン留めします。",
"unpin":"チケットのピン留めを解除します。",
"move":"チケットを移動します。",
"moveId":"移動先のオプション識別子。",
"rename":"チケット名を変更します。",
@@ -386,6 +474,7 @@
"addUser":"追加するユーザー。",
"remove":"ユーザーをチケットから削除します。",
"removeUser":"削除するユーザー。",
"blacklist":"チケットブラックリストを管理します。",
"blacklistView":"現在のブラックリストを表示します。",
"blacklistAdd":"ユーザーをブラックリストに追加します。",
@@ -399,6 +488,7 @@
"statsUserUser":"表示するユーザー。",
"statsTicket":"サーバー内のチケット統計を表示します。",
"statsTicketTicket":"表示するチケット。",
"clear":"複数のチケットを同時に削除します。",
"clearFilter":"チケットを一括削除するフィルター。",
"clearFilters":{
@@ -411,6 +501,7 @@
"unpin":"ピン留め解除済み",
"autoclose":"自動閉じ済み"
},
"autoclose":"チケットの自動閉じを管理します。",
"autocloseDisable":"このチケットの自動閉じを無効にします。",
"autocloseEnable":"このチケットの自動閉じを有効にします。",
@@ -418,7 +509,21 @@
"autodelete":"チケットの自動削除を管理します。",
"autodeleteDisable":"このチケットの自動削除を無効にします。",
"autodeleteEnable":"このチケットの自動削除を有効にします。",
"autodeleteEnableTime":"チケットを自動削除する非アクティブ時間(日単位)。"
"autodeleteEnableTime":"チケットを自動削除する非アクティブ時間(日単位)。",
"topic":"チケットチャネルのトピックを管理します。",
"topicSet":"チケットチャネルのトピックを設定します。",
"topicValue":"チャンネルの新しいトピック。",
"topicList":"すべてのチケットをトピックと統計付きで一覧表示します。",
"priority":"チケットの優先度を管理します。",
"prioritySet":"チケットの優先度を設定します。",
"priorityValue":"チャンネルの優先度。",
"priorityGet":"チケットの優先度を取得します。",
"priorityList":"すべてのチケットを優先度ステータス付きで一覧表示します。",
"transfer":"チケットの所有権を別のユーザーに転送します。",
"transferUser":"転送先のユーザー。",
"transcripts":"ユーザーのチケットトランスクリプト履歴を表示します。",
"transcriptsUser":"表示するユーザー。"
},
"helpMenu":{
"help":"利用可能なすべてのコマンドのリストを表示します。",
@@ -446,7 +551,16 @@
"autocloseDisable":"このチケットの自動閉じを無効にします。",
"autocloseEnable":"このチケットの自動閉じを有効にします。",
"autodeleteDisable":"このチケットの自動削除を無効にします。",
"autodeleteEnable":"このチケットの自動削除を有効にします。"
"autodeleteEnable":"このチケットの自動削除を有効にします。",
"categories":{
"general":"一般コマンド",
"basicTicket":"基本チケットコマンド",
"advancedTicket":"高度なチケットコマンド",
"userTicket":"ユーザーチケットコマンド",
"admin":"管理者コマンド",
"advanced":"高度なコマンド",
"extra":"追加コマンド"
}
},
"stats":{
"scopes":{
@@ -454,7 +568,8 @@
"system":"システム統計",
"user":"ユーザー統計",
"ticket":"チケット統計",
"participants":"参加者"
"participants":"参加者",
"messages":"メッセージ"
},
"properties":{
"ticketsCreated":"作成済みチケット",
@@ -466,7 +581,48 @@
"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":"オプションを選択してください",
"selectPriorityLevel":"優先度レベルを選択"
},
"priorities":{
"urgent":"緊急",
"veryHigh":"非常に高い",
"high":"高い",
"normal":"普通",
"low":"低い",
"veryLow":"非常に低い",
"none":"なし"
}
}
+628
View File
@@ -0,0 +1,628 @@
{
"_TRANSLATION":{
"otversion":"v4.2.0",
"translators":["yuuslokrobjakkroval"],
"lastedited":"25/05/2026",
"language":"Khmer",
"automated":false
},
"checker":{
"system":{
"typeError":"[កំហុស]",
"headerOpenTicket":"OPEN TICKET",
"typeWarning":"[ព្រមាន]",
"typeInfo":"[ព័ត៌មាន]",
"headerConfigChecker":"CONFIG CHECKER",
"headerDescription":"ពិនិត្យមើលកំហុសក្នុងឯកសារកំណត់រចនាសម្ព័ន្ធ!",
"footerError":"បូតនឹងមិនចាប់ផ្តើមទេ រហូតដល់ {0} ទាំងអស់ត្រូវបានជួសជុល!",
"footerWarning":"វាត្រូវបានណែនាំឱ្យជួសជុល {0} ទាំងអស់មុនពេលចាប់ផ្តើម!",
"footerSupport":"ជំនួយ: {0} - ឯកសារ: {1}",
"compactInformation":"ប្រើ {0} សម្រាប់ព័ត៌មានបន្ថែម!",
"dataPath":"ផ្លូវ",
"dataDocs":"ឯកសារ",
"dataMessages":"សារ"
},
"messages":{
"stringTooShort":"ខ្សែអក្សរនេះមិនអាចខ្លីជាង {0} តួអក្សរ!",
"stringTooLong":"ខ្សែអក្សរនេះមិនអាចវែងជាង {0} តួអក្សរ!",
"stringLengthInvalid":"ខ្សែអក្សរនេះត្រូវតែមាន {0} តួអក្សរ!",
"stringStartsWith":"ខ្សែអក្សរនេះត្រូវតែចាប់ផ្តើមដោយ {0}!",
"stringEndsWith":"ខ្សែអក្សរនេះត្រូវតែបញ្ចប់ដោយ {0}!",
"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":"លេខនេះមិនអាចជាសូន្យ!",
"numberNan":"លេខនេះមិនអាចជា NaN (មិនមែនជាលេខ)!",
"numberInvertedContains":"លេខនេះមិនត្រូវបានអនុញ្ញាតឱ្យមាន {0}!",
"booleanTrue":"Boolean នេះមិនអាចជា true!",
"booleanFalse":"Boolean នេះមិនអាចជា false!",
"arrayEmptyDisabled":"អារ៉េនេះមិនត្រូវបានអនុញ្ញាតឱ្យទទេ!",
"arrayEmptyRequired":"អារ៉េនេះត្រូវបានទាមទារឱ្យទទេ!",
"arrayTooShort":"អារ៉េនេះត្រូវការប្រវែងយ៉ាងហោចណាស់ {0}!",
"arrayTooLong":"អារ៉េនេះត្រូវការប្រវែងច្រើនបំផុត {0}!",
"arrayLengthInvalid":"អារ៉េនេះត្រូវការប្រវែង {0}!",
"arrayInvalidTypes":"អារ៉េនេះអាចមានប្រភេទដូចខាងក្រោមប៉ុណ្ណោះ: {0}!",
"arrayDouble":"អារ៉េនេះមិនអនុញ្ញាតឱ្យតម្លៃដូចគ្នា!",
"discordInvalidId":"នេះជា discord {0} id មិនត្រឹមត្រូវ!",
"discordInvalidIdOptions":"នេះជា discord {0} id មិនត្រឹមត្រូវ! អ្នកក៏អាចប្រើ: {1}!",
"discordInvalidToken":"នេះជា discord token មិនត្រឹមត្រូវ (ក្នុងទម្រង់)!",
"colorInvalid":"នេះជាពណ៌ hex មិនត្រឹមត្រូវ!",
"emojiTooShort":"ខ្សែអក្សរនេះត្រូវការ emoji យ៉ាងហោចណាស់ {0}!",
"emojiTooLong":"ខ្សែអក្សរនេះត្រូវការ emoji ច្រើនបំផុត {0}!",
"emojiCustom":"Emoji នេះមិនអាចជា custom discord emoji!",
"emojiInvalid":"នេះជា emoji មិនត្រឹមត្រូវ!",
"urlInvalid":"URL នេះមិនត្រឹមត្រូវ!",
"urlInvalidHttp":"URL នេះអាចប្រើតែ https:// protocol ប៉ុណ្ណោះ!",
"urlInvalidProtocol":"URL នេះអាចប្រើតែ http:// និង https:// protocols ប៉ុណ្ណោះ!",
"urlInvalidHostname":"URL នេះមាន hostname មិនត្រូវបានអនុញ្ញាត!",
"urlInvalidExtension":"URL នេះមានផ្នែកបន្ថែមមិនត្រឹមត្រូវ! ជ្រើសរើស: {0}!",
"urlInvalidPath":"URL នេះមានផ្លូវមិនត្រឹមត្រូវ!",
"idNotUnique":"id នេះមិនតែមួយ, ប្រើ id ផ្សេងទៀត!",
"idNonExistent":"id {0} មិនមាន!",
"invalidType":"លក្ខណៈសម្បត្តិនេះត្រូវជាប្រភេទ: {0}!",
"propertyMissing":"លក្ខណៈសម្បត្តិ {0} បាត់ពីវត្ថុនេះ!",
"propertyOptional":"លក្ខណៈសម្បត្តិ {0} ជាជម្រើសសម្រាប់វត្ថុនេះ!",
"objectDisabled":"វត្ថុនេះត្រូវបានបិទ, បើកវាដោយប្រើ {0}!",
"nullInvalid":"លក្ខណៈសម្បត្តិនេះមិនអាចជា null!",
"switchInvalidType":"នេះត្រូវជាប្រភេទដូចខាងក្រោម: {0}!",
"objectSwitchInvalid":"វត្ថុនេះត្រូវជាប្រភេទដូចខាងក្រោម: {0}!",
"invalidLanguage":"នេះជាភាសាមិនត្រឹមត្រូវ!",
"invalidButton":"ប៊ូតុននេះត្រូវការ {0} ឬ {1} យ៉ាងតិចណាស់!",
"unusedOption":"ជម្រើស {0} មិនត្រូវបានប្រើ!",
"unusedQuestion":"សំណួរ {0} មិនត្រូវបានប្រើ!",
"dropdownOption":"ផ្ទាំងដែលមានម៉ឺនុយទម្លាក់ចុះអាចមានតែជម្រើសប្រភេទ៖ 'ticket', 'role' ឬ 'sub-panel' ប៉ុណ្ណោះ។",
"customInvalidVersion":"កំណែដែលបានបញ្ជាក់ក្នុង config របស់អ្នកមិនត្រូវគ្នា! សូមប្រាកដថាអ្នកបានធ្វើបច្ចុប្បន្នភាព config ទៅកំណែថ្មីបំផុត!"
}
},
"actions":{
"buttons":{
"create":"ចូលមើលសំបុត្រ",
"close":"បិទសំបុត្រ",
"delete":"លុបសំបុត្រ",
"reopen":"បើកសំបុត្រឡើងវិញ",
"claim":"ទទួលសំបុត្រ",
"unclaim":"លែងទទួលសំបុត្រ",
"pin":"ដាក់ម្ជុលសំបុត្រ",
"unpin":"ដកម្ជុលសំបុត្រ",
"clear":"លុបសំបុត្រទាំងអស់",
"helpSwitchSlash":"មើលពាក្យបញ្ជា Slash",
"helpSwitchText":"មើលពាក្យបញ្ជាអក្សរ",
"helpPage":"ទំព័រ {0}",
"withReason":"ជាមួយហេតុផល",
"withoutTranscript":"គ្មាន Transcript",
"blacklistAdd":"បញ្ចូលអ្នកប្រើទៅក្នុងបញ្ជីខ្មៅ",
"blacklistRemove":"ដោះលែងអ្នកប្រើ"
},
"titles":{
"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":"បានបើក Autoclose",
"autocloseDisabled":"បានបិទ Autoclose",
"autodelete":"សំបុត្របានលុបដោយស្វ័យប្រវត្តិ",
"autodeleteEnabled":"បានបើក Autodelete",
"autodeleteDisabled":"បានបិទ Autodelete",
"topicSet":"បានប្តូរប្រធានបទ",
"prioritySet":"បានប្តូរអាទិភាព",
"priorityGet":"អាទិភាពសំបុត្រ",
"transfer":"បានផ្ទេរសំបុត្រ",
"transcripts":"ប្រវត្តិ Transcript"
},
"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}h`!",
"autodeleteLeave":"សំបុត្រនេះត្រូវបានលុបដោយស្វ័យប្រវត្តិ ដោយសារអ្នកបង្កើតបានចាកចេញពីម៉ាស៊ីនបម្រើ!",
"autodeleteTimeout":"សំបុត្រនេះត្រូវបានលុបដោយស្វ័យប្រវត្តិ ដោយសារវាមិនសកម្មលើសពី `{0} ថ្ងៃ`!",
"autocloseEnabled":"Autoclose ត្រូវបានបើកក្នុងសំបុត្រនេះ!\nវានឹងត្រូវបានបិទនៅពេលមិនសកម្មលើសពី `{0}h`!",
"autocloseDisabled":"Autoclose ត្រូវបានបិទក្នុងសំបុត្រនេះ!\nវានឹងមិនត្រូវបានបិទដោយស្វ័យប្រវត្តិទៀតទេ!",
"autodeleteEnabled":"Autodelete ត្រូវបានបើកក្នុងសំបុត្រនេះ!\nវានឹងត្រូវបានលុបនៅពេលមិនសកម្មលើសពី `{0} ថ្ងៃ`!",
"autodeleteDisabled":"Autodelete ត្រូវបានបិទក្នុងសំបុត្រនេះ!\nវានឹងមិនត្រូវបានលុបដោយស្វ័យប្រវត្តិទៀតទេ!",
"ticketMessageLimit":"អ្នកអាចបង្កើតសំបុត្រ {0} ក្នុងពេលតែមួយ!",
"ticketMessageAutoclose":"សំបុត្រនេះនឹងត្រូវបានបិទដោយស្វ័យប្រវត្តិ នៅពេលមិនសកម្ម {0}h!",
"ticketMessageAutodelete":"សំបុត្រនេះនឹងត្រូវបានលុបដោយស្វ័យប្រវត្តិ នៅពេលមិនសកម្ម {0} ថ្ងៃ!",
"panelReady":"Panel មាននៅក្នុងសារបន្ត!\nសារនេះអាចលុបបានហើយ!",
"topicSet":"ប្រធានបទបណ្តាញត្រូវបានប្តូរដោយ {0} ដោយជោគជ័យ!",
"prioritySet":"អាទិភាពសំបុត្រត្រូវបានប្តូរទៅ {0} ដោយ {1} ដោយជោគជ័យ!",
"priorityGet":"អាទិភាពបច្ចុប្បន្នរបស់សំបុត្រនេះគឺ {0}។",
"transfer":"ភាពជាម្ចាស់សំបុត្រត្រូវបានផ្ទេរពី {0} ទៅ {1} ដោយ {2} ដោយជោគជ័យ!"
},
"modal":{
"closePlaceholder":"ហេតុអ្វីអ្នកបិទសំបុត្រនេះ?",
"deletePlaceholder":"ហេតុអ្វីអ្នកលុបសំបុត្រនេះ?",
"reopenPlaceholder":"ហេតុអ្វីអ្នកបើកសំបុត្រនេះឡើងវិញ?",
"claimPlaceholder":"ហេតុអ្វីអ្នកទទួលសំបុត្រនេះ?",
"unclaimPlaceholder":"ហេតុអ្វីអ្នកលែងទទួលសំបុត្រនេះ?",
"pinPlaceholder":"ហេតុអ្វីអ្នកដាក់ម្ជុលសំបុត្រនេះ?",
"unpinPlaceholder":"ហេតុអ្វីអ្នកដកម្ជុលសំបុត្រនេះ?"
},
"logs":{
"createLog":"សំបុត្រថ្មីត្រូវបានបង្កើតដោយ {0}!",
"closeLog":"សំបុត្រនេះត្រូវបានបិទដោយ {0}!",
"closeDm":"សំបុត្ររបស់អ្នកត្រូវបានបិទនៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"deleteLog":"សំបុត្រនេះត្រូវបានលុបដោយ {0}!",
"deleteDm":"សំបុត្ររបស់អ្នកត្រូវបានលុបនៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"reopenLog":"សំបុត្រនេះត្រូវបានបើកឡើងវិញដោយ {0}!",
"reopenDm":"សំបុត្ររបស់អ្នកត្រូវបានបើកឡើងវិញនៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"claimLog":"សំបុត្រនេះត្រូវបានទទួលដោយ {0}!",
"claimDm":"សំបុត្ររបស់អ្នកត្រូវបានទទួលនៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"unclaimLog":"សំបុត្រនេះត្រូវបានលែងទទួលដោយ {0}!",
"unclaimDm":"សំបុត្ររបស់អ្នកត្រូវបានលែងទទួលនៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"pinLog":"សំបុត្រនេះត្រូវបានដាក់ម្ជុលដោយ {0}!",
"pinDm":"សំបុត្ររបស់អ្នកត្រូវបានដាក់ម្ជុលនៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"unpinLog":"សំបុត្រនេះត្រូវបានដកម្ជុលដោយ {0}!",
"unpinDm":"សំបុត្ររបស់អ្នកត្រូវបានដកម្ជុលនៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"renameLog":"សំបុត្រនេះត្រូវបានប្តូរឈ្មោះទៅ {0} ដោយ {1}!",
"renameDm":"សំបុត្ររបស់អ្នកត្រូវបានប្តូរឈ្មោះទៅ {0} នៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"moveLog":"សំបុត្រនេះត្រូវបានផ្លាស់ប្តូរទៅ {0} ដោយ {1}!",
"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":"អាទិភាពសំបុត្រនេះត្រូវបានប្តូរទៅ {0} ដោយ {1}!",
"prioritySetDm":"អាទិភាពសំបុត្ររបស់អ្នកត្រូវបានប្តូរទៅ {0} នៅក្នុងម៉ាស៊ីនបម្រើរបស់យើង!",
"roleUpdateLog":"{0} បានធ្វើបច្ចុប្បន្នភាពតួនាទីរបស់ខ្លួន!",
"roleUpdateDm":"តួនាទីរបស់អ្នកក្នុងម៉ាស៊ីនបម្រើរបស់យើងត្រូវបានធ្វើបច្ចុប្បន្នភាព!",
"topicSetLog":"អាទិភាពសំបុត្រនេះត្រូវបានកំណត់ទៅ {0} ដោយ {1}។",
"topicSetDm":"អាទិភាពសំបុត្ររបស់អ្នកត្រូវបានកំណត់ទៅ {0}។"
}
},
"transcripts":{
"success":{
"visit":"ចូលមើល Transcript",
"ready":"Transcript ត្រូវបានបង្កើត",
"textFileDescription":"នេះជា transcript អក្សររបស់សំបុត្រដែលបានលុប!",
"htmlProgress":"សូមរង់ចាំ ខណៈ html transcript កំពុងត្រូវបានដំណើរការ...",
"createdChannel":"transcript {0} ថ្មីត្រូវបានបង្កើតក្នុងម៉ាស៊ីនបម្រើ!",
"createdCreator":"transcript {0} ថ្មីត្រូវបានបង្កើតសម្រាប់សំបុត្ររបស់អ្នក!",
"createdParticipant":"transcript {0} ថ្មីត្រូវបានបង្កើតក្នុងសំបុត្រដែលអ្នកបានចូលរួម!",
"createdActiveAdmin":"transcript {0} ថ្មីត្រូវបានបង្កើតក្នុងសំបុត្រដែលអ្នកបានចូលរួមជាអ្នកគ្រប់គ្រង!",
"createdEveryAdmin":"transcript {0} ថ្មីត្រូវបានបង្កើតក្នុងសំបុត្រដែលអ្នកជាអ្នកគ្រប់គ្រង!",
"createdOther":"transcript {0} ថ្មីត្រូវបានបង្កើត!"
},
"errors":{
"retry":"ព្យាយាមម្តងទៀត",
"continue":"លុបដោយគ្មាន Transcript",
"backup":"បង្កើត Transcript បម្រុង",
"error":"មានបញ្ហាខ្លះក្នុងការបង្កើត transcript។\nអ្នកចង់ធ្វើអ្វី?\n\nសំបុត្រនេះនឹងមិនត្រូវបានលុបទេ រហូតអ្នកចុចប៊ូតុងណាមួយ។",
"title":"កំហុស Transcript",
"noHistory":"អ្នកប្រើនេះមិនទាន់មាន transcript ទេ។",
"historyNotSupported":"ប្រវត្តិ transcript បច្ចុប្បន្នគាំទ្រតែ HTML Transcripts ប៉ុណ្ណោះ។\nប្រវត្តិ transcript អត្ថបទនឹងមាននៅក្នុងកំណែអនាគត។"
},
"text":{
"messagesTitle":"សារ",
"embedTitle":"EMBED",
"fileTitle":"ឯកសារ",
"fieldsTitle":"វាល",
"reactionsTitle":"ប្រតិកម្ម",
"statsTitle":"ស្ថិតិ",
"emptyContent":"<មាតិកាទទេ>",
"noTitle":"<គ្មានចំណងជើង>",
"noDesc":"<គ្មានការពិពណ៌នា>"
}
},
"errors":{
"titles":{
"internalError":"កំហុសផ្ទៃក្នុង",
"optionMissing":"ជម្រើសពាក្យបញ្ជាបាត់",
"optionInvalid":"ជម្រើសពាក្យបញ្ជាមិនត្រឹមត្រូវ",
"unknownCommand":"ពាក្យបញ្ជាមិនស្គាល់",
"noPermissions":"គ្មានសិទ្ធិ",
"unknownTicket":"សំបុត្រមិនស្គាល់",
"deprecatedTicket":"សំបុត្រហួសសម័យ",
"unknownOption":"ជម្រើសមិនស្គាល់",
"unknownPanel":"Panel មិនស្គាល់",
"notInGuild":"មិននៅក្នុងម៉ាស៊ីនបម្រើ",
"channelRename":"មិនអាចប្តូរឈ្មោះបណ្តាញ",
"channelCategory":"មិនអាចប្តូរប្រភេទបាន",
"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":"ដោយសារ discord ratelimits, វាមិនអាចទៅបានសម្រាប់បូតក្នុងការប្តូរឈ្មោះបណ្តាញ។ បណ្តាញនឹងត្រូវបានប្តូរឈ្មោះដោយស្វ័យប្រវត្តិ ក្នុងរយៈពេល 10 នាទី ប្រសិនបើបូតមិនបានចាប់ផ្តើមឡើងវិញ។",
"channelCategory":"ដោយសារកំណត់អត្រារបស់ Discord មិនអាចប្តូរប្រភេទឆានែលភ្លាមៗបានទេ។ វានឹងត្រូវបានប្តូរដោយស្វ័យប្រវត្តិក្នុងរយៈពេល 10 នាទី ប្រសិនបើ bot នៅតែអនឡាញ។",
"channelRenameSource":"ប្រភពកំហុសនេះគឺ: {0}",
"busy":"មិនអាចប្រើ {0} នេះ!\nសំបុត្រកំពុងត្រូវបានដំណើរការដោយបូត។\n\nសូមព្យាយាមម្តងទៀតក្នុងពីរបីវិនាទី!",
"closeBeforeMessage":"សំបុត្រនេះមិនអាចបិទ/លុបមុនមានសារពីអ្នកប្រើ។",
"closeBeforeAdminMessage":"សំបុត្រនេះមិនអាចបិទ/លុបមុនមានសារពីអ្នកគ្រប់គ្រងសំបុត្រ ឬសមាជិកជំនួយ។",
"unableToCreateTicket":"អ្នកមិនអាចបង្កើតសំបុត្រ។",
"messageMissing":"មិនអាចរកសារ interaction បានទេ។ សូមប្រើពាក្យបញ្ជា `{0}` ជំនួស។",
"stateExpired":"Interaction នេះមិនមានសុពលភាពទៀតទេ ឬបានផុតកំណត់។ សូមប្រើពាក្យបញ្ជា `{0}` ជំនួស។ វាជារឿងធម្មតាក្រោយការអាប់ដេតធំរបស់ Open Ticket។",
"panelStateExpired":"ផ្ទាំងនេះមិនមានសុពលភាពទៀតទេ ឬបានផុតកំណត់។ សូមបង្កើតផ្ទាំងថ្មីដោយប្រើ `{0}` ដើម្បីដោះស្រាយបញ្ហា។ វាជារឿងធម្មតាក្រោយការអាប់ដេតធំរបស់ Open Ticket។"
},
"optionInvalidReasons":{
"stringRegex":"តម្លៃមិនត្រូវនឹងលំនាំ!",
"stringMinLength":"តម្លៃត្រូវការយ៉ាងហោចណាស់ {0} តួអក្សរ!",
"stringMaxLength":"តម្លៃត្រូវការច្រើនបំផុត {0} តួអក្សរ!",
"numberInvalid":"លេខមិនត្រឹមត្រូវ!",
"numberMin":"លេខត្រូវការយ៉ាងហោចណាស់ {0}!",
"numberMax":"លេខត្រូវការច្រើនបំផុត {0}!",
"numberDecimal":"លេខមិនត្រូវបានអនុញ្ញាតជាទសភាគ!",
"numberNegative":"លេខមិនត្រូវបានអនុញ្ញាតជាអវិជ្ជមាន!",
"numberPositive":"លេខមិនត្រូវបានអនុញ្ញាតជាវិជ្ជមាន!",
"numberZero":"លេខមិនត្រូវបានអនុញ្ញាតជាសូន្យ!",
"channelNotFound":"រកបណ្តាញមិនឃើញ!",
"userNotFound":"រកអ្នកប្រើប្រាស់មិនឃើញ!",
"roleNotFound":"រកតួនាទីមិនឃើញ!",
"memberNotFound":"រកអ្នកប្រើប្រាស់មិនឃើញ!",
"mentionableNotFound":"រកអ្នកប្រើប្រាស់ ឬតួនាទីមិនឃើញ!",
"channelType":"ប្រភេទបណ្តាញមិនត្រឹមត្រូវ!",
"notInGuild":"ជម្រើសនេះទាមទារឱ្យអ្នកនៅក្នុងម៉ាស៊ីនបម្រើ!"
},
"permissions":{
"developer":"អ្នកត្រូវជា developer របស់បូត។",
"owner":"អ្នកត្រូវជាម្ចាស់ម៉ាស៊ីនបម្រើ។",
"admin":"អ្នកត្រូវជា admin ម៉ាស៊ីនបម្រើ។",
"moderator":"អ្នកត្រូវជាអ្នកសម្រុះសម្រួល។",
"support":"អ្នកត្រូវនៅក្នុងក្រុមជំនួយ។",
"member":"អ្នកត្រូវជាសមាជិក។",
"discord-administrator":"អ្នកត្រូវមានសិទ្ធិ `ADMINISTRATOR`។"
},
"actionInvalid":{
"close":"សំបុត្របានបិទហើយ!",
"reopen":"សំបុត្រមិនទាន់បិទ!",
"claim":"សំបុត្របានទទួលហើយ!",
"unclaim":"សំបុត្រមិនទាន់ត្រូវបានទទួល!",
"pin":"សំបុត្របានដាក់ម្ជុលហើយ!",
"unpin":"សំបុត្រមិនទាន់ត្រូវបានដាក់ម្ជុល!",
"add":"អ្នកប្រើប្រាស់នេះអាចចូលប្រើសំបុត្រហើយ!",
"remove":"មិនអាចដកអ្នកប្រើប្រាស់នេះចេញពីសំបុត្រ!"
}
},
"params":{
"uppercase":{
"ticket":"សំបុត្រ",
"tickets":"សំបុត្រ",
"reason":"មូលហេតុ",
"creator":"អ្នកបង្កើត",
"remaining":"ពេលវេលានៅសល់",
"added":"បន្ថែម",
"removed":"ដក",
"filter":"តម្រង",
"method":"វិធីសាស្ត្រ",
"type":"ប្រភេទ",
"blacklisted":"ក្នុងបញ្ជីខ្មៅ",
"panel":"Panel",
"command":"ពាក្យបញ្ជា",
"system":"ប្រព័ន្ធ",
"true":"ពិត",
"false":"មិនពិត",
"syntax":"វាក្យសម្ព័ន្ធ",
"originalName":"ឈ្មោះដើម",
"newName":"ឈ្មោះថ្មី",
"originalCategory":"ប្រភេទដើម",
"newCategory":"ប្រភេទថ្មី",
"until":"រហូតដល់",
"validOptions":"ជម្រើសត្រឹមត្រូវ",
"validPanels":"Panel ត្រឹមត្រូវ",
"autoclose":"Autoclose",
"autodelete":"Autodelete",
"startupDate":"កាលបរិច្ឆេទចាប់ផ្តើម",
"version":"កំណែ",
"name":"ឈ្មោះ",
"role":"តួនាទី",
"status":"ស្ថានភាព",
"claimed":"ទទួលហើយ",
"pinned":"ដាក់ម្ជុលហើយ",
"creationDate":"កាលបរិច្ឆេទបង្កើត",
"noone":"គ្មាននរណា",
"open":"បើក",
"closed":"បិទ",
"priority":"អាទិភាព",
"participants":"អ្នកចូលរួម",
"yes":"បាទ/ចាស",
"no":"ទេ",
"accept":"យល់ព្រម",
"cancel":"បោះបង់",
"option":"ជម្រើស",
"topic":"ប្រធានបទ",
"uptime":"ពេលដំណើរការប្រព័ន្ធ",
"messages":"សារ",
"embeds":"Embeds",
"files":"ឯកសារ",
"components":"ធាតុ",
"cooldown":"រយៈពេលត្រជាក់",
"maxTickets":"សំបុត្រច្រើនបំផុត",
"admins":"អ្នកគ្រប់គ្រង",
"roles":"តួនាទី",
"size":"ទំហំ"
},
"lowercase":{
"text":"អក្សរ",
"html":"html",
"command":"ពាក្យបញ្ជា",
"modal":"modal",
"button":"ប៊ូតុង",
"dropdown":"dropdown",
"method":"វិធីសាស្ត្រ"
}
},
"commands":{
"reason":"បញ្ជាក់មូលហេតុស្រេចចិត្តដែលនឹងបង្ហាញក្នុង logs។",
"help":"ទទួលបានបញ្ជីពាក្យបញ្ជាដែលមាន។",
"panel":"បង្ហាញសារជាមួយ dropdown ឬ buttons (សម្រាប់ការបង្កើតសំបុត្រ)។",
"panelId":"អ្នកកំណត់អត្តសញ្ញាណ panel ដែលអ្នកចង់បង្ហាញ។",
"panelAutoUpdate":"តើអ្នកចង់ panel នេះធ្វើបច្ចុប្បន្នភាពដោយស្វ័យប្រវត្តិ នៅពេលកែប្រែ?",
"ticket":"បង្កើតសំបុត្រភ្លាមៗ។",
"ticketId":"អ្នកកំណត់អត្តសញ្ញាណសំបុត្រដែលអ្នកចង់បង្កើត។",
"ticketOtherUser":"បង្កើតសំបុត្រសម្រាប់អ្នកប្រើផ្សេងទៀត។",
"close":"បិទសំបុត្រ។",
"delete":"លុបសំបុត្រ។",
"deleteNoTranscript":"លុបសំបុត្រនេះដោយគ្មានការបង្កើត transcript។",
"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":"គ្រប់គ្រង autoclose ក្នុងសំបុត្រ។",
"autocloseDisable":"បិទ autoclose ក្នុងសំបុត្រនេះ។",
"autocloseEnable":"បើក autoclose ក្នុងសំបុត្រនេះ។",
"autocloseEnableTime":"ចំនួនម៉ោងដែលសំបុត្រនេះត្រូវមិនសកម្ម ដើម្បីបិទ។",
"autodelete":"គ្រប់គ្រង autodelete ក្នុងសំបុត្រ។",
"autodeleteDisable":"បិទ autodelete ក្នុងសំបុត្រនេះ។",
"autodeleteEnable":"បើក autodelete ក្នុងសំបុត្រនេះ។",
"autodeleteEnableTime":"ចំនួនថ្ងៃដែលសំបុត្រនេះត្រូវមិនសកម្ម ដើម្បីលុប។",
"topic":"គ្រប់គ្រងប្រធានបទបណ្តាញសំបុត្រ។",
"topicSet":"កំណត់ប្រធានបទបណ្តាញសំបុត្រ។",
"topicValue":"ប្រធានបទថ្មីរបស់បណ្តាញ។",
"topicList":"ទទួលបានបញ្ជីសំបុត្រទាំងអស់ ជាមួយប្រធានបទ និងស្ថិតិ។",
"priority":"គ្រប់គ្រងអាទិភាពសំបុត្រ។",
"prioritySet":"កំណត់អាទិភាពសំបុត្រ។",
"priorityValue":"អាទិភាពរបស់បណ្តាញ។",
"priorityGet":"ទទួលបានអាទិភាពសំបុត្រ។",
"priorityList":"ទទួលបានបញ្ជីសំបុត្រទាំងអស់ ជាមួយស្ថានភាពអាទិភាព។",
"transfer":"ផ្ទេរភាពជាម្ចាស់សំបុត្រពីអ្នកប្រើប្រាស់ម្នាក់ទៅម្នាក់ទៀត។",
"transferUser":"អ្នកប្រើប្រាស់ដែលត្រូវផ្ទេរទៅ។",
"transcripts":"មើលប្រវត្តិ transcript សំបុត្ររបស់អ្នកប្រើ។",
"transcriptsUser":"អ្នកប្រើដែលត្រូវមើល។"
},
"helpMenu":{
"help":"ទទួលបានបញ្ជីពាក្យបញ្ជាដែលមាន។",
"ticket":"បង្កើតសំបុត្រភ្លាមៗ។",
"close":"បិទសំបុត្រ, វិធីនេះបិទការសរសេរក្នុងបណ្តាញ។",
"delete":"លុបសំបុត្រ, វិធីនេះបង្កើត transcript នៅពេលបើក។",
"reopen":"បើកសំបុត្រឡើងវិញ, វិធីនេះបើកការសរសេរក្នុងបណ្តាញម្តងទៀត។",
"pin":"ដាក់ម្ជុលសំបុត្រ។ វានឹងផ្លាស់សំបុត្រទៅខាងលើ ហើយបន្ថែម '📌' ទៅឈ្មោះ។",
"unpin":"ដកម្ជុលសំបុត្រ។ សំបុត្រនឹងនៅតំណែងដដែល ប៉ុន្តែនឹងបាត់ '📌'។",
"move":"ផ្លាស់ប្តូរសំបុត្រ។ វានឹងប្តូរប្រភេទរបស់សំបុត្រ។",
"rename":"ប្តូរឈ្មោះសំបុត្រ។ វានឹងប្តូរឈ្មោះបណ្តាញរបស់សំបុត្រ។",
"claim":"ទទួលសំបុត្រ។ ដោយវិធីនេះ អ្នកអាចប្រាប់ក្រុមរបស់អ្នកថាអ្នកកំពុងដោះស្រាយសំបុត្រនេះ។",
"unclaim":"លែងទទួលសំបុត្រ។ ដោយវិធីនេះ អ្នកអាចប្រាប់ក្រុមរបស់អ្នកថាសំបុត្រនេះទំនេរ។",
"add":"បន្ថែមអ្នកប្រើប្រាស់ទៅសំបុត្រ។ វានឹងអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់អាននិងសរសេរក្នុងសំបុត្រ។",
"remove":"ដកអ្នកប្រើប្រាស់ចេញពីសំបុត្រ។ វានឹងដកសិទ្ធិអាននិងសរសេររបស់អ្នកប្រើប្រាស់ក្នុងសំបុត្រ។",
"panel":"បង្ហាញសារជាមួយ dropdown ឬ buttons (សម្រាប់ការបង្កើតសំបុត្រ)។",
"blacklistView":"មើលបញ្ជីបញ្ជីខ្មៅបច្ចុប្បន្ន។",
"blacklistAdd":"បន្ថែមអ្នកប្រើប្រាស់ទៅបញ្ជីខ្មៅ។",
"blacklistRemove":"ដកអ្នកប្រើប្រាស់ចេញពីបញ្ជីខ្មៅ។",
"blacklistGet":"ទទួលបានព័ត៌មានលម្អិតពីអ្នកប្រើប្រាស់ក្នុងបញ្ជីខ្មៅ។",
"statsGlobal":"មើលស្ថិតិសរុប។",
"statsTicket":"មើលស្ថិតិពីសំបុត្រក្នុងម៉ាស៊ីនបម្រើ។",
"statsUser":"មើលស្ថិតិពីអ្នកប្រើប្រាស់ក្នុងម៉ាស៊ីនបម្រើ។",
"statsReset":"កំណត់ស្ថិតិបូតទាំងអស់ឡើងវិញ (ចាប់ផ្តើមរាប់ពីសូន្យ)។",
"autocloseDisable":"បិទ autoclose ក្នុងសំបុត្រនេះ។",
"autocloseEnable":"បើក autoclose ក្នុងសំបុត្រនេះ។",
"autodeleteDisable":"បិទ autodelete ក្នុងសំបុត្រនេះ។",
"autodeleteEnable":"បើក autodelete ក្នុងសំបុត្រនេះ។",
"categories":{
"general":"ពាក្យបញ្ជាទូទៅ",
"basicTicket":"ពាក្យបញ្ជាសំបុត្រមូលដ្ឋាន",
"advancedTicket":"ពាក្យបញ្ជាសំបុត្រកម្រិតខ្ពស់",
"userTicket":"ពាក្យបញ្ជាសំបុត្រអ្នកប្រើប្រាស់",
"admin":"ពាក្យបញ្ជា Admin",
"advanced":"ពាក្យបញ្ជាកម្រិតខ្ពស់",
"extra":"ពាក្យបញ្ជាបន្ថែម"
}
},
"stats":{
"scopes":{
"global":"ស្ថិតិសរុប",
"system":"ស្ថិតិប្រព័ន្ធ",
"user":"ស្ថិតិអ្នកប្រើប្រាស់",
"ticket":"ស្ថិតិសំបុត្រ",
"participants":"អ្នកចូលរួម",
"messages":"សារ"
},
"properties":{
"ticketsCreated":"សំបុត្របានបង្កើត",
"ticketsClosed":"សំបុត្របានបិទ",
"ticketsDeleted":"សំបុត្របានលុប",
"ticketsReopened":"សំបុត្របានបើកឡើងវិញ",
"ticketsAutoclosed":"សំបុត្របានបិទដោយស្វ័យប្រវត្តិ",
"ticketsClaimed":"សំបុត្របានទទួល",
"ticketsPinned":"សំបុត្របានដាក់ម្ជុល",
"ticketsMoved":"សំបុត្របានផ្លាស់ប្តូរ",
"usersBlacklisted":"អ្នកប្រើប្រាស់ក្នុងបញ្ជីខ្មៅ",
"transcriptsCreated":"Transcript បានបង្កើត",
"ticketsAutodeleted":"សំបុត្របានលុបដោយស្វ័យប្រវត្តិ",
"ticketsTransferred":"សំបុត្របានផ្ទេរ",
"ticketVolume":"ចំនួនសំបុត្រ",
"averageTickets":"ចំនួនសំបុត្រជាមធ្យម/អ្នកប្រើ",
"currentTickets":"សំបុត្របច្ចុប្បន្ន",
"age":"អាយុសំបុត្រ",
"responseTime":"ពេលឆ្លើយតប",
"resolutionTime":"ពេលដោះស្រាយ",
"createdOn":"បង្កើតនៅ",
"createdBy":"បង្កើតដោយ",
"closedOn":"បិទនៅ",
"closedBy":"បិទដោយ",
"claimedOn":"ទទួលនៅ",
"claimedBy":"ទទួលដោយ",
"pinnedOn":"ដាក់ម្ជុលនៅ",
"pinnedBy":"ដាក់ម្ជុលដោយ",
"deletedOn":"លុបនៅ",
"deletedBy":"លុបដោយ"
},
"roles":{
"developer":"Developer",
"serverOwner":"ម្ចាស់ម៉ាស៊ីនបម្រើ",
"serverAdmin":"Admin ម៉ាស៊ីនបម្រើ",
"moderator":"ក្រុមអ្នកសម្រុះសម្រួល",
"support":"ក្រុមជំនួយ",
"member":"សមាជិក"
}
},
"panel":{
"selectTicket":"ជ្រើសរើសសំបុត្ររបស់អ្នក",
"selectRole":"ជ្រើសរើសតួនាទីរបស់អ្នក",
"selectOption":"ជ្រើសរើសជម្រើសរបស់អ្នក",
"selectPriorityLevel":"ជ្រើសរើសកម្រិតអាទិភាព"
},
"priorities":{
"urgent":"បន្ទាន់ខ្លាំង",
"veryHigh":"ខ្ពស់ណាស់",
"high":"ខ្ពស់",
"normal":"ធម្មតា",
"low":"ទាប",
"veryLow":"ទាបណាស់",
"none":"គ្មាន"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["HanumeshGupta"],
"lastedited":"19/06/2025",
"otversion":"v4.2.0",
"translators":["HanumeshGupta","ChatGPT"],
"lastedited":"25/05/2026",
"language":"Korean",
"automated":true
},
@@ -31,6 +31,14 @@
"stringContains":"이 문자열은 {0}을(를) 포함해야 합니다!",
"stringChoices":"이 문자열은 다음 값 중 하나여야 합니다: {0}!",
"stringRegex":"이 문자열은 유효하지 않습니다!",
"stringInvertedContains":"이 문자열에는 {0}을(를) 포함할 수 없습니다!",
"stringLowercase":"이 문자열은 소문자로만 작성되어야 합니다!",
"stringUppercase":"이 문자열은 대문자로만 작성되어야 합니다!",
"stringSpecialCharacters":"이 문자열에는 특수 문자를 포함할 수 없습니다! (a-z, 0-9 및 공백만 허용)",
"stringNoSpaces":"이 문자열에는 공백을 포함할 수 없습니다!",
"stringCapitalWord":"이 문자열의 각 단어는 대문자로 시작하는 것이 좋습니다!",
"stringCapitalSentence":"이 문자열의 일부 문장이 대문자로 시작하지 않는 것 같습니다!",
"stringPunctuation":"이 문자열의 문장이 문장 부호로 끝나지 않는 것 같습니다!",
"numberTooShort":"이 숫자는 {0}자 이상이어야 합니다!",
"numberTooLong":"이 숫자는 {0}자 이하여야 합니다!",
@@ -48,6 +56,8 @@
"numberNegative":"이 숫자는 음수일 수 없습니다!",
"numberPositive":"이 숫자는 양수일 수 없습니다!",
"numberZero":"이 숫자는 0일 수 없습니다!",
"numberNan":"이 숫자는 NaN(Not A Number)이 될 수 없습니다!",
"numberInvertedContains":"이 숫자에는 {0}을(를) 포함할 수 없습니다!",
"booleanTrue":"이 불리언은 참일 수 없습니다!",
"booleanFalse":"이 불리언은 거짓일 수 없습니다!",
@@ -89,7 +99,8 @@
"invalidButton":"이 버튼은 최소한 {0} 또는 {1}을(를) 가지고 있어야 합니다!",
"unusedOption":"옵션 {0}은(는) 어디에서도 사용되지 않습니다!",
"unusedQuestion":"질문 {0}은(는) 어디에서도 사용되지 않습니다!",
"dropdownOption": "드롭다운이 활성화된 패널은 'ticket' 유형의 옵션만 포함할 수 있습니다!"
"dropdownOption":"드롭다운이 있는 패널에는 'ticket', 'role' 또는 'sub-panel' 유형의 옵션만 포함할 수 있습니다.",
"customInvalidVersion":"구성 파일에 지정된 버전이 일치하지 않습니다! 구성 파일을 최신 버전으로 업데이트했는지 확인하세요!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"텍스트 명령어 보기",
"helpPage":"페이지 {0}",
"withReason":"이유와 함께",
"withoutTranscript": "기록 없이"
"withoutTranscript":"기록 없이",
"blacklistAdd":"사용자 블랙리스트 추가",
"blacklistRemove":"사용자 해제"
},
"titles":{
"created":"티켓 생성됨",
@@ -132,6 +145,7 @@
"blacklistAddDm":"블랙리스트에 추가됨",
"blacklistRemoveDm":"블랙리스트에서 제거됨",
"clear":"티켓 삭제됨",
"clearTickets":"티켓 초기화",
"roles":"역할 업데이트됨",
"autoclose":"티켓 자동 닫힘",
@@ -139,7 +153,13 @@
"autocloseDisabled":"자동 닫기 비활성화됨",
"autodelete":"티켓 자동 삭제됨",
"autodeleteEnabled":"자동 삭제 활성화됨",
"autodeleteDisabled": "자동 삭제 비활성화됨"
"autodeleteDisabled":"자동 삭제 비활성화됨",
"topicSet":"주제가 변경됨",
"prioritySet":"우선순위 변경됨",
"priorityGet":"티켓 우선순위",
"transfer":"티켓이 전송됨",
"transcripts":"전사 기록"
},
"descriptions":{
"create":"티켓이 생성되었습니다. 아래 버튼을 클릭하여 접근하세요!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"동시에 {0}개의 티켓만 생성할 수 있습니다!",
"ticketMessageAutoclose":"이 티켓은 {0}시간 동안 비활성 상태일 경우 자동으로 닫힙니다!",
"ticketMessageAutodelete":"이 티켓은 {0}일 동안 비활성 상태일 경우 자동으로 삭제됩니다!",
"panelReady": "아래에서 패널을 찾을 수 있습니다!\n이 메시지는 이제 삭제할 수 있습니다!"
"panelReady":"패널은 다음 메시지에서 확인할 수 있습니다!\n이 메시지는 삭제해도 됩니다!",
"topicSet":"채널 주제가 {0}에 의해 성공적으로 변경되었습니다!",
"prioritySet":"티켓 우선순위가 {1}에 의해 {0}(으)로 성공적으로 변경되었습니다!",
"priorityGet":"이 티켓의 현재 우선순위는 {0}입니다.",
"transfer":"티켓 소유권이 {2}에 의해 {0}에서 {1}(으)로 성공적으로 전송되었습니다!"
},
"modal":{
"closePlaceholder":"이 티켓을 닫은 이유는 무엇인가요?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0}이(가) {1}에 의해 블랙리스트에서 제거되었습니다!",
"blacklistAddDm":"당신은 우리 서버에서 블랙리스트에 추가되었습니다!\n이제부터 티켓을 생성할 수 없습니다!",
"blacklistRemoveDm":"당신은 우리 서버에서 블랙리스트에서 제거되었습니다!\n이제 티켓을 생성할 수 있습니다!",
"clearLog": "{0}개의 티켓이 {1}에 의해 삭제되었습니다!"
"clearLog":"{0}개의 티켓이 {1}에 의해 삭제되었습니다!",
"transferLog":"이 티켓의 소유권이 {2}에 의해 {0}에서 {1}(으)로 전송되었습니다!",
"transferDm":"귀하의 티켓 소유권이 서버에서 {0}에서 {1}(으)로 전송되었습니다!",
"prioritySetLog":"이 티켓의 우선순위가 {1}에 의해 {0}(으)로 변경되었습니다!",
"prioritySetDm":"귀하의 티켓 우선순위가 서버에서 {0}(으)로 변경되었습니다!",
"roleUpdateLog":"{0}님이 자신의 역할을 업데이트했습니다!",
"roleUpdateDm":"서버에서 귀하의 역할이 업데이트되었습니다!",
"topicSetLog":"이 티켓의 우선순위가 {1}에 의해 {0}으로 설정되었습니다.",
"topicSetDm":"귀하의 티켓 우선순위가 {0}으로 설정되었습니다."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"다시 시도",
"continue":"기록 없이 삭제",
"backup":"백업 기록 생성",
"error": "기록 생성 중 오류가 발생했습니다.\n어떻게 하시겠습니까?\n\n아래 버튼 중 하나를 클릭할 때까지 이 티켓은 삭제되지 않습니다."
"error":"기록 생성 중 오류가 발생했습니다.\n어떻게 하시겠습니까?\n\n아래 버튼 중 하나를 클릭할 때까지 이 티켓은 삭제되지 않습니다.",
"title":"기록 오류",
"noHistory":"이 사용자는 아직 전사 기록이 없습니다.",
"historyNotSupported":"전사 기록은 현재 HTML Transcripts에서만 지원됩니다.\n텍스트 전사 기록은 향후 버전에서 제공될 예정입니다."
},
"text":{
"messagesTitle":"메시지",
"embedTitle":"EMBED",
"fileTitle":"파일",
"fieldsTitle":"필드",
"reactionsTitle":"반응",
"statsTitle":"통계",
"emptyContent":"<내용 없음>",
"noTitle":"<제목 없음>",
"noDesc":"<설명 없음>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"알 수 없는 패널",
"notInGuild":"서버에 없음",
"channelRename":"채널 이름 변경 불가",
"busy": "티켓 사용 중"
"channelCategory":"카테고리 변경 불가",
"busy":"티켓 사용 중",
"permissionError":"권한 오류"
},
"descriptions":{
"askForInfo":"더 많은 정보를 원하시면 봇 소유자에게 문의하세요!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"현재 채널은 유효한 티켓이 아닙니다! 이전 Open Ticket 버전의 티켓일 수 있습니다!",
"notInGuild":"이 {0}은(는) DM에서 작동하지 않습니다! 서버에서 다시 시도하세요!",
"channelRename":"디스코드 속도 제한으로 인해 현재 채널 이름을 변경할 수 없습니다. 봇이 재시작되지 않으면 10분 내에 자동으로 변경됩니다.",
"channelCategory":"Discord 속도 제한으로 인해 채널 카테고리를 즉시 변경할 수 없습니다. 봇이 온라인 상태를 유지하면 10분 이내에 자동으로 변경됩니다.",
"channelRenameSource":"오류 원인: {0}",
"busy": "이 {0}을(를) 사용할 수 없습니다!\n티켓이 현재 봇에 의해 처리 중입니다.\n\n몇 초 후에 다시 시도하세요!"
"busy":"이 {0}을(를) 사용할 수 없습니다!\n티켓이 현재 봇에 의해 처리 중입니다.\n\n몇 초 후에 다시 시도하세요!",
"closeBeforeMessage":"사용자가 메시지를 보내기 전에는 이 티켓을 닫거나 삭제할 수 없습니다.",
"closeBeforeAdminMessage":"티켓 관리자 또는 지원 팀원이 메시지를 보내기 전에는 이 티켓을 닫거나 삭제할 수 없습니다.",
"unableToCreateTicket":"티켓을 생성할 수 없습니다.",
"messageMissing":"상호작용 메시지를 찾을 수 없습니다. 대신 `{0}` 명령을 사용하세요.",
"stateExpired":"이 상호작용은 더 이상 유효하지 않거나 만료되었습니다. 대신 `{0}` 명령을 사용하세요. Open Ticket의 주요 업데이트 이후 이 오류는 정상입니다.",
"panelStateExpired":"이 패널은 더 이상 유효하지 않거나 만료되었습니다. 문제를 해결하려면 `{0}`을 사용하여 새 패널을 생성하세요. Open Ticket의 주요 업데이트 이후 이 오류는 정상입니다."
},
"optionInvalidReasons":{
"stringRegex":"값이 패턴과 일치하지 않습니다!",
@@ -331,7 +388,6 @@
"added":"추가됨",
"removed":"제거됨",
"filter":"필터",
"claimedBy": "{0}이(가) 가져감",
"method":"방법",
"type":"유형",
"blacklisted":"블랙리스트됨",
@@ -343,6 +399,8 @@
"syntax":"구문",
"originalName":"원래 이름",
"newName":"새 이름",
"originalCategory":"원래 카테고리",
"newCategory":"새 카테고리",
"until":"까지",
"validOptions":"유효한 옵션",
"validPanels":"유효한 패널",
@@ -355,7 +413,29 @@
"status":"상태",
"claimed":"가져옴",
"pinned":"고정됨",
"creationDate": "생성 일자"
"creationDate":"생성 일자",
"noone":"없음",
"open":"열림",
"closed":"닫힘",
"priority":"우선순위",
"participants":"참가자",
"yes":"예",
"no":"아니오",
"accept":"수락",
"cancel":"취소",
"option":"옵션",
"topic":"주제",
"uptime":"시스템 가동 시간",
"messages":"메시지",
"embeds":"임베드",
"files":"파일",
"components":"컴포넌트",
"cooldown":"쿨다운",
"maxTickets":"최대 티켓 수",
"admins":"관리자",
"roles":"역할",
"size":"크기"
},
"lowercase":{
"text":"텍스트",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"이 패널을 편집 시 자동으로 업데이트하시겠습니까?",
"ticket":"즉시 티켓을 생성하세요.",
"ticketId":"생성하려는 티켓의 식별자입니다.",
"ticketOtherUser":"다른 사용자에게 티켓 생성",
"close":"티켓을 닫으세요.",
"delete":"티켓을 삭제하세요.",
"deleteNoTranscript":"기록 없이 이 티켓을 삭제하세요.",
@@ -384,6 +465,7 @@
"unclaim":"티켓 가져가기를 취소하세요.",
"pin":"티켓을 고정하세요.",
"unpin":"티켓 고정을 해제하세요.",
"move":"티켓을 이동하세요.",
"moveId":"이동하려는 옵션의 식별자입니다.",
"rename":"티켓 이름을 변경하세요.",
@@ -392,6 +474,7 @@
"addUser":"추가할 사용자입니다.",
"remove":"티켓에서 사용자를 제거하세요.",
"removeUser":"제거할 사용자입니다.",
"blacklist":"티켓 블랙리스트를 관리하세요.",
"blacklistView":"현재 블랙리스트 목록을 확인하세요.",
"blacklistAdd":"사용자를 블랙리스트에 추가하세요.",
@@ -405,6 +488,7 @@
"statsUserUser":"확인할 사용자입니다.",
"statsTicket":"서버 내 티켓의 통계를 확인하세요.",
"statsTicketTicket":"확인할 티켓입니다.",
"clear":"동시에 여러 티켓을 삭제하세요.",
"clearFilter":"티켓 삭제를 위한 필터입니다.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"고정 해제됨",
"autoclose":"자동 닫힘"
},
"autoclose":"티켓에서 자동 닫기를 관리하세요.",
"autocloseDisable":"이 티켓에서 자동 닫기를 비활성화하세요.",
"autocloseEnable":"이 티켓에서 자동 닫기를 활성화하세요.",
@@ -424,7 +509,21 @@
"autodelete":"티켓에서 자동 삭제를 관리하세요.",
"autodeleteDisable":"이 티켓에서 자동 삭제를 비활성화하세요.",
"autodeleteEnable":"이 티켓에서 자동 삭제를 활성화하세요.",
"autodeleteEnableTime": "이 티켓이 비활성 상태일 때 삭제할 시간(일 단위)입니다."
"autodeleteEnableTime":"이 티켓이 비활성 상태일 때 삭제할 시간(일 단위)입니다.",
"topic":"티켓 채널의 주제를 관리합니다.",
"topicSet":"티켓 채널의 주제를 설정합니다.",
"topicValue":"채널의 새 주제입니다.",
"topicList":"모든 티켓의 주제와 통계를 목록으로 가져옵니다.",
"priority":"티켓의 우선순위를 관리합니다.",
"prioritySet":"티켓의 우선순위를 설정합니다.",
"priorityValue":"채널의 우선순위입니다.",
"priorityGet":"티켓의 우선순위를 가져옵니다.",
"priorityList":"모든 티켓의 우선순위 상태를 목록으로 가져옵니다.",
"transfer":"티켓 소유권을 다른 사용자에게 전송합니다.",
"transferUser":"전송할 사용자입니다.",
"transcripts":"사용자의 티켓 전사 기록 보기",
"transcriptsUser":"조회할 사용자"
},
"helpMenu":{
"help":"사용 가능한 모든 명령어 목록을 확인하세요.",
@@ -452,7 +551,16 @@
"autocloseDisable":"이 티켓에서 자동 닫기를 비활성화하세요.",
"autocloseEnable":"이 티켓에서 자동 닫기를 활성화하세요.",
"autodeleteDisable":"이 티켓에서 자동 삭제를 비활성화하세요.",
"autodeleteEnable": "이 티켓에서 자동 삭제를 활성화하세요."
"autodeleteEnable":"이 티켓에서 자동 삭제를 활성화하세요.",
"categories":{
"general":"일반 명령어",
"basicTicket":"기본 티켓 명령어",
"advancedTicket":"고급 티켓 명령어",
"userTicket":"사용자 티켓 명령어",
"admin":"관리자 명령어",
"advanced":"고급 명령어",
"extra":"추가 명령어"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"시스템 통계",
"user":"사용자 통계",
"ticket":"티켓 통계",
"participants": "참여자"
"participants":"참여자",
"messages":"메시지"
},
"properties":{
"ticketsCreated":"생성된 티켓",
@@ -472,7 +581,48 @@
"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":"옵션을 선택하세요",
"selectPriorityLevel":"우선순위 수준 선택"
},
"priorities":{
"urgent":"긴급",
"veryHigh":"매우 높음",
"high":"높음",
"normal":"보통",
"low":"낮음",
"veryLow":"매우 낮음",
"none":"없음"
}
}
+181 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["HanumeshGupta"],
"lastedited":"19/06/2025",
"otversion":"v4.2.0",
"translators":["HanumeshGupta","ChatGPT"],
"lastedited":"25/05/2026",
"language":"Kurdish",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Ev nivîs divê {0} dihewîne!",
"stringChoices":"Ev nivîs tenê dikare yek ji van nirxan be: {0}!",
"stringRegex":"Ev nivîs nederbasdar e!",
"stringInvertedContains":"Ev rêze ne destûr e ku {0} tê de be!",
"stringLowercase":"Ev rêze tenê divê bi tîpên piçûk binivîse!",
"stringUppercase":"Ev rêze tenê divê bi tîpên mezin binivîse!",
"stringSpecialCharacters":"Ev rêze ne destûr e ku tîpên taybetî tê de be! (tenê a-z, 0-9 û boşî)",
"stringNoSpaces":"Ev rêze ne destûr e ku boşî tê de be!",
"stringCapitalWord":"Pêşniyar e ku her peyv li vir bi tîpa mezin dest pê bike!",
"stringCapitalSentence":"Wekî xuya dike hin cûmeyên ev rêze bi tîpa mezin dest pê nakin!",
"stringPunctuation":"Wekî xuya dike cûmeya ev rêze bi nişana xwerû dawi nakin!",
"numberTooShort":"Ev hejmar nikare ji {0} reqeman kurtir be!",
"numberTooLong":"Ev hejmar nikare ji {0} reqeman dirêjtir be!",
@@ -48,6 +56,8 @@
"numberNegative":"Ev hejmar nikare neyînî be!",
"numberPositive":"Ev hejmar nikare erênî be!",
"numberZero":"Ev hejmar nikare sifir be!",
"numberNan":"Ev hejmar nikare NaN (Not A Number) be!",
"numberInvertedContains":"Ev hejmar ne destûr e ku {0} tê de be!",
"booleanTrue":"Ev boolean nikare rast be!",
"booleanFalse":"Ev boolean nikare çewt be!",
@@ -69,6 +79,19 @@
"emojiCustom":"Ev emojî nikare emojiya xwerû ya discordê be!",
"emojiInvalid":"Ev emojî nederbasdar e!",
"urlInvalid":"Ev URL nederbasdar e!",
"urlInvalidHttp":"Ev URL tenê dikare protokola https:// bikar bîne!",
"urlInvalidProtocol":"Ev URL tenê dikare protokolên http:// û https:// bikar bîne!",
"urlInvalidHostname":"Ev URL hostname-eke qebûl nekirî heye!",
"urlInvalidExtension":"Ev URL pêvekî nederbasdar heye! Di navbera vanan hilbijêre: {0}!",
"urlInvalidPath":"Ev URL rêgeheke nederbasdar heye!",
"idNotUnique":"Ev ID taybetî nîne, ji kerema xwe ID-eke din bikar bîne!",
"idNonExistent":"ID {0} tune ye!",
"invalidType":"Ev taybetmendî divê ji celebê: {0} be!",
"propertyMissing":"Taybetmendiya {0} ji vê objekê têk çûye!",
"propertyOptional":"Taybetmendiya {0} li vê objekê hêwce nîne!",
"objectDisabled":"Ev objek hate girtin, bi karanîna {0} veke!",
"nullInvalid":"Ev taybetmendî nikare null be!",
"switchInvalidType":"Ev divê yek ji van tîpan be: {0}!",
"objectSwitchInvalid":"Ev objeyê divê yek ji van tîpan be: {0}!",
@@ -76,7 +99,8 @@
"invalidButton":"Ev bişkok divê bi qasî {0} an {1} hebe!",
"unusedOption":"Vebijarka {0} li ku derê nayê bikar anîn!",
"unusedQuestion":"Pirsiyara {0} li ku derê nayê bikar anîn!",
"dropdownOption": "Panelê ku bi dropdownê çalak e tenê dikare vebijarkên ji tîpa 'ticket' dihewîne!"
"dropdownOption":"Panela ku drop-down heye tenê dikare vebijêrkên celebên 'ticket', 'role' an 'sub-panel' hebe.",
"customInvalidVersion":"Wersiyona ku di configê te de hate qeyd kirin ne hevrû ye! Pêwîste ku configê xwe bi dawîna nûvekirî nûve bikin!"
}
},
"actions":{
@@ -94,7 +118,9 @@
"helpSwitchText":"Fermana Nivîsê Bibînin",
"helpPage":"Rûpel {0}",
"withReason":"Bi Sedem",
"withoutTranscript": "Bê Transcript"
"withoutTranscript":"Bê Transcript",
"blacklistAdd":"Bikarhênerê Lîsteya Reş Zêde Bike",
"blacklistRemove":"Bikarhêner Azad Bike"
},
"titles":{
"created":"Tiket Hate Afirandin",
@@ -119,6 +145,7 @@
"blacklistAddDm":"Tê Qedexekirin",
"blacklistRemoveDm":"Ji Qedexeyê Hate Derxistin",
"clear":"Tiketên Hate Jêkirin",
"clearTickets":"Pak Kirina Tickets",
"roles":"Rolên Hate Nûvekirin",
"autoclose":"Tiket Xweber Hate Girtin",
@@ -126,7 +153,13 @@
"autocloseDisabled":"Xweber Girtin Hate Seqetkirin",
"autodelete":"Tiket Xweber Hate Jêkirin",
"autodeleteEnabled":"Xweber Jêkirin Hate Çalakirin",
"autodeleteDisabled": "Xweber Jêkirin Hate Seqetkirin"
"autodeleteDisabled":"Xweber Jêkirin Hate Seqetkirin",
"topicSet":"Mijar Guherî",
"prioritySet":"Pêşî Guherî",
"priorityGet":"Pêşîya Ticket",
"transfer":"Ticket Veguhastin",
"transcripts":"Dîroka Transkriptan"
},
"descriptions":{
"create":"Tiketa we hate afirandin. Ji bo têketinê bişkoka jêrîn bikar bînin!",
@@ -167,7 +200,12 @@
"ticketMessageLimit":"Hûn tenê dikarin {0} tiket(an) di heman demê de biafirînin!",
"ticketMessageAutoclose":"Ev tiket dê were girtin dema ji bo {0}h bêkar be!",
"ticketMessageAutodelete":"Ev tiket dê were jêkirin dema ji bo {0} roj bêkar be!",
"panelReady": "Hûn dikarin panelê li jêr bibînin!\nNiha ev peyam dikare were jêbirin!"
"panelReady":"Panel li peyamê piştgirê de amade ye!\nEv peyam niha dikare jê birin!",
"topicSet":"Mijara kanala bi serfirazî ji {0} hate guhertin!",
"prioritySet":"Pêşîya ticket bi serfirazî hate guhertin bo {0} ji {1}!",
"priorityGet":"Pêşîya niha ya vê ticketê {0} e.",
"transfer":"Mulkê ticketê bi serfirazî ji {0} veguherîye bo {1} ji {2}!"
},
"modal":{
"closePlaceholder":"Çima te vê tiketê girt?",
@@ -207,7 +245,16 @@
"blacklistRemoveLog":"{0} ji aliyê {1} ve hate berdan ji qedexeyê!",
"blacklistAddDm":"Hûn di servera me de hate qedexekirin!\nJi niha û pê ve, hûn nikarin tiketek biafirînin!",
"blacklistRemoveDm":"Hûn ji qedexeya servera me hate berdan!\nNiha hûn dikarin tiketan biafirînin!",
"clearLog": "{0} tiket ji aliyê {1} ve hatin jêkirin!"
"clearLog":"{0} tiket ji aliyê {1} ve hatin jêkirin!",
"transferLog":"Mulkê vê ticketê ji {0} bo {1} ji {2} veguherîye!",
"transferDm":"Mulkê ticketê te di serverê me de ji {0} bo {1} veguherîye!",
"prioritySetLog":"Pêşîya vê ticketê ji {1} bo {0} hate guhertin!",
"prioritySetDm":"Pêşîya ticketê te di serverê me de hate guhertin bo {0}!",
"roleUpdateLog":"{0} rolên xwe nûve kir!",
"roleUpdateDm":"Rolên te di serverê me de nûve kirin!",
"topicSetLog":"Pêşengiya vê ticketê ji hêla {1} ve wek {0} hate danîn.",
"topicSetDm":"Pêşengiya ticketê te wek {0} hate danîn."
}
},
"transcripts":{
@@ -228,7 +275,21 @@
"retry":"Dîsa Biceribîne",
"continue":"Bê Transcript Jê Bike",
"backup":"Transcripta Backupê Afirîne",
"error": "Tiştek çewt çû dema ku transcript hate afirandin.\nHûn çi dixwazin bikin?\n\nEv tiket dê neyê jêkirin heta ku hûn yek ji van bişkokan bikar bînin."
"error":"Tiştek çewt çû dema ku transcript hate afirandin.\nHûn çi dixwazin bikin?\n\nEv tiket dê neyê jêkirin heta ku hûn yek ji van bişkokan bikar bînin.",
"title":"Xeletiya Transkriptê",
"noHistory":"Ev bikarhêner hêj tu transkriptên tune ye.",
"historyNotSupported":"Dîroka transkriptan niha tenê bi HTML Transcripts tê piştgirî kirin.\nDîroka transkriptên nivîsê di guhertoyên pêşerojê de dê hebin."
},
"text":{
"messagesTitle":"PEYAMAN",
"embedTitle":"EMBED",
"fileTitle":"PEL",
"fieldsTitle":"QADA",
"reactionsTitle":"BERDAWANÎ",
"statsTitle":"STATÎSTÎK",
"emptyContent":"<nawtê vala ye>",
"noTitle":"<bê-sernav>",
"noDesc":"<bê-danîştin>"
}
},
"errors":{
@@ -244,7 +305,9 @@
"unknownPanel":"Panela Nenas",
"notInGuild":"Ne Di Serverê De",
"channelRename":"Nikare Qenalê Nav Lê Bike",
"busy": "Tiketê Şixul E"
"channelCategory":"Nekare Kategorî Biguherîne",
"busy":"Tiketê Şixul E",
"permissionError":"Xeletiya Destûrê"
},
"descriptions":{
"askForInfo":"Ji bo agahiyên zêdetir bi xwediyê vê botê re têkilî daynin!",
@@ -266,8 +329,15 @@
"deprecatedTicket":"Qenala niha tiketeke derbasdar nîne! Dibe ku ji versiyonek kevn a Open Ticketê be!",
"notInGuild":"Ev {0} di DM de naxebite! Ji kerema xwe dîsa di serverekê de biceribînin!",
"channelRename":"Ji ber sînorên discordê, niha ne mimkûn e ku bot qenalê nav lê bike. Qenal dê bixweber ji bo zêdetirî 10 deqîqan were nav lê kirin ger bot neyê nûvekirin.",
"channelCategory":"Ji ber sînorkirinên leza Discord, kategorîya kanalê nayê guhertin bi rastî. Heke bot online bimîne, di 10 deqîqan de wê bixweber were guhertin.",
"channelRenameSource":"Çavkaniya vê xetê: {0}",
"busy": "Nikare vê {0} bikar bîne!\nTiket niha ji aliyê botê ve tê pêvajokirin.\n\nJi kerema xwe di çend saniyeyan de dîsa biceribînin!"
"busy":"Nikare vê {0} bikar bîne!\nTiket niha ji aliyê botê ve tê pêvajokirin.\n\nJi kerema xwe di çend saniyeyan de dîsa biceribînin!",
"closeBeforeMessage":"Ev ticket nikare were girtin/jêbirin berî ku bikarhêner peyamê şandibe.",
"closeBeforeAdminMessage":"Ev ticket nikare were girtin/jêbirin berî ku adminê ticket an endamê piştgirî peyamê şandibe.",
"unableToCreateTicket":"Tu nikarî ticket çê bikî.",
"messageMissing":"Nikarî mesajê têkildarê peywendiyê bibîne. Li şûna wê fermanê `{0}` bikar bîne.",
"stateExpired":"Ev peywendî êdî ne derbasdar e an qediya ye. Li şûna wê fermanê `{0}` bikar bîne. Ev çewtî piştî nûvekirina mezin a Open Ticket normal e.",
"panelStateExpired":"Ev panel êdî ne derbasdar e an qediya ye. Ji bo çareserkirina pirsgirêkê panelê nû bi `{0}` biafirîne. Ev çewtî piştî nûvekirina mezin a Open Ticket normal e."
},
"optionInvalidReasons":{
"stringRegex":"Nirx li şablonê nagire!",
@@ -318,7 +388,6 @@
"added":"Hat Zêdekirin",
"removed":"Hat Jêbirin",
"filter":"Parzûn",
"claimedBy": "Hat Standin Ji Aliyê {0}",
"method":"Rêbaz",
"type":"Cure",
"blacklisted":"Qedexekirî",
@@ -330,6 +399,8 @@
"syntax":"Sîntaks",
"originalName":"Navê Orjînal",
"newName":"Navê Nû",
"originalCategory":"Kategoriya Bingehîn",
"newCategory":"Kategoriya Nû",
"until":"Heta",
"validOptions":"Vebijarkên Derbasdar",
"validPanels":"Panelên Derbasdar",
@@ -342,7 +413,29 @@
"status":"Rewş",
"claimed":"Hat Standin",
"pinned":"Hat Rêzkirin",
"creationDate": "Dema Afirandinê"
"creationDate":"Dema Afirandinê",
"noone":"Tu Kesî",
"open":"Vekirî",
"closed":"Girtî",
"priority":"Pêşî",
"participants":"Beşdar",
"yes":"Erê",
"no":"Na",
"accept":"Qebûl Bike",
"cancel":"Betal Bike",
"option":"Vebijêrk",
"topic":"Mijar",
"uptime":"Demjimêra Sistêmê",
"messages":"Peyaman",
"embeds":"Embedan",
"files":"Pelan",
"components":"Parçeyên",
"cooldown":"Sarmaze",
"maxTickets":"Herî Zêde Ticket",
"admins":"Adminan",
"roles":"Rolên",
"size":"Mezinahî"
},
"lowercase":{
"text":"nivîs",
@@ -362,6 +455,7 @@
"panelAutoUpdate":"Ma hûn dixwazin ev panel xweber were nûvekirin dema ku hate guhertin?",
"ticket":"Bilez tîketek çêbike.",
"ticketId":"Nasnameya tîketê ku hûn dixwazin çêbikin.",
"ticketOtherUser":"Ji bo bikarhênerek din ticket çêbike.",
"close":"Tîketek bigire.",
"delete":"Tîketek jê bike.",
"deleteNoTranscript":"Vê tîketê bêyî çêkirina transcriptê jê bike.",
@@ -371,6 +465,7 @@
"unclaim":"Tîketê ji bîr bike.",
"pin":"Tîketê rêz bike.",
"unpin":"Tîketê ji rêzê derxe.",
"move":"Tîketê biguherîne.",
"moveId":"Nasnameya vebijarkê ku hûn dixwazin biguherînin.",
"rename":"Tîketê nav lê bike.",
@@ -379,6 +474,7 @@
"addUser":"Bikarhênerê ku were zêdekirin.",
"remove":"Bikarhênerekê ji tîketê jê bike.",
"removeUser":"Bikarhênerê ku were jêbirin.",
"blacklist":"Qedexeyên tîketê birêvebirin.",
"blacklistView":"Lîsteya qedexeyên niha bibîne.",
"blacklistAdd":"Bikarhênerekê li qedexeyê zêde bike.",
@@ -392,6 +488,7 @@
"statsUserUser":"Bikarhênerê ku were dîtin.",
"statsTicket":"Statîstîkên tîketekê di serverê de bibîne.",
"statsTicketTicket":"Tîketê ku were dîtin.",
"clear":"Pir tîketên di heman demê de jê bike.",
"clearFilter":"Parzûna ji bo jêbirkirina tîketan.",
"clearFilters":{
@@ -404,6 +501,7 @@
"unpin":"Hat Ji Rêzê Kirin",
"autoclose":"Xweber Girtî"
},
"autoclose":"Xweber girtina tîketê birêvebirin.",
"autocloseDisable":"Xweber girtina vê tîketê seqet bike.",
"autocloseEnable":"Xweber girtina vê tîketê çalak bike.",
@@ -411,7 +509,21 @@
"autodelete":"Xweber jêbirkirina tîketê birêvebirin.",
"autodeleteDisable":"Xweber jêbirkirina vê tîketê seqet bike.",
"autodeleteEnable":"Xweber jêbirkirina vê tîketê çalak bike.",
"autodeleteEnableTime": "Hejmara rojan ku ev tîket divê bêkar be da ku were jêbirin."
"autodeleteEnableTime":"Hejmara rojan ku ev tîket divê bêkar be da ku were jêbirin.",
"topic":"Mijara kanala ticketê rêve bibin.",
"topicSet":"Mijara kanala ticketê danîn.",
"topicValue":"Mijara nû ya kanala.",
"topicList":"Lîsteya hemû ticketan bi mijar û statîstîkê wan bistînin.",
"priority":"Pêşîya ticketê rêve bibin.",
"prioritySet":"Pêşîya ticketê danîn.",
"priorityValue":"Pêşîya kanala.",
"priorityGet":"Pêşîya ticketê bistînin.",
"priorityList":"Lîsteya hemû ticketan bi rewşa pêşîyan bistînin.",
"transfer":"Mulkê ticketê ji yek bikarhêner bo yê din veguherîn.",
"transferUser":"Bikarhêner ku divê veguherîn.",
"transcripts":"Dîroka transkriptên ticketên bikarhêner bibîne.",
"transcriptsUser":"Bikarhênerê ku were nîşandan."
},
"helpMenu":{
"help":"Lîsteyê hemû fermanên berdest bistînin.",
@@ -439,7 +551,16 @@
"autocloseDisable":"Xweber girtina vê tîketê seqet bike.",
"autocloseEnable":"Xweber girtina vê tîketê çalak bike.",
"autodeleteDisable":"Xweber jêbirkirina vê tîketê seqet bike.",
"autodeleteEnable": "Xweber jêbirkirina vê tîketê çalak bike."
"autodeleteEnable":"Xweber jêbirkirina vê tîketê çalak bike.",
"categories":{
"general":"Fermanên Giştî",
"basicTicket":"Fermanên Bingehîn Ticket",
"advancedTicket":"Fermanên Pêşkeftî Ticket",
"userTicket":"Fermanên Ticket Bikarhêner",
"admin":"Fermanên Admin",
"advanced":"Fermanên Pêşkeftî",
"extra":"Fermanên Zêde"
}
},
"stats":{
"scopes":{
@@ -447,7 +568,8 @@
"system":"Statîstîkên Sîstemê",
"user":"Statîstîkên Bikarhêner",
"ticket":"Statîstîkên Tîketê",
"participants": "Beşdar"
"participants":"Beşdar",
"messages":"Peyaman"
},
"properties":{
"ticketsCreated":"Tîketên Afirandî",
@@ -459,7 +581,48 @@
"ticketsPinned":"Tîketên Hatine Rêzkirin",
"ticketsMoved":"Tîketên Hatine Guhertin",
"usersBlacklisted":"Bikarhênerên Qedexekirî",
"transcriptsCreated": "Transcriptên Afirandî"
}
"transcriptsCreated":"Transcriptên Afirandî",
"ticketsAutodeleted":"Ticketan Bi Xwe Jêbirin",
"ticketsTransferred":"Ticketan Veguhastin",
"ticketVolume":"Hejmara Ticketan",
"averageTickets":"Navîça Ticket/ Bikarhêner",
"currentTickets":"Ticketên Niha",
"age":"Temenê Ticketê",
"responseTime":"Demê Bersivdanê",
"resolutionTime":"Demê Çareserkirinê",
"createdOn":"Lêhatin Çêkirin",
"createdBy":"Çêker",
"closedOn":"Girtin",
"closedBy":"Girtî Ji",
"claimedOn":"Guhertin",
"claimedBy":"Guhertî Ji",
"pinnedOn":"Pin Kirin",
"pinnedBy":"Pin Kirî Ji",
"deletedOn":"Jêbirin",
"deletedBy":"Jêbirî Ji"
},
"roles":{
"developer":"Pêşkeftkar",
"serverOwner":"Xwedî Server",
"serverAdmin":"Admin Server",
"moderator":"Tîma Moderator",
"support":"Tîma Piştgirî",
"member":"Endam"
}
},
"panel":{
"selectTicket":"Ticketê xwe hilbijêrin",
"selectRole":"Rolê xwe hilbijêrin",
"selectOption":"Vebijêrka xwe hilbijêrin",
"selectPriorityLevel":"Asta pêşengiyê hilbijêre"
},
"priorities":{
"urgent":"Zû",
"veryHigh":"Pir Bilind",
"high":"Bilind",
"normal":"Normal",
"low":"Kêm",
"veryLow":"Pir Kêm",
"none":"Tiştekî Nîne"
}
}
+167 -17
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion": "v4.0.7",
"otversion":"v4.2.0",
"translators":["NoOneNook"],
"lastedited": "25/03/2025",
"lastedited":"25/05/2026",
"language":"Latvian",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Šim tekstam jāsatur {0}!",
"stringChoices":"Šis teksts var būt tikai viena no šīm vērtībām: {0}!",
"stringRegex":"Šis teksts ir nederīgs!",
"stringInvertedContains":"Šajā virknē nedrīkst būt {0}!",
"stringLowercase":"Šai virknei jābūt rakstītai tikai ar mazajiem burtiem!",
"stringUppercase":"Šai virknei jābūt rakstītai tikai ar lielajiem burtiem!",
"stringSpecialCharacters":"Šajā virknē nedrīkst būt speciālas rakstzīmes! (tikai a-z, 0-9 un atstarpe)",
"stringNoSpaces":"Šajā virknē nedrīkst būt atstarpes!",
"stringCapitalWord":"Ieteicams, lai katrs vārds šajā virknē sākas ar lielo burtu!",
"stringCapitalSentence":"Izskatās, ka daži teikumi šajā virknē nesākas ar lielo burtu!",
"stringPunctuation":"Izskatās, ka teikums šajā virknē nebeidzas ar pieturzīmi!",
"numberTooShort":"Šis skaitlis nedrīkst būt īsāks par {0} rakstzīmēm!",
"numberTooLong":"Šis skaitlis nedrīkst būt garāks par {0} rakstzīmēm!",
@@ -48,6 +56,8 @@
"numberNegative":"Šis skaitlis nedrīkst būt negatīvs!",
"numberPositive":"Šis skaitlis nedrīkst būt pozitīvs!",
"numberZero":"Šis skaitlis nedrīkst būt nulle!",
"numberNan":"Šis skaitlis nevar būt NaN (nav skaitlis)!",
"numberInvertedContains":"Šis skaitlis nedrīkst saturēt {0}!",
"booleanTrue":"Šis loģiskais mainīgais nedrīkst būt patiess!",
"booleanFalse":"Šis loģiskais mainīgais nedrīkst būt nepatiess!",
@@ -89,7 +99,8 @@
"invalidButton":"Šai pogai jābūt vismaz {0} vai {1}!",
"unusedOption":"Opcija {0} nekur netiek izmantota!",
"unusedQuestion":"Jautājums {0} nekur netiek izmantots!",
"dropdownOption": "Panelim ar iespējotu izvēlni var būt tikai 'ticket' tipa opcijas!"
"dropdownOption":"Panelis ar nolaižamo izvēlni var saturēt tikai šāda tipa opcijas: 'ticket', 'role' vai 'sub-panel'.",
"customInvalidVersion":"Konfigurācijā norādītā versija nesakrīt! Pārliecinieties, ka esat atjauninājis konfigurāciju uz jaunāko versiju!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Skatīt teksta komandas",
"helpPage":"Lapa {0}",
"withReason":"Ar iemeslu",
"withoutTranscript": "Bez transkripta"
"withoutTranscript":"Bez transkripta",
"blacklistAdd":"Pievienot lietotāju melnajam sarakstam",
"blacklistRemove":"Atbrīvot lietotāju"
},
"titles":{
"created":"Biļete izveidota",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Pievienots melnajam sarakstam",
"blacklistRemoveDm":"Noņemts no melnā saraksta",
"clear":"Biļetes izdzēstas",
"clearTickets":"Notīrīt biļetes",
"roles":"Lomas atjauninātas",
"autoclose":"Biļete automātiski aizvērta",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Automātiskā aizvēršana izslēgta",
"autodelete":"Biļete automātiski dzēsta",
"autodeleteEnabled":"Automātiskā dzēšana ieslēgta",
"autodeleteDisabled": "Automātiskā dzēšana izslēgta"
"autodeleteDisabled":"Automātiskā dzēšana izslēgta",
"topicSet":"Tēma mainīta",
"prioritySet":"Prioritāte mainīta",
"priorityGet":"Biļetes prioritāte",
"transfer":"Biļete pārsūtīta",
"transcripts":"Transkriptu vēsture"
},
"descriptions":{
"create":"Jūsu biļete ir izveidota. Noklikšķiniet uz pogas zemāk, lai tai piekļūtu!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Jūs varat izveidot tikai {0} biļeti(-es) vienlaikus!",
"ticketMessageAutoclose":"Šī biļete tiks automātiski aizvērta, ja būs neaktīva {0}h!",
"ticketMessageAutodelete":"Šī biļete tiks automātiski dzēsta, ja būs neaktīva {0} dienas!",
"panelReady": "Paneli var atrast zemāk!\nŠo ziņojumu tagad var dzēst!"
"panelReady":"Panelis ir pieejams nākamajā ziņojumā!\nŠo ziņojumu tagad var dzēst!",
"topicSet":"Kanāla tēmu veiksmīgi mainīja {0}!",
"prioritySet":"Biļetes prioritāte veiksmīgi mainīta uz {0} lietotāja {1} dēļ!",
"priorityGet":"Šīs biļetes pašreizējā prioritāte ir {0}.",
"transfer":"Biļetes īpašumtiesības veiksmīgi pārsūtītas no {0} uz {1} lietotāja {2} dēļ!"
},
"modal":{
"closePlaceholder":"Kāpēc jūs aizvērāt šo biļeti?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} tika noņemts no melnā saraksta no {1}!",
"blacklistAddDm":"Jūs esat pievienots melnajam sarakstam mūsu serverī!\nNo šī brīža jūs nevarat izveidot biļeti!",
"blacklistRemoveDm":"Jūs esat noņemts no melnā saraksta mūsu serverī!\nTagad jūs atkal varat izveidot biļetes!",
"clearLog": "{0} biļetes tika dzēstas no {1}!"
"clearLog":"{0} biļetes tika dzēstas no {1}!",
"transferLog":"Šīs biļetes īpašumtiesības tika pārsūtītas no {0} uz {1} lietotāja {2} dēļ!",
"transferDm":"Jūsu biļetes īpašumtiesības tika pārsūtītas no {0} uz {1} mūsu serverī!",
"prioritySetLog":"Šīs biļetes prioritāte tika mainīta uz {0} lietotāja {1} dēļ!",
"prioritySetDm":"Jūsu biļetes prioritāte tika mainīta uz {0} mūsu serverī!",
"roleUpdateLog":"{0} ir atjauninājis savas lomas!",
"roleUpdateDm":"Jūsu lomas mūsu serverī ir atjauninātas!",
"topicSetLog":"Šī biļete prioritāte tika iestatīta uz {0} no {1}.",
"topicSetDm":"Jūsu biļetes prioritāte tika iestatīta uz {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Mēģināt vēlreiz",
"continue":"Dzēst bez transkripta",
"backup":"Izveidot rezerves transkriptu",
"error": "Kaut kas nogāja greizi, mēģinot izveidot transkriptu.\nKo jūs vēlaties darīt?\n\nŠī biļete netiks dzēsta, kamēr jūs nenoklikšķināsiet uz vienas no šīm pogām."
"error":"Kaut kas nogāja greizi, mēģinot izveidot transkriptu.\nKo jūs vēlaties darīt?\n\nŠī biļete netiks dzēsta, kamēr jūs nenoklikšķināsiet uz vienas no šīm pogām.",
"title":"Transkripta kļūda",
"noHistory":"Šim lietotājam vēl nav transkriptu.",
"historyNotSupported":"Transkriptu vēsture pašlaik tiek atbalstīta tikai ar HTML Transcripts.\nTeksta transkriptu vēsture būs pieejama nākamajās versijās."
},
"text":{
"messagesTitle":"ZIŅOJUMI",
"embedTitle":"IEKĻAUŠANA",
"fileTitle":"FAILS",
"fieldsTitle":"LAUKI",
"reactionsTitle":"REAKCIJAS",
"statsTitle":"STATISTIKA",
"emptyContent":"<saturs ir tukšs>",
"noTitle":"<bez-virsraksta>",
"noDesc":"<bez-apraksta>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Nezināms panelis",
"notInGuild":"Nav serverī",
"channelRename":"Nevar pārdēvēt kanālu",
"busy": "Biļete ir aizņemta"
"channelCategory":"Nevar mainīt kategoriju",
"busy":"Biļete ir aizņemta",
"permissionError":"Atļauju kļūda"
},
"descriptions":{
"askForInfo":"Sazinieties ar šī bota īpašnieku, lai iegūtu plašāku informāciju!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Pašreizējais kanāls nav derīga biļete! Tas varētu būt biļete no vecas Open Ticket versijas!",
"notInGuild":"Šis {0} nedarbojas DM! Lūdzu, mēģiniet vēlreiz serverī!",
"channelRename":"Discord ierobežojumu dēļ bots pašlaik nevar pārdēvēt kanālu. Kanāls tiks automātiski pārdēvēts 10 minūšu laikā, ja bots netiks restartēts.",
"channelCategory":"Discord ātruma ierobežojumu dēļ kanāla kategoriju nevar uzreiz mainīt. Tā tiks automātiski mainīta 10 minūšu laikā, ja bots paliks tiešsaistē.",
"channelRenameSource":"Šīs kļūdas avots ir: {0}",
"busy": "Nevar izmantot šo {0}!\nBiļete pašlaik tiek apstrādāta ar botu.\n\nLūdzu, mēģiniet vēlreiz pēc dažām sekundēm!"
"busy":"Nevar izmantot šo {0}!\nBiļete pašlaik tiek apstrādāta ar botu.\n\nLūdzu, mēģiniet vēlreiz pēc dažām sekundēm!",
"closeBeforeMessage":"Šo biļeti nevar aizvērt/dzēst, pirms lietotājs ir nosūtījis ziņojumu.",
"closeBeforeAdminMessage":"Šo biļeti nevar aizvērt/dzēst, pirms biļetes administrators vai atbalsta dalībnieks ir nosūtījis ziņojumu.",
"unableToCreateTicket":"Jūs nevarat izveidot biļeti.",
"messageMissing":"Neizdevās atrast mijiedarbības ziņojumu. Tā vietā izmantojiet komandu `{0}`.",
"stateExpired":"Šī mijiedarbība vairs nav derīga vai ir beigusies. Tā vietā izmantojiet komandu `{0}`. Tas ir normāli pēc lieliem Open Ticket atjauninājumiem.",
"panelStateExpired":"Šis panelis vairs nav derīgs vai ir beidzies. Izveidojiet jaunu paneli, izmantojot `{0}`, lai atrisinātu problēmu. Tas ir normāli pēc lieliem Open Ticket atjauninājumiem."
},
"optionInvalidReasons":{
"stringRegex":"Vērtība neatbilst šablonam!",
@@ -331,7 +388,6 @@
"added":"Pievienots",
"removed":"Noņemts",
"filter":"Filtrs",
"claimedBy": "Pieprasījis {0}",
"method":"Metode",
"type":"Tips",
"blacklisted":"Melnajā sarakstā",
@@ -343,6 +399,8 @@
"syntax":"Sintakse",
"originalName":"Sākotnējais nosaukums",
"newName":"Jaunais nosaukums",
"originalCategory":"Sākotnējā kategorija",
"newCategory":"Jaunā kategorija",
"until":"Līdz",
"validOptions":"Derīgas opcijas",
"validPanels":"Derīgi paneļi",
@@ -355,7 +413,29 @@
"status":"Statuss",
"claimed":"Pieprasīts",
"pinned":"Piesprausts",
"creationDate": "Izveidošanas datums"
"creationDate":"Izveidošanas datums",
"noone":"Neviens",
"open":"Atvērta",
"closed":"Slēgta",
"priority":"Prioritāte",
"participants":"Dalībnieki",
"yes":"Jā",
"no":"Nē",
"accept":"Pieņemt",
"cancel":"Atcelt",
"option":"Opcija",
"topic":"Tēma",
"uptime":"Sistēmas darbības laiks",
"messages":"Ziņojumi",
"embeds":"Iekļāvumi",
"files":"Faili",
"components":"Komponenti",
"cooldown":"Atdzišana",
"maxTickets":"Maks. biļetes",
"admins":"Administratori",
"roles":"Lomas",
"size":"Izmērs"
},
"lowercase":{
"text":"teksts",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Vai vēlaties, lai šis panelis automātiski atjauninātos, kad tas tiek rediģēts?",
"ticket":"Nekavējoties izveidojiet biļeti.",
"ticketId":"Biļetes identifikators, kuru vēlaties izveidot.",
"ticketOtherUser":"Izveidot biļeti citam lietotājam.",
"close":"Aizveriet biļeti.",
"delete":"Dzēsiet biļeti.",
"deleteNoTranscript":"Dzēsiet šo biļeti, neizveidojot transkriptu.",
@@ -384,6 +465,7 @@
"unclaim":"Atceliet biļetes pieprasījumu.",
"pin":"Piespraudiet biļeti.",
"unpin":"Atspraudiet biļeti.",
"move":"Pārvietojiet biļeti.",
"moveId":"Opcijas identifikators, uz kuru vēlaties pārvietot.",
"rename":"Pārdēvējiet biļeti.",
@@ -392,6 +474,7 @@
"addUser":"Lietotājs, kuru pievienot.",
"remove":"Noņemiet lietotāju no biļetes.",
"removeUser":"Lietotājs, kuru noņemt.",
"blacklist":"Pārvaldiet biļešu melno sarakstu.",
"blacklistView":"Skatiet pašreizējā melnā saraksta sarakstu.",
"blacklistAdd":"Pievienojiet lietotāju melnajam sarakstam.",
@@ -405,6 +488,7 @@
"statsUserUser":"Lietotājs, kuru skatīt.",
"statsTicket":"Skatiet biļetes statistiku serverī.",
"statsTicketTicket":"Biļete, kuru skatīt.",
"clear":"Dzēsiet vairākas biļetes vienlaikus.",
"clearFilter":"Filtrs biļešu dzēšanai.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Atspraustas",
"autoclose":"Automātiski aizvērtas"
},
"autoclose":"Pārvaldiet automātisko aizvēršanu biļetē.",
"autocloseDisable":"Atspējojiet automātisko aizvēršanu šai biļetei.",
"autocloseEnable":"Ieslēdziet automātisko aizvēršanu šai biļetei.",
@@ -424,7 +509,21 @@
"autodelete":"Pārvaldiet automātisko dzēšanu biļetē.",
"autodeleteDisable":"Atspējojiet automātisko dzēšanu šai biļetei.",
"autodeleteEnable":"Ieslēdziet automātisko dzēšanu šai biļetei.",
"autodeleteEnableTime": "Dienu skaits, cik ilgi biļetei jābūt neaktīvai, lai to dzēstu."
"autodeleteEnableTime":"Dienu skaits, cik ilgi biļetei jābūt neaktīvai, lai to dzēstu.",
"topic":"Pārvaldīt biļetes kanāla tēmu.",
"topicSet":"Iestatīt biļetes kanāla tēmu.",
"topicValue":"Jaunā kanāla tēma.",
"topicList":"Iegūt visu biļešu sarakstu ar to tēmām un statistiku.",
"priority":"Pārvaldīt biļetes prioritāti.",
"prioritySet":"Iestatīt biļetes prioritāti.",
"priorityValue":"Kanāla prioritāte.",
"priorityGet":"Iegūt biļetes prioritāti.",
"priorityList":"Iegūt visu biļešu sarakstu ar to prioritātes statusu.",
"transfer":"Pārsūtīt biļetes īpašumtiesības no viena lietotāja citam.",
"transferUser":"Lietotājs, kuram pārsūtīt.",
"transcripts":"Skatīt lietotāja biļešu transkriptu vēsturi.",
"transcriptsUser":"Lietotājs apskatei."
},
"helpMenu":{
"help":"Iegūstiet visu pieejamo komandu sarakstu.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Atspējojiet automātisko aizvēršanu šai biļetei.",
"autocloseEnable":"Ieslēdziet automātisko aizvēršanu šai biļetei.",
"autodeleteDisable":"Atspējojiet automātisko dzēšanu šai biļetei.",
"autodeleteEnable": "Ieslēdziet automātisko dzēšanu šai biļetei."
"autodeleteEnable":"Ieslēdziet automātisko dzēšanu šai biļetei.",
"categories":{
"general":"Vispārīgās komandas",
"basicTicket":"Pamata biļešu komandas",
"advancedTicket":"Paplašinātās biļešu komandas",
"userTicket":"Lietotāja biļešu komandas",
"admin":"Administratora komandas",
"advanced":"Paplašinātās komandas",
"extra":"Papildu komandas"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Sistēmas statistika",
"user":"Lietotāja statistika",
"ticket":"Biļešu statistika",
"participants": "Dalībnieki"
"participants":"Dalībnieki",
"messages":"Ziņojumi"
},
"properties":{
"ticketsCreated":"Izveidotās biļetes",
@@ -472,7 +581,48 @@
"ticketsPinned":"Piespraustās biļetes",
"ticketsMoved":"Pārvietotās biļetes",
"usersBlacklisted":"Melnajā sarakstā esošie lietotāji",
"transcriptsCreated": "Izveidotie transkripti"
}
"transcriptsCreated":"Izveidotie transkripti",
"ticketsAutodeleted":"Biļetes automātiski dzēstas",
"ticketsTransferred":"Biļetes pārsūtītas",
"ticketVolume":"Biļešu apjoms",
"averageTickets":"Vidēji biļetes/lietotājs",
"currentTickets":"Pašreizējās biļetes",
"age":"Biļetes vecums",
"responseTime":"Atbildes laiks",
"resolutionTime":"Atrisināšanas laiks",
"createdOn":"Izveidota",
"createdBy":"Izveidoja",
"closedOn":"Aizvērta",
"closedBy":"Aizvēra",
"claimedOn":"Pieprasīta",
"claimedBy":"Pieprasīja",
"pinnedOn":"Piesprausta",
"pinnedBy":"Piesprauda",
"deletedOn":"Dzēsta",
"deletedBy":"Dzēsa"
},
"roles":{
"developer":"Izstrādātājs",
"serverOwner":"Servera īpašnieks",
"serverAdmin":"Servera administrators",
"moderator":"Moderatoru komanda",
"support":"Atbalsta komanda",
"member":"Dalībnieks"
}
},
"panel":{
"selectTicket":"Izvēlieties savu biļeti",
"selectRole":"Izvēlieties savu lomu",
"selectOption":"Izvēlieties savu opciju",
"selectPriorityLevel":"Izvēlieties prioritātes līmeni"
},
"priorities":{
"urgent":"Steidzama",
"veryHigh":"Ļoti augsta",
"high":"Augsta",
"normal":"Normāla",
"low":"Zema",
"veryLow":"Ļoti zema",
"none":"Nav"
}
}
+167 -17
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["TsgIndrius"],
"lastedited":"26/01/2025",
"lastedited":"25/05/2026",
"language":"Lithuanian",
"automated":false
},
@@ -31,6 +31,14 @@
"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ų!",
@@ -48,6 +56,8 @@
"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!",
@@ -89,7 +99,8 @@
"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":"Skydelis su išskleidžiamuoju meniu gali turėti tik šių tipų parinktis: 'ticket', 'role' arba 'sub-panel'.",
"customInvalidVersion":"Jūsų nustatymuose nurodyta versija nesutampa! Įsitikinkite, kad atnaujinote nustatymus į naujausią versiją.!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Peržiūrėti Teksto Komandas ",
"helpPage":"Puslapis {0}",
"withReason":"Su Priežastimi",
"withoutTranscript":"Be Išrašo"
"withoutTranscript":"Be Išrašo",
"blacklistAdd":"Įtraukti Vartotoją į Juodąjį Sąrašą",
"blacklistRemove":"Atlaisvinti Vartotoją"
},
"titles":{
"created":"Bilietas Sukurtas",
@@ -132,6 +145,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 +153,13 @@
"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",
"transcripts":"Transkriptų Istorija"
},
"descriptions":{
"create":"Jūsų bilietas sukurtas. Spustelėkite toliau esantį mygtuką, kad jį pasiektumėte!",
@@ -180,7 +200,12 @@
"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?",
@@ -220,7 +245,16 @@
"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!",
"topicSetLog":"Šio bilieto prioritetas buvo nustatytas į {0} naudotojo {1}.",
"topicSetDm":"Jūsų bilieto prioritetas buvo nustatytas į {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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",
"noHistory":"Šis vartotojas dar neturi jokių transkriptų.",
"historyNotSupported":"Transkriptų istorija šiuo metu palaikoma tik su HTML Transcripts.\nTekstinių transkriptų istorija bus prieinama ateities versijose."
},
"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 +305,9 @@
"unknownPanel":"Nepažystama skydelis",
"notInGuild":"Nera serveryje",
"channelRename":"Negaliu pervadyti kanalo",
"busy":"Bilietas yra užimtas"
"channelCategory":"Nepavyko Pakeisti Kategorijos",
"busy":"Bilietas yra užimtas",
"permissionError":"Leidimų klaida"
},
"descriptions":{
"askForInfo":"Susisiek su savininku šito bilieto del daigiau informacijos!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Dabartinis kanalas negalioja! Tai galėjo būti bilietas iš senos Open Ticket versijos!",
"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.",
"channelCategory":"Dėl Discord dažnio apribojimų kanalo kategorijos nepavyko pakeisti iš karto. Ji bus automatiškai pakeista per 10 minučių, jei botas liks prisijungęs.",
"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.",
"messageMissing":"Nepavyko rasti sąveikos žinutės. Vietoje to naudokite komandą `{0}`.",
"stateExpired":"Ši sąveika nebegalioja arba jos galiojimas baigėsi. Vietoje to naudokite komandą `{0}`. Normalu gauti šią klaidą po didelio Open Ticket atnaujinimo.",
"panelStateExpired":"Šis skydelis nebegalioja arba jo galiojimas baigėsi. Sukurkite naują skydelį naudodami `{0}`, kad išspręstumėte problemą. Normalu gauti šią klaidą po didelio Open Ticket atnaujinimo."
},
"optionInvalidReasons":{
"stringRegex":"Vertė neatitinka šablono!",
@@ -331,7 +388,6 @@
"added":"Pridėta",
"removed":"Pašalinta",
"filter":"Filteris",
"claimedBy":"Claimed nuo {0}",
"method":"Metodas",
"type":"Tipas",
"blacklisted":"Užblokuotas",
@@ -343,6 +399,8 @@
"syntax":"Sintaksė",
"originalName":"Orginalus Pavadinimas",
"newName":"Naujas pavadinimas",
"originalCategory":"Originali Kategorija",
"newCategory":"Nauja Kategorija",
"until":"Iki",
"validOptions":"Galiojančios parinktys",
"validPanels":"Galiojančios Skydeliai",
@@ -355,7 +413,29 @@
"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",
"accept":"Priimti",
"cancel":"Atšaukti",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Ar norite, kad šis skydelis būtų automatiškai atnaujintas redaguojant?",
"ticket":"Iškart sukurkite bilietą.",
"ticketId":"Bilieto, kurį norite sukurti, identifikatorius.",
"ticketOtherUser":"Sukurti bilietą kitam vartotojui.",
"close":"Uždaryti bilieta.",
"delete":"Ištrinti bilieta.",
"deleteNoTranscript":"Ištrinti šita bilieta nesukuriant išrašo.",
@@ -384,6 +465,7 @@
"unclaim":"Unclaim bilieta.",
"pin":"Prisegti bilieta.",
"unpin":"Atsegti bilieta.",
"move":"Perkelti bilieta.",
"moveId":"Parinkties, į kurią norite pereiti, identifikatorius.",
"rename":"Pervadinti bilieta.",
@@ -392,6 +474,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 +488,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 +501,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 +509,21 @@
"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.",
"transcripts":"Peržiūrėti vartotojo bilietų transkriptų istoriją.",
"transcriptsUser":"Vartotojas peržiūrai."
},
"helpMenu":{
"help":"Gauk saraša galimų komandų.",
@@ -452,7 +551,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 +568,8 @@
"system":"Sisteminė statistika",
"user":"Naudotojo statistika",
"ticket":"Bilieto statistika",
"participants":"Dalyviai"
"participants":"Dalyviai",
"messages":"Žinutės"
},
"properties":{
"ticketsCreated":"Bilietai Sukurti",
@@ -472,7 +581,48 @@
"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į",
"selectPriorityLevel":"Pasirinkite prioriteto lygį"
},
"priorities":{
"urgent":"Skubiai",
"veryHigh":"Labai greitai",
"high":"Greitai",
"normal":"Normaliai",
"low":"Paprastai",
"veryLow":"Silpnai",
"none":"Nėra"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion": "v4.0.7",
"otversion":"v4.2.0",
"translators":["NoOneNook"],
"lastedited": "25/03/2025",
"lastedited":"25/05/2026",
"language":"Norwegian",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Denne strengen skal inneholde {0}!",
"stringChoices":"Denne strengen kan kun være en av følgende verdier: {0}!",
"stringRegex":"Denne strengen er ugyldig!",
"stringInvertedContains":"Denne strengen kan ikke inneholde {0}!",
"stringLowercase":"Denne strengen må kun skrives med små bokstaver!",
"stringUppercase":"Denne strengen må kun skrives med store bokstaver!",
"stringSpecialCharacters":"Denne strengen kan ikke inneholde spesialtegn! (kun a-z, 0-9 og mellomrom)",
"stringNoSpaces":"Denne strengen kan ikke inneholde mellomrom!",
"stringCapitalWord":"Det anbefales at hvert ord i denne strengen starter med stor bokstav!",
"stringCapitalSentence":"Det ser ut som noen setninger i denne strengen ikke starter med stor bokstav!",
"stringPunctuation":"Det ser ut som setningen i denne strengen ikke slutter med tegnsetting!",
"numberTooShort":"Dette tallet kan ikke være kortere enn {0} tegn!",
"numberTooLong":"Dette tallet kan ikke være lengre enn {0} tegn!",
@@ -48,6 +56,8 @@
"numberNegative":"Dette tallet kan ikke være negativt!",
"numberPositive":"Dette tallet kan ikke være positivt!",
"numberZero":"Dette tallet kan ikke være null!",
"numberNan":"Dette tallet kan ikke være NaN (ikke et tall)!",
"numberInvertedContains":"Dette tallet kan ikke inneholde {0}!",
"booleanTrue":"Denne boolske verdien kan ikke være sann!",
"booleanFalse":"Denne boolske verdien kan ikke være usann!",
@@ -89,7 +99,8 @@
"invalidButton":"Denne knappen skal ha minst en {0} eller {1}!",
"unusedOption":"Alternativet {0} brukes ikke noe sted!",
"unusedQuestion":"Spørsmålet {0} brukes ikke noe sted!",
"dropdownOption": "Et panel med nedtrekksmeny aktivert kan kun inneholde alternativer av typen 'sak'!"
"dropdownOption":"Et panel med rullegardinmeny kan kun inneholde alternativer av typene: 'ticket', 'role' eller 'sub-panel'.",
"customInvalidVersion":"Versjonen spesifisert i konfigurasjonen stemmer ikke! Sørg for at du har oppdatert konfigurasjonen til siste versjon!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Vis Tekstkommandoer",
"helpPage":"Side {0}",
"withReason":"Med Årsak",
"withoutTranscript": "Uten Utskrift"
"withoutTranscript":"Uten Utskrift",
"blacklistAdd":"Svartelist Bruker",
"blacklistRemove":"Frigi Bruker"
},
"titles":{
"created":"Sak Opprettet",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Lagt Til Svarteliste",
"blacklistRemoveDm":"Fjernet Fra Svarteliste",
"clear":"Saker Slettet",
"clearTickets":"Tøm Tickets",
"roles":"Roller Oppdatert",
"autoclose":"Sak Autolukket",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Autolukking Deaktivert",
"autodelete":"Sak Autoslettet",
"autodeleteEnabled":"Autosletting Aktivert",
"autodeleteDisabled": "Autosletting Deaktivert"
"autodeleteDisabled":"Autosletting Deaktivert",
"topicSet":"Emne Endret",
"prioritySet":"Prioritet Endret",
"priorityGet":"Ticket Prioritet",
"transfer":"Ticket Overført",
"transcripts":"Transkripsjonshistorikk"
},
"descriptions":{
"create":"Din sak er blitt opprettet. Klikk på knappen nedenfor for å få tilgang til den!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Du kan kun opprette {0} sak(er) om gangen!",
"ticketMessageAutoclose":"Denne saken vil bli autolukket når den er inaktiv i {0}t!",
"ticketMessageAutodelete":"Denne saken vil bli autoslettet når den er inaktiv i {0} dager!",
"panelReady": "Du finner panelet nedenfor!\nDenne meldingen kan nå slettes!"
"panelReady":"Panelet er tilgjengelig i oppfølgingsmeldingen!\nDenne meldingen kan nå slettes!",
"topicSet":"Kanalens emne ble endret av {0}!",
"prioritySet":"Ticket-prioriteten ble endret til {0} av {1}!",
"priorityGet":"Gjeldende prioritet for denne ticketen er {0}.",
"transfer":"Ticket-eierskapet ble overført fra {0} til {1} av {2}!"
},
"modal":{
"closePlaceholder":"Hvorfor lukket du denne saken?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} er blitt fjernet fra svartelisten av {1}!",
"blacklistAddDm":"Du er blitt svartelistet på vår server!\nFra nå av kan du ikke opprette en sak!",
"blacklistRemoveDm":"Du er blitt fjernet fra svartelisten på vår server!\nNå kan du opprette saker igjen!",
"clearLog": "{0} saker er blitt slettet av {1}!"
"clearLog":"{0} saker er blitt slettet av {1}!",
"transferLog":"Eierskapet til denne ticketen har blitt overført fra {0} til {1} av {2}!",
"transferDm":"Eierskapet til din ticket har blitt overført fra {0} til {1} på vår server!",
"prioritySetLog":"Prioriteten til denne ticketen har blitt endret til {0} av {1}!",
"prioritySetDm":"Prioriteten til din ticket har blitt endret til {0} på vår server!",
"roleUpdateLog":"{0} har oppdatert sine roller!",
"roleUpdateDm":"Dine roller på vår server har blitt oppdatert!",
"topicSetLog":"Prioriteten til denne saken har blitt satt til {0} av {1}.",
"topicSetDm":"Prioriteten til saken din har blitt satt til {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Prøv Igjen",
"continue":"Slett Uten Utskrift",
"backup":"Opprett Sikkerhetskopiutskrift",
"error": "Noe gikk galt under forsøket på å opprette utskriften.\nHva vil du gjøre?\n\nDenne saken vil ikke bli slettet før du klikker på en av disse knappene."
"error":"Noe gikk galt under forsøket på å opprette utskriften.\nHva vil du gjøre?\n\nDenne saken vil ikke bli slettet før du klikker på en av disse knappene.",
"title":"Transkripsjonsfeil",
"noHistory":"Denne brukeren har ingen transkripsjoner ennå.",
"historyNotSupported":"Transkripsjonshistorikk støttes for øyeblikket kun med HTML Transcripts.\nHistorikk for teksttranskripsjoner vil bli tilgjengelig i fremtidige versjoner."
},
"text":{
"messagesTitle":"MELDINGER",
"embedTitle":"EMBED",
"fileTitle":"FIL",
"fieldsTitle":"FELTER",
"reactionsTitle":"REAKSJONER",
"statsTitle":"STATISTIKK",
"emptyContent":"<innhold tomt>",
"noTitle":"<ingen tittel>",
"noDesc":"<ingen beskrivelse>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Ukjent Panel",
"notInGuild":"Ikke På Server",
"channelRename":"Kan Ikke Omdøpe Kanal",
"busy": "Saken Er Opptatt"
"channelCategory":"Kunne Ikke Endre Kategori",
"busy":"Saken Er Opptatt",
"permissionError":"Tillatelsesfeil"
},
"descriptions":{
"askForInfo":"Kontakt eieren av denne boten for mer informasjon!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Den nåværende kanalen er ikke en gyldig sak! Den kan ha vært en sak fra en eldre versjon av Open Ticket!",
"notInGuild":"Denne {0} fungerer ikke i DM! Prøv igjen på en server!",
"channelRename":"På grunn av Discords hastighetsbegrensninger er det for øyeblikket umulig for boten å omdøpe kanalen. Kanalen vil automatisk bli omdøpt innen 10 minutter hvis boten ikke startes på nytt.",
"channelCategory":"På grunn av Discords rategrenser kunne ikke kanalens kategori endres umiddelbart. Den vil bli endret automatisk innen 10 minutter dersom boten forblir online.",
"channelRenameSource":"Kilden til denne feilen er: {0}",
"busy": "Kan ikke bruke denne {0}!\nSaken behandles for øyeblikket av boten.\n\nPrøv igjen om noen sekunder!"
"busy":"Kan ikke bruke denne {0}!\nSaken behandles for øyeblikket av boten.\n\nPrøv igjen om noen sekunder!",
"closeBeforeMessage":"Denne ticketen kan ikke lukkes/slettes før en bruker har sendt en melding.",
"closeBeforeAdminMessage":"Denne ticketen kan ikke lukkes/slettes før en ticket-admin eller support-medlem har sendt en melding.",
"unableToCreateTicket":"Du kan ikke opprette en ticket.",
"messageMissing":"Kunne ikke finne meldingen for interaksjonen. Bruk kommandoen `{0}` i stedet.",
"stateExpired":"Denne interaksjonen er ikke lenger gyldig eller har utløpt. Bruk kommandoen `{0}` i stedet. Det er normalt å motta denne feilen etter en større Open Ticket-oppdatering.",
"panelStateExpired":"Dette panelet er ikke lenger gyldig eller har utløpt. Opprett et nytt panel med `{0}` for å løse problemet. Det er normalt å motta denne feilen etter en større Open Ticket-oppdatering."
},
"optionInvalidReasons":{
"stringRegex":"Verdien samsvarer ikke med mønsteret!",
@@ -331,7 +388,6 @@
"added":"Lagt Til",
"removed":"Fjernet",
"filter":"Filter",
"claimedBy": "Tatt Av {0}",
"method":"Metode",
"type":"Type",
"blacklisted":"Svartelistet",
@@ -343,6 +399,8 @@
"syntax":"Syntaks",
"originalName":"Opprinnelig Navn",
"newName":"Nytt Navn",
"originalCategory":"Opprinnelig Kategori",
"newCategory":"Ny Kategori",
"until":"Til",
"validOptions":"Gyldige Alternativer",
"validPanels":"Gyldige Paneler",
@@ -352,10 +410,32 @@
"version":"Versjon",
"name":"Navn",
"role":"Rolle",
"status": "Status",
"status":"STATUS",
"claimed":"Tatt",
"pinned":"Festet",
"creationDate": "Opprettelsesdato"
"creationDate":"Opprettelsesdato",
"noone":"Ingen",
"open":"ÅPEN",
"closed":"LUKKET",
"priority":"PRIORITET",
"participants":"DELTAGERE",
"yes":"Ja",
"no":"Nei",
"accept":"Godta",
"cancel":"Avbryt",
"option":"Alternativ",
"topic":"Emne",
"uptime":"System oppetid",
"messages":"Meldinger",
"embeds":"Embeds",
"files":"Filer",
"components":"Komponenter",
"cooldown":"Nedkjøling",
"maxTickets":"Maks Tickets",
"admins":"Admins",
"roles":"Roller",
"size":"Størrelse"
},
"lowercase":{
"text":"tekst",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Ønsker du at dette panelet skal oppdatere seg automatisk når det redigeres?",
"ticket":"Opprett en sak med det samme.",
"ticketId":"Identifikatoren for saken du vil opprette.",
"ticketOtherUser":"Opprett en sak for en annen bruker.",
"close":"Lukk en sak.",
"delete":"Slett en sak.",
"deleteNoTranscript":"Slett denne saken uten å opprette en utskrift.",
@@ -384,6 +465,7 @@
"unclaim":"Frigi en sak.",
"pin":"Fest en sak.",
"unpin":"Løsne en sak.",
"move":"Flytt en sak.",
"moveId":"Identifikatoren for alternativet du vil flytte til.",
"rename":"Omdøp en sak.",
@@ -392,6 +474,7 @@
"addUser":"Brukeren som skal legges til.",
"remove":"Fjern en bruker fra en sak.",
"removeUser":"Brukeren som skal fjernes.",
"blacklist":"Administrer svartelisten for saker.",
"blacklistView":"Vis en liste over gjeldende svarteliste.",
"blacklistAdd":"Legg til en bruker på svartelisten.",
@@ -405,6 +488,7 @@
"statsUserUser":"Brukeren som skal vises.",
"statsTicket":"Vis statistikk for en sak på serveren.",
"statsTicketTicket":"Saken som skal vises.",
"clear":"Slett flere saker samtidig.",
"clearFilter":"Filteret for å slette saker.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Løsnede",
"autoclose":"Autolukkede"
},
"autoclose":"Administrer autolukking i en sak.",
"autocloseDisable":"Deaktiver autolukking i denne saken.",
"autocloseEnable":"Aktiver autolukking i denne saken.",
@@ -424,7 +509,21 @@
"autodelete":"Administrer autosletting i en sak.",
"autodeleteDisable":"Deaktiver autosletting i denne saken.",
"autodeleteEnable":"Aktiver autosletting i denne saken.",
"autodeleteEnableTime": "Antall dager denne saken må være inaktiv før den slettes."
"autodeleteEnableTime":"Antall dager denne saken må være inaktiv før den slettes.",
"topic":"Administrer emnet for ticket-kanalen.",
"topicSet":"Sett emnet for ticket-kanalen.",
"topicValue":"Det nye emnet for kanalen.",
"topicList":"Få en liste over alle tickets med deres emner og statistikk.",
"priority":"Administrer prioriteten til ticketen.",
"prioritySet":"Sett prioritet for ticketen.",
"priorityValue":"Prioritet for kanalen.",
"priorityGet":"Få prioritet for ticketen.",
"priorityList":"Få en liste over alle tickets med deres prioritet.",
"transfer":"Overfør eierskap av ticket fra en bruker til en annen.",
"transferUser":"Brukeren som skal overføres til.",
"transcripts":"Vis en brukers sakstranskripsjonshistorikk.",
"transcriptsUser":"Brukeren som skal vises."
},
"helpMenu":{
"help":"Få en liste over alle tilgjengelige kommandoer.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Deaktiver autolukking i denne saken.",
"autocloseEnable":"Aktiver autolukking i denne saken.",
"autodeleteDisable":"Deaktiver autosletting i denne saken.",
"autodeleteEnable": "Aktiver autosletting i denne saken."
"autodeleteEnable":"Aktiver autosletting i denne saken.",
"categories":{
"general":"Generelle Kommandoer",
"basicTicket":"Grunnleggende Ticket Kommandoer",
"advancedTicket":"Avanserte Ticket Kommandoer",
"userTicket":"Bruker Ticket Kommandoer",
"admin":"Admin Kommandoer",
"advanced":"Avanserte Kommandoer",
"extra":"Ekstra Kommandoer"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Systemstatistikk",
"user":"Brukerstatistikk",
"ticket":"Saksstatistikk",
"participants": "Deltakere"
"participants":"Deltakere",
"messages":"Meldinger"
},
"properties":{
"ticketsCreated":"Saker Opprettet",
@@ -472,7 +581,48 @@
"ticketsPinned":"Saker Festet",
"ticketsMoved":"Saker Flyttet",
"usersBlacklisted":"Brukere Svartelistet",
"transcriptsCreated": "Utskrifter Opprettet"
}
"transcriptsCreated":"Utskrifter Opprettet",
"ticketsAutodeleted":"Tickets Autoutslettet",
"ticketsTransferred":"Tickets Overført",
"ticketVolume":"Ticket Volum",
"averageTickets":"Gjennomsnitt Tickets/Bruker",
"currentTickets":"Nåværende Tickets",
"age":"Ticket Alder",
"responseTime":"Responstid",
"resolutionTime":"Løsningstid",
"createdOn":"Opprettet",
"createdBy":"Opprettet av",
"closedOn":"Lukket",
"closedBy":"Lukket av",
"claimedOn":"Tatt",
"claimedBy":"Tatt av",
"pinnedOn":"Festet",
"pinnedBy":"Festet av",
"deletedOn":"Slettet",
"deletedBy":"Slettet av"
},
"roles":{
"developer":"Utvikler",
"serverOwner":"Servereier",
"serverAdmin":"Serveradmin",
"moderator":"Moderator Team",
"support":"Support Team",
"member":"Medlem"
}
},
"panel":{
"selectTicket":"Velg din ticket",
"selectRole":"Velg din rolle",
"selectOption":"Velg ditt alternativ",
"selectPriorityLevel":"Velg prioritetsnivå"
},
"priorities":{
"urgent":"Haster",
"veryHigh":"Veldig Høy",
"high":"Høy",
"normal":"Normal",
"low":"Lav",
"veryLow":"Veldig Lav",
"none":"Ingen"
}
}
+167 -17
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["dysashop","zhavis"],
"lastedited":"28/05/2025",
"lastedited":"25/05/2026",
"language":"Persian",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"این رشته باید حاوی باشد {0}!",
"stringChoices":"این رشته فقط می تواند یکی از مقادیر زیر باشد: {0}!",
"stringRegex":"این رشته اشتباه است!",
"stringInvertedContains":"این رشته نباید شامل {0} باشد!",
"stringLowercase":"این رشته باید فقط با حروف کوچک نوشته شود!",
"stringUppercase":"این رشته باید فقط با حروف بزرگ نوشته شود!",
"stringSpecialCharacters":"این رشته نباید شامل کاراکترهای خاص باشد! (فقط a-z، 0-9 و فاصله)",
"stringNoSpaces":"این رشته نباید شامل فاصله باشد!",
"stringCapitalWord":"توصیه می‌شود هر کلمه در این رشته با حرف بزرگ شروع شود!",
"stringCapitalSentence":"به نظر می‌رسد بعضی جملات در این رشته با حرف بزرگ شروع نمی‌شوند!",
"stringPunctuation":"به نظر می‌رسد جمله در این رشته با علامت نقطه پایان نمی‌یابد!",
"numberTooShort":"این عدد نمی‌تواند کوتاه‌تر از {0} کاراکتر باشد!",
"numberTooLong":"این عدد نمی‌تواند طولانی‌تر از {0} کاراکتر باشد!",
@@ -48,6 +56,8 @@
"numberNegative":"این عدد نمی‌تواند منفی باشد!",
"numberPositive":"این عدد نمی‌تواند مثبت باشد!",
"numberZero":"این عدد نمی‌تواند صفر باشد!",
"numberNan":"این عدد نمی‌تواند NaN (عدد نیست) باشد!",
"numberInvertedContains":"این عدد نباید شامل {0} باشد!",
"booleanTrue":"این مقدار بولین نمی‌تواند درست (true) باشد!",
"booleanFalse":"این مقدار بولین نمی‌تواند نادرست (false) باشد!",
@@ -89,7 +99,8 @@
"invalidButton":"این دکمه باید حداقل شامل یک {0} یا {1} باشد!",
"unusedOption":"گزینه {0} در هیچ جایی استفاده نشده است!",
"unusedQuestion":"سوال {0} در هیچ جایی استفاده نشده است!",
"dropdownOption": "پنلی که منوی کشویی آن فعال است، فقط می‌تواند شامل گزینه‌هایی از نوع 'تیکت' باشد!"
"dropdownOption":"یک پنل با منوی کشویی فقط می‌تواند شامل گزینه‌هایی از نوع: 'ticket'، 'role' یا 'sub-panel' باشد.",
"customInvalidVersion":"نسخه مشخص شده در پیکربندی شما مطابقت ندارد! اطمینان حاصل کنید که پیکربندی به آخرین نسخه به‌روزرسانی شده است!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"مشاهده دستورات متنی",
"helpPage":"صفحه {0}",
"withReason":"با دلیل",
"withoutTranscript": "بدون رونوشت"
"withoutTranscript":"بدون رونوشت",
"blacklistAdd":"افزودن کاربر به لیست سیاه",
"blacklistRemove":"آزادسازی کاربر"
},
"titles":{
"created":"تیکت ایجاد شد",
@@ -132,6 +145,7 @@
"blacklistAddDm":"به لیست سیاه اضافه شد",
"blacklistRemoveDm":"از لیست سیاه حذف شد",
"clear":"تیکت‌ها پاکسازی شدند",
"clearTickets":"پاک کردن تیکت‌ها",
"roles":"نقش‌ها به‌روزرسانی شدند",
"autoclose":"تیکت به‌صورت خودکار بسته شد",
@@ -139,7 +153,13 @@
"autocloseDisabled":"بسته شدن خودکار غیرفعال شد",
"autodelete":"تیکت به‌صورت خودکار حذف شد",
"autodeleteEnabled":"حذف خودکار فعال شد",
"autodeleteDisabled": "حذف خودکار غیرفعال شد"
"autodeleteDisabled":"حذف خودکار غیرفعال شد",
"topicSet":"موضوع تغییر یافت",
"prioritySet":"اولویت تغییر یافت",
"priorityGet":"اولویت تیکت",
"transfer":"تیکت منتقل شد",
"transcripts":"تاریخچه رونوشت‌ها"
},
"descriptions":{
"create":"تیکت شما با موفقیت ایجاد شد. برای دسترسی به آن، روی دکمه زیر کلیک کنید!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"شما تنها می‌توانید همزمان {0} تیکت ایجاد کنید!",
"ticketMessageAutoclose":"این تیکت پس از {0} ساعت غیرفعال بودن به‌صورت خودکار بسته خواهد شد!",
"ticketMessageAutodelete":"این تیکت پس از {0} روز غیرفعال بودن به‌صورت خودکار حذف خواهد شد!",
"panelReady": "پنل در زیر قابل مشاهده است!\nاکنون می‌توانید این پیام را حذف کنید!"
"panelReady":"پنل در پیام دنبال‌کننده موجود است!\nاین پیام اکنون قابل حذف است!",
"topicSet":"موضوع کانال با موفقیت توسط {0} تغییر یافت!",
"prioritySet":"اولویت تیکت با موفقیت توسط {1} به {0} تغییر یافت!",
"priorityGet":"اولویت فعلی این تیکت {0} است.",
"transfer":"مالکیت تیکت با موفقیت از {0} به {1} توسط {2} منتقل شد!"
},
"modal":{
"closePlaceholder":"چرا این تیکت را بستید؟",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"کاربر {0} توسط {1} از لیست سیاه حذف شد!",
"blacklistAddDm":"شما در سرور ما به لیست سیاه اضافه شدید!\nاز این پس نمی‌توانید تیکت ایجاد کنید!",
"blacklistRemoveDm":"شما از لیست سیاه در سرور ما حذف شدید!\nاکنون می‌توانید دوباره تیکت ایجاد کنید!",
"clearLog": "{0} تیکت توسط {1} حذف شدند!"
"clearLog":"{0} تیکت توسط {1} حذف شدند!",
"transferLog":"مالکیت این تیکت از {0} به {1} توسط {2} منتقل شد!",
"transferDm":"مالکیت تیکت شما در سرور ما از {0} به {1} منتقل شد!",
"prioritySetLog":"اولویت این تیکت توسط {1} به {0} تغییر یافت!",
"prioritySetDm":"اولویت تیکت شما در سرور ما به {0} تغییر یافت!",
"roleUpdateLog":"{0} نقش‌های خود را به‌روزرسانی کرد!",
"roleUpdateDm":"نقش‌های شما در سرور ما به‌روزرسانی شد!",
"topicSetLog":"اولویت این تیکت توسط {1} به {0} تنظیم شد.",
"topicSetDm":"اولویت تیکت شما به {0} تنظیم شد."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"دوباره تلاش کنید",
"continue":"حذف بدون رونوشت",
"backup":"ایجاد رونوشت پشتیبان",
"error": "مشکلی در هنگام ایجاد رونوشت رخ داد.\nمی‌خواهید چه کاری انجام دهید؟\n\nاین تیکت تا زمانی که یکی از این دکمه‌ها را کلیک نکنید حذف نخواهد شد."
"error":"مشکلی در هنگام ایجاد رونوشت رخ داد.\nمی‌خواهید چه کاری انجام دهید؟\n\nاین تیکت تا زمانی که یکی از این دکمه‌ها را کلیک نکنید حذف نخواهد شد.",
"title":"خطای رونوشت",
"noHistory":"این کاربر هنوز هیچ رونوشت (transcript) ندارد.",
"historyNotSupported":"تاریخچه رونوشت‌ها در حال حاضر فقط با HTML Transcripts پشتیبانی می‌شود.\nتاریخچه رونوشت متنی در نسخه‌های آینده در دسترس خواهد بود."
},
"text":{
"messagesTitle":"پیام‌ها",
"embedTitle":"امبد",
"fileTitle":"فایل",
"fieldsTitle":"فیلدها",
"reactionsTitle":"واکنش‌ها",
"statsTitle":"آمار",
"emptyContent":"<محتوا خالی است>",
"noTitle":"<بدون عنوان>",
"noDesc":"<بدون توضیح>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"پنل ناشناخته",
"notInGuild":"خارج از سرور",
"channelRename":"عدم امکان تغییر نام کانال",
"busy": "تیکت مشغول است"
"channelCategory":"تغییر دسته‌بندی ممکن نیست",
"busy":"تیکت مشغول است",
"permissionError":"خطای دسترسی"
},
"descriptions":{
"askForInfo":"برای اطلاعات بیشتر با صاحب این ربات تماس بگیرید!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"کانال کنونی یک تیکت معتبر نیست! ممکن است این تیکت از نسخه قدیمی Open Ticket باشد!",
"notInGuild":"این {0} در پیام‌های مستقیم (DM) کار نمی‌کند! لطفاً دوباره در یک سرور امتحان کنید!",
"channelRename":"به دلیل محدودیت‌های نرخ دیسکورد، ربات در حال حاضر نمی‌تواند نام کانال را تغییر دهد. اگر ربات ری‌استارت نشود، نام کانال ظرف 10 دقیقه به‌طور خودکار تغییر خواهد کرد.",
"channelCategory":"به دلیل محدودیت‌های نرخ Discord، دسته‌بندی کانال فوراً قابل تغییر نیست. اگر ربات آنلاین بماند، طی 10 دقیقه به‌صورت خودکار تغییر خواهد کرد.",
"channelRenameSource":"منبع این خطا: {0}",
"busy": "امکان استفاده از این {0} وجود ندارد!\nتیکت در حال پردازش توسط ربات است.\n\nلطفاً چند ثانیه دیگر دوباره امتحان کنید!"
"busy":"امکان استفاده از این {0} وجود ندارد!\nتیکت در حال پردازش توسط ربات است.\n\nلطفاً چند ثانیه دیگر دوباره امتحان کنید!",
"closeBeforeMessage":"این تیکت نمی‌تواند قبل از ارسال پیام توسط یک کاربر بسته/حذف شود.",
"closeBeforeAdminMessage":"این تیکت نمی‌تواند قبل از ارسال پیام توسط مدیر تیکت یا عضو پشتیبانی بسته/حذف شود.",
"unableToCreateTicket":"شما نمی‌توانید تیکت ایجاد کنید.",
"messageMissing":"امکان یافتن پیام تعامل وجود ندارد. به‌جای آن از دستور `{0}` استفاده کنید.",
"stateExpired":"این تعامل دیگر معتبر نیست یا منقضی شده است. به‌جای آن از دستور `{0}` استفاده کنید. دریافت این خطا پس از به‌روزرسانی بزرگ Open Ticket طبیعی است.",
"panelStateExpired":"این پنل دیگر معتبر نیست یا منقضی شده است. برای رفع مشکل، یک پنل جدید با استفاده از `{0}` ایجاد کنید. دریافت این خطا پس از به‌روزرسانی بزرگ Open Ticket طبیعی است."
},
"optionInvalidReasons":{
"stringRegex":"مقدار با الگوی مورد نظر مطابقت ندارد!",
@@ -331,7 +388,6 @@
"added":"اضافه‌شده",
"removed":"حذف‌شده",
"filter":"فیلتر",
"claimedBy": "اختصاص‌یافته به {0}",
"method":"روش",
"type":"نوع",
"blacklisted":"در لیست سیاه",
@@ -343,6 +399,8 @@
"syntax":"نحوه نگارش",
"originalName":"نام اصلی",
"newName":"نام جدید",
"originalCategory":"دسته‌بندی اصلی",
"newCategory":"دسته‌بندی جدید",
"until":"تا",
"validOptions":"گزینه‌های معتبر",
"validPanels":"پنل‌های معتبر",
@@ -355,7 +413,29 @@
"status":"وضعیت",
"claimed":"اختصاص‌یافته",
"pinned":"پین‌شده",
"creationDate": "تاریخ ایجاد"
"creationDate":"تاریخ ایجاد",
"noone":"هیچ‌کس",
"open":"باز",
"closed":"بسته",
"priority":"اولویت",
"participants":"شرکت‌کنندگان",
"yes":"بله",
"no":"خیر",
"accept":"پذیرفتن",
"cancel":"لغو",
"option":"گزینه",
"topic":"موضوع",
"uptime":"زمان کار سیستم",
"messages":"پیام‌ها",
"embeds":"امبدها",
"files":"فایل‌ها",
"components":"کامپوننت‌ها",
"cooldown":"زمان انتظار",
"maxTickets":"حداکثر تیکت‌ها",
"admins":"مدیران",
"roles":"نقش‌ها",
"size":"اندازه"
},
"lowercase":{
"text":"متن",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"آیا می‌خواهید این پنل هنگام ویرایش به‌صورت خودکار به‌روزرسانی شود؟",
"ticket":"فوراً یک تیکت ایجاد کنید.",
"ticketId":"شناسه تیکتی که می‌خواهید ایجاد کنید.",
"ticketOtherUser":"برای کاربر دیگری یک تیکت ایجاد کنید.",
"close":"یک تیکت را ببندید.",
"delete":"یک تیکت را حذف کنید.",
"deleteNoTranscript":"این تیکت را بدون ایجاد رونوشت حذف کنید.",
@@ -384,6 +465,7 @@
"unclaim":"اختصاص یک تیکت را لغو کنید.",
"pin":"یک تیکت را پین کنید.",
"unpin":"پین یک تیکت را لغو کنید.",
"move":"یک تیکت را منتقل کنید.",
"moveId":"شناسه گزینه‌ای که می‌خواهید تیکت به آن منتقل شود.",
"rename":"نام یک تیکت را تغییر دهید.",
@@ -392,6 +474,7 @@
"addUser":"کاربری که می‌خواهید اضافه کنید.",
"remove":"یک کاربر را از تیکت حذف کنید.",
"removeUser":"کاربری که می‌خواهید حذف کنید.",
"blacklist":"لیست سیاه تیکت‌ها را مدیریت کنید.",
"blacklistView":"لیستی از لیست سیاه کنونی را مشاهده کنید.",
"blacklistAdd":"یک کاربر را به لیست سیاه اضافه کنید.",
@@ -405,6 +488,7 @@
"statsUserUser":"کاربری که می‌خواهید آمارش را مشاهده کنید.",
"statsTicket":"آمار یک تیکت در سرور را مشاهده کنید.",
"statsTicketTicket":"تیکتی که می‌خواهید آمارش را مشاهده کنید.",
"clear":"چندین تیکت را به‌صورت همزمان حذف کنید.",
"clearFilter":"فیلتر برای حذف تیکت‌ها.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"بدون پین",
"autoclose":"بسته‌شده خودکار"
},
"autoclose":"مدیریت بسته شدن خودکار در یک تیکت.",
"autocloseDisable":"غیرفعال کردن بسته شدن خودکار در این تیکت.",
"autocloseEnable":"فعال کردن بسته شدن خودکار در این تیکت.",
@@ -424,7 +509,21 @@
"autodelete":"مدیریت حذف خودکار در یک تیکت.",
"autodeleteDisable":"غیرفعال کردن حذف خودکار در این تیکت.",
"autodeleteEnable":"فعال کردن حذف خودکار در این تیکت.",
"autodeleteEnableTime": "تعداد روزهایی که این تیکت باید غیرفعال باشد تا حذف شود."
"autodeleteEnableTime":"تعداد روزهایی که این تیکت باید غیرفعال باشد تا حذف شود.",
"topic":"مدیریت موضوع کانال تیکت.",
"topicSet":"تنظیم موضوع کانال تیکت.",
"topicValue":"موضوع جدید کانال.",
"topicList":"دریافت لیست تمام تیکت‌ها همراه با موضوع و آمار آن‌ها.",
"priority":"مدیریت اولویت تیکت.",
"prioritySet":"تنظیم اولویت تیکت.",
"priorityValue":"اولویت کانال.",
"priorityGet":"دریافت اولویت تیکت.",
"priorityList":"دریافت لیست تمام تیکت‌ها همراه با وضعیت اولویت آن‌ها.",
"transfer":"انتقال مالکیت تیکت از یک کاربر به کاربر دیگر.",
"transferUser":"کاربری که باید به او منتقل شود.",
"transcripts":"مشاهده تاریخچه رونوشت تیکت‌های یک کاربر.",
"transcriptsUser":"کاربر برای مشاهده."
},
"helpMenu":{
"help":"لیستی از تمام دستورات موجود را دریافت کنید.",
@@ -452,7 +551,16 @@
"autocloseDisable":"بسته شدن خودکار را در این تیکت غیرفعال کنید.",
"autocloseEnable":"بسته شدن خودکار را در این تیکت فعال کنید.",
"autodeleteDisable":"حذف خودکار را در این تیکت غیرفعال کنید.",
"autodeleteEnable": "حذف خودکار را در این تیکت فعال کنید."
"autodeleteEnable":"حذف خودکار را در این تیکت فعال کنید.",
"categories":{
"general":"دستورات عمومی",
"basicTicket":"دستورات پایه تیکت",
"advancedTicket":"دستورات پیشرفته تیکت",
"userTicket":"دستورات تیکت کاربر",
"admin":"دستورات مدیر",
"advanced":"دستورات پیشرفته",
"extra":"دستورات اضافی"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"آمار سیستم",
"user":"آمار کاربر",
"ticket":"آمار تیکت",
"participants": "مشارکت‌کنندگان"
"participants":"مشارکت‌کنندگان",
"messages":"پیام‌ها"
},
"properties":{
"ticketsCreated":"تیکت‌های ایجادشده",
@@ -472,7 +581,48 @@
"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":"گزینه خود را انتخاب کنید",
"selectPriorityLevel":"انتخاب سطح اولویت"
},
"priorities":{
"urgent":"فوری",
"veryHigh":"خیلی بالا",
"high":"بالا",
"normal":"معمولی",
"low":"پایین",
"veryLow":"خیلی پایین",
"none":"هیچ"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["DanoGlez"],
"lastedited":"28/01/2025",
"lastedited":"25/05/2026",
"language":"Polish",
"automated":false
},
@@ -31,6 +31,14 @@
"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!",
@@ -48,6 +56,8 @@
"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!",
@@ -89,7 +99,8 @@
"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 rozwijanym menu może zawierać tylko opcje typu: 'ticket', 'role' lub 'sub-panel'.",
"customInvalidVersion":"Wersja określona w konfiguracji nie pasuje! Upewnij się, że zaktualizowałeś konfigurację do najnowszej wersji!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Pokaż Komendy Tekstowe",
"helpPage":"Strona {0}",
"withReason":"Z Powodem",
"withoutTranscript":"Bez Transkrypcji"
"withoutTranscript":"Bez Transkrypcji",
"blacklistAdd":"Dodaj Użytkownika do Czarnej Listy",
"blacklistRemove":"Zwolnij Użytkownika"
},
"titles":{
"created":"Ticket Utworzony",
@@ -132,6 +145,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,7 +153,13 @@
"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",
"transcripts":"Historia Transkrypcji"
},
"descriptions":{
"create":"Twój ticket został utworzony. Kliknij poniższy przycisk, aby go otworzyć!",
@@ -180,7 +200,12 @@
"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ść!"
"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?",
@@ -220,7 +245,16 @@
"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}!"
"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!",
"topicSetLog":"Priorytet tego zgłoszenia został ustawiony na {0} przez {1}.",
"topicSetDm":"Priorytet Twojego zgłoszenia został ustawiony na {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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."
"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",
"noHistory":"Ten użytkownik nie ma jeszcze żadnych transkrypcji.",
"historyNotSupported":"Historia transkrypcji jest obecnie obsługiwana tylko z HTML Transcripts.\nHistoria tekstowych transkrypcji będzie dostępna w przyszłych wersjach."
},
"text":{
"messagesTitle":"WIADOMOŚCI",
"embedTitle":"EMBED",
"fileTitle":"PLIK",
"fieldsTitle":"POLA",
"reactionsTitle":"REAKCJE",
"statsTitle":"STATYSTYKI",
"emptyContent":"<zawartość pusta>",
"noTitle":"<brak tytułu>",
"noDesc":"<brak opisu>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Nieznany panel",
"notInGuild":"Nie na serwerze",
"channelRename":"Nie można zmienić nazwy kanału",
"busy":"Ticket jest zajęty"
"channelCategory":"Nie Można Zmienić Kategorii",
"busy":"Ticket jest zajęty",
"permissionError":"Błąd uprawnień"
},
"descriptions":{
"askForInfo":"Skontaktuj się z właścicielem tego bota, aby uzyskać więcej informacji!",
@@ -279,8 +329,15 @@
"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.",
"channelCategory":"Z powodu limitów szybkości Discorda nie można było natychmiast zmienić kategorii kanału. Zostanie ona zmieniona automatycznie w ciągu 10 minut, jeśli bot pozostanie online.",
"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!"
"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.",
"messageMissing":"Nie można odnaleźć wiadomości interakcji. Zamiast tego użyj komendy `{0}`.",
"stateExpired":"Ta interakcja nie jest już ważna lub wygasła. Zamiast tego użyj komendy `{0}`. Otrzymanie tego błędu po dużej aktualizacji Open Ticket jest normalne.",
"panelStateExpired":"Ten panel nie jest już ważny lub wygasł. Utwórz nowy panel za pomocą `{0}`, aby rozwiązać problem. Otrzymanie tego błędu po dużej aktualizacji Open Ticket jest normalne."
},
"optionInvalidReasons":{
"stringRegex":"Wartość nie pasuje do wzorca!",
@@ -331,7 +388,6 @@
"added":"Dodano",
"removed":"Usunięto",
"filter":"Filtr",
"claimedBy":"Przypisane przez {0}",
"method":"Metoda",
"type":"Typ",
"blacklisted":"Na czarnej liście",
@@ -343,6 +399,8 @@
"syntax":"Składnia",
"originalName":"Oryginalna nazwa",
"newName":"Nowa nazwa",
"originalCategory":"Oryginalna Kategoria",
"newCategory":"Nowa Kategoria",
"until":"Do",
"validOptions":"Prawidłowe opcje",
"validPanels":"Prawidłowe panele",
@@ -352,10 +410,32 @@
"version":"Wersja",
"name":"Nazwa",
"role":"Rola",
"status":"Status",
"status":"STATUS",
"claimed":"Przypisane",
"pinned":"Przypięte",
"creationDate":"Data utworzenia"
"creationDate":"Data utworzenia",
"noone":"Nikt",
"open":"OTWARTY",
"closed":"ZAMKNIĘTY",
"priority":"PRIORYTET",
"participants":"UCZESTNICY",
"yes":"Tak",
"no":"Nie",
"accept":"Akceptuj",
"cancel":"Anuluj",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Czy chcesz, aby ten panel automatycznie aktualizował się po edycji?",
"ticket":"Natychmiast utwórz ticket.",
"ticketId":"Identyfikator ticketa, który chcesz utworzyć.",
"ticketOtherUser":"Utwórz zgłoszenie dla innego użytkownika.",
"close":"Zamknij ticket.",
"delete":"Usuń ticket.",
"deleteNoTranscript":"Usuń ten ticket bez tworzenia transkryptu.",
@@ -384,6 +465,7 @@
"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.",
@@ -392,6 +474,7 @@
"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.",
@@ -405,6 +488,7 @@
"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":{
@@ -417,6 +501,7 @@
"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.",
@@ -424,7 +509,21 @@
"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."
"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ść.",
"transcripts":"Wyświetl historię transkrypcji zgłoszeń użytkownika.",
"transcriptsUser":"Użytkownik do wyświetlenia."
},
"helpMenu":{
"help":"Uzyskaj listę wszystkich dostępnych poleceń.",
@@ -452,7 +551,16 @@
"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."
"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":{
@@ -460,7 +568,8 @@
"system":"Statystyki systemu",
"user":"Statystyki użytkownika",
"ticket":"Statystyki ticketa",
"participants":"Uczestnicy"
"participants":"Uczestnicy",
"messages":"Wiadomości"
},
"properties":{
"ticketsCreated":"Tickety utworzone",
@@ -472,7 +581,48 @@
"ticketsPinned":"Tickety przypięte",
"ticketsMoved":"Tickety przeniesione",
"usersBlacklisted":"Użytkownicy na czarnej liście",
"transcriptsCreated":"Transkrypty utworzone"
}
"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ę",
"selectPriorityLevel":"Wybierz poziom priorytetu"
},
"priorities":{
"urgent":"Pilny",
"veryHigh":"Bardzo wysoki",
"high":"Wysoki",
"normal":"Normalny",
"low":"Niski",
"veryLow":"Bardzo niski",
"none":"Brak"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["quiradon"],
"lastedited":"20/08/2024",
"lastedited":"25/05/2026",
"language":"Portuguese",
"automated":false
},
@@ -31,6 +31,14 @@
"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!",
"numberTooShort":"Este número não pode ter menos de {0} caracteres!",
"numberTooLong":"Este número não pode ter mais de {0} caracteres!",
@@ -48,6 +56,8 @@
"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}!",
"booleanTrue":"Este booleano não pode ser verdadeiro!",
"booleanFalse":"Este booleano não pode ser falso!",
@@ -89,7 +99,8 @@
"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'!"
"dropdownOption":"Um painel com menu suspenso só pode conter opções dos tipos: 'ticket', 'role' ou 'sub-panel'.",
"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":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Ver Comandos de Texto",
"helpPage":"Página {0}",
"withReason":"Com Motivo",
"withoutTranscript": "Sem Transcrição"
"withoutTranscript":"Sem Transcrição",
"blacklistAdd":"Colocar Usuário na Lista Negra",
"blacklistRemove":"Liberar Usuário"
},
"titles":{
"created":"Ticket Criado",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Adicionado a Blacklist",
"blacklistRemoveDm":"Removido da Blacklist",
"clear":"Tickets Limpos",
"clearTickets":"Limpar Tickets",
"roles":"Cargos Atualizados",
"autoclose":"Ticket Fechado Automaticamente",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Fechamento Automático Desabilitado",
"autodelete":"Ticket Excluído Automaticamente",
"autodeleteEnabled":"Exclusão Automática Habilitada",
"autodeleteDisabled": "Exclusão Automática Desabilitada"
"autodeleteDisabled":"Exclusão Automática Desabilitada",
"topicSet":"Tópico Alterado",
"prioritySet":"Prioridade Alterada",
"priorityGet":"Prioridade do Ticket",
"transfer":"Ticket Transferido",
"transcripts":"Histórico de Transcrições"
},
"descriptions":{
"create":"Seu ticket foi criado. Clique no botão abaixo para acessá-lo!",
@@ -180,7 +200,12 @@
"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!"
"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?",
@@ -220,7 +245,16 @@
"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}!"
"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!",
"topicSetLog":"A prioridade deste ticket foi definida para {0} por {1}.",
"topicSetDm":"A prioridade do seu ticket foi definida para {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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."
"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",
"noHistory":"Este usuário ainda não possui transcrições.",
"historyNotSupported":"O histórico de transcrições atualmente é suportado apenas com HTML Transcripts.\nO histórico de transcrições em texto estará disponível em versões futuras."
},
"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":{
@@ -257,7 +305,9 @@
"unknownPanel":"Painel Desconhecido",
"notInGuild":"Não Está no Servidor",
"channelRename":"Incapaz de Renomear Canal",
"busy": "Ticket Está Ocupado"
"channelCategory":"Não Foi Possível Alterar a Categoria",
"busy":"Ticket Está Ocupado",
"permissionError":"Erro de Permissão"
},
"descriptions":{
"askForInfo":"Entre em contato com o proprietário deste bot para mais informações!",
@@ -279,8 +329,15 @@
"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.",
"channelCategory":"Devido aos limites de taxa do Discord, a categoria do canal não pôde ser alterada imediatamente. Ela será alterada automaticamente dentro de 10 minutos se o bot permanecer online.",
"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!"
"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.",
"messageMissing":"Não foi possível localizar a mensagem da interação. Use o comando `{0}` em vez disso.",
"stateExpired":"Esta interação não é mais válida ou expirou. Use o comando `{0}` em vez disso. É normal receber este erro após uma grande atualização do Open Ticket.",
"panelStateExpired":"Este painel não é mais válido ou expirou. Crie um novo painel usando `{0}` para resolver o problema. É normal receber este erro após uma grande atualização do Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"O valor não corresponde ao padrão!",
@@ -331,7 +388,6 @@
"added":"Adicionado",
"removed":"Removido",
"filter":"Filtro",
"claimedBy":"Reivindicado por {0}",
"method":"Método",
"type":"Tipo",
"blacklisted":"Na Lista Negra",
@@ -343,6 +399,8 @@
"syntax":"Sintaxe",
"originalName":"Nome Original",
"newName":"Novo Nome",
"originalCategory":"Categoria Original",
"newCategory":"Nova Categoria",
"until":"Até",
"validOptions":"Opções Válidas",
"validPanels":"Painéis Válidos",
@@ -352,10 +410,32 @@
"version":"Versão",
"name":"Nome",
"role":"Cargo",
"status":"Status",
"status":"STATUS",
"claimed":"Reivindicado",
"pinned":"Fixado",
"creationDate":"Data de Criação"
"creationDate":"Data de Criação",
"noone":"Ninguém",
"open":"ABERTO",
"closed":"FECHADO",
"priority":"PRIORIDADE",
"participants":"PARTICIPANTES",
"yes":"Sim",
"no":"Não",
"accept":"Aceitar",
"cancel":"Cancelar",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Você quer que este painel atualize automaticamente quando editado?",
"ticket":"Crie um ticket instantaneamente.",
"ticketId":"O identificador do ticket que você deseja criar.",
"ticketOtherUser":"Criar um ticket para outro usuário.",
"close":"Feche um ticket.",
"delete":"Exclua um ticket.",
"deleteNoTranscript":"Exclua este ticket sem criar uma transcrição.",
@@ -384,6 +465,7 @@
"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.",
@@ -392,6 +474,7 @@
"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.",
@@ -405,6 +488,7 @@
"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":{
@@ -417,6 +501,7 @@
"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.",
@@ -424,7 +509,21 @@
"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."
"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.",
"transcripts":"Ver o histórico de transcrições de tickets de um usuário.",
"transcriptsUser":"O usuário para visualizar."
},
"helpMenu":{
"help":"Obtenha uma lista de todos os comandos disponíveis.",
@@ -452,7 +551,16 @@
"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."
"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":{
@@ -460,7 +568,8 @@
"system":"Status do Sistema",
"user":"Status do Usuário",
"ticket":"Status do Ticket",
"participants": "Participantes"
"participants":"Participantes",
"messages":"Mensagens"
},
"properties":{
"ticketsCreated":"Tickets Criados",
@@ -472,7 +581,48 @@
"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",
"selectPriorityLevel":"Selecionar nível de prioridade"
},
"priorities":{
"urgent":"Urgente",
"veryHigh":"Muito Alta",
"high":"Alta",
"normal":"Normal",
"low":"Baixa",
"veryLow":"Muito Baixa",
"none":"Nenhuma"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["SankeDev"],
"lastedited":"27/08/2024",
"lastedited":"25/05/2026",
"language":"Romanian",
"automated":false
},
@@ -31,6 +31,14 @@
"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!",
@@ -48,6 +56,8 @@
"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!",
@@ -89,7 +99,8 @@
"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 panou cu meniu derulant poate conține doar opțiuni de tipurile: 'ticket', 'role' sau 'sub-panel'.",
"customInvalidVersion":"Versiunea specificată în configurația ta nu corespunde! Asigură-te că ai actualizat configurația la cea mai recentă versiune!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Vezi Text Commands",
"helpPage":"Pagina {0}",
"withReason":"Cu motiv",
"withoutTranscript":"Fara Transcript"
"withoutTranscript":"Fara Transcript",
"blacklistAdd":"Adaugă Utilizatorul pe Lista Neagră",
"blacklistRemove":"Eliberează Utilizatorul"
},
"titles":{
"created":"Ticket Creat",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Adaugat la Blacklist",
"blacklistRemoveDm":"Sters din Blacklist",
"clear":"Tickets Curatate",
"clearTickets":"Ștergere Tichete",
"roles":"Roluri Actualizate",
"autoclose":"Ticket Inchis Automat",
@@ -139,7 +153,13 @@
"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",
"transcripts":"Istoric Transcrieri"
},
"descriptions":{
"create":"Ticket-ul tau a fost creat cu succes! Apasa pe butonul de mai jos pentru a-l vizualiza!",
@@ -180,7 +200,12 @@
"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?",
@@ -220,7 +245,16 @@
"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!",
"topicSetLog":"Prioritatea acestui tichet a fost setată la {0} de către {1}.",
"topicSetDm":"Prioritatea tichetului tău a fost setată la {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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",
"noHistory":"Acest utilizator nu are încă nicio transcriere.",
"historyNotSupported":"Istoricul transcrierilor este momentan suportat doar cu HTML Transcripts.\nIstoricul transcrierilor text va fi disponibil în versiunile viitoare."
},
"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 +305,9 @@
"unknownPanel":"Panel Necunoscut",
"notInGuild":"Nu este in server",
"channelRename":"Nu se poate redenumi canalul",
"busy":"Ticket ocupat"
"channelCategory":"Categoria Nu Poate Fi Schimbată",
"busy":"Ticket ocupat",
"permissionError":"Eroare de Permisiune"
},
"descriptions":{
"askForInfo":"Contacteaza ownerul botului pentru mai multe informatii.",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Acest ticket este deprecat si nu mai poate fi folosit! Posibil sa fie dintr-o versiune veche Open Ticket!",
"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.",
"channelCategory":"Din cauza limitelor de rată Discord, categoria canalului nu a putut fi schimbată imediat. Va fi schimbată automat în 10 minute dacă botul rămâne online.",
"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.",
"messageMissing":"Nu s-a putut găsi mesajul interacțiunii. Folosește comanda `{0}` în schimb.",
"stateExpired":"Această interacțiune nu mai este validă sau a expirat. Folosește comanda `{0}` în schimb. Este normal să primești această eroare după o actualizare majoră Open Ticket.",
"panelStateExpired":"Acest panou nu mai este valid sau a expirat. Creează un nou panou folosind `{0}` pentru a rezolva problema. Este normal să primești această eroare după o actualizare majoră Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Valoarea nu respecta formatul necesar!",
@@ -331,7 +388,6 @@
"added":"Adaugat",
"removed":"Sters",
"filter":"Filtru",
"claimedBy":"Revendicat de {0}",
"method":"Metoda",
"type":"Tip",
"blacklisted":"Blacklistat",
@@ -343,6 +399,8 @@
"syntax":"Sintaxa",
"originalName":"Nume Original",
"newName":"Nume Nou",
"originalCategory":"Categoria Originală",
"newCategory":"Categorie Nouă",
"until":"Pana",
"validOptions":"Optiuni Valide",
"validPanels":"Panels Valide",
@@ -352,10 +410,32 @@
"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",
"accept":"Acceptă",
"cancel":"Anulează",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Activeaza sau dezactiveaza actualizarea automata a panelului.",
"ticket":"Creeaza instant un ticket.",
"ticketId":"Id-ul ticketului pe care vrei sa il folosesti.",
"ticketOtherUser":"Creează un tichet pentru alt utilizator.",
"close":"Inchide un ticket.",
"delete":"Sterge un ticket.",
"deleteNoTranscript":"Sterge un ticket fara a crea un transcript.",
@@ -384,6 +465,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 +474,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 +488,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 +501,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 +509,21 @@
"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.",
"transcripts":"Vezi istoricul transcrierilor tichetelor unui utilizator.",
"transcriptsUser":"Utilizatorul de vizualizat."
},
"helpMenu":{
"help":"Afiseaza o lista cu toate comenzile disponibile.",
@@ -452,7 +551,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 +568,8 @@
"system":"Statistici Sistem",
"user":"Statistici User",
"ticket":"Statistici Ticket",
"participants":"Participanti"
"participants":"Participanti",
"messages":"Mesaje"
},
"properties":{
"ticketsCreated":"Tickete Create",
@@ -472,7 +581,48 @@
"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",
"selectPriorityLevel":"Selectează nivelul de prioritate"
},
"priorities":{
"urgent":"Urgent",
"veryHigh":"Foarte Ridicată",
"high":"Ridicată",
"normal":"Normală",
"low":"Scăzută",
"veryLow":"Foarte Scăzută",
"none":"Niciuna"
}
}
+180 -17
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion": "v4.0.7",
"otversion":"v4.2.0",
"translators":["NoOneNook"],
"lastedited": "25/03/2025",
"lastedited":"25/05/2026",
"language":"Russian",
"automated":true
},
@@ -31,6 +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} символов!",
@@ -47,8 +56,12 @@
"numberNegative":"Это число не может быть отрицательным!",
"numberPositive":"Это число не может быть положительным!",
"numberZero":"Это число не может быть нулем!",
"numberNan":"Это число не может быть NaN (не число)!",
"numberInvertedContains":"Это число не должно содержать {0}!",
"booleanTrue":"Это булево значение не может быть истинным!",
"booleanFalse":"Это булево значение не может быть ложным!",
"arrayEmptyDisabled":"Этот массив не может быть пустым!",
"arrayEmptyRequired":"Этот массив должен быть пустым!",
"arrayTooShort":"Этот массив должен иметь длину не менее {0}!",
@@ -56,6 +69,7 @@
"arrayLengthInvalid":"Этот массив должен иметь длину {0}!",
"arrayInvalidTypes":"Этот массив может содержать только следующие типы: {0}!",
"arrayDouble":"Этот массив не допускает повторяющихся значений!",
"discordInvalidId":"Это недействительный идентификатор {0} в Discord!",
"discordInvalidIdOptions":"Это недействительный идентификатор {0} в Discord! Вы также можете использовать один из следующих: {1}!",
"discordInvalidToken":"Это недействительный токен Discord (синтаксически)!",
@@ -72,6 +86,7 @@
"urlInvalidPath":"Этот URL имеет недействительный путь!",
"idNotUnique":"Этот идентификатор не уникален, используйте другой идентификатор!",
"idNonExistent":"Идентификатор {0} не существует!",
"invalidType":"Это свойство должно быть типа: {0}!",
"propertyMissing":"Свойство {0} отсутствует в этом объекте!",
"propertyOptional":"Свойство {0} необязательно в этом объекте!",
@@ -79,11 +94,13 @@
"nullInvalid":"Это свойство не может быть null!",
"switchInvalidType":"Это должно быть одним из следующих типов: {0}!",
"objectSwitchInvalid":"Этот объект должен быть одним из следующих типов: {0}!",
"invalidLanguage":"Это недействительный язык!",
"invalidButton":"Эта кнопка должна иметь хотя бы {0} или {1}!",
"unusedOption":"Опция {0} нигде не используется!",
"unusedQuestion":"Вопрос {0} нигде не используется!",
"dropdownOption": "Панель с включенным выпадающим списком может содержать только опции типа 'ticket'!"
"dropdownOption":"Панель с выпадающим списком может содержать только варианты типов: 'ticket', 'role' или 'sub-panel'.",
"customInvalidVersion":"Указанная в конфигурации версия не совпадает! Убедитесь, что вы обновили конфигурацию до последней версии!"
}
},
"actions":{
@@ -101,7 +118,9 @@
"helpSwitchText":"Просмотреть текстовые команды",
"helpPage":"Страница {0}",
"withReason":"С причиной",
"withoutTranscript": "Без стенограммы"
"withoutTranscript":"Без стенограммы",
"blacklistAdd":"Добавить пользователя в чёрный список",
"blacklistRemove":"Разблокировать пользователя"
},
"titles":{
"created":"Тикет создан",
@@ -116,6 +135,7 @@
"move":"Тикет перемещен",
"add":"Пользователь добавлен в тикет",
"remove":"Пользователь удален из тикета",
"help":"Доступные команды",
"statsReset":"Сбросить статистику",
"blacklistAdd":"Пользователь в черном списке",
@@ -125,13 +145,21 @@
"blacklistAddDm":"Добавлен в черный список",
"blacklistRemoveDm":"Удален из черного списка",
"clear":"Тикеты очищены",
"clearTickets":"Очистить тикеты",
"roles":"Роли обновлены",
"autoclose":"Тикет автоматически закрыт",
"autocloseEnabled":"Автозакрытие включено",
"autocloseDisabled":"Автозакрытие отключено",
"autodelete":"Тикет автоматически удален",
"autodeleteEnabled":"Автоудаление включено",
"autodeleteDisabled": "Автоудаление отключено"
"autodeleteDisabled":"Автоудаление отключено",
"topicSet":"Тема изменена",
"prioritySet":"Приоритет изменён",
"priorityGet":"Приоритет тикета",
"transfer":"Тикет передан",
"transcripts":"История транскриптов"
},
"descriptions":{
"create":"Ваш тикет был создан. Нажмите кнопку ниже, чтобы получить к нему доступ!",
@@ -146,6 +174,7 @@
"move":"Тикет был успешно перемещен в {0}!",
"add":"{0} был успешно добавлен в тикет!",
"remove":"{0} был успешно удален из тикета!",
"helpExplanation":"`<name>` => обязательный параметр\n`[name]` => необязательный параметр",
"statsReset":"Статистика бота была успешно сброшена!",
"statsError":"Невозможно просмотреть статистику тикета!\n{0} не является тикетом!",
@@ -158,6 +187,7 @@
"clearVerify":"Вы уверены, что хотите удалить несколько тикетов?\nЭто действие не может быть отменено!",
"clearReady":"{0} тикетов были успешно удалены!",
"rolesEmpty":"Ни одна роль не была обновлена!",
"autocloseLeave":"Этот тикет был автоматически закрыт, потому что создатель покинул сервер!",
"autocloseTimeout":"Этот тикет был автоматически закрыт, потому что он был неактивен более `{0}ч`!",
"autodeleteLeave":"Этот тикет был автоматически удален, потому что создатель покинул сервер!",
@@ -166,10 +196,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":"Почему вы закрыли этот тикет?",
@@ -204,11 +240,21 @@
"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":"Ваши роли на нашем сервере были обновлены!",
"topicSetLog":"Приоритет этого тикета был установлен на {0} пользователем {1}.",
"topicSetDm":"Приоритет вашего тикета был установлен на {0}."
}
},
"transcripts":{
@@ -217,6 +263,7 @@
"ready":"Стенограмма создана",
"textFileDescription":"Это текстовая стенограмма удаленного тикета!",
"htmlProgress":"Пожалуйста, подождите, пока эта html-стенограмма обрабатывается...",
"createdChannel":"Новая {0} стенограмма была создана на сервере!",
"createdCreator":"Новая {0} стенограмма была создана для одного из ваших тикетов!",
"createdParticipant":"Новая {0} стенограмма была создана в одном из тикетов, в котором вы участвовали!",
@@ -228,7 +275,21 @@
"retry":"Повторить",
"continue":"Удалить без стенограммы",
"backup":"Создать резервную стенограмму",
"error": "Что-то пошло не так при попытке создать стенограмму.\nЧто вы хотите сделать?\n\nЭтот тикет не будет удален, пока вы не нажмете одну из этих кнопок."
"error":"Что-то пошло не так при попытке создать стенограмму.\nЧто вы хотите сделать?\n\nЭтот тикет не будет удален, пока вы не нажмете одну из этих кнопок.",
"title":"Ошибка транскрипта",
"noHistory":"У этого пользователя пока нет транскриптов.",
"historyNotSupported":"История транскриптов сейчас поддерживается только с HTML Transcripts.\nТекстовая история будет доступна в будущих версиях."
},
"text":{
"messagesTitle":"СООБЩЕНИЯ",
"embedTitle":"ВСТАВКА",
"fileTitle":"ФАЙЛ",
"fieldsTitle":"ПОЛЯ",
"reactionsTitle":"РЕАКЦИИ",
"statsTitle":"СТАТИСТИКА",
"emptyContent":"<содержимое пусто>",
"noTitle":"<без-заголовка>",
"noDesc":"<без-описания>"
}
},
"errors":{
@@ -244,7 +305,9 @@
"unknownPanel":"Неизвестная панель",
"notInGuild":"Не на сервере",
"channelRename":"Невозможно переименовать канал",
"busy": "Тикет занят"
"channelCategory":"Не удалось изменить категорию",
"busy":"Тикет занят",
"permissionError":"Ошибка доступа"
},
"descriptions":{
"askForInfo":"Свяжитесь с владельцем этого бота для получения дополнительной информации!",
@@ -266,8 +329,15 @@
"deprecatedTicket":"Текущий канал не является действительным тикетом! Возможно, это был тикет из старой версии Open Ticket!",
"notInGuild":"Это {0} не работает в ЛС! Пожалуйста, попробуйте еще раз на сервере!",
"channelRename":"Из-за ограничений Discord на частоту запросов, боту сейчас невозможно переименовать канал. Канал будет автоматически переименован через 10 минут, если бот не будет перезагружен.",
"channelCategory":"Из-за ограничений Discord по частоте запросов категория канала не может быть изменена сразу. Она будет автоматически изменена в течение 10 минут, если бот останется онлайн.",
"channelRenameSource":"Источник этой ошибки: {0}",
"busy": "Невозможно использовать это {0}!\nТикет в настоящее время обрабатывается ботом.\n\nПожалуйста, попробуйте еще раз через несколько секунд!"
"busy":"Невозможно использовать это {0}!\nТикет в настоящее время обрабатывается ботом.\n\nПожалуйста, попробуйте еще раз через несколько секунд!",
"closeBeforeMessage":"Этот тикет нельзя закрыть/удалить, пока пользователь не отправит сообщение.",
"closeBeforeAdminMessage":"Этот тикет нельзя закрыть/удалить, пока администратор или сотрудник поддержки не отправит сообщение.",
"unableToCreateTicket":"Вы не можете создать тикет.",
"messageMissing":"Не удалось найти сообщение взаимодействия. Используйте команду `{0}` вместо этого.",
"stateExpired":"Это взаимодействие больше не действительно или истекло. Используйте команду `{0}` вместо этого. Это нормально после крупного обновления Open Ticket.",
"panelStateExpired":"Эта панель больше не действительна или истекла. Создайте новую панель с помощью `{0}`, чтобы решить проблему. Это нормально после крупного обновления Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Значение не соответствует шаблону!",
@@ -318,7 +388,6 @@
"added":"Добавлен",
"removed":"Удален",
"filter":"Фильтр",
"claimedBy": "Забран {0}",
"method":"Метод",
"type":"Тип",
"blacklisted":"В черном списке",
@@ -330,6 +399,8 @@
"syntax":"Синтаксис",
"originalName":"Исходное имя",
"newName":"Новое имя",
"originalCategory":"Исходная категория",
"newCategory":"Новая категория",
"until":"До",
"validOptions":"Действительные опции",
"validPanels":"Действительные панели",
@@ -342,7 +413,29 @@
"status":"Статус",
"claimed":"Забран",
"pinned":"Закреплен",
"creationDate": "Дата создания"
"creationDate":"Дата создания",
"noone":"Никто",
"open":"Открыт",
"closed":"Закрыт",
"priority":"Приоритет",
"participants":"Участники",
"yes":"Да",
"no":"Нет",
"accept":"Принять",
"cancel":"Отмена",
"option":"Опция",
"topic":"Тема",
"uptime":"Время работы системы",
"messages":"Сообщения",
"embeds":"Вставки",
"files":"Файлы",
"components":"Компоненты",
"cooldown":"Задержка",
"maxTickets":"Макс. тикетов",
"admins":"Администраторы",
"roles":"Роли",
"size":"Размер"
},
"lowercase":{
"text":"текст",
@@ -362,6 +455,7 @@
"panelAutoUpdate":"Хотите ли вы, чтобы эта панель автоматически обновлялась при редактировании?",
"ticket":"Мгновенно создать тикет.",
"ticketId":"Идентификатор тикета, который вы хотите создать.",
"ticketOtherUser":"Создать тикет для другого пользователя.",
"close":"Закрыть тикет.",
"delete":"Удалить тикет.",
"deleteNoTranscript":"Удалить этот тикет без создания стенограммы.",
@@ -371,6 +465,7 @@
"unclaim":"Отказаться от тикета.",
"pin":"Закрепить тикет.",
"unpin":"Открепить тикет.",
"move":"Переместить тикет.",
"moveId":"Идентификатор опции, в которую вы хотите переместить.",
"rename":"Переименовать тикет.",
@@ -379,6 +474,7 @@
"addUser":"Пользователь, которого нужно добавить.",
"remove":"Удалить пользователя из тикета.",
"removeUser":"Пользователь, которого нужно удалить.",
"blacklist":"Управление черным списком тикетов.",
"blacklistView":"Просмотреть список текущего черного списка.",
"blacklistAdd":"Добавить пользователя в черный список.",
@@ -392,6 +488,7 @@
"statsUserUser":"Пользователь для просмотра.",
"statsTicket":"Просмотреть статистику тикета на сервере.",
"statsTicketTicket":"Тикет для просмотра.",
"clear":"Удалить несколько тикетов одновременно.",
"clearFilter":"Фильтр для очистки тикетов.",
"clearFilters":{
@@ -404,6 +501,7 @@
"unpin":"Не закрепленные",
"autoclose":"Автоматически закрытые"
},
"autoclose":"Управление автозакрытием в тикете.",
"autocloseDisable":"Отключить автозакрытие в этом тикете.",
"autocloseEnable":"Включить автозакрытие в этом тикете.",
@@ -411,7 +509,21 @@
"autodelete":"Управление автоудалением в тикете.",
"autodeleteDisable":"Отключить автоудаление в этом тикете.",
"autodeleteEnable":"Включить автоудаление в этом тикете.",
"autodeleteEnableTime": "Количество дней, в течение которых тикет должен быть неактивен, чтобы удалить его."
"autodeleteEnableTime":"Количество дней, в течение которых тикет должен быть неактивен, чтобы удалить его.",
"topic":"Управление темой канала тикета.",
"topicSet":"Установить тему канала тикета.",
"topicValue":"Новая тема канала.",
"topicList":"Получить список всех тикетов с их темой и статистикой.",
"priority":"Управление приоритетом тикета.",
"prioritySet":"Установить приоритет тикета.",
"priorityValue":"Приоритет канала.",
"priorityGet":"Получить приоритет тикета.",
"priorityList":"Получить список всех тикетов с их приоритетом.",
"transfer":"Передать владение тикетом от одного пользователя другому.",
"transferUser":"Пользователь, которому передать тикет.",
"transcripts":"Просмотреть историю транскриптов тикетов пользователя.",
"transcriptsUser":"Пользователь для просмотра."
},
"helpMenu":{
"help":"Получите список всех доступных команд.",
@@ -439,7 +551,16 @@
"autocloseDisable":"Отключить автозакрытие в этом тикете.",
"autocloseEnable":"Включить автозакрытие в этом тикете.",
"autodeleteDisable":"Отключить автоудаление в этом тикете.",
"autodeleteEnable": "Включить автоудаление в этом тикете."
"autodeleteEnable":"Включить автоудаление в этом тикете.",
"categories":{
"general":"Общие команды",
"basicTicket":"Основные команды тикета",
"advancedTicket":"Расширенные команды тикета",
"userTicket":"Пользовательские команды тикета",
"admin":"Команды администратора",
"advanced":"Расширенные команды",
"extra":"Дополнительные команды"
}
},
"stats":{
"scopes":{
@@ -447,7 +568,8 @@
"system":"Статистика системы",
"user":"Статистика пользователя",
"ticket":"Статистика тикета",
"participants": "Участники"
"participants":"Участники",
"messages":"Сообщения"
},
"properties":{
"ticketsCreated":"Тикеты созданы",
@@ -459,7 +581,48 @@
"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":"Выберите ваш вариант",
"selectPriorityLevel":"Выберите уровень приоритета"
},
"priorities":{
"urgent":"Срочно",
"veryHigh":"Очень высокий",
"high":"Высокий",
"normal":"Обычный",
"low":"Низкий",
"veryLow":"Очень низкий",
"none":"Нет"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["HanumeshGupta"],
"lastedited":"19/06/2025",
"otversion":"v4.2.0",
"translators":["HanumeshGupta","ChatGPT"],
"lastedited":"25/05/2026",
"language":"Simplified Chainese",
"automated":true
},
@@ -31,6 +31,14 @@
"stringContains":"此字符串必须包含{0}!",
"stringChoices":"此字符串只能是以下值之一:{0}!",
"stringRegex":"此字符串无效!",
"stringInvertedContains":"此字符串不能包含 {0}!",
"stringLowercase":"此字符串必须全部使用小写字母!",
"stringUppercase":"此字符串必须全部使用大写字母!",
"stringSpecialCharacters":"此字符串不能包含任何特殊字符!(仅允许 a-z、0-9 和空格)",
"stringNoSpaces":"此字符串不能包含空格!",
"stringCapitalWord":"建议此字符串中的每个单词都以大写字母开头!",
"stringCapitalSentence":"此字符串中的某些句子似乎没有以大写字母开头!",
"stringPunctuation":"此字符串中的句子似乎没有以标点符号结尾!",
"numberTooShort":"此数字不能少于{0}位!",
"numberTooLong":"此数字不能超过{0}位!",
@@ -48,6 +56,8 @@
"numberNegative":"此数字不能为负数!",
"numberPositive":"此数字不能为正数!",
"numberZero":"此数字不能为零!",
"numberNan":"此数字不能为 NaN(非数字)!",
"numberInvertedContains":"此数字不能包含 {0}!",
"booleanTrue":"此布尔值不能为真!",
"booleanFalse":"此布尔值不能为假!",
@@ -89,7 +99,8 @@
"invalidButton":"此按钮必须至少有一个{0}或{1}!",
"unusedOption":"选项{0}未在任何地方使用!",
"unusedQuestion":"问题{0}未在任何地方使用!",
"dropdownOption": "启用下拉菜单的面板只能包含“ticket”类型的选项!"
"dropdownOption":"带下拉菜单的面板只能包含以下类型的选项:'ticket'、'role' 或 'sub-panel'。",
"customInvalidVersion":"配置文件中指定的版本不匹配!请确保您已将配置更新至最新版本!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"查看文本命令",
"helpPage":"第{0}页",
"withReason":"带原因",
"withoutTranscript": "不带记录"
"withoutTranscript":"不带记录",
"blacklistAdd":"添加用户至黑名单",
"blacklistRemove":"释放用户"
},
"titles":{
"created":"工单已创建",
@@ -132,6 +145,7 @@
"blacklistAddDm":"已加入黑名单",
"blacklistRemoveDm":"已从黑名单移除",
"clear":"工单已清除",
"clearTickets":"清除工单",
"roles":"角色已更新",
"autoclose":"工单自动关闭",
@@ -139,7 +153,13 @@
"autocloseDisabled":"自动关闭已禁用",
"autodelete":"工单自动删除",
"autodeleteEnabled":"自动删除已启用",
"autodeleteDisabled": "自动删除已禁用"
"autodeleteDisabled":"自动删除已禁用",
"topicSet":"主题已更改",
"prioritySet":"优先级已更改",
"priorityGet":"工单优先级",
"transfer":"工单已转移",
"transcripts":"记录历史"
},
"descriptions":{
"create":"您的工单已创建。点击下方按钮访问!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"您只能同时创建{0}个工单!",
"ticketMessageAutoclose":"此工单将在超过{0}小时未活动后自动关闭!",
"ticketMessageAutodelete":"此工单将在超过{0}天未活动后自动删除!",
"panelReady": "您可以在下方找到面板!\n现在可以删除此消息!"
"panelReady":"面板已在后续消息中可用!\n此消息现在可以删除!",
"topicSet":"频道主题已由 {0} 成功更改!",
"prioritySet":"工单优先级已由 {1} 成功更改为 {0}!",
"priorityGet":"此工单当前的优先级为 {0}。",
"transfer":"工单所有权已由 {2} 成功从 {0} 转移至 {1}!"
},
"modal":{
"closePlaceholder":"您为什么关闭此工单?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0}被{1}从黑名单移除!",
"blacklistAddDm":"您已被我们的服务器拉黑!\n从现在起,您无法创建工单!",
"blacklistRemoveDm":"您已被我们的服务器解禁!\n现在您可以再次创建工单!",
"clearLog": "{0}个工单已被{1}删除!"
"clearLog":"{0}个工单已被{1}删除!",
"transferLog":"此工单的所有权已由 {2} 从 {0} 转移至 {1}!",
"transferDm":"您在服务器中的工单所有权已从 {0} 转移至 {1}!",
"prioritySetLog":"此工单的优先级已由 {1} 更改为 {0}!",
"prioritySetDm":"您在服务器中的工单优先级已更改为 {0}!",
"roleUpdateLog":"{0} 已更新其角色!",
"roleUpdateDm":"您在服务器中的角色已更新!",
"topicSetLog":"此工单的优先级已由 {1} 设置为 {0}。",
"topicSetDm":"你的工单优先级已设置为 {0}。"
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"重试",
"continue":"删除无记录",
"backup":"创建备份记录",
"error": "创建记录时出错。\n您想怎么做?\n\n在您点击以下按钮之前,此工单不会被删除。"
"error":"创建记录时出错。\n您想怎么做?\n\n在您点击以下按钮之前,此工单不会被删除。",
"title":"记录错误",
"noHistory":"该用户目前没有任何记录。",
"historyNotSupported":"目前仅支持 HTML Transcripts 的记录历史。\n文本记录历史将在未来版本中提供。"
},
"text":{
"messagesTitle":"消息",
"embedTitle":"EMBED",
"fileTitle":"文件",
"fieldsTitle":"字段",
"reactionsTitle":"反应",
"statsTitle":"统计",
"emptyContent":"<内容为空>",
"noTitle":"<无标题>",
"noDesc":"<无描述>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"未知面板",
"notInGuild":"不在服务器中",
"channelRename":"无法重命名频道",
"busy": "工单繁忙"
"channelCategory":"无法更改分类",
"busy":"工单繁忙",
"permissionError":"权限错误"
},
"descriptions":{
"askForInfo":"请联系此机器人的所有者获取更多信息!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"当前频道不是有效工单!可能是旧版Open Ticket的工单!",
"notInGuild":"此{0}在私信中无效!请在服务器中重试!",
"channelRename":"由于Discord速率限制,机器人目前无法重命名频道。如果机器人未重启,频道将在10分钟后自动重命名。",
"channelCategory":"由于 Discord 速率限制,频道分类无法立即更改。如果机器人保持在线,将在 10 分钟内自动更改。",
"channelRenameSource":"此错误的来源是:{0}",
"busy": "无法使用此{0}!\n工单当前正在被机器人处理。\n\n请几秒后重试!"
"busy":"无法使用此{0}!\n工单当前正在被机器人处理。\n\n请几秒后重试!",
"closeBeforeMessage":"用户发送消息之前,无法关闭或删除此工单。",
"closeBeforeAdminMessage":"工单管理员或支持成员发送消息之前,无法关闭或删除此工单。",
"unableToCreateTicket":"您无法创建工单。",
"messageMissing":"无法找到交互消息。请改用命令 `{0}`。",
"stateExpired":"此交互已无效或已过期。请改用命令 `{0}`。在 Open Ticket 大版本更新后出现此错误是正常的。",
"panelStateExpired":"此面板已无效或已过期。请使用 `{0}` 创建新面板以解决问题。在 Open Ticket 大版本更新后出现此错误是正常的。"
},
"optionInvalidReasons":{
"stringRegex":"值不符合模式!",
@@ -331,7 +388,6 @@
"added":"已添加",
"removed":"已移除",
"filter":"筛选",
"claimedBy": "由{0}认领",
"method":"方式",
"type":"类型",
"blacklisted":"已拉黑",
@@ -343,6 +399,8 @@
"syntax":"语法",
"originalName":"原名称",
"newName":"新名称",
"originalCategory":"原始分类",
"newCategory":"新分类",
"until":"直到",
"validOptions":"有效选项",
"validPanels":"有效面板",
@@ -355,7 +413,29 @@
"status":"状态",
"claimed":"已认领",
"pinned":"已置顶",
"creationDate": "创建日期"
"creationDate":"创建日期",
"noone":"无人",
"open":"开启",
"closed":"关闭",
"priority":"优先级",
"participants":"参与者",
"yes":"是",
"no":"否",
"accept":"接受",
"cancel":"取消",
"option":"选项",
"topic":"主题",
"uptime":"系统运行时间",
"messages":"消息",
"embeds":"嵌入",
"files":"文件",
"components":"组件",
"cooldown":"冷却时间",
"maxTickets":"最大工单数",
"admins":"管理员",
"roles":"角色",
"size":"大小"
},
"lowercase":{
"text":"文本",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"您希望此面板在编辑时自动更新吗?",
"ticket":"立即创建一个工单。",
"ticketId":"您想要创建的工单的标识符。",
"ticketOtherUser":"为其他用户创建工单。",
"close":"关闭一个工单。",
"delete":"删除一个工单。",
"deleteNoTranscript":"删除此工单而不创建记录。",
@@ -384,6 +465,7 @@
"unclaim":"取消认领一个工单。",
"pin":"置顶一个工单。",
"unpin":"取消置顶一个工单。",
"move":"移动一个工单。",
"moveId":"您想要移动到的选项的标识符。",
"rename":"重命名一个工单。",
@@ -392,6 +474,7 @@
"addUser":"要添加的用户。",
"remove":"从工单中移除用户。",
"removeUser":"要移除的用户。",
"blacklist":"管理工单黑名单。",
"blacklistView":"查看当前黑名单的列表。",
"blacklistAdd":"将用户添加到黑名单。",
@@ -405,6 +488,7 @@
"statsUserUser":"要查看的用户。",
"statsTicket":"查看服务器中工单的统计信息。",
"statsTicketTicket":"要查看的工单。",
"clear":"同时删除多个工单。",
"clearFilter":"清除工单的筛选条件。",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"未置顶",
"autoclose":"自动关闭"
},
"autoclose":"管理工单中的自动关闭。",
"autocloseDisable":"禁用此工单的自动关闭。",
"autocloseEnable":"启用此工单的自动关闭。",
@@ -424,7 +509,21 @@
"autodelete":"管理工单中的自动删除。",
"autodeleteDisable":"禁用此工单的自动删除。",
"autodeleteEnable":"启用此工单的自动删除。",
"autodeleteEnableTime": "工单需要多少天不活动才能自动删除。"
"autodeleteEnableTime":"工单需要多少天不活动才能自动删除。",
"topic":"管理工单频道的主题。",
"topicSet":"设置工单频道的主题。",
"topicValue":"频道的新主题。",
"topicList":"获取所有工单及其主题和统计信息的列表。",
"priority":"管理工单的优先级。",
"prioritySet":"设置工单的优先级。",
"priorityValue":"频道的优先级。",
"priorityGet":"获取工单的优先级。",
"priorityList":"获取所有工单的优先级状态列表。",
"transfer":"将工单所有权从一位用户转移至另一位用户。",
"transferUser":"要转移给的用户。",
"transcripts":"查看用户的工单记录历史。",
"transcriptsUser":"要查看的用户。"
},
"helpMenu":{
"help":"获取所有可用命令的列表。",
@@ -452,7 +551,16 @@
"autocloseDisable":"禁用此工单的自动关闭。",
"autocloseEnable":"启用此工单的自动关闭。",
"autodeleteDisable":"禁用此工单的自动删除。",
"autodeleteEnable": "启用此工单的自动删除。"
"autodeleteEnable":"启用此工单的自动删除。",
"categories":{
"general":"通用命令",
"basicTicket":"基础工单命令",
"advancedTicket":"高级工单命令",
"userTicket":"用户工单命令",
"admin":"管理员命令",
"advanced":"高级命令",
"extra":"额外命令"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"系统统计",
"user":"用户统计",
"ticket":"工单统计",
"participants": "参与者"
"participants":"参与者",
"messages":"消息"
},
"properties":{
"ticketsCreated":"工单已创建",
@@ -472,7 +581,48 @@
"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":"选择您的选项",
"selectPriorityLevel":"选择优先级"
},
"priorities":{
"urgent":"紧急",
"veryHigh":"非常高",
"high":"高",
"normal":"普通",
"low":"低",
"veryLow":"非常低",
"none":"无"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["HanumeshGupta"],
"lastedited":"19/06/2025",
"otversion":"v4.2.0",
"translators":["HanumeshGupta","ChatGPT"],
"lastedited":"25/05/2026",
"language":"Solvenian",
"automated":true
},
@@ -31,6 +31,14 @@
"stringContains":"Ta niz mora vsebovati {0}!",
"stringChoices":"Ta niz je lahko le ena od naslednjih vrednosti: {0}!",
"stringRegex":"Ta niz je neveljaven!",
"stringInvertedContains":"Ta niz ne sme vsebovati {0}!",
"stringLowercase":"Ta niz mora biti napisan samo z malimi črkami!",
"stringUppercase":"Ta niz mora biti napisan samo z velikimi črkami!",
"stringSpecialCharacters":"Ta niz ne sme vsebovati posebnih znakov! (dovoljeni samo a-z, 0-9 in presledek)",
"stringNoSpaces":"Ta niz ne sme vsebovati presledkov!",
"stringCapitalWord":"Priporočljivo je, da se vsaka beseda v tem nizu začne z veliko začetnico!",
"stringCapitalSentence":"Zdi se, da nekatere povedi v tem nizu ne začnejo z veliko začetnico!",
"stringPunctuation":"Zdi se, da se poved v tem nizu ne konča s ločilom!",
"numberTooShort":"Ta številka ne sme biti krajša od {0} znakov!",
"numberTooLong":"Ta številka ne sme biti daljša od {0} znakov!",
@@ -48,6 +56,8 @@
"numberNegative":"Ta številka ne sme biti negativna!",
"numberPositive":"Ta številka ne sme biti pozitivna!",
"numberZero":"Ta številka ne sme biti nič!",
"numberNan":"Ta številka ne sme biti NaN (Not A Number)!",
"numberInvertedContains":"Ta številka ne sme vsebovati {0}!",
"booleanTrue":"Ta logična vrednost ne sme biti resnična!",
"booleanFalse":"Ta logična vrednost ne sme biti napačna!",
@@ -89,7 +99,8 @@
"invalidButton":"Ta gumb mora imeti vsaj {0} ali {1}!",
"unusedOption":"Možnost {0} se ne uporablja nikjer!",
"unusedQuestion":"Vprašanje {0} se ne uporablja nikjer!",
"dropdownOption": "Panel z omogočenim spustnim menijem lahko vsebuje samo možnosti tipa 'ticket'!"
"dropdownOption":"Plošča z spustnim menijem lahko vsebuje samo možnosti tipov: 'ticket', 'role' ali 'sub-panel'.",
"customInvalidVersion":"Različica, navedena v vaši konfiguraciji, se ne ujema! Prepričajte se, da ste konfiguracijo posodobili na najnovejšo različico!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Prikaži Besedilne Ukaze",
"helpPage":"Stran {0}",
"withReason":"Z Razlogom",
"withoutTranscript": "Brez Prepisa"
"withoutTranscript":"Brez Prepisa",
"blacklistAdd":"Dodaj uporabnika na črno listo",
"blacklistRemove":"Sprosti uporabnika"
},
"titles":{
"created":"Vstopnica Ustvarjena",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Dodan na Črno Listo",
"blacklistRemoveDm":"Odstranjen s Črne Liste",
"clear":"Vstopnice Izbrisane",
"clearTickets":"Počisti zahtevke",
"roles":"Vloge Posodobljene",
"autoclose":"Vstopnica Samodejno Zaprta",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Samodejno Zapiranje Onemogočeno",
"autodelete":"Vstopnica Samodejno Izbrisana",
"autodeleteEnabled":"Samodejno Brisanje Omogočeno",
"autodeleteDisabled": "Samodejno Brisanje Onemogočeno"
"autodeleteDisabled":"Samodejno Brisanje Onemogočeno",
"topicSet":"Tema spremenjena",
"prioritySet":"Prioriteta spremenjena",
"priorityGet":"Prioriteta zahtevka",
"transfer":"Zahtevek prenesen",
"transcripts":"Zgodovina prepisov"
},
"descriptions":{
"create":"Vaša vstopnica je bila ustvarjena. Kliknite spodnji gumb za dostop do nje!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Lahko ustvarite le {0} vstopnice hkrati!",
"ticketMessageAutoclose":"Ta vstopnica bo samodejno zaprta, če bo neaktivna {0}h!",
"ticketMessageAutodelete":"Ta vstopnica bo samodejno izbrisana, če bo neaktivna {0} dni!",
"panelReady": "Panel najdete spodaj!\nTo sporočilo lahko zdaj izbrišete!"
"panelReady":"Pult je na voljo v nadaljnjem sporočilu!\nTo sporočilo je zdaj mogoče izbrisati!",
"topicSet":"Tema kanala je bila uspešno spremenjena s strani {0}!",
"prioritySet":"Prioriteta zahtevka je bila uspešno spremenjena v {0} s strani {1}!",
"priorityGet":"Trenutna prioriteta tega zahtevka je {0}.",
"transfer":"Lastništvo zahtevka je bilo uspešno preneseno z {0} na {1} s strani {2}!"
},
"modal":{
"closePlaceholder":"Zakaj ste zaprli to vstopnico?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} je bil odstranjen s črne liste s strani {1}!",
"blacklistAddDm":"Bili ste dodani na črno listo na našem strežniku!\nOd zdaj naprej ne morete ustvarjati vstopnic!",
"blacklistRemoveDm":"Bili ste odstranjeni s črne liste na našem strežniku!\nZdaj lahko znova ustvarjate vstopnice!",
"clearLog": "{0} vstopnic je bilo izbrisanih s strani {1}!"
"clearLog":"{0} vstopnic je bilo izbrisanih s strani {1}!",
"transferLog":"Lastništvo tega zahtevka je bilo preneseno z {0} na {1} s strani {2}!",
"transferDm":"Lastništvo vašega zahtevka je bilo v našem strežniku preneseno z {0} na {1}!",
"prioritySetLog":"Prioriteta tega zahtevka je bila spremenjena v {0} s strani {1}!",
"prioritySetDm":"Prioriteta vašega zahtevka je bila spremenjena v {0} v našem strežniku!",
"roleUpdateLog":"{0} je posodobil svoje vloge!",
"roleUpdateDm":"Vaše vloge v našem strežniku so bile posodobljene!",
"topicSetLog":"Prioriteta tega zahtevka je bila nastavljena na {0} s strani {1}.",
"topicSetDm":"Prioriteta vašega zahtevka je bila nastavljena na {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Poskusi Znova",
"continue":"Izbriši Brez Prepisa",
"backup":"Ustvarili Varnostni Prepis",
"error": "Prišlo je do napake med ustvarjanjem prepisa.\nKaj bi radi naredili?\n\nTa vstopnica ne bo izbrisana, dokler ne kliknete enega od teh gumbov."
"error":"Prišlo je do napake med ustvarjanjem prepisa.\nKaj bi radi naredili?\n\nTa vstopnica ne bo izbrisana, dokler ne kliknete enega od teh gumbov.",
"title":"Napaka v prepisu",
"noHistory":"Ta uporabnik še nima nobenih prepisov.",
"historyNotSupported":"Zgodovina prepisov je trenutno podprta samo z HTML Transcripts.\nZgodovina besedilnih prepisov bo na voljo v prihodnjih različicah."
},
"text":{
"messagesTitle":"SPOROČILA",
"embedTitle":"EMBED",
"fileTitle":"DATOTEKA",
"fieldsTitle":"POLJA",
"reactionsTitle":"REAKCIJE",
"statsTitle":"STATISTIKA",
"emptyContent":"<vsebina je prazna>",
"noTitle":"<brez naslova>",
"noDesc":"<brez opisa>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Neznan Panel",
"notInGuild":"Ni na Strežniku",
"channelRename":"Ni mogoče Preimenovati Kanala",
"busy": "Vstopnica je Zasedena"
"channelCategory":"Ni mogoče spremeniti kategorije",
"busy":"Vstopnica je Zasedena",
"permissionError":"Napaka dovoljenj"
},
"descriptions":{
"askForInfo":"Stopite v stik z lastnikom tega bota za več informacij!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Trenutni kanal ni veljavna vstopnica! Morda je vstopnica iz starejše različice Open Ticket!",
"notInGuild":"Ta {0} ne deluje v zasebnih sporočilih! Poskusite znova na strežniku!",
"channelRename":"Zaradi omejitev Discord-a trenutno ni mogoče preimenovati kanala. Kanal bo samodejno preimenovan v več kot 10 minutah, če bot ne bo ponovno zagnan.",
"channelCategory":"Zaradi Discord omejitev hitrosti kategorije kanala ni bilo mogoče takoj spremeniti. Če bot ostane na spletu, bo samodejno spremenjena v 10 minutah.",
"channelRenameSource":"Vir te napake je: {0}",
"busy": "Ni mogoče uporabiti tega {0}!\nVstopnica je trenutno v obdelavi.\n\nPoskusite znova čez nekaj sekund!"
"busy":"Ni mogoče uporabiti tega {0}!\nVstopnica je trenutno v obdelavi.\n\nPoskusite znova čez nekaj sekund!",
"closeBeforeMessage":"Tega zahtevka ni mogoče zapreti/izbrisati, preden uporabnik ne pošlje sporočila.",
"closeBeforeAdminMessage":"Tega zahtevka ni mogoče zapreti/izbrisati, preden skrbnik zahtevkov ali član podpore ne pošlje sporočila.",
"unableToCreateTicket":"Ne morete ustvariti zahtevka.",
"messageMissing":"Sporočila interakcije ni bilo mogoče najti. Namesto tega uporabite ukaz `{0}`.",
"stateExpired":"Ta interakcija ni več veljavna ali je potekla. Namesto tega uporabite ukaz `{0}`. To je normalno po večji posodobitvi Open Ticket.",
"panelStateExpired":"Ta plošča ni več veljavna ali je potekla. Ustvarite novo ploščo z uporabo `{0}` za rešitev težave. To je normalno po večji posodobitvi Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Vrednost se ne ujema z vzorcem!",
@@ -331,7 +388,6 @@
"added":"Dodano",
"removed":"Odstranjeno",
"filter":"Filter",
"claimedBy": "Prevzel {0}",
"method":"Metoda",
"type":"Tip",
"blacklisted":"Na črnem seznamu",
@@ -343,6 +399,8 @@
"syntax":"Sintaksa",
"originalName":"Prvotno ime",
"newName":"Novo ime",
"originalCategory":"Izvirna kategorija",
"newCategory":"Nova kategorija",
"until":"Do",
"validOptions":"Veljavne možnosti",
"validPanels":"Veljavni paneli",
@@ -355,7 +413,29 @@
"status":"Status",
"claimed":"Prevzeto",
"pinned":"Pripeto",
"creationDate": "Datum ustvarjanja"
"creationDate":"Datum ustvarjanja",
"noone":"Nihče",
"open":"Odprto",
"closed":"Zaprto",
"priority":"Prioriteta",
"participants":"Udeleženci",
"yes":"Da",
"no":"Ne",
"accept":"Sprejmi",
"cancel":"Prekliči",
"option":"Možnost",
"topic":"Tema",
"uptime":"Čas delovanja sistema",
"messages":"Sporočila",
"embeds":"Vdelave",
"files":"Datoteke",
"components":"Komponente",
"cooldown":"Ohladitev",
"maxTickets":"Največ zahtevkov",
"admins":"Skrbniki",
"roles":"Vloge",
"size":"Velikost"
},
"lowercase":{
"text":"besedilo",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Ali želite, da se ta panel samodejno posodobi, ko ga uredite?",
"ticket":"Takoj ustvari vstopnico.",
"ticketId":"Identifikator vstopnice, ki jo želite ustvariti.",
"ticketOtherUser":"Ustvari zahtevek za drugega uporabnika.",
"close":"Zapri vstopnico.",
"delete":"Izbriši vstopnico.",
"deleteNoTranscript":"Izbriši to vstopnico brez ustvarjanja prepisa.",
@@ -384,6 +465,7 @@
"unclaim":"Odstrani prevzem vstopnice.",
"pin":"Pripni vstopnico.",
"unpin":"Odstrani pripenjanje vstopnice.",
"move":"Premakni vstopnico.",
"moveId":"Identifikator možnosti, na katero želite premakniti.",
"rename":"Preimenuj vstopnico.",
@@ -392,6 +474,7 @@
"addUser":"Uporabnik, ki ga želite dodati.",
"remove":"Odstrani uporabnika iz vstopnice.",
"removeUser":"Uporabnik, ki ga želite odstraniti.",
"blacklist":"Upravljaj s črnim seznamom vstopnic.",
"blacklistView":"Oglej si seznam trenutnega črnega seznama.",
"blacklistAdd":"Dodaj uporabnika na črni seznam.",
@@ -405,6 +488,7 @@
"statsUserUser":"Uporabnik, ki ga želite ogledati.",
"statsTicket":"Oglej si statistiko vstopnice na strežniku.",
"statsTicketTicket":"Vstopnica, ki jo želite ogledati.",
"clear":"Izbriši več vstopnic hkrati.",
"clearFilter":"Filter za čiščenje vstopnic.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Nepripete",
"autoclose":"Samodejno zaprte"
},
"autoclose":"Upravljaj samodejno zapiranje v vstopnici.",
"autocloseDisable":"Onemogoči samodejno zapiranje v tej vstopnici.",
"autocloseEnable":"Omogoči samodejno zapiranje v tej vstopnici.",
@@ -424,7 +509,21 @@
"autodelete":"Upravljaj samodejno brisanje v vstopnici.",
"autodeleteDisable":"Onemogoči samodejno brisanje v tej vstopnici.",
"autodeleteEnable":"Omogoči samodejno brisanje v tej vstopnici.",
"autodeleteEnableTime": "Število dni, ko mora biti vstopnica neaktivna, da se izbriše."
"autodeleteEnableTime":"Število dni, ko mora biti vstopnica neaktivna, da se izbriše.",
"topic":"Upravljajte temo kanala zahtevka.",
"topicSet":"Nastavite temo kanala zahtevka.",
"topicValue":"Nova tema kanala.",
"topicList":"Pridobite seznam vseh zahtevkov z njihovimi temami in statistiko.",
"priority":"Upravljajte prioriteto zahtevka.",
"prioritySet":"Nastavite prioriteto zahtevka.",
"priorityValue":"Prioriteta kanala.",
"priorityGet":"Pridobite prioriteto zahtevka.",
"priorityList":"Pridobite seznam vseh zahtevkov z njihovim prioritetnim statusom.",
"transfer":"Prenesite lastništvo zahtevka z enega uporabnika na drugega.",
"transferUser":"Uporabnik, na katerega želite prenesti.",
"transcripts":"Prikaži zgodovino prepisov zahtevkov uporabnika.",
"transcriptsUser":"Uporabnik za prikaz."
},
"helpMenu":{
"help":"Pridobite seznam vseh razpoložljivih ukazov.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Onemogoči samodejno zapiranje v tej vstopnici.",
"autocloseEnable":"Omogoči samodejno zapiranje v tej vstopnici.",
"autodeleteDisable":"Onemogoči samodejno brisanje v tej vstopnici.",
"autodeleteEnable": "Omogoči samodejno brisanje v tej vstopnici."
"autodeleteEnable":"Omogoči samodejno brisanje v tej vstopnici.",
"categories":{
"general":"Splošni ukazi",
"basicTicket":"Osnovni ukazi zahtevkov",
"advancedTicket":"Napredni ukazi zahtevkov",
"userTicket":"Uporabniški ukazi zahtevkov",
"admin":"Skrbniški ukazi",
"advanced":"Napredni ukazi",
"extra":"Dodatni ukazi"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Sistemska statistika",
"user":"Uporabniška statistika",
"ticket":"Statistika vstopnic",
"participants": "Udeleženci"
"participants":"Udeleženci",
"messages":"Sporočila"
},
"properties":{
"ticketsCreated":"Ustvarjene vstopnice",
@@ -472,7 +581,48 @@
"ticketsPinned":"Pripete vstopnice",
"ticketsMoved":"Premaknjene vstopnice",
"usersBlacklisted":"Uporabniki na črnem seznamu",
"transcriptsCreated": "Ustvarjeni prepisi"
}
"transcriptsCreated":"Ustvarjeni prepisi",
"ticketsAutodeleted":"Samodejno izbrisani zahtevki",
"ticketsTransferred":"Preneseni zahtevki",
"ticketVolume":"Količina zahtevkov",
"averageTickets":"Povprečno zahtevkov/uporabnik",
"currentTickets":"Trenutni zahtevki",
"age":"Starost zahtevka",
"responseTime":"Čas odziva",
"resolutionTime":"Čas rešitve",
"createdOn":"Ustvarjeno",
"createdBy":"Ustvaril",
"closedOn":"Zaprto",
"closedBy":"Zaprl",
"claimedOn":"Prevzeto",
"claimedBy":"Prevzel",
"pinnedOn":"Pripeto",
"pinnedBy":"Pripel",
"deletedOn":"Izbrisano",
"deletedBy":"Izbrisal"
},
"roles":{
"developer":"Razvijalec",
"serverOwner":"Lastnik strežnika",
"serverAdmin":"Skrbnik strežnika",
"moderator":"Moderatorji",
"support":"Podporna ekipa",
"member":"Član"
}
},
"panel":{
"selectTicket":"Izberite svoj zahtevek",
"selectRole":"Izberite svojo vlogo",
"selectOption":"Izberite svojo možnost",
"selectPriorityLevel":"Izberi raven prioritete"
},
"priorities":{
"urgent":"Nujno",
"veryHigh":"Zelo visoka",
"high":"Visoka",
"normal":"Normalna",
"low":"Nizka",
"veryLow":"Zelo nizka",
"none":"Brez"
}
}
+170 -20
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["Redactado","Josuens"],
"lastedited":"22/08/2024",
"lastedited":"25/05/2026",
"language":"Spanish",
"automated":false
},
@@ -31,6 +31,14 @@
"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}!",
@@ -48,6 +56,8 @@
"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!",
@@ -69,8 +79,8 @@
"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!",
@@ -89,7 +99,8 @@
"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":"Un panel con menú desplegable solo puede contener opciones de los tipos: 'ticket', 'role' o 'sub-panel'.",
"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":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Ver los Comandos de Texto",
"helpPage":"Página {0}",
"withReason":"Con razón",
"withoutTranscript":"Sin transcripción"
"withoutTranscript":"Sin transcripción",
"blacklistAdd":"Añadir Usuario a la Lista Negra",
"blacklistRemove":"Liberar Usuario"
},
"titles":{
"created":"Ticket Creado",
@@ -132,6 +145,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 +153,13 @@
"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",
"transcripts":"Historial de Transcripciones"
},
"descriptions":{
"create":"¡Tu ticket ha sido creado! Haz click en el botón abajo para verlo!",
@@ -180,7 +200,12 @@
"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?",
@@ -220,7 +245,16 @@
"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!",
"topicSetLog":"La prioridad de este ticket ha sido establecida en {0} por {1}.",
"topicSetDm":"La prioridad de tu ticket ha sido establecida en {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"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",
"noHistory":"Este usuario todavía no tiene transcripciones.",
"historyNotSupported":"El historial de transcripciones actualmente solo es compatible con HTML Transcripts.\nEl historial de transcripciones de texto estará disponible en futuras versiones."
},
"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 +305,9 @@
"unknownPanel":"Panel Desconocido",
"notInGuild":"No está en el Servidor",
"channelRename":"No es posible renombrar el canal",
"busy":"El ticket está siendo procesado"
"channelCategory":"No Se Puede Cambiar la Categoría",
"busy":"El ticket está siendo procesado",
"permissionError":"Error de Permisos"
},
"descriptions":{
"askForInfo":"¡Contacta al propietario de este bot para obtener más información!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"¡El canal actual no es un ticket válido! ¡Podría haber sido un ticket de una versión antigua de Open Ticket!",
"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.",
"channelCategory":"Debido a los límites de tasa de Discord, la categoría del canal no pudo cambiarse inmediatamente. Se cambiará automáticamente dentro de 10 minutos si el bot permanece en línea.",
"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.",
"messageMissing":"No se pudo localizar el mensaje de la interacción. Usa el comando `{0}` en su lugar.",
"stateExpired":"Esta interacción ya no es válida o ha expirado. Usa el comando `{0}` en su lugar. Es normal recibir este error después de una actualización importante de Open Ticket.",
"panelStateExpired":"Este panel ya no es válido o ha expirado. Crea un nuevo panel usando `{0}` para solucionar el problema. Es normal recibir este error después de una actualización importante de Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"¡El valor no coincide con el patrón!",
@@ -331,7 +388,6 @@
"added":"Agregado",
"removed":"Eliminado",
"filter":"Filtrar",
"claimedBy":"Reclamado Por {0}",
"method":"Método",
"type":"Tipo",
"blacklisted":"En La Lista Negra",
@@ -343,6 +399,8 @@
"syntax":"Sintaxis",
"originalName":"Nombre Original",
"newName":"Nuevo Nombre",
"originalCategory":"Categoría Original",
"newCategory":"Nueva Categoría",
"until":"Hasta",
"validOptions":"Operaciones Válidas",
"validPanels":"Paneles Válidos",
@@ -352,10 +410,32 @@
"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",
"accept":"Aceptar",
"cancel":"Cancelar",
"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",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"¿Quieres que este panel se actualice automáticamente cuando se edite?",
"ticket":"Crea un ticket instantáneamente.",
"ticketId":"El identificador del ticket que quieres crear.",
"ticketOtherUser":"Crear un ticket para otro usuario.",
"close":"Cierra un ticket.",
"delete":"Elimina un ticket.",
"deleteNoTranscript":"Elimina este ticket sin crear una transcripción.",
@@ -384,6 +465,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 +474,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 +488,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 +501,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 +509,21 @@
"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.",
"transcripts":"Ver el historial de transcripciones de tickets de un usuario.",
"transcriptsUser":"El usuario a visualizar."
},
"helpMenu":{
"help":"Obtén una lista de todos los comandos disponibles.",
@@ -452,7 +551,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 +568,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 +581,48 @@
"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",
"selectPriorityLevel":"Seleccionar nivel de prioridad"
},
"priorities":{
"urgent":"Urgente",
"veryHigh":"Muy Alta",
"high":"Alta",
"normal":"Normal",
"low":"Baja",
"veryLow":"Muy Baja",
"none":"Ninguna"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion": "v4.0.7",
"otversion":"v4.2.0",
"translators":["NoOneNook"],
"lastedited": "25/03/2025",
"lastedited":"25/05/2026",
"language":"Svenska",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Denna sträng ska innehålla {0}!",
"stringChoices":"Denna sträng kan endast vara en av följande värden: {0}!",
"stringRegex":"Denna sträng är ogiltig!",
"stringInvertedContains":"Denna sträng får inte innehålla {0}!",
"stringLowercase":"Denna sträng måste skrivas enbart med gemener!",
"stringUppercase":"Denna sträng måste skrivas enbart med versaler!",
"stringSpecialCharacters":"Denna sträng får inte innehålla några specialtecken! (endast a-z, 0-9 och mellanslag)",
"stringNoSpaces":"Denna sträng får inte innehålla mellanslag!",
"stringCapitalWord":"Det rekommenderas att varje ord i denna sträng börjar med stor bokstav!",
"stringCapitalSentence":"Det verkar som att vissa meningar i denna sträng inte börjar med stor bokstav!",
"stringPunctuation":"Det verkar som att meningen i denna sträng inte slutar med ett skiljetecken!",
"numberTooShort":"Detta tal kan inte vara kortare än {0} tecken!",
"numberTooLong":"Detta tal kan inte vara längre än {0} tecken!",
@@ -48,6 +56,8 @@
"numberNegative":"Detta tal kan inte vara negativt!",
"numberPositive":"Detta tal kan inte vara positivt!",
"numberZero":"Detta tal kan inte vara noll!",
"numberNan":"Detta nummer får inte vara NaN (Not A Number)!",
"numberInvertedContains":"Detta nummer får inte innehålla {0}!",
"booleanTrue":"Detta booleska värde kan inte vara sant!",
"booleanFalse":"Detta booleska värde kan inte vara falskt!",
@@ -89,7 +99,8 @@
"invalidButton":"Denna knapp ska ha minst en {0} eller {1}!",
"unusedOption":"Alternativet {0} används inte någonstans!",
"unusedQuestion":"Frågan {0} används inte någonstans!",
"dropdownOption": "Ett panel med dropdown aktiverad kan endast innehålla alternativ av typen 'ärende'!"
"dropdownOption":"En panel med rullgardinsmeny kan endast innehålla alternativ av typerna: 'ticket', 'role' eller 'sub-panel'.",
"customInvalidVersion":"Versionen som anges i din konfiguration matchar inte! Se till att du har uppdaterat konfigurationen till den senaste versionen!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Visa Textkommandon",
"helpPage":"Sida {0}",
"withReason":"Med Orsak",
"withoutTranscript": "Utan Utskrift"
"withoutTranscript":"Utan Utskrift",
"blacklistAdd":"Svartlista Användare",
"blacklistRemove":"Frigör Användare"
},
"titles":{
"created":"Ärende Skapat",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Tillagd i Svartlista",
"blacklistRemoveDm":"Borttagen Från Svartlista",
"clear":"Ärenden Raderade",
"clearTickets":"Rensa Tickets",
"roles":"Roller Uppdaterade",
"autoclose":"Ärende Autostängt",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Autostängning Inaktiverad",
"autodelete":"Ärende Autoraderat",
"autodeleteEnabled":"Autoradering Aktiverad",
"autodeleteDisabled": "Autoradering Inaktiverad"
"autodeleteDisabled":"Autoradering Inaktiverad",
"topicSet":"Ämne Ändrat",
"prioritySet":"Prioritet Ändrad",
"priorityGet":"Ticketprioritet",
"transfer":"Ticket Överfört",
"transcripts":"Transkriptshistorik"
},
"descriptions":{
"create":"Ditt ärende har skapats. Klicka på knappen nedan för att få tillgång till det!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Du kan endast skapa {0} ärende(n) åt gången!",
"ticketMessageAutoclose":"Detta ärende kommer att autostängas när det är inaktivt i {0}t!",
"ticketMessageAutodelete":"Detta ärende kommer att autoraderas när det är inaktivt i {0} dagar!",
"panelReady": "Du hittar panelen nedan!\nDetta meddelande kan nu raderas!"
"panelReady":"Panelen är tillgänglig i uppföljningsmeddelandet!\nDetta meddelande kan nu raderas!",
"topicSet":"Kanalens ämne har ändrats av {0}!",
"prioritySet":"Ticketens prioritet har ändrats till {0} av {1}!",
"priorityGet":"Den aktuella prioriteten för denna ticket är {0}.",
"transfer":"Ägarskapet för ticketen har överförts från {0} till {1} av {2}!"
},
"modal":{
"closePlaceholder":"Varför stängde du detta ärende?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} har tagits bort från svartlistan av {1}!",
"blacklistAddDm":"Du har svartlistats på vår server!\nFrån och med nu kan du inte skapa ett ärende!",
"blacklistRemoveDm":"Du har tagits bort från svartlistan på vår server!\nNu kan du skapa ärenden igen!",
"clearLog": "{0} ärenden har raderats av {1}!"
"clearLog":"{0} ärenden har raderats av {1}!",
"transferLog":"Ägarskapet för denna ticket har överförts från {0} till {1} av {2}!",
"transferDm":"Ägarskapet för din ticket har överförts från {0} till {1} på vår server!",
"prioritySetLog":"Prioriteten för denna ticket har ändrats till {0} av {1}!",
"prioritySetDm":"Prioriteten för din ticket har ändrats till {0} på vår server!",
"roleUpdateLog":"{0} har uppdaterat sina roller!",
"roleUpdateDm":"Dina roller på vår server har uppdaterats!",
"topicSetLog":"Prioriteten för detta ärende har satts till {0} av {1}.",
"topicSetDm":"Prioriteten för ditt ärende har satts till {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Försök Igen",
"continue":"Radera Utan Utskrift",
"backup":"Skapa Säkerhetskopieringsutskrift",
"error": "Något gick fel vid försöket att skapa utskriften.\nVad vill du göra?\n\nDetta ärende kommer inte att raderas förrän du klickar på en av dessa knappar."
"error":"Något gick fel vid försöket att skapa utskriften.\nVad vill du göra?\n\nDetta ärende kommer inte att raderas förrän du klickar på en av dessa knappar.",
"title":"Transkriptionsfel",
"noHistory":"Denna användare har ännu inga transkript.",
"historyNotSupported":"Transkriptshistorik stöds för närvarande endast med HTML Transcripts.\nTexttranskriptshistorik kommer att finnas tillgänglig i framtida versioner."
},
"text":{
"messagesTitle":"MEDDELANDEN",
"embedTitle":"EMBED",
"fileTitle":"FIL",
"fieldsTitle":"FÄLT",
"reactionsTitle":"REAKTIONER",
"statsTitle":"STATISTIK",
"emptyContent":"<innehållet är tomt>",
"noTitle":"<ingen-titel>",
"noDesc":"<ingen-beskrivning>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Okänt Panel",
"notInGuild":"Inte På Server",
"channelRename":"Kan Inte Döpa Om Kanal",
"busy": "Ärendet Är Upptaget"
"channelCategory":"Kunde Inte Ändra Kategori",
"busy":"Ärendet Är Upptaget",
"permissionError":"Behörighetsfel"
},
"descriptions":{
"askForInfo":"Kontakta ägaren av denna bot för mer information!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Den nuvarande kanalen är inte ett giltigt ärende! Det kan ha varit ett ärende från en äldre version av Open Ticket!",
"notInGuild":"Denna {0} fungerar inte i DM! Försök igen på en server!",
"channelRename":"På grund av Discords hastighetsbegränsningar är det för närvarande omöjligt för botten att döpa om kanalen. Kanalen kommer automatiskt att döpas om inom 10 minuter om botten inte startas om.",
"channelCategory":"På grund av Discords hastighetsbegränsningar kunde kanalens kategori inte ändras omedelbart. Den kommer att ändras automatiskt inom 10 minuter om botten förblir online.",
"channelRenameSource":"Källan till detta fel är: {0}",
"busy": "Kan inte använda denna {0}!\nÄrendet behandlas för närvarande av botten.\n\nFörsök igen om några sekunder!"
"busy":"Kan inte använda denna {0}!\nÄrendet behandlas för närvarande av botten.\n\nFörsök igen om några sekunder!",
"closeBeforeMessage":"Denna ticket kan inte stängas/raderas innan ett meddelande har skickats av en användare.",
"closeBeforeAdminMessage":"Denna ticket kan inte stängas/raderas innan ett meddelande har skickats av en ticketadministratör eller supportmedlem.",
"unableToCreateTicket":"Du kan inte skapa en ticket.",
"messageMissing":"Kunde inte hitta meddelandet för interaktionen. Använd kommandot `{0}` istället.",
"stateExpired":"Denna interaktion är inte längre giltig eller har gått ut. Använd kommandot `{0}` istället. Det är normalt att få detta fel efter en större Open Ticket-uppdatering.",
"panelStateExpired":"Denna panel är inte längre giltig eller har gått ut. Skapa en ny panel med `{0}` för att lösa problemet. Det är normalt att få detta fel efter en större Open Ticket-uppdatering."
},
"optionInvalidReasons":{
"stringRegex":"Värdet matchar inte mönstret!",
@@ -331,7 +388,6 @@
"added":"Tillagd",
"removed":"Borttagen",
"filter":"Filter",
"claimedBy": "Taget Av {0}",
"method":"Metod",
"type":"Typ",
"blacklisted":"Svartlistad",
@@ -343,6 +399,8 @@
"syntax":"Syntax",
"originalName":"Ursprungligt Namn",
"newName":"Nytt Namn",
"originalCategory":"Originalkategori",
"newCategory":"Ny Kategori",
"until":"Till",
"validOptions":"Giltiga Alternativ",
"validPanels":"Giltiga Paneler",
@@ -352,10 +410,32 @@
"version":"Version",
"name":"Namn",
"role":"Roll",
"status": "Status",
"status":"STATUS",
"claimed":"Taget",
"pinned":"Fäst",
"creationDate": "Skapelsedatum"
"creationDate":"Skapelsedatum",
"noone":"INGEN",
"open":"ÖPPEN",
"closed":"STÄNGD",
"priority":"PRIORITET",
"participants":"DELTAGARE",
"yes":"JA",
"no":"NEJ",
"accept":"Acceptera",
"cancel":"Avbryt",
"option":"ALTERNATIV",
"topic":"ÄMNE",
"uptime":"SYSTEMETS DRIFTTID",
"messages":"MEDDELANDEN",
"embeds":"EMBEDS",
"files":"FILER",
"components":"KOMPONENTER",
"cooldown":"COOLDOWN",
"maxTickets":"MAX TICKETS",
"admins":"ADMINS",
"roles":"ROLLER",
"size":"STORLEK"
},
"lowercase":{
"text":"text",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Vill du att denna panel ska uppdateras automatiskt när den redigeras?",
"ticket":"Skapa ett ärende direkt.",
"ticketId":"Identifieraren för ärendet du vill skapa.",
"ticketOtherUser":"Skapa ett ärende för en annan användare.",
"close":"Stäng ett ärende.",
"delete":"Radera ett ärende.",
"deleteNoTranscript":"Radera detta ärende utan att skapa en utskrift.",
@@ -384,6 +465,7 @@
"unclaim":"Frigör ett ärende.",
"pin":"Fäst ett ärende.",
"unpin":"Lossa ett ärende.",
"move":"Flytta ett ärende.",
"moveId":"Identifieraren för alternativet du vill flytta till.",
"rename":"Döp om ett ärende.",
@@ -392,6 +474,7 @@
"addUser":"Användaren som ska läggas till.",
"remove":"Ta bort en användare från ett ärende.",
"removeUser":"Användaren som ska tas bort.",
"blacklist":"Hantera svartlistan för ärenden.",
"blacklistView":"Visa en lista över nuvarande svartlista.",
"blacklistAdd":"Lägg till en användare på svartlistan.",
@@ -405,6 +488,7 @@
"statsUserUser":"Användaren som ska visas.",
"statsTicket":"Visa statistik för ett ärende på servern.",
"statsTicketTicket":"Ärendet som ska visas.",
"clear":"Radera flera ärenden samtidigt.",
"clearFilter":"Filtret för att radera ärenden.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Lossade",
"autoclose":"Autostängda"
},
"autoclose":"Hantera autostängning i ett ärende.",
"autocloseDisable":"Inaktivera autostängning i detta ärende.",
"autocloseEnable":"Aktivera autostängning i detta ärende.",
@@ -424,7 +509,21 @@
"autodelete":"Hantera autoradering i ett ärende.",
"autodeleteDisable":"Inaktivera autoradering i detta ärende.",
"autodeleteEnable":"Aktivera autoradering i detta ärende.",
"autodeleteEnableTime": "Antal dagar detta ärende måste vara inaktivt innan det raderas."
"autodeleteEnableTime":"Antal dagar detta ärende måste vara inaktivt innan det raderas.",
"topic":"Hantera ämnet för ticketkanalen.",
"topicSet":"Ställ in ämnet för ticketkanalen.",
"topicValue":"Det nya ämnet för kanalen.",
"topicList":"Hämta en lista över alla tickets med deras ämne och statistik.",
"priority":"Hantera prioriteten för ticketen.",
"prioritySet":"Ställ in prioriteten för ticketen.",
"priorityValue":"Prioriteten för kanalen.",
"priorityGet":"Hämta prioriteten för ticketen.",
"priorityList":"Hämta en lista över alla tickets med deras prioritetsstatus.",
"transfer":"Överför ticketens ägarskap från en användare till en annan.",
"transferUser":"Användaren att överföra till.",
"transcripts":"Visa en användares ärendetranskriptshistorik.",
"transcriptsUser":"Användaren att visa."
},
"helpMenu":{
"help":"Få en lista över alla tillgängliga kommandon.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Inaktivera autostängning i detta ärende.",
"autocloseEnable":"Aktivera autostängning i detta ärende.",
"autodeleteDisable":"Inaktivera autoradering i detta ärende.",
"autodeleteEnable": "Aktivera autoradering i detta ärende."
"autodeleteEnable":"Aktivera autoradering i detta ärende.",
"categories":{
"general":"Allmänna Kommandon",
"basicTicket":"Grundläggande Ticketkommandon",
"advancedTicket":"Avancerade Ticketkommandon",
"userTicket":"Användar-Ticketkommandon",
"admin":"Administratörskommandon",
"advanced":"Avancerade Kommandon",
"extra":"Extra Kommandon"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Systemstatistik",
"user":"Användarstatistik",
"ticket":"Ärendestatistik",
"participants": "Deltagare"
"participants":"Deltagare",
"messages":"Meddelanden"
},
"properties":{
"ticketsCreated":"Ärenden Skapade",
@@ -472,7 +581,48 @@
"ticketsPinned":"Ärenden Fästa",
"ticketsMoved":"Ärenden Flyttade",
"usersBlacklisted":"Användare Svartlistade",
"transcriptsCreated": "Utskrifter Skapade"
}
"transcriptsCreated":"Utskrifter Skapade",
"ticketsAutodeleted":"Tickets Raderade Automatiskt",
"ticketsTransferred":"Tickets Överförda",
"ticketVolume":"Ticketvolym",
"averageTickets":"Genomsnittliga Tickets/Användare",
"currentTickets":"Aktuella Tickets",
"age":"Ticketålder",
"responseTime":"Svarstid",
"resolutionTime":"Lösningstid",
"createdOn":"Skapad Den",
"createdBy":"Skapad Av",
"closedOn":"Stängd Den",
"closedBy":"Stängd Av",
"claimedOn":"Tagen Den",
"claimedBy":"Tagen Av",
"pinnedOn":"Fäst Den",
"pinnedBy":"Fäst Av",
"deletedOn":"Raderad Den",
"deletedBy":"Raderad Av"
},
"roles":{
"developer":"Utvecklare",
"serverOwner":"Serverägare",
"serverAdmin":"Serveradministratör",
"moderator":"Moderatorsteam",
"support":"Supportteam",
"member":"Medlem"
}
},
"panel":{
"selectTicket":"Välj din ticket",
"selectRole":"Välj din roll",
"selectOption":"Välj ditt alternativ",
"selectPriorityLevel":"Välj prioritetsnivå"
},
"priorities":{
"urgent":"Brådskande",
"veryHigh":"Mycket Hög",
"high":"Hög",
"normal":"Normal",
"low":"Låg",
"veryLow":"Mycket Låg",
"none":"Ingen"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"translators":["HanumeshGupta"],
"lastedited":"19/06/2025",
"otversion":"v4.2.0",
"translators":["HanumeshGupta","ChatGPT"],
"lastedited":"25/05/2026",
"language":"Tamil",
"automated":true
},
@@ -31,6 +31,14 @@
"stringContains":"இந்த சரம் {0} ஐ கொண்டிருக்க வேண்டும்!",
"stringChoices":"இந்த சரம் பின்வரும் மதிப்புகளில் ஒன்றாக மட்டுமே இருக்க முடியும்: {0}!",
"stringRegex":"இந்த சரம் தவறானது!",
"stringInvertedContains":"இந்த உரை {0} அடக்க முடியாது!",
"stringLowercase":"இந்த உரை சிறிய எழுத்துக்களில் மட்டுமே எழுதப்பட வேண்டும்!",
"stringUppercase":"இந்த உரை பெரிய எழுத்துக்களில் மட்டுமே எழுதப்பட வேண்டும்!",
"stringSpecialCharacters":"இந்த உரையில் சிறப்பு எழுத்துக்கள் இருக்க கூடாது! (a-z, 0-9 மற்றும் இடைவெளி மட்டும்)",
"stringNoSpaces":"இந்த உரையில் இடைவெளிகள் இருக்க கூடாது!",
"stringCapitalWord":"இந்த உரையில் ஒவ்வொரு வார்த்தையும் பெரிய எழுத்தால் துவங்குவது நல்லது!",
"stringCapitalSentence":"இந்த உரையில் சில வாக்கியங்கள் பெரிய எழுத்தால் துவங்கவில்லை போல் தோன்றுகிறது!",
"stringPunctuation":"இந்த உரையின் வாக்கியம் வாக்கியச்சுட்டுடன் முடிவடையவில்லை போல் தோன்றுகிறது!",
"numberTooShort":"இந்த எண் {0} எழுத்துகளுக்கு குறைவாக இருக்க முடியாது!",
"numberTooLong":"இந்த எண் {0} எழுத்துகளுக்கு மேல் இருக்க முடியாது!",
@@ -48,6 +56,8 @@
"numberNegative":"இந்த எண் எதிர்மறையாக இருக்க முடியாது!",
"numberPositive":"இந்த எண் நேர்மறையாக இருக்க முடியாது!",
"numberZero":"இந்த எண் பூஜ்ஜியமாக இருக்க முடியாது!",
"numberNan":"இந்த எண் NaN (எண் அல்ல) ஆக இருக்க முடியாது!",
"numberInvertedContains":"இந்த எண்ணில் {0} இருக்க கூடாது!",
"booleanTrue":"இந்த பூலியன் உண்மையாக இருக்க முடியாது!",
"booleanFalse":"இந்த பூலியன் பொய்யாக இருக்க முடியாது!",
@@ -89,7 +99,8 @@
"invalidButton":"இந்த பொத்தானில் குறைந்தது {0} அல்லது {1} இருக்க வேண்டும்!",
"unusedOption":"{0} விருப்பம் எங்கும் பயன்படுத்தப்படவில்லை!",
"unusedQuestion":"{0} கேள்வி எங்கும் பயன்படுத்தப்படவில்லை!",
"dropdownOption": "டிராப்புடவ்ன் இயக்கப்பட்ட பேனலில் 'டிக்கெட்' வகையின் விருப்பங்கள் மட்டுமே இருக்க முடியும்!"
"dropdownOption":"டிராப்-டவுன் கொண்ட பேனலில் 'ticket', 'role' அல்லது 'sub-panel' வகை விருப்பங்களே இருக்க முடியும்.",
"customInvalidVersion":"உங்கள் கான்பிக் குறிப்பிடும் பதிப்பு பொருந்தவில்லை! கான்பிகை புதிய பதிப்புக்கு புதுப்பித்தீர்களா என்பதை சரிபார்க்கவும்!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"உரை கட்டளைகள் பார்க்க",
"helpPage":"பக்கம் {0}",
"withReason":"காரணத்துடன்",
"withoutTranscript": "டிரான்ஸ்கிரிப்ட் இல்லாமல்"
"withoutTranscript":"டிரான்ஸ்கிரிப்ட் இல்லாமல்",
"blacklistAdd":"பயனரை கருப்புப் பட்டியலில் சேர்க்கவும்",
"blacklistRemove":"பயனரை விடுவிக்கவும்"
},
"titles":{
"created":"டிக்கெட் உருவாக்கப்பட்டது",
@@ -132,6 +145,7 @@
"blacklistAddDm":"பிளாக்லிஸ்டில் சேர்க்கப்பட்டது",
"blacklistRemoveDm":"பிளாக்லிஸ்டில் இருந்து நீக்கப்பட்டது",
"clear":"டிக்கெட்டுகள் அழிக்கப்பட்டது",
"clearTickets":"டிக்கெட்டுகளை சுத்தம் செய்யவும்",
"roles":"பங்குகள் புதுப்பிக்கப்பட்டது",
"autoclose":"டிக்கெட் தானாக மூடப்பட்டது",
@@ -139,7 +153,13 @@
"autocloseDisabled":"தானாக மூடுதல் முடக்கப்பட்டது",
"autodelete":"டிக்கெட் தானாக நீக்கப்பட்டது",
"autodeleteEnabled":"தானாக நீக்குதல் இயக்கப்பட்டது",
"autodeleteDisabled": "தானாக நீக்குதல் முடக்கப்பட்டது"
"autodeleteDisabled":"தானாக நீக்குதல் முடக்கப்பட்டது",
"topicSet":"தலைப்பு மாற்றப்பட்டது",
"prioritySet":"முன்னுரிமை மாற்றப்பட்டது",
"priorityGet":"டிக்கெட் முன்னுரிமை",
"transfer":"டிக்கெட் மாற்றப்பட்டது",
"transcripts":"பதிவுகள் வரலாறு"
},
"descriptions":{
"create":"உங்கள் டிக்கெட் உருவாக்கப்பட்டது. அதை அணுக கீழே உள்ள பொத்தானை கிளிக் செய்யவும்!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"நீங்கள் ஒரே நேரத்தில் {0} டிக்கெட்டுகளை மட்டுமே உருவாக்க முடியும்!",
"ticketMessageAutoclose":"இந்த டிக்கெட் {0} மணி நேரம் செயலற்று இருந்தால் தானாக மூடப்படும்!",
"ticketMessageAutodelete":"இந்த டிக்கெட் {0} நாட்கள் செயலற்று இருந்தால் தானாக நீக்கப்படும்!",
"panelReady": "கீழே பேனலை காணலாம்!\nஇந்த செய்தியை இப்போது நீக்கலாம்!"
"panelReady":"பேனல் பின்வரும் செய்தியில் கிடைக்கிறது!\nஇந்த செய்தி இப்போது நீக்கலாம்!",
"topicSet":"சேனல் தலைப்பை {0} வெற்றிகரமாக மாற்றினார்!",
"prioritySet":"டிக்கெட் முன்னுரிமை {1} மூலம் {0} ஆக வெற்றிகரமாக மாற்றப்பட்டது!",
"priorityGet":"இந்த டிக்கெட் தற்போதைய முன்னுரிமை {0}.",
"transfer":"டிக்கெட் உரிமை {2} மூலம் {0} இலிருந்து {1} க்கு வெற்றிகரமாக மாற்றப்பட்டது!"
},
"modal":{
"closePlaceholder":"இந்த டிக்கெட்டை ஏன் மூடினீர்கள்?",
@@ -220,7 +245,16 @@
"blacklistRemoveLog":"{0} {1} என்பவரால் பிளாக்லிஸ்டில் இருந்து நீக்கப்பட்டது!",
"blacklistAddDm":"நீங்கள் எங்கள் சேர்வில் பிளாக்லிஸ்ட் செய்யப்பட்டுள்ளீர்கள்!\nஇனி நீங்கள் டிக்கெட் உருவாக்க முடியாது!",
"blacklistRemoveDm":"நீங்கள் எங்கள் சேர்வில் பிளாக்லிஸ்டில் இருந்து நீக்கப்பட்டுள்ளீர்கள்!\nஇப்போது நீங்கள் மீண்டும் டிக்கெட் உருவாக்கலாம்!",
"clearLog": "{1} என்பவரால் {0} டிக்கெட்டுகள் நீக்கப்பட்டது!"
"clearLog":"{1} என்பவரால் {0} டிக்கெட்டுகள் நீக்கப்பட்டது!",
"transferLog":"இந்த டிக்கெட் உரிமை {2} மூலம் {0} இலிருந்து {1} க்கு மாற்றப்பட்டது!",
"transferDm":"உங்கள் டிக்கெட் உரிமை நமது சர்வரில் {0} இலிருந்து {1} க்கு மாற்றப்பட்டது!",
"prioritySetLog":"இந்த டிக்கெட் முன்னுரிமை {1} மூலம் {0} ஆக மாற்றப்பட்டது!",
"prioritySetDm":"உங்கள் டிக்கெட் முன்னுரிமை நமது சர்வரில் {0} ஆக மாற்றப்பட்டது!",
"roleUpdateLog":"{0} அவர்களது பங்களிப்புகளை புதுப்பித்துள்ளார்!",
"roleUpdateDm":"நமது சர்வரில் உங்கள் பங்களிப்புகள் புதுப்பிக்கப்பட்டுள்ளன!",
"topicSetLog":"இந்த டிக்கெட்டின் முன்னுரிமை {1} ஆல் {0} ஆக அமைக்கப்பட்டது.",
"topicSetDm":"உங்கள் டிக்கெட்டின் முன்னுரிமை {0} ஆக அமைக்கப்பட்டது."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"மீண்டும் முயற்சிக்கவும்",
"continue":"டிரான்ஸ்கிரிப்ட் இல்லாமல் நீக்கு",
"backup":"காப்பு டிரான்ஸ்கிரிப்ட் உருவாக்கு",
"error": "டிரான்ஸ்கிரிப்ட் உருவாக்க முயற்சிக்கும் போது ஏதோ தவறு நடந்தது.\nநீங்கள் என்ன செய்ய விரும்புகிறீர்கள்?\n\nஇந்த டிக்கெட் நீங்கள் இந்த பொத்தான்களில் ஒன்றை கிளிக் செய்யும் வரை நீக்கப்படாது."
"error":"டிரான்ஸ்கிரிப்ட் உருவாக்க முயற்சிக்கும் போது ஏதோ தவறு நடந்தது.\nநீங்கள் என்ன செய்ய விரும்புகிறீர்கள்?\n\nஇந்த டிக்கெட் நீங்கள் இந்த பொத்தான்களில் ஒன்றை கிளிக் செய்யும் வரை நீக்கப்படாது.",
"title":"மொழிப்பெயர்ப்பு பிழை",
"noHistory":"இந்த பயனருக்கு இன்னும் எந்த பதிவுகளும் இல்லை.",
"historyNotSupported":"பதிவுகள் வரலாறு தற்போது HTML Transcripts உடன் மட்டுமே ஆதரிக்கப்படுகிறது.\nஉரை பதிவுகள் வரலாறு எதிர்கால பதிப்புகளில் கிடைக்கும்."
},
"text":{
"messagesTitle":"செய்திகள்",
"embedTitle":"எம்பெட்",
"fileTitle":"கோப்பு",
"fieldsTitle":"புலங்கள்",
"reactionsTitle":"பிரதிபலிப்புகள்",
"statsTitle":"புள்ளிவிவரங்கள்",
"emptyContent":"<உள்ளடக்கம் வெறுமை>",
"noTitle":"<தலைப்பு இல்லை>",
"noDesc":"<விவரம் இல்லை>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"தெரியாத பேனல்",
"notInGuild":"சேவையில் இல்லை",
"channelRename":"சேனலை மறுபெயரிட முடியவில்லை",
"busy": "டிக்கெட் பிஸியாக உள்ளது"
"channelCategory":"வகையை மாற்ற முடியவில்லை",
"busy":"டிக்கெட் பிஸியாக உள்ளது",
"permissionError":"அனுமதி பிழை"
},
"descriptions":{
"askForInfo":"மேலும் தகவலுக்கு இந்த போட்டின் உரிமையாளரைத் தொடர்பு கொள்ளவும்!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"தற்போதைய சேனல் ஒரு சரியான டிக்கெட் அல்ல! இது பழைய ஓபன் டிக்கெட் பதிப்பிலிருந்து ஒரு டிக்கெட் ஆக இருக்கலாம்!",
"notInGuild":"இந்த {0} DM இல் வேலை செய்யாது! தயவு செய்து ஒரு சேவையில் மீண்டும் முயற்சிக்கவும்!",
"channelRename":"டிஸ்கார்ட் ரேட்லிமிட்கள் காரணமாக, போட் சேனலை மறுபெயரிடுவது தற்போது சாத்தியமில்லை. போட் ரீபூட் செய்யப்படாவிட்டால் சேனல் 10 நிமிடங்களுக்குள் தானாக மறுபெயரிடப்படும்.",
"channelCategory":"Discord வீத வரம்புகளால் சேனல் வகையை உடனடியாக மாற்ற முடியவில்லை. பாட்டு ஆன்லைனில் இருந்தால் 10 நிமிடங்களில் தானாக மாற்றப்படும்.",
"channelRenameSource":"இந்த பிழையின் மூலம்: {0}",
"busy": "இந்த {0} ஐ பயன்படுத்த முடியவில்லை!\nடிக்கெட் தற்போது போட் மூலம் செயலாக்கப்படுகிறது.\n\nதயவு செய்து சில விநாடிகள் காத்திருக்கவும்!"
"busy":"இந்த {0} ஐ பயன்படுத்த முடியவில்லை!\nடிக்கெட் தற்போது போட் மூலம் செயலாக்கப்படுகிறது.\n\nதயவு செய்து சில விநாடிகள் காத்திருக்கவும்!",
"closeBeforeMessage":"பயனர் ஒரு செய்தியை அனுப்பும் முன் இந்த டிக்கெட் மூடப்பட முடியாது/நீக்கப்பட முடியாது.",
"closeBeforeAdminMessage":"டிக்கெட் நிர்வாகி அல்லது ஆதரவு உறுப்பினர் ஒரு செய்தி அனுப்பும் முன் இந்த டிக்கெட் மூடப்பட முடியாது/நீக்கப்பட முடியாது.",
"unableToCreateTicket":"நீங்கள் டிக்கெட் உருவாக்க முடியாது.",
"messageMissing":"இணைப்பு செய்தியை கண்டுபிடிக்க முடியவில்லை. பதிலாக `{0}` கட்டளையை பயன்படுத்தவும்.",
"stateExpired":"இந்த இணைப்பு இனி செல்லுபடியாகாது அல்லது காலாவதியானது. பதிலாக `{0}` கட்டளையை பயன்படுத்தவும். Open Ticket பெரிய புதுப்பிப்புக்குப் பிறகு இது சாதாரணம்.",
"panelStateExpired":"இந்த பேனல் இனி செல்லுபடியாகாது அல்லது காலாவதியானது. பிரச்சினையை தீர்க்க `{0}` பயன்படுத்தி புதிய பேனலை உருவாக்கவும். Open Ticket பெரிய புதுப்பிப்புக்குப் பிறகு இது சாதாரணம்."
},
"optionInvalidReasons":{
"stringRegex":"மதிப்பு மாதிரியுடன் பொருந்தவில்லை!",
@@ -331,7 +388,6 @@
"added":"சேர்க்கப்பட்டது",
"removed":"நீக்கப்பட்டது",
"filter":"வடிகட்டி",
"claimedBy": "{0} என்பவரால் கிளெய்ம் செய்யப்பட்டது",
"method":"முறை",
"type":"வகை",
"blacklisted":"பிளாக்லிஸ்ட் செய்யப்பட்டது",
@@ -343,6 +399,8 @@
"syntax":"தொடரியல்",
"originalName":"அசல் பெயர்",
"newName":"புதிய பெயர்",
"originalCategory":"மூல வகை",
"newCategory":"புதிய வகை",
"until":"வரை",
"validOptions":"சரியான விருப்பங்கள்",
"validPanels":"சரியான பேனல்கள்",
@@ -355,7 +413,29 @@
"status":"நிலை",
"claimed":"கிளெய்ம் செய்யப்பட்டது",
"pinned":"பின் செய்யப்பட்டது",
"creationDate": "உருவாக்க தேதி"
"creationDate":"உருவாக்க தேதி",
"noone":"யாரும் இல்லை",
"open":"திறந்தது",
"closed":"மூடப்பட்டது",
"priority":"முன்னுரிமை",
"participants":"பங்கேற்பாளர்கள்",
"yes":"ஆம்",
"no":"இல்லை",
"accept":"ஏற்கவும்",
"cancel":"ரத்து செய்",
"option":"விருப்பம்",
"topic":"தலைப்பு",
"uptime":"சிஸ்டம் இயங்கும் நேரம்",
"messages":"செய்திகள்",
"embeds":"எம்பெட்கள்",
"files":"கோப்புகள்",
"components":"கூறுகள்",
"cooldown":"குளிர்நிலை",
"maxTickets":"அதிகபட்ச டிக்கெட்டுகள்",
"admins":"நிர்வாகிகள்",
"roles":"பங்குகள்",
"size":"அளவு"
},
"lowercase":{
"text":"உரை",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"இந்த பேனல் திருத்தப்படும் போது தானாகவே புதுப்பிக்க விரும்புகிறீர்களா?",
"ticket":"உடனடியாக ஒரு டிக்கெட்டை உருவாக்கவும்.",
"ticketId":"நீங்கள் உருவாக்க விரும்பும் டிக்கெட்டின் அடையாளம்.",
"ticketOtherUser":"மற்றொரு பயனருக்காக டிக்கெட் உருவாக்கவும்.",
"close":"ஒரு டிக்கெட்டை மூடவும்.",
"delete":"ஒரு டிக்கெட்டை நீக்கவும்.",
"deleteNoTranscript":"பதிவு இல்லாமல் இந்த டிக்கெட்டை நீக்கவும்.",
@@ -384,6 +465,7 @@
"unclaim":"ஒரு டிக்கெட்டை அன்கிளெய்ம் செய்யவும்.",
"pin":"ஒரு டிக்கெட்டை பின் செய்யவும்.",
"unpin":"ஒரு டிக்கெட்டை அன்பின் செய்யவும்.",
"move":"ஒரு டிக்கெட்டை நகர்த்தவும்.",
"moveId":"நீங்கள் நகர்த்த விரும்பும் விருப்பத்தின் அடையாளம்.",
"rename":"ஒரு டிக்கெட்டை மறுபெயரிடவும்.",
@@ -392,6 +474,7 @@
"addUser":"சேர்க்க வேண்டிய பயனர்.",
"remove":"ஒரு பயனரை டிக்கெட்டிலிருந்து நீக்கவும்.",
"removeUser":"நீக்க வேண்டிய பயனர்.",
"blacklist":"டிக்கெட் பிளாக்லிஸ்டை நிர்வகிக்கவும்.",
"blacklistView":"தற்போதைய பிளாக்லிஸ்டின் பட்டியலைப் பார்க்கவும்.",
"blacklistAdd":"பிளாக்லிஸ்டில் ஒரு பயனரைச் சேர்க்கவும்.",
@@ -405,6 +488,7 @@
"statsUserUser":"பார்க்க வேண்டிய பயனர்.",
"statsTicket":"சேவையில் ஒரு டிக்கெட்டின் புள்ளிவிவரங்களைப் பார்க்கவும்.",
"statsTicketTicket":"பார்க்க வேண்டிய டிக்கெட்.",
"clear":"ஒரே நேரத்தில் பல டிக்கெட்டுகளை நீக்கவும்.",
"clearFilter":"டிக்கெட்டுகளை அழிக்க வடிகட்டி.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"அன்பின் செய்யப்பட்டது",
"autoclose":"தானாக மூடப்பட்டது"
},
"autoclose":"ஒரு டிக்கெட்டில் தானாக மூடுவதை நிர்வகிக்கவும்.",
"autocloseDisable":"இந்த டிக்கெட்டில் தானாக மூடுவதை முடக்கவும்.",
"autocloseEnable":"இந்த டிக்கெட்டில் தானாக மூடுவதை இயக்கவும்.",
@@ -424,7 +509,21 @@
"autodelete":"ஒரு டிக்கெட்டில் தானாக நீக்குவதை நிர்வகிக்கவும்.",
"autodeleteDisable":"இந்த டிக்கெட்டில் தானாக நீக்குவதை முடக்கவும்.",
"autodeleteEnable":"இந்த டிக்கெட்டில் தானாக நீக்குவதை இயக்கவும்.",
"autodeleteEnableTime": "இந்த டிக்கெட் நீக்கப்பட வேண்டிய நாட்களின் அளவு."
"autodeleteEnableTime":"இந்த டிக்கெட் நீக்கப்பட வேண்டிய நாட்களின் அளவு.",
"topic":"டிக்கெட் சேனல் தலைப்பை நிர்வகிக்கவும்.",
"topicSet":"டிக்கெட் சேனல் தலைப்பை அமைக்கவும்.",
"topicValue":"சேனல் புதிய தலைப்பு.",
"topicList":"அனைத்து டிக்கெட்டுகளின் தலைப்பு மற்றும் புள்ளிவிவரங்களைப் பெறுங்கள்.",
"priority":"டிக்கெட் முன்னுரிமையை நிர்வகிக்கவும்.",
"prioritySet":"டிக்கெட் முன்னுரிமையை அமைக்கவும்.",
"priorityValue":"சேனல் முன்னுரிமை.",
"priorityGet":"டிக்கெட் முன்னுரிமையைப் பெறவும்.",
"priorityList":"அனைத்து டிக்கெட்டுகளின் முன்னுரிமை நிலையைப் பெறுங்கள்.",
"transfer":"ஒரு பயனரிடமிருந்து மற்றொரு பயனருக்கு டிக்கெட் உரிமையை மாற்றவும்.",
"transferUser":"மாற்ற வேண்டிய பயனர்.",
"transcripts":"பயனரின் டிக்கெட் பதிவுகள் வரலாற்றைக் காண்க.",
"transcriptsUser":"காண வேண்டிய பயனர்."
},
"helpMenu":{
"help":"கிடைக்கக்கூடிய அனைத்து கட்டளைகளின் பட்டியலைப் பெறவும்.",
@@ -452,7 +551,16 @@
"autocloseDisable":"இந்த டிக்கெட்டில் தானாக மூடுவதை முடக்கவும்.",
"autocloseEnable":"இந்த டிக்கெட்டில் தானாக மூடுவதை இயக்கவும்.",
"autodeleteDisable":"இந்த டிக்கெட்டில் தானாக நீக்குவதை முடக்கவும்.",
"autodeleteEnable": "இந்த டிக்கெட்டில் தானாக நீக்குவதை இயக்கவும்."
"autodeleteEnable":"இந்த டிக்கெட்டில் தானாக நீக்குவதை இயக்கவும்.",
"categories":{
"general":"பொது கட்டளைகள்",
"basicTicket":"அடிப்படை டிக்கெட் கட்டளைகள்",
"advancedTicket":"மேம்பட்ட டிக்கெட் கட்டளைகள்",
"userTicket":"பயனர் டிக்கெட் கட்டளைகள்",
"admin":"நிர்வாகி கட்டளைகள்",
"advanced":"மேம்பட்ட கட்டளைகள்",
"extra":"மேலும் கட்டளைகள்"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"கணினி புள்ளிவிவரங்கள்",
"user":"பயனர் புள்ளிவிவரங்கள்",
"ticket":"டிக்கெட் புள்ளிவிவரங்கள்",
"participants": "பங்கேற்பாளர்கள்"
"participants":"பங்கேற்பாளர்கள்",
"messages":"செய்திகள்"
},
"properties":{
"ticketsCreated":"டிக்கெட்டுகள் உருவாக்கப்பட்டன",
@@ -472,7 +581,48 @@
"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":"உங்கள் விருப்பத்தை தேர்ந்தெடுக்கவும்",
"selectPriorityLevel":"முன்னுரிமை நிலையைத் தேர்ந்தெடுக்கவும்"
},
"priorities":{
"urgent":"அவசரம்",
"veryHigh":"மிக உயரம்",
"high":"உயரம்",
"normal":"இயல்பானது",
"low":"குறைந்தது",
"veryLow":"மிகக் குறைவு",
"none":"ஏதும் இல்லை"
}
}
+167 -17
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["modshd"],
"lastedited":"13/11/2024",
"lastedited":"25/05/2026",
"language":"Thai",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"ข้อความนี้ต้องประกอบด้วย {0}",
"stringChoices":"ข้อความนี้สามารถเป็นค่าใดค่าหนึ่งจากตัวเลือกต่อไปนี้: {0}",
"stringRegex":"ข้อความนี้ไม่ถูกต้อง",
"stringInvertedContains":"ข้อความนี้ไม่ได้รับอนุญาตให้มี {0}",
"stringLowercase":"ข้อความนี้ต้องเขียนด้วยตัวพิมพ์เล็กเท่านั้น",
"stringUppercase":"ข้อความนี้ต้องเขียนด้วยตัวพิมพ์ใหญ่เท่านั้น",
"stringSpecialCharacters":"ข้อความนี้ไม่ได้รับอนุญาตให้มีอักขระพิเศษใดๆ (a-z, 0-9 และ เว้นวรรคเท่านั้น)",
"stringNoSpaces":"ข้อความนี้ไม่ได้รับอนุญาตให้มีช่องว่าง",
"stringCapitalWord":"ขอแนะนำให้แต่ละคำในข้อความนี้ขึ้นต้นด้วยตัวพิมพ์ใหญ่",
"stringCapitalSentence":"ดูเหมือนว่าบางประโยคในข้อความนี้ไม่ได้ขึ้นต้นด้วยตัวพิมพ์ใหญ่",
"stringPunctuation":"ดูเหมือนว่าประโยคในข้อความนี้ไม่ได้ลงท้ายด้วยเครื่องหมายวรรคตอน",
"numberTooShort":"หมายเลขนี้ไม่สามารถสั้นกว่า {0} ตัวอักษรได้",
"numberTooLong":"หมายเลขนี้ไม่สามารถยาวกว่า {0} ตัวอักษรได้",
@@ -48,6 +56,8 @@
"numberNegative":"หมายเลขนี้ไม่สามารถเป็นค่าลบได้",
"numberPositive":"หมายเลขนี้ไม่สามารถเป็นค่าบวกได้",
"numberZero":"หมายเลขนี้ไม่สามารถเป็นศูนย์ได้",
"numberNan":"ตัวเลขนี้ไม่สามารถเป็น NaN (ไม่ใช่ตัวเลข)",
"numberInvertedContains":"ตัวเลขนี้ไม่ได้รับอนุญาตให้มี {0}",
"booleanTrue":"ค่าบูลีนนี้ไม่สามารถเป็น true ได้",
"booleanFalse":"ค่าบูลีนนี้ไม่สามารถเป็น false ได้",
@@ -89,7 +99,8 @@
"invalidButton":"ปุ่มนี้ต้องมีอย่างน้อย {0} หรือ {1}",
"unusedOption":"ตัวเลือก {0} ไม่ได้ใช้งานที่ไหนเลย",
"unusedQuestion":"คำถาม {0} ไม่ได้ใช้งานที่ไหนเลย",
"dropdownOption": "แผงที่เปิดใช้งานตัวเลือกแบบเลื่อนลงสามารถประกอบด้วยตัวเลือกประเภท 'ticket' เท่านั้น"
"dropdownOption":"แผงที่มีเมนูดรอปดาวน์สามารถมีตัวเลือกประเภท: 'ticket', 'role' หรือ 'sub-panel' เท่านั้น",
"customInvalidVersion":"เวอร์ชันที่ระบุในไฟล์ config ของคุณไม่ตรงกัน ตรวจสอบให้แน่ใจว่าคุณได้อัปเดตไฟล์ config เป็นเวอร์ชันล่าสุดแล้ว"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"ดูคำสั่งแบบข้อความ",
"helpPage":"หน้า {0}",
"withReason":"ด้วยเหตุผล",
"withoutTranscript": "ไม่มีบันทึกการสนทนา"
"withoutTranscript":"ไม่มีบันทึกการสนทนา",
"blacklistAdd":"เพิ่มผู้ใช้ในบัญชีดำ",
"blacklistRemove":"ปลดผู้ใช้ออกจากบัญชีดำ"
},
"titles":{
"created":"สร้างห้องติดต่อแล้ว",
@@ -132,6 +145,7 @@
"blacklistAddDm":"ถูกเพิ่มในบัญชีดำ",
"blacklistRemoveDm":"ถูกลบออกจากบัญชีดำ",
"clear":"ลบห้องติดต่อทั้งหมด",
"clearTickets":"ล้างห้องติดต่อ",
"roles":"อัปเดตบทบาท",
"autoclose":"ห้องติดต่อถูกปิดโดยอัตโนมัติ",
@@ -139,7 +153,13 @@
"autocloseDisabled":"ปิดการใช้งานการปิดห้องติดต่ออัตโนมัติ",
"autodelete":"ห้องติดต่อถูกลบโดยอัตโนมัติ",
"autodeleteEnabled":"เปิดใช้งานการลบห้องติดต่ออัตโนมัติ",
"autodeleteDisabled": "ปิดการใช้งานการลบห้องติดต่ออัตโนมัติ"
"autodeleteDisabled":"ปิดการใช้งานการลบห้องติดต่ออัตโนมัติ",
"topicSet":"เปลี่ยนหัวข้อแล้ว",
"prioritySet":"เปลี่ยนลำดับความสำคัญแล้ว",
"priorityGet":"ลำดับความสำคัญของห้องติดต่อ",
"transfer":"โอนห้องติดต่อแล้ว",
"transcripts":"ประวัติทรานสคริปต์"
},
"descriptions":{
"create":"ห้องติดต่อของคุณถูกสร้างแล้ว คลิกปุ่มด้านล่างเพื่อไปยังห้องติดต่อ",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"คุณสามารถสร้างห้องติดต่อได้เพียง {0} ห้องต่อครั้ง",
"ticketMessageAutoclose":"ห้องติดต่อนี้จะถูกปิดอัตโนมัติเมื่อไม่ได้ใช้งานเกิน {0} ชั่วโมง",
"ticketMessageAutodelete":"ห้องติดต่อนี้จะถูกลบอัตโนมัติเมื่อไม่ได้ใช้งานเกิน {0} วัน",
"panelReady": "คุณสามารถดูแผงข้อมูลด้านล่าง\nข้อความนี้สามารถลบได้แล้ว"
"panelReady":"แผงควบคุมพร้อมใช้งานในข้อความถัดไป\nตอนนี้สามารถลบข้อความนี้ได้แล้ว",
"topicSet":"หัวข้อของช่องถูกเปลี่ยนโดย {0} เรียบร้อยแล้ว",
"prioritySet":"ลำดับความสำคัญของห้องติดต่อถูกเปลี่ยนเป็น {0} โดย {1} เรียบร้อยแล้ว",
"priorityGet":"ลำดับความสำคัญปัจจุบันของห้องติดต่อคือ {0}",
"transfer":"ความเป็นเจ้าของห้องติดต่อถูกโอนจาก {0} ไปยัง {1} โดย {2} เรียบร้อยแล้ว"
},
"modal":{
"closePlaceholder":"ทำไมคุณถึงปิดห้องติดต่อนี้?",
@@ -220,7 +245,16 @@
"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":"บทบาทของคุณในเซิร์ฟเวอร์ของเราได้รับการอัปเดตแล้ว",
"topicSetLog":"ลำดับความสำคัญของตั๋วนี้ถูกตั้งเป็น {0} โดย {1}",
"topicSetDm":"ลำดับความสำคัญของตั๋วของคุณถูกตั้งเป็น {0}"
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"ลองอีกครั้ง",
"continue":"ลบโดยไม่สร้างตัวเก็บประวัติข้อความ",
"backup":"สร้างสำรองตัวเก็บประวัติข้อความ",
"error": "เกิดข้อผิดพลาดขณะพยายามสร้างตัวเก็บประวัติข้อความ\nคุณต้องการทำอย่างไรต่อไป?\n\nห้องติดต่อนี้จะไม่ถูกลบจนกว่าคุณจะคลิกปุ่มใดปุ่มหนึ่ง"
"error":"เกิดข้อผิดพลาดขณะพยายามสร้างตัวเก็บประวัติข้อความ\nคุณต้องการทำอย่างไรต่อไป?\n\nห้องติดต่อนี้จะไม่ถูกลบจนกว่าคุณจะคลิกปุ่มใดปุ่มหนึ่ง",
"title":"ข้อผิดพลาดในการบันทึกบทสนทนา",
"noHistory":"ผู้ใช้นี้ยังไม่มีทรานสคริปต์",
"historyNotSupported":"ขณะนี้ประวัติทรานสคริปต์รองรับเฉพาะ HTML Transcripts เท่านั้น\nประวัติทรานสคริปต์แบบข้อความจะพร้อมใช้งานในเวอร์ชันถัดไป"
},
"text":{
"messagesTitle":"ข้อความ",
"embedTitle":"ข้อความเอ็มเบด",
"fileTitle":"ไฟล์",
"fieldsTitle":"หัวข้อย่อย",
"reactionsTitle":"รีแอคชั่น",
"statsTitle":"สถิติ",
"emptyContent":"<เนื้อหาว่างเปล่า>",
"noTitle":"<ไม่มีหัวข้อ>",
"noDesc":"<ไม่มีคำอธิบาย>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"แผงควบคุมที่ไม่รู้จัก",
"notInGuild":"ไม่ได้อยู่ในเซิร์ฟเวอร์",
"channelRename":"ไม่สามารถเปลี่ยนชื่อช่องได้",
"busy": "ห้องติดต่อยุ่งอยู่"
"channelCategory":"ไม่สามารถเปลี่ยนหมวดหมู่ได้",
"busy":"ห้องติดต่อยุ่งอยู่",
"permissionError":"ข้อผิดพลาดด้านสิทธิ์"
},
"descriptions":{
"askForInfo":"ติดต่อเจ้าของบอทนี้เพื่อขอข้อมูลเพิ่มเติม",
@@ -279,8 +329,15 @@
"deprecatedTicket":"ช่องนี้ไม่ใช่ห้องติดต่อที่ถูกต้อง อาจเป็นห้องติดต่อจากเวอร์ชันเก่าของ Open Ticket",
"notInGuild":"คำสั่ง {0} นี้ใช้ไม่ได้ใน DM กรุณาลองใหม่ในเซิร์ฟเวอร์",
"channelRename":"เนื่องจากข้อจำกัดของ Discord การเปลี่ยนชื่อช่องไม่สามารถทำได้ในขณะนี้ ช่องจะถูกเปลี่ยนชื่อโดยอัตโนมัติในเวลา 10 นาทีหากบอทไม่ถูกรีบูต",
"channelCategory":"เนื่องจากข้อจำกัดอัตราการใช้งานของ Discord หมวดหมู่ของช่องจึงไม่สามารถเปลี่ยนได้ทันที ระบบจะเปลี่ยนให้อัตโนมัติภายใน 10 นาทีหากบอทยังคงออนไลน์อยู่",
"channelRenameSource":"แหล่งที่มาของข้อผิดพลาดนี้คือ: {0}",
"busy": "ไม่สามารถใช้ {0} นี้ได้\nห้องติดต่อกกำลังถูกประมวลผลโดยบอท\n\nกรุณาลองใหม่ในอีกไม่กี่วินาที"
"busy":"ไม่สามารถใช้ {0} นี้ได้\nห้องติดต่อกกำลังถูกประมวลผลโดยบอท\n\nกรุณาลองใหม่ในอีกไม่กี่วินาที",
"closeBeforeMessage":"ไม่สามารถปิด/ลบห้องติดต่อนี้ได้ก่อนที่ผู้ใช้จะส่งข้อความ",
"closeBeforeAdminMessage":"ไม่สามารถปิด/ลบห้องติดต่อนี้ได้ก่อนที่ผู้ดูแลห้องติดต่อหรือสมาชิกฝ่ายสนับสนุนจะส่งข้อความ",
"unableToCreateTicket":"คุณไม่สามารถสร้างห้องติดต่อได้",
"messageMissing":"ไม่สามารถค้นหาข้อความของการโต้ตอบได้ โปรดใช้คำสั่ง `{0}` แทน",
"stateExpired":"การโต้ตอบนี้ไม่ถูกต้องอีกต่อไปหรือหมดอายุแล้ว โปรดใช้คำสั่ง `{0}` แทน เป็นเรื่องปกติที่จะพบข้อผิดพลาดนี้หลังจากการอัปเดต Open Ticket ครั้งใหญ่",
"panelStateExpired":"แผงนี้ไม่ถูกต้องอีกต่อไปหรือหมดอายุแล้ว สร้างแผงใหม่โดยใช้ `{0}` เพื่อแก้ไขปัญหา เป็นเรื่องปกติที่จะพบข้อผิดพลาดนี้หลังจากการอัปเดต Open Ticket ครั้งใหญ่"
},
"optionInvalidReasons":{
"stringRegex":"ค่าที่ระบุไม่ตรงกับรูปแบบ",
@@ -331,7 +388,6 @@
"added":"เพิ่มแล้ว",
"removed":"ลบแล้ว",
"filter":"ตัวกรอง",
"claimedBy": "รับโดย {0}",
"method":"วิธีการ",
"type":"ประเภท",
"blacklisted":"ถูกใส่ในรายชื่อดำ",
@@ -343,6 +399,8 @@
"syntax":"ไวยากรณ์",
"originalName":"ชื่อเดิม",
"newName":"ชื่อใหม่",
"originalCategory":"หมวดหมู่เดิม",
"newCategory":"หมวดหมู่ใหม่",
"until":"จนถึง",
"validOptions":"ตัวเลือกที่ถูกต้อง",
"validPanels":"แผงควบคุมที่ถูกต้อง",
@@ -355,7 +413,29 @@
"status":"สถานะ",
"claimed":"รับแล้ว",
"pinned":"ถูกปักหมุด",
"creationDate": "วันที่สร้าง"
"creationDate":"วันที่สร้าง",
"noone":"ไม่มีใคร",
"open":"เปิด",
"closed":"ปิด",
"priority":"ลำดับความสำคัญ",
"participants":"ผู้มีส่วนร่วม",
"yes":"ใช่",
"no":"ไม่",
"accept":"ยอมรับ",
"cancel":"ยกเลิก",
"option":"ตัวเลือก",
"topic":"หัวข้อ",
"uptime":"เวลาทำงานของระบบ",
"messages":"ข้อความ",
"embeds":"ข้อความเอ็มเบด",
"files":"หัวข้อย่อย",
"components":"ส่วนประกอบ",
"cooldown":"คูลดาวน์",
"maxTickets":"ห้องติดต่อสูงสุด",
"admins":"ผู้ดูแลระบบ",
"roles":"บทบาท",
"size":"ขนาด"
},
"lowercase":{
"text":"ข้อความ",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"คุณต้องการให้แผงนี้อัปเดตอัตโนมัติเมื่อมีการแก้ไขหรือไม่?",
"ticket":"สร้างห้องติดต่อทันที",
"ticketId":"ตัวระบุของห้องติดต่อที่คุณต้องการสร้าง",
"ticketOtherUser":"สร้างตั๋วสำหรับผู้ใช้อื่น",
"close":"ปิดห้องติดต่อ",
"delete":"ลบห้องติดต่อ",
"deleteNoTranscript":"ลบห้องติดต่อนี้โดยไม่สร้างตัวเก็บข้อความ",
@@ -384,6 +465,7 @@
"unclaim":"ยกเลิกการรับห้องติดต่อ",
"pin":"ปักหมุดห้องติดต่อ",
"unpin":"ยกเลิกการปักหมุดห้องติดต่อ",
"move":"ย้ายห้องติดต่อ",
"moveId":"ตัวระบุของตัวเลือกที่คุณต้องการย้ายไป",
"rename":"เปลี่ยนชื่อห้องติดต่อ",
@@ -392,6 +474,7 @@
"addUser":"ผู้ใช้ที่ต้องการเพิ่ม",
"remove":"ลบผู้ใช้จากห้องติดต่อ",
"removeUser":"ผู้ใช้ที่ต้องการลบ",
"blacklist":"จัดการรายชื่อดำของห้องติดต่อ",
"blacklistView":"ดูรายชื่อของผู้ที่อยู่ในรายชื่อดำ",
"blacklistAdd":"เพิ่มผู้ใช้ในรายชื่อดำ",
@@ -405,6 +488,7 @@
"statsUserUser":"ผู้ใช้ที่ต้องการดูสถิติ",
"statsTicket":"ดูสถิติของห้องติดต่อในเซิร์ฟเวอร์",
"statsTicketTicket":"ห้องติดต่อที่ต้องการดูสถิติ",
"clear":"ลบห้องติดต่อจำนวนมากในคราวเดียว",
"clearFilter":"ตัวกรองสำหรับการลบห้องติดต่อ",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"ยังไม่ได้ถูกปักหมุด",
"autoclose":"ปิดอัตโนมัติ"
},
"autoclose":"จัดการการปิดอัตโนมัติในห้องติดต่อ",
"autocloseDisable":"ปิดการปิดอัตโนมัติในห้องติดต่อนี้",
"autocloseEnable":"เปิดการปิดอัตโนมัติในห้องติดต่อนี้",
@@ -424,7 +509,21 @@
"autodelete":"จัดการการลบอัตโนมัติในห้องติดต่อ",
"autodeleteDisable":"ปิดการลบอัตโนมัติในห้องติดต่อนี้",
"autodeleteEnable":"เปิดการลบอัตโนมัติในห้องติดต่อนี้",
"autodeleteEnableTime": "จำนวนวันที่ห้องติดต่อนี้ต้องไม่เคลื่อนไหวเพื่อที่จะลบมัน"
"autodeleteEnableTime":"จำนวนวันที่ห้องติดต่อนี้ต้องไม่เคลื่อนไหวเพื่อที่จะลบมัน",
"topic":"จัดการหัวข้อของช่องห้องติดต่อ",
"topicSet":"ตั้งค่าหัวข้อของช่องห้องติดต่อ",
"topicValue":"หัวข้อใหม่ของช่อง",
"topicList":"รายการห้องติดต่อทั้งหมดพร้อมหัวข้อและสถิติ",
"priority":"จัดการลำดับความสำคัญของห้องติดต่อ",
"prioritySet":"ตั้งค่าลำดับความสำคัญของห้องติดต่อ",
"priorityValue":"ลำดับความสำคัญของช่อง",
"priorityGet":"รับลำดับความสำคัญของห้องติดต่อ",
"priorityList":"รายการห้องติดต่อทั้งหมดพร้อมสถานะลำดับความสำคัญ",
"transfer":"โอนความเป็นเจ้าของห้องติดต่อจากผู้ใช้หนึ่งไปยังอีกคนหนึ่ง",
"transferUser":"ผู้ใช้ที่จะโอนไป",
"transcripts":"ดูประวัติทรานสคริปต์ตั๋วของผู้ใช้",
"transcriptsUser":"ผู้ใช้ที่ต้องการดู"
},
"helpMenu":{
"help":"รับรายชื่อคำสั่งทั้งหมดที่มี",
@@ -452,7 +551,16 @@
"autocloseDisable":"ปิดการปิดอัตโนมัติในห้องติดต่อนี้",
"autocloseEnable":"เปิดการปิดอัตโนมัติในห้องติดต่อนี้",
"autodeleteDisable":"ปิดการลบอัตโนมัติในห้องติดต่อนี้",
"autodeleteEnable": "เปิดการลบอัตโนมัติในห้องติดต่อนี้"
"autodeleteEnable":"เปิดการลบอัตโนมัติในห้องติดต่อนี้",
"categories":{
"general":"คำสั่งทั่วไป",
"basicTicket":"คำสั่งห้องติดต่อทั่วไป",
"advancedTicket":"คำสั่งห้องติดต่อขั้นสูง",
"userTicket":"คำสั่งห้องติดต่อผู้ใช้",
"admin":"คำสั่งผู้ดูแลระบบ",
"advanced":"คำสั่งขั้นสูง",
"extra":"คำสั่งพิเศษ"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"สถิติเกี่ยวกับระบบ",
"user":"สถิติเกี่ยวกับผู้ใช้",
"ticket":"สถิติห้องติดต่อ",
"participants": "ผู้มีส่วนร่วม"
"participants":"ผู้มีส่วนร่วม",
"messages":"ข้อความ"
},
"properties":{
"ticketsCreated":"ห้องติดต่อที่สร้าง",
@@ -472,7 +581,48 @@
"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":"เลือกตัวเลือกของคุณ",
"selectPriorityLevel":"เลือกระดับความสำคัญ"
},
"priorities":{
"urgent":"เร่งด่วน",
"veryHigh":"สูงมาก",
"high":"สูง",
"normal":"ปกติ",
"low":"ต่ำ",
"veryLow":"ต่ำมาก",
"none":"ไม่มี"
}
}
+628
View File
@@ -0,0 +1,628 @@
{
"_TRANSLATION":{
"otversion":"v4.2.0",
"translators":["me.october"],
"lastedited":"25/05/2026",
"language":"Traditional Chinese",
"automated":false
},
"checker":{
"system":{
"typeError":"[錯誤]",
"headerOpenTicket":"開啟工單",
"typeWarning":"[警告]",
"typeInfo":"[信息]",
"headerConfigChecker":"配置檢查器",
"headerDescription":"檢查您的配置文件中的錯誤!",
"footerError":"機器人將無法啟動,直到所有{0}錯誤被修複!",
"footerWarning":"建議在啟動前修複所有{0}警告!",
"footerSupport":"支援:{0} - 文檔:{1}",
"compactInformation":"使用{0}獲取更多信息!",
"dataPath":"路徑",
"dataDocs":"文檔",
"dataMessages":"消息"
},
"messages":{
"stringTooShort":"此字符串不能少於{0}個字符!",
"stringTooLong":"此字符串不能超過{0}個字符!",
"stringLengthInvalid":"此字符串長度必須為{0}個字符!",
"stringStartsWith":"此字符串必須以{0}開頭!",
"stringEndsWith":"此字符串必須以{0}結尾!",
"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":"此數字不能為零!",
"numberNan":"此數字不能為 NaN(非數字)!",
"numberInvertedContains":"此數字不能包含 {0}!",
"booleanTrue":"此佈爾值不能為真!",
"booleanFalse":"此佈爾值不能為假!",
"arrayEmptyDisabled":"此數組不允許為空!",
"arrayEmptyRequired":"此數組必須為空!",
"arrayTooShort":"此數組長度至少為{0}!",
"arrayTooLong":"此數組長度最多為{0}!",
"arrayLengthInvalid":"此數組長度必須為{0}!",
"arrayInvalidTypes":"此數組隻能包含以下類型:{0}!",
"arrayDouble":"此數組不允許重複值!",
"discordInvalidId":"這是無效的Discord {0} ID!",
"discordInvalidIdOptions":"這是無效的Discord {0} ID!您還可以使用以下之一:{1}!",
"discordInvalidToken":"這是無效的Discord令牌(文法上)!",
"colorInvalid":"這是無效的十六進製顔色!",
"emojiTooShort":"此字符串至少需要{0}個錶情符號!",
"emojiTooLong":"此字符串最多隻能有{0}個錶情符號!",
"emojiCustom":"此錶情符號不能是自定義Discord錶情符號!",
"emojiInvalid":"這是無效的錶情符號!",
"urlInvalid":"此URL無效!",
"urlInvalidHttp":"This url can only use the https:// protocol!",
"urlInvalidProtocol":"This url can only use the http:// & https:// protocols!",
"urlInvalidHostname":"此URL的主機名不被允許!",
"urlInvalidExtension":"此URL的擴展名無效!請選擇:{0}!",
"urlInvalidPath":"此URL的路徑無效!",
"idNotUnique":"此ID不唯一,請使用其他ID!",
"idNonExistent":"ID {0}不存在!",
"invalidType":"此屬性必須為類型:{0}!",
"propertyMissing":"此對象缺少屬性{0}!",
"propertyOptional":"此對象中的屬性{0}是可選的!",
"objectDisabled":"此對象已禁用,請使用{0}啟用!",
"nullInvalid":"此屬性不能為null!",
"switchInvalidType":"此屬性必須是以下類型之一:{0}!",
"objectSwitchInvalid":"此對象必須是以下類型之一:{0}!",
"invalidLanguage":"這是無效的語言!",
"invalidButton":"此按鈕必須至少有一個{0}或{1}!",
"unusedOption":"選項{0}未在任何地方使用!",
"unusedQuestion":"問題{0}未在任何地方使用!",
"dropdownOption":"帶有下拉選單的面板只能包含以下類型的選項:'ticket'、'role' 或 'sub-panel'。",
"customInvalidVersion":"配置文件中指定的版本不匹配!請確保您已將配置更新至最新版本!"
}
},
"actions":{
"buttons":{
"create":"訪問工單",
"close":"關閉工單",
"delete":"刪除工單",
"reopen":"重新開啟工單",
"claim":"認領工單",
"unclaim":"取消認領工單",
"pin":"置頂工單",
"unpin":"取消置頂工單",
"clear":"刪除工單",
"helpSwitchSlash":"檢視斜杠命令",
"helpSwitchText":"檢視文本命令",
"helpPage":"第{0}頁",
"withReason":"帶原因",
"withoutTranscript":"不帶記錄",
"blacklistAdd":"加入黑名單使用者",
"blacklistRemove":"解除使用者封鎖"
},
"titles":{
"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":"工單已轉移",
"transcripts":"轉錄歷史"
},
"descriptions":{
"create":"您的工單已創建。點選下方按鈕訪問!",
"close":"工單已成功關閉!",
"delete":"工單已成功刪除!",
"reopen":"工單已成功重新開啟!",
"claim":"工單已成功認領!",
"unclaim":"工單已成功取消認領!",
"pin":"工單已成功置頂!",
"unpin":"工單已成功取消置頂!",
"rename":"工單已成功重命名為{0}!",
"move":"工單已成功移動到{0}!",
"add":"{0}已成功添加到工單!",
"remove":"{0}已成功從工單移除!",
"helpExplanation":"`<名稱>` => 必填參數\n`[名稱]` => 可選參數",
"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":"工單所有權已由 {2} 成功從 {0} 轉移至 {1}!"
},
"modal":{
"closePlaceholder":"您為什麼關閉此工單?",
"deletePlaceholder":"您為什麼刪除此工單?",
"reopenPlaceholder":"您為什麼重新開啟此工單?",
"claimPlaceholder":"您為什麼認領此工單?",
"unclaimPlaceholder":"您為什麼取消認領此工單?",
"pinPlaceholder":"您為什麼置頂此工單?",
"unpinPlaceholder":"您為什麼取消置頂此工單?"
},
"logs":{
"createLog":"{0}創建了一個新工單!",
"closeLog":"此工單已被{0}關閉!",
"closeDm":"您的工單已在我們的服務器中關閉!",
"deleteLog":"此工單已被{0}刪除!",
"deleteDm":"您的工單已在我們的服務器中刪除!",
"reopenLog":"此工單已被{0}重新開啟!",
"reopenDm":"您的工單已在我們的服務器中重新開啟!",
"claimLog":"此工單已被{0}認領!",
"claimDm":"您的工單已在我們的服務器中被認領!",
"unclaimLog":"此工單已被{0}取消認領!",
"unclaimDm":"您的工單已在我們的服務器中取消認領!",
"pinLog":"此工單已被{0}置頂!",
"pinDm":"您的工單已在我們的服務器中置頂!",
"unpinLog":"此工單已被{0}取消置頂!",
"unpinDm":"您的工單已在我們的服務器中取消置頂!",
"renameLog":"此工單已被{1}重命名為{0}!",
"renameDm":"您的工單已在我們的服務器中重命名為{0}!",
"moveLog":"此工單已被{1}移動到{0}!",
"moveDm":"您的工單已在我們的服務器中移動到{0}!",
"addLog":"{0}已被{1}添加到此工單!",
"addDm":"{0}已被添加到您的工單中!",
"removeLog":"{0}已被{1}從此工單移除!",
"removeDm":"{0}已被從您的工單中移除!",
"blacklistAddLog":"{0}被{1}拉黑!",
"blacklistRemoveLog":"{0}被{1}從黑名單移除!",
"blacklistAddDm":"您已被我們的服務器拉黑!\n從現在起,您無法創建工單!",
"blacklistRemoveDm":"您已被我們的服務器解禁!\n現在您可以再次創建工單!",
"clearLog":"{0}個工單已被{1}刪除!",
"transferLog":"此工單的所有權已由 {2} 從 {0} 轉移至 {1}!",
"transferDm":"您在服務器中的工單所有權已從 {0} 轉移至 {1}!",
"prioritySetLog":"此工單的優先級已由 {1} 更改為 {0}!",
"prioritySetDm":"您在服務器中的工單優先級已更改為 {0}!",
"roleUpdateLog":"{0} 已更新其角色!",
"roleUpdateDm":"您在服務器中的角色已更新!",
"topicSetLog":"此工單的優先級已由 {1} 設為 {0}。",
"topicSetDm":"你的工單優先級已設為 {0}。"
}
},
"transcripts":{
"success":{
"visit":"檢視記錄",
"ready":"記錄已創建",
"textFileDescription":"這是已刪除工單的文本記錄!",
"htmlProgress":"請等待此HTML記錄處理完成...",
"createdChannel":"服務器中已創建一個新的{0}記錄!",
"createdCreator":"已為您的工單創建一個新的{0}記錄!",
"createdParticipant":"您參與的工單中已創建一個新的{0}記錄!",
"createdActiveAdmin":"您作為管理員參與的工單中已創建一個新的{0}記錄!",
"createdEveryAdmin":"您曾擔任管理員的工單中已創建一個新的{0}記錄!",
"createdOther":"已創建一個新的{0}記錄!"
},
"errors":{
"retry":"重試",
"continue":"刪除無記錄",
"backup":"創建備份記錄",
"error":"創建記錄時出錯。\n您想怎麼做?\n\n在您點選以下按鈕之前,此工單不會被刪除。",
"title":"記錄錯誤",
"noHistory":"此使用者目前沒有任何轉錄記錄。",
"historyNotSupported":"目前僅支援 HTML Transcripts 的轉錄歷史。\n文字轉錄歷史將在未來版本提供。"
},
"text":{
"messagesTitle":"消息",
"embedTitle":"EMBED",
"fileTitle":"文件",
"fieldsTitle":"字段",
"reactionsTitle":"反應",
"statsTitle":"統計",
"emptyContent":"<內容為空>",
"noTitle":"<無標題>",
"noDesc":"<無描述>"
}
},
"errors":{
"titles":{
"internalError":"內部錯誤",
"optionMissing":"命令選項缺失",
"optionInvalid":"命令選項無效",
"unknownCommand":"未知命令",
"noPermissions":"無權限",
"unknownTicket":"未知工單",
"deprecatedTicket":"過時工單",
"unknownOption":"未知選項",
"unknownPanel":"未知麵闆",
"notInGuild":"不在服務器中",
"channelRename":"無法重命名頻道",
"channelCategory":"無法更改分類",
"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}在私信中無效!請在服務器中重試!",
"channelRename":"由於Discord速率限製,機器人目前無法重命名頻道。如果機器人未重啟,頻道將在10分鍾後自動重命名。",
"channelCategory":"由於 Discord 速率限制,頻道分類無法立即更改。如果機器人保持在線,將在10分鐘內自動更新。",
"channelRenameSource":"此錯誤的來源是:{0}",
"busy":"無法使用此{0}!\n工單當前正在被機器人處理。\n\n請幾秒後重試!",
"closeBeforeMessage":"用戶發送消息之前,無法關閉或刪除此工單。",
"closeBeforeAdminMessage":"工單管理員或支援成員發送消息之前,無法關閉或刪除此工單。",
"unableToCreateTicket":"您無法創建工單。",
"messageMissing":"無法找到互動訊息。請改用指令 `{0}`。",
"stateExpired":"此互動已無效或已過期。請改用指令 `{0}`。在 Open Ticket 大型更新後出現此錯誤是正常的。",
"panelStateExpired":"此面板已無效或已過期。請使用 `{0}` 建立新面板以解決問題。在 Open Ticket 大型更新後出現此錯誤是正常的。"
},
"optionInvalidReasons":{
"stringRegex":"值不符合模式!",
"stringMinLength":"值至少需要{0}個字符!",
"stringMaxLength":"值最多需要{0}個字符!",
"numberInvalid":"無效數字!",
"numberMin":"數字至少為{0}!",
"numberMax":"數字最多為{0}!",
"numberDecimal":"數字不能為小數!",
"numberNegative":"數字不能為負數!",
"numberPositive":"數字不能為正數!",
"numberZero":"數字不能為零!",
"channelNotFound":"無法找到頻道!",
"userNotFound":"無法找到用戶!",
"roleNotFound":"無法找到角色!",
"memberNotFound":"無法找到用戶!",
"mentionableNotFound":"無法找到用戶或角色!",
"channelType":"無效的頻道類型!",
"notInGuild":"此選項需要您在服務器中!"
},
"permissions":{
"developer":"您需要是機器人的開發者。",
"owner":"您需要是服務器所有者。",
"admin":"您需要是服務器管理員。",
"moderator":"您需要是版主。",
"support":"您需要是支援團隊成員。",
"member":"您需要是成員。",
"discord-administrator":"您需要擁有`ADMINISTRATOR`權限。"
},
"actionInvalid":{
"close":"工單已關閉!",
"reopen":"工單未關閉!",
"claim":"工單已認領!",
"unclaim":"工單未認領!",
"pin":"工單已置頂!",
"unpin":"工單未置頂!",
"add":"此用戶已可訪問工單!",
"remove":"無法從此工單移除此用戶!"
}
},
"params":{
"uppercase":{
"ticket":"工單",
"tickets":"工單",
"reason":"原因",
"creator":"創建者",
"remaining":"剩餘時間",
"added":"已添加",
"removed":"已移除",
"filter":"篩選",
"method":"方式",
"type":"類型",
"blacklisted":"已拉黑",
"panel":"麵闆",
"command":"命令",
"system":"係統",
"true":"是",
"false":"否",
"syntax":"文法",
"originalName":"原名稱",
"newName":"新名稱",
"originalCategory":"原始分類",
"newCategory":"新分類",
"until":"直到",
"validOptions":"有效選項",
"validPanels":"有效麵闆",
"autoclose":"自動關閉",
"autodelete":"自動刪除",
"startupDate":"啟動日期",
"version":"版本",
"name":"名稱",
"role":"角色",
"status":"狀態",
"claimed":"已認領",
"pinned":"已置頂",
"creationDate":"創建日期",
"noone":"無人",
"open":"開啟",
"closed":"關閉",
"priority":"優先級",
"participants":"參與者",
"yes":"是",
"no":"否",
"accept":"接受",
"cancel":"取消",
"option":"選項",
"topic":"主題",
"uptime":"係統運行時間",
"messages":"消息",
"embeds":"嵌入",
"files":"文件",
"components":"組件",
"cooldown":"冷卻時間",
"maxTickets":"最大工單數",
"admins":"管理員",
"roles":"角色",
"size":"大小"
},
"lowercase":{
"text":"文本",
"html":"HTML",
"command":"命令",
"modal":"模態框",
"button":"按鈕",
"dropdown":"下拉菜單",
"method":"方式"
}
},
"commands":{
"reason":"指定一個可選原因,該原因將在日誌中可見。",
"help":"獲取所有可用命令的列錶。",
"panel":"生成帶有下拉菜單或按鈕的消息(用於工單創建)。",
"panelId":"您想要生成的麵闆的標識符。",
"panelAutoUpdate":"您希望此麵闆在編輯時自動更新嗎?",
"ticket":"立即創建一個工單。",
"ticketId":"您想要創建的工單的標識符。",
"ticketOtherUser":"為其他使用者建立工單。",
"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":"工單需要多少天不活動才能自動刪除。",
"topic":"管理工單頻道的主題。",
"topicSet":"設定工單頻道的主題。",
"topicValue":"頻道的新主題。",
"topicList":"獲取所有工單及其主題和統計信息的列錶。",
"priority":"管理工單的優先級。",
"prioritySet":"設定工單的優先級。",
"priorityValue":"頻道的優先級。",
"priorityGet":"獲取工單的優先級。",
"priorityList":"獲取所有工單的優先級狀態列錶。",
"transfer":"將工單所有權從一位用戶轉移至另一位用戶。",
"transferUser":"要轉移給的用戶。",
"transcripts":"查看使用者的工單轉錄歷史。",
"transcriptsUser":"要查看的使用者。"
},
"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":"啟用此工單的自動刪除。",
"categories":{
"general":"通用命令",
"basicTicket":"基礎工單命令",
"advancedTicket":"高級工單命令",
"userTicket":"用戶工單命令",
"admin":"管理員命令",
"advanced":"高級命令",
"extra":"額外命令"
}
},
"stats":{
"scopes":{
"global":"全局統計",
"system":"係統統計",
"user":"用戶統計",
"ticket":"工單統計",
"participants":"參與者",
"messages":"消息"
},
"properties":{
"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":"選擇您的選項",
"selectPriorityLevel":"選擇優先級"
},
"priorities":{
"urgent":"緊急",
"veryHigh":"非常高",
"high":"高",
"normal":"普通",
"low":"低",
"veryLow":"非常低",
"none":"無"
}
}
+169 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion": "v4.0.7",
"otversion":"v4.2.0",
"translators":["palestinian"],
"lastedited": "26/11/2024",
"lastedited":"25/05/2026",
"language":"Turkish",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Bu dize {0} içermelidir!",
"stringChoices":"Bu dize yalnızca şu değerlerden biri olmalıdır: {0}!",
"stringRegex":"Bu dize geçersiz!",
"stringInvertedContains":"Bu metin {0} içeremez!",
"stringLowercase":"Bu metin yalnızca küçük harflerle yazılmalıdır!",
"stringUppercase":"Bu metin yalnızca büyük harflerle yazılmalıdır!",
"stringSpecialCharacters":"Bu metin özel karakterler içeremez! (yalnızca a-z, 0-9 ve boşluk)",
"stringNoSpaces":"Bu metin boşluk içeremez!",
"stringCapitalWord":"Bu metindeki her kelimenin büyük harfle başlaması önerilir!",
"stringCapitalSentence":"Bu metindeki bazı cümleler büyük harfle başlamıyor gibi görünüyor!",
"stringPunctuation":"Bu metindeki cümle noktalama işaretiyle bitmiyor gibi görünüyor!",
"numberTooShort":"Bu sayı {0} karakterden daha kısa olamaz!",
"numberTooLong":"Bu sayı {0} karakterden daha uzun olamaz!",
@@ -48,6 +56,8 @@
"numberNegative":"Bu sayı negatif olamaz!",
"numberPositive":"Bu sayı pozitif olamaz!",
"numberZero":"Bu sayı sıfır olamaz!",
"numberNan":"Bu sayı NaN (Not A Number) olamaz!",
"numberInvertedContains":"Bu sayı {0} içeremez!",
"booleanTrue":"Bu boolean true olamaz!",
"booleanFalse":"Bu boolean false olamaz!",
@@ -89,7 +99,8 @@
"invalidButton":"Bu buton en az bir {0} veya {1} içermelidir!",
"unusedOption":"Seçenek {0} hiçbir yerde kullanılmıyor!",
"unusedQuestion":"Soru {0} hiçbir yerde kullanılmıyor!",
"dropdownOption": "Dropdown etkin olan bir panel yalnızca 'ticket' türündeki seçenekleri içerebilir!"
"dropdownOption":"Açılır menülü bir panel yalnızca şu türlerde seçenekler içerebilir: 'ticket', 'role' veya 'sub-panel'.",
"customInvalidVersion":"Yapılandırmanızda belirtilen sürüm eşleşmiyor! Yapılandırmayı en son sürüme güncellediğinizden emin olun!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Metin Komutlarını Görüntüle",
"helpPage":"Sayfa {0}",
"withReason":"Sebep ile",
"withoutTranscript": "Transkript Olmadan"
"withoutTranscript":"Transkript Olmadan",
"blacklistAdd":"Kullanıcıyı Kara Listeye Al",
"blacklistRemove":"Kullanıcıyı Serbest Bırak"
},
"titles":{
"created":"Ticket Oluşturuldu",
@@ -132,13 +145,21 @@
"blacklistAddDm":"Kara Listeye Eklendi",
"blacklistRemoveDm":"Kara Listeden Çıkarıldı",
"clear":"Ticket'ler Temizlendi",
"clearTickets":"Ticketleri Temizle",
"roles":"Roller Güncellendi",
"autoclose":"Ticket Otomatik Olarak Kapandı",
"autocloseEnabled":"Otomatik Kapatma Etkinleştirildi",
"autocloseDisabled":"Otomatik Kapatma Devre Dışı Bırakıldı",
"autodelete":"Ticket Otomatik Olarak Silindi",
"autodeleteEnabled": "Otomatik Silme Etkinleştirildi"
"autodeleteEnabled":"Otomatik Silme Etkinleştirildi",
"autodeleteDisabled":"Otomatik Silme Devre Dışı",
"topicSet":"Konu Değiştirildi",
"prioritySet":"Öncelik Değiştirildi",
"priorityGet":"Ticket Önceliği",
"transfer":"Ticket Aktarıldı",
"transcripts":"Transkript Geçmişi"
},
"descriptions":{
"create":"Ticket'iniz oluşturuldu. Aşağıdaki düğmeye tıklayarak erişebilirsiniz!",
@@ -179,7 +200,12 @@
"ticketMessageLimit":"Aynı anda yalnızca {0} ticket oluşturabilirsiniz!",
"ticketMessageAutoclose":"Bu ticket, {0}h süresince aktif olmadığında otomatik olarak kapatılacaktır!",
"ticketMessageAutodelete":"Bu ticket, {0} gün süresince aktif olmadığında otomatik olarak silinecektir!",
"panelReady": "Paneli aşağıda bulabilirsiniz!\nBu mesaj artık silinebilir!"
"panelReady":"Panel takip eden mesajda mevcuttur!\nBu mesaj artık silinebilir!",
"topicSet":"Kanal konusu {0} tarafından başarıyla değiştirildi!",
"prioritySet":"Ticket önceliği {1} tarafından {0} olarak başarıyla değiştirildi!",
"priorityGet":"Bu ticketin mevcut önceliği {0}.",
"transfer":"Ticket sahipliği {2} tarafından {0} kullanıcısından {1} kullanıcısına başarıyla aktarıldı!"
},
"modal":{
"closePlaceholder":"Bu ticket'i neden kapattınız?",
@@ -219,7 +245,16 @@
"blacklistRemoveLog":"{0}, {1} tarafından kara listeden çıkarıldı!",
"blacklistAddDm":"Sunucumuzda kara listeye alındınız!\nArtık bir ticket oluşturamazsınız!",
"blacklistRemoveDm":"Sunucumuzda kara listeden çıkarıldınız!\nArtık ticket oluşturabilirsiniz!",
"clearLog": "{0} ticket {1} tarafından silindi!"
"clearLog":"{0} ticket {1} tarafından silindi!",
"transferLog":"Bu ticketin sahipliği {2} tarafından {0} kullanıcısından {1} kullanıcısına aktarıldı!",
"transferDm":"Ticketinizin sahipliği sunucumuzda {0} kullanıcısından {1} kullanıcısına aktarıldı!",
"prioritySetLog":"Bu ticketin önceliği {1} tarafından {0} olarak değiştirildi!",
"prioritySetDm":"Ticketinizin önceliği sunucumuzda {0} olarak değiştirildi!",
"roleUpdateLog":"{0} rollerini güncelledi!",
"roleUpdateDm":"Sunucumuzdaki rolleriniz güncellendi!",
"topicSetLog":"Bu ticket'ın önceliği {1} tarafından {0} olarak ayarlandı.",
"topicSetDm":"Ticket'ınızın önceliği {0} olarak ayarlandı."
}
},
"transcripts":{
@@ -240,7 +275,21 @@
"retry":"Yeniden Dene",
"continue":"Transkript Olmadan Sil",
"backup":"Yedek Transkript Oluştur",
"error": "Transkript oluşturulurken bir sorun oluştu.\nNe yapmak istersiniz?\n\nBu ticket silinmeyecek, bu butonlardan birine tıklamadan önce."
"error":"Transkript oluşturulurken bir sorun oluştu.\nNe yapmak istersiniz?\n\nBu ticket silinmeyecek, bu butonlardan birine tıklamadan önce.",
"title":"Transkript Hatası",
"noHistory":"Bu kullanıcının henüz hiçbir transkripti yok.",
"historyNotSupported":"Transkript geçmişi şu anda yalnızca HTML Transcripts ile desteklenmektedir.\nMetin transkript geçmişi gelecekteki sürümlerde kullanılabilir olacaktır."
},
"text":{
"messagesTitle":"MESAJLAR",
"embedTitle":"EMBED",
"fileTitle":"DOSYA",
"fieldsTitle":"ALANLAR",
"reactionsTitle":"TEPKİLER",
"statsTitle":"İSTATİSTİKLER",
"emptyContent":"<içerik boş>",
"noTitle":"<başlık-yok>",
"noDesc":"<açıklama-yok>"
}
},
"errors":{
@@ -256,7 +305,9 @@
"unknownPanel":"Bilinmeyen Panel",
"notInGuild":"Sunucuda Değil",
"channelRename":"Kanal Yeniden Adlandırılamadı",
"busy": "Ticket Meşgul"
"channelCategory":"Kategori Değiştirilemiyor",
"busy":"Ticket Meşgul",
"permissionError":"Yetki Hatası"
},
"descriptions":{
"askForInfo":"Daha fazla bilgi için botun sahibine ulaşın!",
@@ -278,8 +329,15 @@
"deprecatedTicket":"Mevcut kanal geçerli bir ticket değil! Bu, eski bir Open Ticket sürümünden kalmış olabilir!",
"notInGuild":"Bu {0} DM'de çalışmaz! Lütfen bunu bir sunucuda tekrar deneyin!",
"channelRename":"Discord hız limitleri nedeniyle, botun kanal adını değiştirmesi şu anda mümkün değil. Bot yeniden başlatılmazsa kanal 10 dakika içinde otomatik olarak yeniden adlandırılacaktır.",
"channelCategory":"Discord oran sınırları nedeniyle kanal kategorisi hemen değiştirilemedi. Bot çevrimiçi kalırsa 10 dakika içinde otomatik olarak değiştirilecektir.",
"channelRenameSource":"Bu hatanın kaynağı: {0}",
"busy": "Bu {0} işlemini kullanamıyorsunuz!\nTicket şu anda bot tarafından işleniyor.\n\nLütfen birkaç saniye içinde tekrar deneyin!"
"busy":"Bu {0} işlemini kullanamıyorsunuz!\nTicket şu anda bot tarafından işleniyor.\n\nLütfen birkaç saniye içinde tekrar deneyin!",
"closeBeforeMessage":"Bir kullanıcı tarafından mesaj gönderilmeden bu ticket kapatılamaz/silinemez.",
"closeBeforeAdminMessage":"Bir ticket yöneticisi veya destek üyesi tarafından mesaj gönderilmeden bu ticket kapatılamaz/silinemez.",
"unableToCreateTicket":"Ticket oluşturamazsınız.",
"messageMissing":"Etkileşim mesajı bulunamadı. Bunun yerine `{0}` komutunu kullanın.",
"stateExpired":"Bu etkileşim artık geçerli değil veya süresi doldu. Bunun yerine `{0}` komutunu kullanın. Büyük bir Open Ticket güncellemesinden sonra bu hatayı almak normaldir.",
"panelStateExpired":"Bu panel artık geçerli değil veya süresi doldu. Sorunu çözmek için `{0}` kullanarak yeni bir panel oluşturun. Büyük bir Open Ticket güncellemesinden sonra bu hatayı almak normaldir."
},
"optionInvalidReasons":{
"stringRegex":"Değer desenle eşleşmiyor!",
@@ -330,7 +388,6 @@
"added":"Eklendi",
"removed":"Çıkarıldı",
"filter":"Filtre",
"claimedBy": "Üstlenen {0}",
"method":"Yöntem",
"type":"Tür",
"blacklisted":"Kara Listeye Alınmış",
@@ -342,6 +399,8 @@
"syntax":"Sözdizimi",
"originalName":"Orijinal İsim",
"newName":"Yeni İsim",
"originalCategory":"Orijinal Kategori",
"newCategory":"Yeni Kategori",
"until":"Kadar",
"validOptions":"Geçerli Seçenekler",
"validPanels":"Geçerli Paneller",
@@ -351,10 +410,32 @@
"version":"Sürüm",
"name":"İsim",
"role":"Rol",
"status": "Durum",
"status":"DURUM",
"claimed":"Üstlenildi",
"pinned":"Sabitlenmiş",
"creationDate": "Oluşturulma Tarihi"
"creationDate":"Oluşturulma Tarihi",
"noone":"HİÇ KİMSE",
"open":"AÇIK",
"closed":"KAPALI",
"priority":"ÖNCELİK",
"participants":"KATILIMCILAR",
"yes":"EVET",
"no":"HAYIR",
"accept":"Kabul Et",
"cancel":"İptal Et",
"option":"SEÇENEK",
"topic":"KONU",
"uptime":"SİSTEM ÇALIŞMA SÜRESİ",
"messages":"MESAJLAR",
"embeds":"EMBEDLER",
"files":"DOSYALAR",
"components":"BİLEŞENLER",
"cooldown":"BEKLEME SÜRESİ",
"maxTickets":"MAKS TICKET",
"admins":"ADMİNLER",
"roles":"ROLLER",
"size":"BOYUT"
},
"lowercase":{
"text":"metin",
@@ -374,6 +455,7 @@
"panelAutoUpdate":"Bu panelin düzenlendiğinde otomatik olarak güncellenmesini ister misiniz?",
"ticket":"Anında bir ticket oluştur.",
"ticketId":"Oluşturmak istediğiniz ticket'ın kimliği.",
"ticketOtherUser":"Başka bir kullanıcı için ticket oluştur.",
"close":"Bir ticket'ı kapat.",
"delete":"Bir ticket'ı sil.",
"deleteNoTranscript":"Bu ticket'ı transkript oluşturmadan sil.",
@@ -383,6 +465,7 @@
"unclaim":"Bir ticket'tan üstlenmeyi bırak.",
"pin":"Bir ticket'ı sabitle.",
"unpin":"Bir ticket'ın sabitlemesini kaldır.",
"move":"Bir ticket'ı taşı.",
"moveId":"Taşımak istediğiniz seçeneğin kimliği.",
"rename":"Bir ticket'ı yeniden adlandır.",
@@ -391,6 +474,7 @@
"addUser":"Eklenecek kullanıcı.",
"remove":"Bir kullanıcıyı bir ticket'tan çıkar.",
"removeUser":"Çıkarılacak kullanıcı.",
"blacklist":"Ticket kara listesini yönet.",
"blacklistView":"Mevcut kara listeyi görüntüle.",
"blacklistAdd":"Bir kullanıcıyı kara listeye ekle.",
@@ -404,6 +488,7 @@
"statsUserUser":"Görüntülemek istediğiniz kullanıcı.",
"statsTicket":"Sunucudaki bir ticket'ın istatistiklerini görüntüle.",
"statsTicketTicket":"Görüntülemek istediğiniz ticket.",
"clear":"Aynı anda birden fazla ticket sil.",
"clearFilter":"Ticket'ları silmek için filtre.",
"clearFilters":{
@@ -416,6 +501,7 @@
"unpin":"Sabitlenmemiş",
"autoclose":"Otomatik Kapatılmış"
},
"autoclose":"Bir ticket'ta otomatik kapatmayı yönet.",
"autocloseDisable":"Bu ticket'ta otomatik kapatmayı devre dışı bırak.",
"autocloseEnable":"Bu ticket'ta otomatik kapatmayı etkinleştir.",
@@ -423,7 +509,21 @@
"autodelete":"Bir ticket'ta otomatik silmeyi yönet.",
"autodeleteDisable":"Bu ticket'ta otomatik silmeyi devre dışı bırak.",
"autodeleteEnable":"Bu ticket'ta otomatik silmeyi etkinleştir.",
"autodeleteEnableTime": "Bu ticket'ın silinmesi için gereken inaktif süre (gün cinsinden)."
"autodeleteEnableTime":"Bu ticket'ın silinmesi için gereken inaktif süre (gün cinsinden).",
"topic":"Ticket kanalının konusunu yönet.",
"topicSet":"Ticket kanalının konusunu ayarla.",
"topicValue":"Kanalın yeni konusu.",
"topicList":"Tüm ticketleri konuları ve istatistikleriyle birlikte listele.",
"priority":"Ticket önceliğini yönet.",
"prioritySet":"Ticket önceliğini ayarla.",
"priorityValue":"Kanalın önceliği.",
"priorityGet":"Ticket önceliğini al.",
"priorityList":"Tüm ticketleri öncelik durumlarıyla birlikte listele.",
"transfer":"Ticket sahipliğini bir kullanıcıdan diğerine aktar.",
"transferUser":"Aktarılacak kullanıcı.",
"transcripts":"Bir kullanıcının ticket transkript geçmişini görüntüle.",
"transcriptsUser":"Görüntülenecek kullanıcı."
},
"helpMenu":{
"help":"Tüm mevcut komutların bir listesini alın.",
@@ -451,7 +551,16 @@
"autocloseDisable":"Bu ticket'ta otomatik kapatmayı devre dışı bırak.",
"autocloseEnable":"Bu ticket'ta otomatik kapatmayı etkinleştir.",
"autodeleteDisable":"Bu ticket'ta otomatik silmeyi devre dışı bırak.",
"autodeleteEnable": "Bu ticket'ta otomatik silmeyi etkinleştir."
"autodeleteEnable":"Bu ticket'ta otomatik silmeyi etkinleştir.",
"categories":{
"general":"Genel Komutlar",
"basicTicket":"Temel Ticket Komutları",
"advancedTicket":"Gelişmiş Ticket Komutları",
"userTicket":"Kullanıcı Ticket Komutları",
"admin":"Admin Komutları",
"advanced":"Gelişmiş Komutlar",
"extra":"Ekstra Komutlar"
}
},
"stats":{
"scopes":{
@@ -459,7 +568,8 @@
"system":"Sistem İstatistikleri",
"user":"Kullanıcı İstatistikleri",
"ticket":"Ticket İstatistikleri",
"participants": "Katılımcılar"
"participants":"Katılımcılar",
"messages":"Mesajlar"
},
"properties":{
"ticketsCreated":"Oluşturulan Ticket'lar",
@@ -471,7 +581,48 @@
"ticketsPinned":"Sabitlenen Ticket'lar",
"ticketsMoved":"Taşınan Ticket'lar",
"usersBlacklisted":"Kara Listeye Alınan Kullanıcılar",
"transcriptsCreated": "Oluşturulan Transkriptler"
}
"transcriptsCreated":"Oluşturulan Transkriptler",
"ticketsAutodeleted":"Otomatik Silinen Ticketler",
"ticketsTransferred":"Aktarılan Ticketler",
"ticketVolume":"Ticket Hacmi",
"averageTickets":"Ortalama Ticket/Kullanıcı",
"currentTickets":"Mevcut Ticketler",
"age":"Ticket Yaşı",
"responseTime":"Yanıt Süresi",
"resolutionTime":"Çözüm Süresi",
"createdOn":"Oluşturulma Tarihi",
"createdBy":"Oluşturan",
"closedOn":"Kapatılma Tarihi",
"closedBy":"Kapatan",
"claimedOn":"Sahiplenme Tarihi",
"claimedBy":"Sahiplenen",
"pinnedOn":"Sabitlenme Tarihi",
"pinnedBy":"Sabitleyen",
"deletedOn":"Silinme Tarihi",
"deletedBy":"Silen"
},
"roles":{
"developer":"Geliştirici",
"serverOwner":"Sunucu Sahibi",
"serverAdmin":"Sunucu Yöneticisi",
"moderator":"Moderatör Ekibi",
"support":"Destek Ekibi",
"member":"Üye"
}
},
"panel":{
"selectTicket":"Ticketinizi seçin",
"selectRole":"Rolünüzü seçin",
"selectOption":"Seçeneğinizi seçin",
"selectPriorityLevel":"Öncelik seviyesini seçin"
},
"priorities":{
"urgent":"Acil",
"veryHigh":"Çok Yüksek",
"high":"Yüksek",
"normal":"Normal",
"low":"Düşük",
"veryLow":"Çok Düşük",
"none":"Yok"
}
}
+168 -18
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["Anderskiy"],
"lastedited":"31/08/2024",
"lastedited":"25/05/2026",
"language":"Ukrainian",
"automated":false
},
@@ -31,6 +31,14 @@
"stringContains":"Цей рядок повинен мати {0}!",
"stringChoices":"Цей рядок може мати лише одне з наступних значень: {0}!",
"stringRegex":"Цей рядок є неправильним!",
"stringInvertedContains":"Цей рядок не може містити {0}!",
"stringLowercase":"Цей рядок має бути написаний лише маленькими літерами!",
"stringUppercase":"Цей рядок має бути написаний лише великими літерами!",
"stringSpecialCharacters":"Цей рядок не може містити спеціальні символи! (тільки a-z, 0-9 та пробіл)",
"stringNoSpaces":"Цей рядок не може містити пробілів!",
"stringCapitalWord":"Рекомендується, щоб кожне слово в цьому рядку починалося з великої літери!",
"stringCapitalSentence":"Схоже, деякі речення в цьому рядку не починаються з великої літери!",
"stringPunctuation":"Схоже, що речення в цьому рядку не закінчується знаком пунктуації!",
"numberTooShort":"Це число не може бути коротшим за {0} символів!",
"numberTooLong":"Це число не може бути довшим за {0} символів!",
@@ -48,6 +56,8 @@
"numberNegative":"Це число не може бути від'ємним!",
"numberPositive":"Це число не може бути додатнім!",
"numberZero":"Це число не може дорівнювати нулю!",
"numberNan":"Це число не може бути NaN (не число)!",
"numberInvertedContains":"Це число не може містити {0}!",
"booleanTrue":"Цей булевий вираз не може бути істинним!",
"booleanFalse":"Цей булевий вираз не може бути хибним!",
@@ -89,7 +99,8 @@
"invalidButton":"Ця кнопка повинна мати принаймні {0} або {1}!",
"unusedOption":"Опція {0} ніде не використовується!",
"unusedQuestion":"Питання {0} ніде не використовується!",
"dropdownOption":"Панель з увімкненим випадаючим списком може містити лише опції типу «тікет»!"
"dropdownOption":"Панель із випадаючим списком може містити лише опції типів: 'ticket', 'role' або 'sub-panel'.",
"customInvalidVersion":"Вказана версія у вашій конфігурації не збігається! Переконайтеся, що ви оновили конфігурацію до останньої версії!"
}
},
"actions":{
@@ -107,7 +118,9 @@
"helpSwitchText":"Перевірити текстові команди",
"helpPage":"Cторінка {0}",
"withReason":"З причиною",
"withoutTranscript":"Без транскрипції"
"withoutTranscript":"Без транскрипції",
"blacklistAdd":"Додати Користувача до Чорного Списку",
"blacklistRemove":"Звільнити Користувача"
},
"titles":{
"created":"Тікет створений",
@@ -132,6 +145,7 @@
"blacklistAddDm":"Додати до чорного списку",
"blacklistRemoveDm":"Видалити з чорного списку",
"clear":"Тікети відалено",
"clearTickets":"Очистити Тікети",
"roles":"Ролі оновлено",
"autoclose":"Тікет автоматично закрито",
@@ -139,7 +153,13 @@
"autocloseDisabled":"Автозакриття відключено",
"autodelete":"Тікет автовидаленно",
"autodeleteEnabled":"Автовидалення увімкнено",
"autodeleteDisabled":"Автовидалення відключено"
"autodeleteDisabled":"Автовидалення відключено",
"topicSet":"Тему змінено",
"prioritySet":"Пріоритет змінено",
"priorityGet":"Пріоритет Тікету",
"transfer":"Тікет передано",
"transcripts":"Історія Транскриптів"
},
"descriptions":{
"create":"Ваш тікет був створений. Натисніть кнопку нижче, щоб отримати доступ до нього!",
@@ -180,7 +200,12 @@
"ticketMessageLimit":"Одночасно можна створити лише {0} тікетів!",
"ticketMessageAutoclose":"Цей тикет буде автоматично закрито, якщо він буде неактивним протягом {0}ч!",
"ticketMessageAutodelete":"Цей тикет буде автоматично видалено, якщо він буде неактивним протягом {0} днів!",
"panelReady":"Панель можна знайти нижче!\nЦе повідомлення буде видалено!"
"panelReady":"Панель доступна у наступному повідомленні!\nЦе повідомлення тепер можна видалити!",
"topicSet":"Тему каналу успішно змінив {0}!",
"prioritySet":"Пріоритет тікету успішно змінено на {0} користувачем {1}!",
"priorityGet":"Поточний пріоритет цього тікету: {0}.",
"transfer":"Власність тікету успішно передано від {0} до {1} користувачем {2}!"
},
"modal":{
"closePlaceholder":"Чому ви закрили тікет?",
@@ -220,7 +245,16 @@
"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":"Ваші ролі на нашому сервері оновлено!",
"topicSetLog":"Пріоритет цього тікета було встановлено на {0} користувачем {1}.",
"topicSetDm":"Пріоритет вашого тікета було встановлено на {0}."
}
},
"transcripts":{
@@ -241,7 +275,21 @@
"retry":"Спробуйте ще раз.",
"continue":"Видалення без транскрипції",
"backup":"Створити резервну копію транскрипту",
"error":"Під час спроби створити транскрипт щось пішло не так.\n\nЩо ви хочете зробити?\n\nЦей тікет не буде видалено, доки ви не натиснете одну з цих кнопок."
"error":"Під час спроби створити транскрипт щось пішло не так.\n\nЩо ви хочете зробити?\n\nЦей тікет не буде видалено, доки ви не натиснете одну з цих кнопок.",
"title":"Помилка транскрипта",
"noHistory":"Цей користувач ще не має жодних транскриптів.",
"historyNotSupported":"Історія транскриптів наразі підтримується лише з HTML Transcripts.\nІсторія текстових транскриптів буде доступна в майбутніх версіях."
},
"text":{
"messagesTitle":"ПОВІДОМЛЕННЯ",
"embedTitle":"EMBED",
"fileTitle":"ФАЙЛ",
"fieldsTitle":"ПОЛЯ",
"reactionsTitle":"РЕАКЦІЇ",
"statsTitle":"СТАТИСТИКА",
"emptyContent":"<контент порожній>",
"noTitle":"<немає заголовка>",
"noDesc":"<немає опису>"
}
},
"errors":{
@@ -257,7 +305,9 @@
"unknownPanel":"Невідома панель",
"notInGuild":"Відсутний на сервері",
"channelRename":"Неможливо перейменовати канал",
"busy":"Тікет зайнято"
"channelCategory":"Неможливо Змінити Категорію",
"busy":"Тікет зайнято",
"permissionError":"Помилка дозволу"
},
"descriptions":{
"askForInfo":"Зв'яжіться з власником цього бота для отримання додаткової інформації!",
@@ -279,8 +329,15 @@
"deprecatedTicket":"Поточний канал не є дійсним тікетом! Можливо, це тікет зі старої версії Open Ticket!",
"notInGuild":"Це {0} не працює у ПП! Будь ласка, спробуйте ще раз на сервері!",
"channelRename":"Через обмеження швидкості дискорду бот наразі не може перейменувати канал. Канал буде автоматично перейменовано через 10 хвилин, якщо бота не буде перезавантажено.",
"channelCategory":"Через обмеження Discord на частоту запитів категорію каналу не вдалося змінити одразу. Вона буде автоматично змінена протягом 10 хвилин, якщо бот залишатиметься онлайн.",
"channelRenameSource":"Джерело цієї помилки: {0}",
"busy":"Неможливо використати цей {0}!\nТікет наразі обробляється ботом.\n\nБудь ласка, повторіть спробу через кілька секунд!"
"busy":"Неможливо використати цей {0}!\nТікет наразі обробляється ботом.\n\nБудь ласка, повторіть спробу через кілька секунд!",
"closeBeforeMessage":"Цей тікет не можна закрити/видалити до того, як користувач надішле повідомлення.",
"closeBeforeAdminMessage":"Цей тікет не можна закрити/видалити до того, як адміністратор тікетів або член підтримки надішле повідомлення.",
"unableToCreateTicket":"Ви не можете створити тікет.",
"messageMissing":"Не вдалося знайти повідомлення взаємодії. Використайте команду `{0}` замість цього.",
"stateExpired":"Ця взаємодія більше не є дійсною або термін її дії закінчився. Використайте команду `{0}` замість цього. Нормально отримувати цю помилку після великого оновлення Open Ticket.",
"panelStateExpired":"Ця панель більше не є дійсною або термін її дії закінчився. Створіть нову панель за допомогою `{0}`, щоб вирішити проблему. Нормально отримувати цю помилку після великого оновлення Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Значення не відповідає шаблону!",
@@ -331,7 +388,6 @@
"added":"Додано",
"removed":"Видалено",
"filter":"Фільтер",
"claimedBy":"Запрошено {0}",
"method":"Метод",
"type":"Тип",
"blacklisted":"У ЧС",
@@ -343,6 +399,8 @@
"syntax":"Синтаксіс",
"originalName":"Оригінальне ім'я",
"newName":"Нове ім'я",
"originalCategory":"Оригінальна Категорія",
"newCategory":"Нова Категорія",
"until":"Доки",
"validOptions":"Дійсні параметри",
"validPanels":"Дійсні панелі",
@@ -352,10 +410,32 @@
"version":"Версія",
"name":"Ім'я",
"role":"Роль",
"status":"Статус",
"status":"СТАТУС",
"claimed":"Запрошено",
"pinned":"Закріплено",
"creationDate":"Дата створення"
"creationDate":"Дата створення",
"noone":"Ніхто",
"open":"ВІДКРИТИЙ",
"closed":"ЗАКРИТО",
"priority":"ПРІОРИТЕТ",
"participants":"УЧАСНИКИ",
"yes":"Так",
"no":"Ні",
"accept":"Прийняти",
"cancel":"Скасувати",
"option":"ВАРІАНТ",
"topic":"ТЕМА",
"uptime":"Час роботи системи",
"messages":"ПОВІДОМЛЕННЯ",
"embeds":"EMBED",
"files":"ФАЙЛИ",
"components":"КОМПОНЕНТИ",
"cooldown":"Затримка",
"maxTickets":"Макс. тікетів",
"admins":"АДМІНИ",
"roles":"РОЛІ",
"size":"РОЗМІР"
},
"lowercase":{
"text":"текст",
@@ -375,6 +455,7 @@
"panelAutoUpdate":"Ви хочете, щоб ця панель автоматично оновлювалася при редагуванні?",
"ticket":"Миттєве створення тікета.",
"ticketId":"Ідентифікатор тікету, який ви хочете створити.",
"ticketOtherUser":"Створити тікет для іншого користувача.",
"close":"Закрийте тікет.",
"delete":"Видалити квиток.",
"deleteNoTranscript":"Видаліть цей тікет без створення стенограми.",
@@ -384,6 +465,7 @@
"unclaim":"Відмовитися від тікету.",
"pin":"Закріпіть тікет.",
"unpin":"Відкріпіть тікет.",
"move":"Перемістіть тікет.",
"moveId":"Ідентифікатор параметр, на який ви хочете перейти.",
"rename":"Перейменувати тікет.",
@@ -392,6 +474,7 @@
"addUser":"Учасник, якого потрібно додати.",
"remove":"Видалити учасника з тікета.",
"removeUser":"Учасник, якого потрібно видалити",
"blacklist":"Керування чорним списком тікетів.",
"blacklistView":"Переглянути список поточного чорного списку.",
"blacklistAdd":"Додати учасника до чорного списку.",
@@ -405,6 +488,7 @@
"statsUserUser":"Учасник для перегляду.",
"statsTicket":"Перегляд статистики тікета на сервері.",
"statsTicketTicket":"Тікет для перегляду.",
"clear":"Видалення декількох тікетів одночасно.",
"clearFilter":"Фільтр для очищення квитків.",
"clearFilters":{
@@ -417,6 +501,7 @@
"unpin":"Відкріплені",
"autoclose":"Авто-закриті"
},
"autoclose":"Керуйте автозакриттям у тікеті.",
"autocloseDisable":"Вимкніть автозакриття в цьому тікеті.",
"autocloseEnable":"Увімкніть автозакриття в цьому тикеті.",
@@ -424,7 +509,21 @@
"autodelete":"Керуйте автовидаленням у тікеті.",
"autodeleteDisable":"Вимкніть автовидалення в цьому тікеті.",
"autodeleteEnable":"Ввімкніть автовидалення в цьому тікеті.",
"autodeleteEnableTime":"Кількість днів."
"autodeleteEnableTime":"Кількість днів.",
"topic":"Керування темою каналу тікету.",
"topicSet":"Встановити тему каналу тікету.",
"topicValue":"Нова тема каналу.",
"topicList":"Отримати список усіх тікетів з їхніми темами та статистикою.",
"priority":"Керування пріоритетом тікету.",
"prioritySet":"Встановити пріоритет тікету.",
"priorityValue":"Пріоритет каналу.",
"priorityGet":"Отримати пріоритет тікету.",
"priorityList":"Отримати список усіх тікетів з їхнім пріоритетом.",
"transfer":"Передати власність тікету від одного користувача іншому.",
"transferUser":"Користувач, якому передати.",
"transcripts":"Переглянути історію транскриптів тікетів користувача.",
"transcriptsUser":"Користувач для перегляду."
},
"helpMenu":{
"help":"Отримайте список усіх доступних команд.",
@@ -452,7 +551,16 @@
"autocloseDisable":"Вимкніть автозакриття в цьому тікеті.",
"autocloseEnable":"Ввімкніть автозакриття в цьому тікеті.",
"autodeleteDisable":"Вимкніть автовидалення в цьому тікеті.",
"autodeleteEnable":"Ввімкніть автовидалення в цьому тікеті."
"autodeleteEnable":"Ввімкніть автовидалення в цьому тікеті.",
"categories":{
"general":"Загальні команди",
"basicTicket":"Базові команди тікету",
"advancedTicket":"Розширені команди тікету",
"userTicket":"Команди користувача тікету",
"admin":"Адмінські команди",
"advanced":"Розширені команди",
"extra":"Додаткові команди"
}
},
"stats":{
"scopes":{
@@ -460,7 +568,8 @@
"system":"Системна статистика",
"user":"Статистика учасника",
"ticket":"Статистика тікета",
"participants":"Учасники"
"participants":"Учасники",
"messages":"Повідомлення"
},
"properties":{
"ticketsCreated":"Тікетів створено",
@@ -472,7 +581,48 @@
"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":"Виберіть ваш варіант",
"selectPriorityLevel":"Виберіть рівень пріоритету"
},
"priorities":{
"urgent":"Терміново",
"veryHigh":"Дуже високий",
"high":"Високий",
"normal":"Звичайний",
"low":"Низький",
"veryLow":"Дуже низький",
"none":"Немає"
}
}
+182 -20
View File
@@ -1,8 +1,8 @@
{
"_TRANSLATION":{
"otversion":"v4.0.7",
"otversion":"v4.2.0",
"translators":["ngocdiep2006"],
"lastedited":"07/04/2025",
"lastedited":"25/05/2026",
"language":"Vietnamese",
"automated":true
},
@@ -31,6 +31,15 @@
"stringContains":"Chuỗi này cần chứa {0}!",
"stringChoices":"Chuỗi này chỉ có thể là một trong các giá trị sau: {0}!",
"stringRegex":"Chuỗi này không hợp lệ!",
"stringInvertedContains":"Chuỗi này không được phép chứa {0}!",
"stringLowercase":"Chuỗi này phải được viết hoàn toàn bằng chữ thường!",
"stringUppercase":"Chuỗi này phải được viết hoàn toàn bằng chữ hoa!",
"stringSpecialCharacters":"Chuỗi này không được phép chứa ký tự đặc biệt! (chỉ a-z, 0-9 và dấu cách)",
"stringNoSpaces":"Chuỗi này không được phép chứa dấu cách!",
"stringCapitalWord":"Khuyến nghị mỗi từ trong chuỗi này bắt đầu bằng chữ cái viết hoa!",
"stringCapitalSentence":"Có vẻ như một số câu trong chuỗi này không bắt đầu bằng chữ cái viết hoa!",
"stringPunctuation":"Có vẻ như câu trong chuỗi này không kết thúc bằng dấu câu!",
"numberTooShort":"Số này không thể ngắn hơn {0} ký tự!",
"numberTooLong":"Số này không thể dài hơn {0} ký tự!",
"numberLengthInvalid":"Số này cần dài {0} ký tự!",
@@ -47,8 +56,12 @@
"numberNegative":"Số này không thể là số âm!",
"numberPositive":"Số này không thể là số dương!",
"numberZero":"Số này không thể là số không!",
"numberNan":"Số này không thể là NaN (Không phải số)!",
"numberInvertedContains":"Số này không được phép chứa {0}!",
"booleanTrue":"Boolean này không thể là true!",
"booleanFalse":"Boolean này không thể là false!",
"arrayEmptyDisabled":"Mảng này không được phép rỗng!",
"arrayEmptyRequired":"Mảng này bắt buộc phải rỗng!",
"arrayTooShort":"Mảng này cần có độ dài ít nhất là {0}!",
@@ -56,6 +69,7 @@
"arrayLengthInvalid":"Mảng này cần có độ dài là {0}!",
"arrayInvalidTypes":"Mảng này chỉ có thể chứa các kiểu sau: {0}!",
"arrayDouble":"Mảng này không cho phép giá trị trùng lặp!",
"discordInvalidId":"Đây là id discord {0} không hợp lệ!",
"discordInvalidIdOptions":"Đây là id discord {0} không hợp lệ! Bạn cũng có thể sử dụng một trong những id sau: {1}!",
"discordInvalidToken":"Đây là token discord không hợp lệ (về mặt cú pháp)!",
@@ -72,6 +86,7 @@
"urlInvalidPath":"URL này có đường dẫn không hợp lệ!",
"idNotUnique":"ID này không duy nhất, hãy sử dụng ID khác!",
"idNonExistent":"ID {0} không tồn tại!",
"invalidType":"Thuộc tính này cần có kiểu: {0}!",
"propertyMissing":"Thuộc tính {0} bị thiếu trong đối tượng này!",
"propertyOptional":"Thuộc tính {0} là tùy chọn trong đối tượng này!",
@@ -79,11 +94,13 @@
"nullInvalid":"Thuộc tính này không thể là null!",
"switchInvalidType":"Điều này cần là một trong các kiểu sau: {0}!",
"objectSwitchInvalid":"Đối tượng này cần là một trong các kiểu sau: {0}!",
"invalidLanguage":"Đây là ngôn ngữ không hợp lệ!",
"invalidButton":"Nút này cần có ít nhất một {0} hoặc {1}!",
"unusedOption":"Tùy chọn {0} không được sử dụng ở bất kỳ đâu!",
"unusedQuestion":"Câu hỏi {0} không được sử dụng ở bất kỳ đâu!",
"dropdownOption": "Bảng điều khiển có bật dropdown chỉ có thể chứa các tùy chọn thuộc loại 'ticket'!"
"dropdownOption":"Một bảng có menu thả xuống chỉ có thể chứa các tùy chọn loại: 'ticket', 'role' hoặc 'sub-panel'.",
"customInvalidVersion":"Phiên bản được chỉ định trong cấu hình của bạn không khớp! Hãy đảm bảo bạn đã cập nhật cấu hình lên phiên bản mới nhất!"
}
},
"actions":{
@@ -101,7 +118,9 @@
"helpSwitchText":"Xem Lệnh Văn Bản",
"helpPage":"Trang {0}",
"withReason":"Có Lý Do",
"withoutTranscript": "Không Có Bản Ghi"
"withoutTranscript":"Không Có Bản Ghi",
"blacklistAdd":"Thêm người dùng vào danh sách đen",
"blacklistRemove":"Giải phóng người dùng"
},
"titles":{
"created":"Ticket Đã Tạo",
@@ -116,6 +135,7 @@
"move":"Ticket Đã Di Chuyển",
"add":"Người Dùng Đã Thêm Vào Ticket",
"remove":"Người Dùng Đã Xóa Khỏi Ticket",
"help":"Lệnh Có Sẵn",
"statsReset":"Đặt Lại Thống Kê",
"blacklistAdd":"Người Dùng Đã Bị Cấm",
@@ -125,13 +145,21 @@
"blacklistAddDm":"Đã Thêm Vào Danh Sách Cấm",
"blacklistRemoveDm":"Đã Xóa Khỏi Danh Sách Cấm",
"clear":"Tickets Đã Xóa",
"clearTickets":"Xóa vé",
"roles":"Vai Trò Đã Cập Nhật",
"autoclose":"Ticket Tự Động Đóng",
"autocloseEnabled":"Tự Động Đóng Đã Bật",
"autocloseDisabled":"Tự Động Đóng Đã Tắt",
"autodelete":"Ticket Tự Động Xóa",
"autodeleteEnabled":"Tự Động Xóa Đã Bật",
"autodeleteDisabled": "Tự Động Xóa Đã Tắt"
"autodeleteDisabled":"Tự Động Xóa Đã Tắt",
"topicSet":"Đã thay đổi chủ đề",
"prioritySet":"Đã thay đổi mức ưu tiên",
"priorityGet":"Mức ưu tiên của vé",
"transfer":"Đã chuyển vé",
"transcripts":"Lịch sử bản ghi"
},
"descriptions":{
"create":"Ticket của bạn đã được tạo. Nhấp vào nút bên dưới để truy cập!",
@@ -146,6 +174,7 @@
"move":"Ticket đã được di chuyển đến {0} thành công!",
"add":"{0} đã được thêm vào ticket thành công!",
"remove":"{0} đã được xóa khỏi ticket thành công!",
"helpExplanation":"`<name>` => tham số bắt buộc\n`[name]` => tham số tùy chọn",
"statsReset":"Thống kê bot đã được đặt lại thành công!",
"statsError":"Không thể xem thống kê ticket!\n{0} không phải là ticket!",
@@ -158,6 +187,7 @@
"clearVerify":"Bạn có chắc chắn muốn xóa nhiều ticket không?\nHành động này không thể hoàn tác!",
"clearReady":"{0} tickets đã được xóa thành công!",
"rolesEmpty":"Không có vai trò nào được cập nhật!",
"autocloseLeave":"Ticket này đã được tự động đóng vì người tạo đã rời khỏi máy chủ!",
"autocloseTimeout":"Ticket này đã được tự động đóng vì không hoạt động quá `{0}h`!",
"autodeleteLeave":"Ticket này đã được tự động xóa vì người tạo đã rời khỏi máy chủ!",
@@ -166,12 +196,17 @@
"autocloseDisabled":"Tự động đóng đã được tắt trong ticket này!\nNó sẽ không tự động đóng nữa!",
"autodeleteEnabled":"Tự động xóa đã được bật trong ticket này!\nNó sẽ được xóa khi không hoạt động quá `{0} ngày`!",
"autodeleteDisabled":"Tự động xóa đã được tắt trong ticket này!\nNó sẽ không tự động xóa nữa!",
"ticketMessageLimit":"Bạn chỉ có thể tạo {0} ticket cùng lúc!",
"ticketMessageAutoclose":"Ticket này sẽ được tự động đóng khi không hoạt động trong {0}h!",
"ticketMessageAutodelete":"Ticket này sẽ được tự động xóa khi không hoạt động trong {0} ngày!",
"panelReady": "Bạn có thể tìm thấy bảng điều khiển bên dưới!\nThông báo này có thể được xóa ngay bây giờ!"
}
,
"panelReady":"Bảng điều khiển có sẵn trong tin nhắn tiếp theo!\nTin nhắn này hiện có thể được xóa!",
"topicSet":"Chủ đề của kênh đã được {0} thay đổi thành công!",
"prioritySet":"Mức ưu tiên của vé đã được {1} thay đổi thành {0} thành công!",
"priorityGet":"Mức ưu tiên hiện tại của vé này là {0}.",
"transfer":"Quyền sở hữu vé đã được {2} chuyển từ {0} sang {1} thành công!"
},
"modal":{
"closePlaceholder":"Tại sao bạn đóng ticket này?",
"deletePlaceholder":"Tại sao bạn xóa ticket này?",
@@ -205,11 +240,21 @@
"addDm":"{0} đã được thêm vào ticket của bạn trong máy chủ của chúng tôi!",
"removeLog":"{0} đã được xóa khỏi ticket này bởi {1}!",
"removeDm":"{0} đã được xóa khỏi ticket của bạn trong máy chủ của chúng tôi!",
"blacklistAddLog":"{0} đã bị cấm bởi {1}!",
"blacklistRemoveLog":"{0} đã được gỡ khỏi danh sách cấm bởi {1}!",
"blacklistAddDm":"Bạn đã bị cấm trong máy chủ của chúng tôi!\nTừ bây giờ, bạn không thể tạo ticket!",
"blacklistRemoveDm":"Bạn đã được gỡ khỏi danh sách cấm trong máy chủ của chúng tôi!\nBây giờ bạn có thể tạo lại ticket!",
"clearLog": "{0} tickets đã được xóa bởi {1}!"
"clearLog":"{0} tickets đã được xóa bởi {1}!",
"transferLog":"Quyền sở hữu của vé này đã được {2} chuyển từ {0} sang {1}!",
"transferDm":"Quyền sở hữu vé của bạn đã được chuyển từ {0} sang {1} trong máy chủ của chúng tôi!",
"prioritySetLog":"Mức ưu tiên của vé này đã được {1} thay đổi thành {0}!",
"prioritySetDm":"Mức ưu tiên của vé của bạn đã được thay đổi thành {0} trong máy chủ của chúng tôi!",
"roleUpdateLog":"{0} đã cập nhật vai trò của họ!",
"roleUpdateDm":"Vai trò của bạn trong máy chủ của chúng tôi đã được cập nhật!",
"topicSetLog":"Ưu tiên của ticket này đã được đặt thành {0} bởi {1}.",
"topicSetDm":"Ưu tiên ticket của bạn đã được đặt thành {0}."
}
},
"transcripts":{
@@ -218,6 +263,7 @@
"ready":"Bản Ghi Đã Tạo",
"textFileDescription":"Đây là bản ghi văn bản của một ticket đã xóa!",
"htmlProgress":"Vui lòng đợi trong khi bản ghi html này đang được xử lý...",
"createdChannel":"Một bản ghi {0} mới đã được tạo trong máy chủ!",
"createdCreator":"Một bản ghi {0} mới đã được tạo cho một trong các ticket của bạn!",
"createdParticipant":"Một bản ghi {0} mới đã được tạo trong một trong các ticket bạn tham gia!",
@@ -229,7 +275,21 @@
"retry":"Thử Lại",
"continue":"Xóa Không Có Bản Ghi",
"backup":"Tạo Bản Ghi Dự Phòng",
"error": "Đã xảy ra lỗi khi cố gắng tạo bản ghi.\nBạn muốn làm gì?\n\nTicket này sẽ không bị xóa cho đến khi bạn nhấp vào một trong các nút này."
"error":"Đã xảy ra lỗi khi cố gắng tạo bản ghi.\nBạn muốn làm gì?\n\nTicket này sẽ không bị xóa cho đến khi bạn nhấp vào một trong các nút này.",
"title":"Lỗi bản ghi",
"noHistory":"Người dùng này chưa có bản ghi nào.",
"historyNotSupported":"Lịch sử bản ghi hiện chỉ được hỗ trợ với HTML Transcripts.\nLịch sử bản ghi văn bản sẽ có trong các phiên bản tương lai."
},
"text":{
"messagesTitle":"TIN NHẮN",
"embedTitle":"NHÚNG",
"fileTitle":"TỆP",
"fieldsTitle":"TRƯỜNG",
"reactionsTitle":"PHẢN ỨNG",
"statsTitle":"THỐNG KÊ",
"emptyContent":"<nội dung trống>",
"noTitle":"<không-tiêu-đề>",
"noDesc":"<không-mô-tả>"
}
},
"errors":{
@@ -245,7 +305,9 @@
"unknownPanel":"Bảng Điều Khiển Không Xác Định",
"notInGuild":"Không Ở Trong Máy Chủ",
"channelRename":"Không Thể Đổi Tên Kênh",
"busy": "Ticket Đang Bận"
"channelCategory":"Không thể thay đổi danh mục",
"busy":"Ticket Đang Bận",
"permissionError":"Lỗi quyền hạn"
},
"descriptions":{
"askForInfo":"Liên hệ với chủ sở hữu của bot này để biết thêm thông tin!",
@@ -267,8 +329,15 @@
"deprecatedTicket":"Kênh hiện tại không phải là ticket hợp lệ! Nó có thể là một ticket từ phiên bản Open Ticket cũ!",
"notInGuild":"{0} này không hoạt động trong DM! Vui lòng thử lại trong máy chủ!",
"channelRename":"Do giới hạn tốc độ của discord, hiện tại bot không thể đổi tên kênh. Kênh sẽ tự động được đổi tên trong 10 phút nếu bot không được khởi động lại.",
"channelCategory":"Do giới hạn tốc độ của Discord, danh mục kênh không thể thay đổi ngay lập tức. Nó sẽ tự động được thay đổi trong vòng 10 phút nếu bot vẫn trực tuyến.",
"channelRenameSource":"Nguồn gốc của lỗi này là: {0}",
"busy": "Không thể sử dụng {0} này!\nTicket hiện đang được bot xử lý.\n\nVui lòng thử lại sau vài giây!"
"busy":"Không thể sử dụng {0} này!\nTicket hiện đang được bot xử lý.\n\nVui lòng thử lại sau vài giây!",
"closeBeforeMessage":"Không thể đóng/xóa vé này trước khi người dùng gửi tin nhắn.",
"closeBeforeAdminMessage":"Không thể đóng/xóa vé này trước khi quản trị viên vé hoặc thành viên hỗ trợ gửi tin nhắn.",
"unableToCreateTicket":"Bạn không thể tạo vé.",
"messageMissing":"Không thể tìm thấy tin nhắn tương tác. Hãy sử dụng lệnh `{0}` thay thế.",
"stateExpired":"Tương tác này không còn hợp lệ hoặc đã hết hạn. Hãy sử dụng lệnh `{0}` thay thế. Điều này là bình thường sau bản cập nhật lớn của Open Ticket.",
"panelStateExpired":"Bảng này không còn hợp lệ hoặc đã hết hạn. Hãy tạo bảng mới bằng `{0}` để khắc phục sự cố. Điều này là bình thường sau bản cập nhật lớn của Open Ticket."
},
"optionInvalidReasons":{
"stringRegex":"Giá trị không khớp với mẫu!",
@@ -319,7 +388,6 @@
"added":"Đã Thêm",
"removed":"Đã Xóa",
"filter":"Bộ Lọc",
"claimedBy": "Được Nhận Bởi {0}",
"method":"Phương Pháp",
"type":"Loại",
"blacklisted":"Bị Cấm",
@@ -331,6 +399,8 @@
"syntax":"Cú Pháp",
"originalName":"Tên Gốc",
"newName":"Tên Mới",
"originalCategory":"Danh mục gốc",
"newCategory":"Danh mục mới",
"until":"Đến",
"validOptions":"Tùy Chọn Hợp Lệ",
"validPanels":"Bảng Điều Khiển Hợp Lệ",
@@ -340,10 +410,32 @@
"version":"Phiên Bản",
"name":"Tên",
"role":"Vai Trò",
"status": "Trạng Thái",
"status":"Trạng thái",
"claimed":"Đã Nhận",
"pinned":"Đã Ghim",
"creationDate": "Ngày Tạo"
"creationDate":"Ngày Tạo",
"noone":"Không ai",
"open":"Mở",
"closed":"Đã đóng",
"priority":"Ưu tiên",
"participants":"Người tham gia",
"yes":"Có",
"no":"Không",
"accept":"Chấp nhận",
"cancel":"Hủy",
"option":"Tùy chọn",
"topic":"Chủ đề",
"uptime":"Thời gian hoạt động hệ thống",
"messages":"Tin nhắn",
"embeds":"Nhúng",
"files":"Tệp",
"components":"Thành phần",
"cooldown":"Thời gian chờ",
"maxTickets":"Số vé tối đa",
"admins":"Quản trị viên",
"roles":"Vai trò",
"size":"Kích thước"
},
"lowercase":{
"text":"văn bản",
@@ -363,6 +455,7 @@
"panelAutoUpdate":"Bạn có muốn bảng điều khiển này tự động cập nhật khi được chỉnh sửa không?",
"ticket":"Tạo ticket ngay lập tức.",
"ticketId":"Mã định danh của ticket bạn muốn tạo.",
"ticketOtherUser":"Tạo ticket cho người dùng khác.",
"close":"Đóng ticket.",
"delete":"Xóa ticket.",
"deleteNoTranscript":"Xóa ticket này mà không tạo bản ghi.",
@@ -372,6 +465,7 @@
"unclaim":"Bỏ nhận ticket.",
"pin":"Ghim ticket.",
"unpin":"Bỏ ghim ticket.",
"move":"Di chuyển ticket.",
"moveId":"Mã định danh của tùy chọn bạn muốn di chuyển đến.",
"rename":"Đổi tên ticket.",
@@ -380,6 +474,7 @@
"addUser":"Người dùng cần thêm.",
"remove":"Xóa người dùng khỏi ticket.",
"removeUser":"Người dùng cần xóa.",
"blacklist":"Quản lý danh sách cấm ticket.",
"blacklistView":"Xem danh sách cấm hiện tại.",
"blacklistAdd":"Thêm người dùng vào danh sách cấm.",
@@ -393,6 +488,7 @@
"statsUserUser":"Người dùng cần xem.",
"statsTicket":"Xem thống kê của ticket trong máy chủ.",
"statsTicketTicket":"Ticket cần xem.",
"clear":"Xóa nhiều ticket cùng lúc.",
"clearFilter":"Bộ lọc để xóa ticket.",
"clearFilters":{
@@ -405,6 +501,7 @@
"unpin":"Chưa Ghim",
"autoclose":"Tự Động Đóng"
},
"autoclose":"Quản lý tự động đóng trong ticket.",
"autocloseDisable":"Tắt tự động đóng trong ticket này.",
"autocloseEnable":"Bật tự động đóng trong ticket này.",
@@ -412,7 +509,21 @@
"autodelete":"Quản lý tự động xóa trong ticket.",
"autodeleteDisable":"Tắt tự động xóa trong ticket này.",
"autodeleteEnable":"Bật tự động xóa trong ticket này.",
"autodeleteEnableTime": "Số ngày ticket này cần không hoạt động để xóa."
"autodeleteEnableTime":"Số ngày ticket này cần không hoạt động để xóa.",
"topic":"Quản lý chủ đề của kênh vé.",
"topicSet":"Đặt chủ đề cho kênh vé.",
"topicValue":"Chủ đề mới của kênh.",
"topicList":"Lấy danh sách tất cả vé cùng với chủ đề và thống kê.",
"priority":"Quản lý mức ưu tiên của vé.",
"prioritySet":"Đặt mức ưu tiên cho vé.",
"priorityValue":"Mức ưu tiên của kênh.",
"priorityGet":"Lấy mức ưu tiên của vé.",
"priorityList":"Lấy danh sách tất cả vé cùng với trạng thái ưu tiên.",
"transfer":"Chuyển quyền sở hữu vé từ người dùng này sang người dùng khác.",
"transferUser":"Người dùng để chuyển đến.",
"transcripts":"Xem lịch sử bản ghi ticket của người dùng.",
"transcriptsUser":"Người dùng cần xem."
},
"helpMenu":{
"help":"Nhận danh sách tất cả các lệnh có sẵn.",
@@ -440,7 +551,16 @@
"autocloseDisable":"Tắt tự động đóng trong ticket này.",
"autocloseEnable":"Bật tự động đóng trong ticket này.",
"autodeleteDisable":"Tắt tự động xóa trong ticket này.",
"autodeleteEnable": "Bật tự động xóa trong ticket này."
"autodeleteEnable":"Bật tự động xóa trong ticket này.",
"categories":{
"general":"Lệnh chung",
"basicTicket":"Lệnh vé cơ bản",
"advancedTicket":"Lệnh vé nâng cao",
"userTicket":"Lệnh vé người dùng",
"admin":"Lệnh quản trị",
"advanced":"Lệnh nâng cao",
"extra":"Lệnh bổ sung"
}
},
"stats":{
"scopes":{
@@ -448,7 +568,8 @@
"system":"Thống Kê Hệ Thống",
"user":"Thống Kê Người Dùng",
"ticket":"Thống Kê Ticket",
"participants": "Người Tham Gia"
"participants":"Người Tham Gia",
"messages":"Tin nhắn"
},
"properties":{
"ticketsCreated":"Tickets Đã Tạo",
@@ -460,7 +581,48 @@
"ticketsPinned":"Tickets Đã Ghim",
"ticketsMoved":"Tickets Đã Di Chuyển",
"usersBlacklisted":"Người Dùng Bị Cấm",
"transcriptsCreated": "Bản Ghi Đã Tạo"
}
"transcriptsCreated":"Bản Ghi Đã Tạo",
"ticketsAutodeleted":"Vé tự động xóa",
"ticketsTransferred":"Vé đã chuyển",
"ticketVolume":"Số lượng vé",
"averageTickets":"Trung bình vé/người dùng",
"currentTickets":"Vé hiện tại",
"age":"Tuổi vé",
"responseTime":"Thời gian phản hồi",
"resolutionTime":"Thời gian xử lý",
"createdOn":"Ngày tạo",
"createdBy":"Tạo bởi",
"closedOn":"Ngày đóng",
"closedBy":"Đóng bởi",
"claimedOn":"Ngày nhận",
"claimedBy":"Nhận bởi",
"pinnedOn":"Ngày ghim",
"pinnedBy":"Ghim bởi",
"deletedOn":"Ngày xóa",
"deletedBy":"Xóa bởi"
},
"roles":{
"developer":"Nhà phát triển",
"serverOwner":"Chủ máy chủ",
"serverAdmin":"Quản trị máy chủ",
"moderator":"Nhóm kiểm duyệt",
"support":"Nhóm hỗ trợ",
"member":"Thành viên"
}
},
"panel":{
"selectTicket":"Chọn vé của bạn",
"selectRole":"Chọn vai trò của bạn",
"selectOption":"Chọn tùy chọn của bạn",
"selectPriorityLevel":"Chọn mức độ ưu tiên"
},
"priorities":{
"urgent":"Khẩn cấp",
"veryHigh":"Rất cao",
"high":"Cao",
"normal":"Bình thường",
"low":"Thấp",
"veryLow":"Rất thấp",
"none":"Không có"
}
}
+19 -11
View File
@@ -1,7 +1,7 @@
{
"name": "open-ticket",
"author": "DJdj Development",
"version": "4.0.7",
"version": "4.2.0",
"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",
@@ -14,20 +14,28 @@
"scripts": {
"build": "node index.js --compile-only",
"start": "node index.js",
"setup": "node index.js --cli",
"startnc": "node index.js --no-compile",
"test": "node index.js --dev-config --dev-database",
"testnc": "node index.js --no-compile --dev-config --dev-database",
"docs": "npx typedoc --options .docs/typedoc-config.json && node .docs/createDocs.js"
"test": "node index.js --dev-config --dev-database --soft-plugins",
"testsetup": "node index.js --cli --dev-config --dev-database --soft-plugins",
"testnc": "node index.js --no-compile --dev-config --dev-database --soft-plugins",
"tools:mergelang": "bun run .tools/mergeTranslations.js",
"tools:sponsors": "bun run .tools/createSponsors.ts",
"tools:contributors": "bun run .tools/createContributors.ts",
"docker:build": ".tools/build-docker.sh djj123dj/open-ticket --no-push"
},
"type": "commonjs",
"type": "module",
"license": "GPL-3.0-only",
"dependencies": {
"@discordjs/rest": "^2.4.2",
"@discordjs/rest": "^2.6.1",
"@open-discord-bots/framework": "^1.0.0",
"@types/node": "^22.5.0",
"ansis": "^2.3.0",
"discord.js": "^14.19.3",
"formatted-json-stringify": "^1.1.0",
"typescript": "^5.5.4"
"@types/terminal-kit": "^2.5.7",
"ansis": "^4.2.0",
"discord.js": "^14.26.4",
"formatted-json-stringify": "^1.3.2",
"terminal-kit": "^3.1.2",
"typescript": "^6.0.3"
},
"repository": {
"type": "git",
@@ -40,7 +48,7 @@
"homepage": "https://openticket.dj-dj.be",
"imports": {
"#opendiscord": "./dist/src/index.js",
"#opendiscord-types": "./dist/src/core/api/api.js"
"#opendiscord-types": "./dist/src/core/api.js"
},
"funding": {
"type": "individual",
+5 -5
View File
@@ -6,15 +6,15 @@ import * as discord from "discord.js"
//// Enable it in the plugin.json file! ////
/////////////////////////////////////////////
if (utilities.project != "openticket") throw new api.ODPluginError("This plugin only works in Open Ticket!")
if (opendiscord.project != "openticket") throw new api.ODPluginError("This plugin only works in Open Ticket!")
//Add Typescript autocomplete support for plugin data. (!!!OPTIONAL!!!)
declare module "#opendiscord-types" {
export interface ODPluginManagerIds_Default {
export interface ODPluginManagerIdMappings {
"example-plugin":api.ODPlugin
}
export interface ODConfigManagerIds_Default {
"example-plugin:config":api.ODJsonConfig
export interface ODConfigManagerIdMappings {
"example-plugin:config":api.ODJsonConfig<{testVariable1:boolean,testVariable2:number,testVariable3:string}>
}
}
@@ -30,7 +30,7 @@ opendiscord.events.get("onConfigLoad").listen((configManager) => {
//Let's also log it to the console to let us know it worked!
const ourConfig = configManager.get("example-plugin:config")
opendiscord.log("The example config loaded successfully!","plugin",[
{key:"var-1",value:ourConfig.data.testVariable1},
{key:"var-1",value:ourConfig.data.testVariable1.toString()},
{key:"var-2",value:ourConfig.data.testVariable2.toString()},
{key:"var-3",value:ourConfig.data.testVariable3.toString()}
])
+2
View File
@@ -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":"",
+15 -25
View File
@@ -1,15 +1,15 @@
///////////////////////////////////////
//TICKET ADD USER SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:add-ticket-user"))
opendiscord.actions.get("opendiscord:add-ticket-user").workers.add([
new api.ODWorker("opendiscord:add-ticket-user",2,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:add-ticket-user",2,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason,data} = params
if (channel.isThread()) throw new api.ODSystemError("Unable to add user to ticket! Open Ticket doesn't support threads!")
@@ -34,41 +34,31 @@ export const registerActions = async () => {
opendiscord.log("Failed to add channel permission overwrites on add-ticket-user","error")
}
//update ticket message
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
if (ticketMessage){
try{
ticketMessage.edit((await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket})).message)
}catch(e){
opendiscord.log("Unable to edit ticket message on ticket user adding!","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"messageid",value:ticketMessage.id},
{key:"option",value:ticket.option.id.value,hidden:true}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
}
//update ticket message (no await)
openticketUtils.updateTicketMessage(guild,channel,user,ticket)
//reply with new message
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:add-message").build(source,{guild,channel,user,ticket,reason,data})).message)
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:add-message").build(origin,{guild,channel,user,ticket,reason,data})).message)
ticket.get("opendiscord:busy").value = false
await opendiscord.events.get("afterTicketUserAdded").emit([ticket,user,data,channel,reason])
//update channel topic
await opendiscord.actions.get("opendiscord:update-ticket-topic").run("ticket-action",{guild,channel,user,ticket,sendMessage:false,newTopic:null})
}),
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason,data} = params
//to logs
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.adding.logs){
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.adding.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"add",reason,additionalData:data}))
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,ticket,mode:"add",reason,additionalData:data}))
}
//to dm
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
if (creator && generalConfig.data.system.messages.adding.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"add",reason,additionalData:data}))
if (creator && generalConfig.data.logs.logMessages.adding.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,ticket,mode:"add",reason,additionalData:data}))
}),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,channel,user,ticket,data} = params
opendiscord.log(user.displayName+" added "+data.displayName+" to a ticket!","info",[
@@ -77,7 +67,7 @@ export const registerActions = async () => {
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"reason",value:params.reason ?? "/"},
{key:"method",value:source}
{key:"method",value:origin}
])
})
])
+129
View File
@@ -0,0 +1,129 @@
///////////////////////////////////////
//CALCULATE TICKET CATEGORY SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:calculate-ticket-category"))
opendiscord.actions.get("opendiscord:calculate-ticket-category").workers.add([
new api.ODWorker("opendiscord:default-category",2,async (instance,params,origin,cancel) => {
//handle default category
const {guild,user,channel,option,ticket,currentCategoryId} = params
const defaultCategoryId = option.get("opendiscord:channel-category").value
if (!defaultCategoryId){
//default category is disabled
instance.newCategoryId = null
instance.newCategoryMode = null
instance.newCategory = null
instance.shouldChangeCategory = (instance.newCategoryId !== currentCategoryId)
}else{
const defaultCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,defaultCategoryId)
if (defaultCategory){
//default category is enabled
instance.newCategoryId = defaultCategoryId
instance.newCategoryMode = "default"
instance.newCategory = defaultCategory
instance.shouldChangeCategory = (instance.newCategoryId !== currentCategoryId)
}else{
//default category is not found (do not switch categories)
opendiscord.log("Unable to find ticket category '"+defaultCategoryId+"' #1","error",[
{key:"categoryid",value:defaultCategoryId},
{key:"type",value:"default"}
])
instance.newCategoryId = null
instance.newCategoryMode = null
instance.newCategory = null
instance.shouldChangeCategory = false
}
}
}),
new api.ODWorker("opendiscord:close-category",1,async (instance,params,origin,cancel) => {
//handle close category
const {guild,user,channel,option,ticket,currentCategoryId} = params
if (!ticket) return
if (!ticket.get("opendiscord:closed").value) return
if (!generalConfig.data.ticketSystem.closedCategory.enabled) return
const closeCategoryId = generalConfig.data.ticketSystem.closedCategory.categoryId
if (!closeCategoryId) return
const closeCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,closeCategoryId)
if (closeCategory){
//close category is enabled
instance.newCategoryId = closeCategoryId
instance.newCategoryMode = "close"
instance.newCategory = closeCategory
instance.shouldChangeCategory = (instance.newCategoryId !== currentCategoryId)
}else{
//close category is not found (do not switch categories)
opendiscord.log("Unable to find ticket category '"+closeCategoryId+"' #2","error",[
{key:"categoryid",value:closeCategoryId},
{key:"type",value:"close"}
])
instance.newCategoryId = null
instance.newCategoryMode = null
instance.newCategory = null
instance.shouldChangeCategory = false
}
}),
new api.ODWorker("opendiscord:claim-category",0,async (instance,params,origin,cancel) => {
//handle claim category
const {guild,user,channel,option,ticket,currentCategoryId} = params
if (!ticket) return
if (!ticket.get("opendiscord:claimed").value) return
const claimedCategoryIds = generalConfig.data.ticketSystem.claimedCategories
const claimCategoryId = claimedCategoryIds.find((c) => c.user == user.id)?.category
if (!claimCategoryId) return
const claimCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,claimCategoryId)
if (claimCategory){
//claim category is enabled
instance.newCategoryId = claimCategoryId
instance.newCategoryMode = "claim"
instance.newCategory = claimCategory
instance.shouldChangeCategory = (instance.newCategoryId !== currentCategoryId)
}else{
//claim category is not found (do not switch categories)
opendiscord.log("Unable to find ticket category '"+claimCategoryId+"' #3","error",[
{key:"categoryid",value:claimCategoryId},
{key:"type",value:"claim"}
])
instance.newCategoryId = null
instance.newCategoryMode = null
instance.newCategory = null
instance.shouldChangeCategory = false
}
}),
new api.ODWorker("opendiscord:backup-category",-100,async (instance,params,origin,cancel) => {
//handle backup category
const {guild,user,channel,option,ticket,currentCategoryId} = params
if (!instance.newCategory || !instance.newCategoryId || !instance.shouldChangeCategory) return
if (instance.newCategory.children.cache.size < 50) return
if (!generalConfig.data.ticketSystem.backupCategory.enabled) return
const backupCategoryId = generalConfig.data.ticketSystem.backupCategory.categoryId
if (!backupCategoryId) return
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,backupCategoryId)
if (backupCategory){
//backup category is enabled
instance.newCategoryId = backupCategoryId
instance.newCategoryMode = "backup"
instance.newCategory = backupCategory
instance.shouldChangeCategory = (instance.newCategoryId !== currentCategoryId)
}else{
//backup category is not found (do not switch categories)
opendiscord.log("Unable to find ticket category '"+backupCategoryId+"' #4","error",[
{key:"categoryid",value:backupCategoryId},
{key:"type",value:"backup"}
])
instance.newCategoryId = null
instance.newCategoryMode = null
instance.newCategory = null
instance.shouldChangeCategory = false
}
})
])
}
+31
View File
@@ -0,0 +1,31 @@
///////////////////////////////////////
//CALCULATE TICKET NAME SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:calculate-ticket-name"))
opendiscord.actions.get("opendiscord:calculate-ticket-name").workers.add([
new api.ODWorker("opendiscord:calculate-ticket-name",0,async (instance,params,origin,cancel) => {
const {guild,user,channel,option,ticket,currentChannelName} = params
//calculate base channel name
const channelPrefix = option.get("opendiscord:channel-prefix").value
const channelSuffix = (ticket) ? ticket.get("opendiscord:channel-suffix").value : (await opendiscord.options.suffix.getSuffixFromOption(option,user,guild) ?? "unknown")
const channelRenamed = (ticket && ticket.exists("opendiscord:channel-renamed")) ? ticket.get("opendiscord:channel-renamed").value : null
const baseChannelName = (channelRenamed) ? channelRenamed : channelPrefix+channelSuffix
//calculate status emojis
const pinEmoji = (ticket && ticket.get("opendiscord:pinned").value) ? generalConfig.data.ticketSystem.pinEmoji : ""
const closeEmoji = (ticket && ticket.get("opendiscord:closed").value) ? generalConfig.data.ticketSystem.closeEmoji : ""
const priorityEmoji = (ticket) ? (opendiscord.priorities.getFromPriorityLevel(ticket.get("opendiscord:priority").value).channelEmoji ?? "") : ""
instance.newChannelName = pinEmoji+closeEmoji+priorityEmoji+baseChannelName
instance.newChannelSuffix = channelSuffix
instance.shouldChangeName = (instance.newChannelName !== currentChannelName)
})
])
}
+41 -218
View File
@@ -1,15 +1,16 @@
///////////////////////////////////////
//TICKET CLAIMING SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
const interactiveMsgState = opendiscord.states.get("opendiscord:interactive-message")
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:claim-ticket"))
opendiscord.actions.get("opendiscord:claim-ticket").workers.add([
new api.ODWorker("opendiscord:claim-ticket",2,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:claim-ticket",2,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason} = params
if (channel.isThread()) throw new api.ODSystemError("Unable to claim ticket! Open Ticket doesn't support threads!")
@@ -22,64 +23,66 @@ export const registerActions = async () => {
ticket.get("opendiscord:busy").value = true
//update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-claimed",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-claimed",user.id,1,"increase")
await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-claimed",1,"increase")
await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-claimed",user.id,1,"increase")
//update category
//calculate & update category
if (typeof params.allowCategoryChange == "boolean" ? params.allowCategoryChange : true){
const rawClaimCategory = ticket.option.get("opendiscord:channel-categories-claimed").value.find((c) => c.user == user.id)
const claimCategory = (rawClaimCategory) ? rawClaimCategory.category : null
if (claimCategory){
const categoryResult = await opendiscord.actions.get("opendiscord:calculate-ticket-category").run("claim-ticket",{guild,user,option:ticket.option,channel,ticket,currentCategoryId:channel.parentId})
if (categoryResult && categoryResult.shouldChangeCategory && typeof categoryResult.newCategoryId !== "undefined" && typeof categoryResult.newCategoryMode !== "undefined" && typeof categoryResult.newCategory !== "undefined"){
const originalCategoryName = channel.parent?.name ?? "<unknown>"
const newCategoryName = categoryResult.newCategory?.name ?? "<unknown>"
try{
channel.setParent(claimCategory,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = "claimed"
ticket.get("opendiscord:category").value = claimCategory
}catch(e){
opendiscord.log("Unable to move ticket to 'claimed category'!","error",[
await utilities.timedAwait(channel.setParent(categoryResult.newCategoryId,{lockPermissions:false}),3000,(err) => {
process.emit("uncaughtException",new Error("Error: Unable to change channel parent: "+err))
})
ticket.get("opendiscord:category-mode").value = categoryResult.newCategoryMode
ticket.get("opendiscord:category").value = categoryResult.newCategoryId
}catch(err){
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-category").build("ticket-claim",{guild,channel,user,originalCategory:originalCategoryName,newCategory:newCategoryName})).message)
setTimeout(() => {if (sentMsg.deletable) sentMsg.delete()},7000) //autodelete error message
opendiscord.log("Unable to move ticket to claimed category.","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"categoryid",value:claimCategory}
{key:"categoryid",value:categoryResult.newCategoryId ?? "/"}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
}
}
//update ticket message
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
if (ticketMessage){
try{
ticketMessage.edit((await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket})).message)
}catch(e){
opendiscord.log("Unable to edit ticket message on ticket claiming!","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"messageid",value:ticketMessage.id},
{key:"option",value:ticket.option.id.value}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
}
//update ticket message (no await)
openticketUtils.updateTicketMessage(guild,channel,user,ticket)
//reply with new message
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:claim-message").build(source,{guild,channel,user,ticket,reason})).message)
if (params.sendMessage){
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:claim-message").build(origin,{guild,channel,user,ticket,reason})).message)
if (sentMsg) await interactiveMsgState.setMsgState({channel,message:sentMsg},{
messageType:"claim-message",
messageOrigin:"other",
messageAuthor:user.id,
messageReason:reason
},false)
}
ticket.get("opendiscord:busy").value = false
await opendiscord.events.get("afterTicketClaimed").emit([ticket,user,channel,reason])
//update channel topic
await opendiscord.actions.get("opendiscord:update-ticket-topic").run("ticket-action",{guild,channel,user,ticket,sendMessage:false,newTopic:null})
}),
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason} = params
//to logs
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.claiming.logs){
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.claiming.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"claim",reason,additionalData:null}))
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,ticket,mode:"claim",reason,additionalData:null}))
}
//to dm
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
if (creator && generalConfig.data.system.messages.claiming.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"claim",reason,additionalData:null}))
if (creator && generalConfig.data.logs.logMessages.claiming.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,ticket,mode:"claim",reason,additionalData:null}))
}),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,channel,user,ticket} = params
opendiscord.log(user.displayName+" claimed a ticket!","info",[
@@ -88,7 +91,7 @@ export const registerActions = async () => {
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"reason",value:params.reason ?? "/"},
{key:"method",value:source}
{key:"method",value:origin}
])
})
])
@@ -97,183 +100,3 @@ export const registerActions = async () => {
params.ticket.get("opendiscord:busy").value = false
})
}
export const registerVerifyBars = async () => {
//CLAIM TICKET TICKET MESSAGE
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:claim-ticket-ticket-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
opendiscord.verifybars.get("opendiscord:claim-ticket-ticket-message").success.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("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:claim-ticket",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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}))
return cancel()
}
//start claiming ticket
if (params.data == "reason"){
//claim with reason
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:claim-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
}else{
//claim without reason
await instance.defer("update",false)
await opendiscord.actions.get("opendiscord:claim-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket}))
}
})
])
opendiscord.verifybars.get("opendiscord:claim-ticket-ticket-message").failure.add([
new api.ODWorker("opendiscord:back-to-ticket-message",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket}))
})
])
//CLAIM TICKET UNCLAIM MESSAGE
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:claim-ticket-unclaim-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-unclaim-message"),!generalConfig.data.system.disableVerifyBars))
opendiscord.verifybars.get("opendiscord:claim-ticket-unclaim-message").success.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("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:claim-ticket",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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}))
return cancel()
}
//start claiming ticket
if (params.data == "reason"){
//claim with reason
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:claim-ticket-reason").build("unclaim-message",{guild,channel,user,ticket}))
}else{
//claim without reason
await instance.defer("update",false)
await opendiscord.actions.get("opendiscord:claim-ticket").run("unclaim-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:claim-message").build("unclaim-message",{guild,channel,user,ticket,reason:null}))
}
})
])
opendiscord.verifybars.get("opendiscord:claim-ticket-unclaim-message").failure.add([
new api.ODWorker("opendiscord:back-to-unclaim-message",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
const {verifybarMessage} = params
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:unclaim-message").build("other",{guild,channel,user,ticket,reason}))
})
])
}
+8 -8
View File
@@ -1,15 +1,15 @@
///////////////////////////////////////
//CLEAR TICKETS SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:clear-tickets"))
opendiscord.actions.get("opendiscord:clear-tickets").workers.add([
new api.ODWorker("opendiscord:clear-tickets",2,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:clear-tickets",2,async (instance,params,origin,cancel) => {
const {guild,channel,user,filter,list} = params
await opendiscord.events.get("onTicketsClear").emit([list,user,channel,filter])
@@ -43,21 +43,21 @@ export const registerActions = async () => {
instance.list = nameList
await opendiscord.events.get("afterTicketsCleared").emit([list,user,channel,filter])
}),
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => {
const {guild,channel,user,filter,list} = params
//to logs
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.deleting.logs){
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.deleting.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:clear-logs").build(source,{guild,channel,user,filter,list:instance.list ?? []}))
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:clear-logs").build(origin,{guild,channel,user,filter,list:instance.list ?? []}))
}
}),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,user,filter,list} = params
opendiscord.log(user.displayName+" cleared "+list.length+" tickets!","info",[
{key:"user",value:user.username},
{key:"userid",value:user.id,hidden:true},
{key:"method",value:source},
{key:"method",value:origin},
{key:"filter",value:filter}
])
})
+69 -220
View File
@@ -1,15 +1,17 @@
///////////////////////////////////////
//TICKET CLOSING SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
const lang = opendiscord.languages
const interactiveMsgState = opendiscord.states.get("opendiscord:interactive-message")
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:close-ticket"))
opendiscord.actions.get("opendiscord:close-ticket").workers.add([
new api.ODWorker("opendiscord:close-ticket",2,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:close-ticket",2,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason} = params
if (channel.isThread()) throw new api.ODSystemError("Unable to close ticket! Open Ticket doesn't support threads!")
@@ -17,35 +19,64 @@ export const registerActions = async () => {
//update ticket
ticket.get("opendiscord:closed").value = true
if (source == "autoclose") ticket.get("opendiscord:autoclosed").value = true
ticket.get("opendiscord:open").value = false
ticket.get("opendiscord:closed-by").value = user.id
ticket.get("opendiscord:closed-on").value = new Date().getTime()
ticket.get("opendiscord:reopened").value = false
ticket.get("opendiscord:reopened-by").value = null
ticket.get("opendiscord:reopened-on").value = null
if (origin == "autoclose") ticket.get("opendiscord:autoclosed").value = true
ticket.get("opendiscord:open").value = false
ticket.get("opendiscord:busy").value = true
//update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-closed",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-closed",user.id,1,"increase")
await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-closed",1,"increase")
await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-closed",user.id,1,"increase")
//update category
//calculate & update category
if (typeof params.allowCategoryChange == "boolean" ? params.allowCategoryChange : true){
const closeCategory = ticket.option.get("opendiscord:channel-category-closed").value
if (closeCategory !== ""){
const categoryResult = await opendiscord.actions.get("opendiscord:calculate-ticket-category").run("close-ticket",{guild,user,option:ticket.option,channel,ticket,currentCategoryId:channel.parentId})
if (categoryResult && categoryResult.shouldChangeCategory && typeof categoryResult.newCategoryId !== "undefined" && typeof categoryResult.newCategoryMode !== "undefined" && typeof categoryResult.newCategory !== "undefined"){
const originalCategoryName = channel.parent?.name ?? "<unknown>"
const newCategoryName = categoryResult.newCategory?.name ?? "<unknown>"
try{
channel.setParent(closeCategory,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = "closed"
ticket.get("opendiscord:category").value = closeCategory
}catch(e){
opendiscord.log("Unable to move ticket to 'closed category'!","error",[
await utilities.timedAwait(channel.setParent(categoryResult.newCategoryId,{lockPermissions:false}),3000,(err) => {
process.emit("uncaughtException",new Error("Error: Unable to change channel parent: "+err))
})
ticket.get("opendiscord:category-mode").value = categoryResult.newCategoryMode
ticket.get("opendiscord:category").value = categoryResult.newCategoryId
}catch(err){
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-category").build("ticket-close",{guild,channel,user,originalCategory:originalCategoryName,newCategory:newCategoryName})).message)
setTimeout(() => {if (sentMsg.deletable) sentMsg.delete()},7000) //autodelete error message
opendiscord.log("Unable to move ticket to closed category.","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"categoryid",value:closeCategory}
{key:"categoryid",value:categoryResult.newCategoryId ?? "/"}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
}
}
//calculate channel name
const channelNameResult = await opendiscord.actions.get("opendiscord:calculate-ticket-name").run("close-ticket",{guild,user,option:ticket.option,channel,ticket,currentChannelName:channel.name})
if (channelNameResult && channelNameResult.shouldChangeName && typeof channelNameResult.newChannelName !== "undefined"){
const originalName = channel.name
const newName = channelNameResult.newChannelName
try{
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
opendiscord.log("Failed to rename channel on ticket close","error")
})
}catch(err){
opendiscord.log("Unable to rename channel while closing ticket! Waiting until ratelimit expires...","warning",[
{key:"oldName",value:originalName},
{key:"newName",value:newName}
])
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-rename").build("ticket-close",{guild,channel,user,originalName,newName})).message)
setTimeout(() => {if (sentMsg.deletable) sentMsg.delete()},7000) //autodelete error message
}
}
//update permissions (non-staff => readonly)
const permissions: discord.OverwriteResolvable[] = [{
type:discord.OverwriteType.Role,
@@ -87,7 +118,7 @@ export const registerActions = async () => {
ticket.get("opendiscord:participants").value.forEach((participant) => {
//all participants that aren't roles/admins => readonly (OR non-viewable when enabled)
if (participant.type == "user"){
if (generalConfig.data.system.removeParticipantsOnClose) permissions.push({
if (generalConfig.data.ticketSystem.removeParticipantsOnClose) permissions.push({
type:discord.OverwriteType.Member,
id:participant.id,
allow:[],
@@ -103,41 +134,39 @@ export const registerActions = async () => {
})
channel.permissionOverwrites.set(permissions)
//update ticket message
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
if (ticketMessage){
try{
ticketMessage.edit((await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket})).message)
}catch(e){
opendiscord.log("Unable to edit ticket message on ticket closing!","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"messageid",value:ticketMessage.id},
{key:"option",value:ticket.option.id.value}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
}
//update ticket message (no await)
openticketUtils.updateTicketMessage(guild,channel,user,ticket)
//reply with new message
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:close-message").build(source,{guild,channel,user,ticket,reason})).message)
if (params.sendMessage){
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:close-message").build(origin,{guild,channel,user,ticket,reason})).message)
if (sentMsg) await interactiveMsgState.setMsgState({channel,message:sentMsg},{
messageType:"close-message",
messageOrigin:"other",
messageAuthor:user.id,
messageReason:reason
},false)
}
ticket.get("opendiscord:busy").value = false
await opendiscord.events.get("afterTicketClosed").emit([ticket,user,channel,reason])
//update channel topic
await opendiscord.actions.get("opendiscord:update-ticket-topic").run("ticket-action",{guild,channel,user,ticket,sendMessage:false,newTopic:null})
}),
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason} = params
//to logs
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.closing.logs){
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.closing.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"close",reason,additionalData:null}))
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,ticket,mode:"close",reason,additionalData:null}))
}
//to dm
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
if (creator && generalConfig.data.system.messages.closing.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"close",reason,additionalData:null}))
if (creator && generalConfig.data.logs.logMessages.closing.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,ticket,mode:"close",reason,additionalData:null}))
}),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,channel,user,ticket} = params
opendiscord.log(user.displayName+" closed a ticket!","info",[
@@ -146,7 +175,7 @@ export const registerActions = async () => {
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"reason",value:params.reason ?? "/"},
{key:"method",value:source}
{key:"method",value:origin}
])
})
])
@@ -155,183 +184,3 @@ export const registerActions = async () => {
params.ticket.get("opendiscord:busy").value = false
})
}
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
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
//start closing ticket
if (params.data == "reason"){
//close with reason
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:close-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
}else{
//close without reason
await instance.defer("update",false)
await opendiscord.actions.get("opendiscord:close-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket}))
}
})
])
opendiscord.verifybars.get("opendiscord:close-ticket-ticket-message").failure.add([
new api.ODWorker("opendiscord:back-to-ticket-message",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket}))
})
])
//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
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
//start closing ticket
if (params.data == "reason"){
//close with reason
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:close-ticket-reason").build("reopen-message",{guild,channel,user,ticket}))
}else{
//close without reason
await instance.defer("update",false)
await opendiscord.actions.get("opendiscord:close-ticket").run("reopen-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:close-message").build("reopen-message",{guild,channel,user,ticket,reason:null}))
}
})
])
opendiscord.verifybars.get("opendiscord:close-ticket-reopen-message").failure.add([
new api.ODWorker("opendiscord:back-to-reopen-message",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
const {verifybarMessage} = params
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:reopen-message").build("other",{guild,channel,user,ticket,reason}))
})
])
}
+86 -76
View File
@@ -1,62 +1,36 @@
///////////////////////////////////////
//TICKET CREATION SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
const lang = opendiscord.languages
const interactiveMsgState = opendiscord.states.get("opendiscord:interactive-message")
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:create-ticket"))
opendiscord.actions.get("opendiscord:create-ticket").workers.add([
new api.ODWorker("opendiscord:create-ticket",3,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:create-ticket",3,async (instance,params,origin,cancel) => {
const {guild,user,answers,option} = params
await opendiscord.events.get("onTicketCreate").emit([user])
await opendiscord.events.get("onTicketChannelCreation").emit([option,user])
//get channel properties
const channelPrefix = option.get("opendiscord:channel-prefix").value
const channelCategory = option.get("opendiscord:channel-category").value
const channelBackupCategory = option.get("opendiscord:channel-category-backup").value
const channelDescription = option.get("opendiscord:channel-description").value
const channelSuffix = await opendiscord.options.suffix.getSuffixFromOption(option,user)
const channelName = channelPrefix+channelSuffix
const channelTopicText = option.get("opendiscord:channel-topic").value
//handle category
let category: string|null = null
let categoryMode: "backup"|"normal"|null = null
if (channelCategory != ""){
//category enabled
const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory)
if (!normalCategory){
//default category was not found
opendiscord.log("Ticket Creation Error: Unable to find category! #1","error",[
{key:"categoryid",value:channelCategory},
{key:"backup",value:"false"}
])
}else{
//default category was found
if (normalCategory.children.cache.size >= 50 && channelBackupCategory != ""){
//use backup category
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
if (!backupCategory){
//default category was not found
opendiscord.log("Ticket Creation Error: Unable to find category! #2","error",[
{key:"categoryid",value:channelBackupCategory},
{key:"backup",value:"true"}
])
}else{
category = backupCategory.id
categoryMode = "backup"
}
}else{
//use default category
category = normalCategory.id
categoryMode = "normal"
}
}
}
//calculate channel name
const channelNameResult = await opendiscord.actions.get("opendiscord:calculate-ticket-name").run("create-ticket",{guild,user,option,channel:null,ticket:null,currentChannelName:null})
if (!channelNameResult) return opendiscord.log("Ticket Creation Error: Unable to calculate ticket name.","error")
const channelName = (channelNameResult.shouldChangeName && typeof channelNameResult.newChannelName !== "undefined") ? channelNameResult.newChannelName : "ot-unnamed-ticket"
const channelSuffix = (typeof channelNameResult.newChannelSuffix !== "undefined") ? channelNameResult.newChannelSuffix : "unknown"
//calculate category
const categoryResult = await opendiscord.actions.get("opendiscord:calculate-ticket-category").run("create-ticket",{guild,user,option,channel:null,ticket:null,currentCategoryId:null})
if (!categoryResult) return opendiscord.log("Ticket Creation Error: Unable to calculate ticket category.","error")
const ticketCategoryId = (categoryResult.shouldChangeCategory && typeof categoryResult.newCategoryId !== "undefined") ? categoryResult.newCategoryId : undefined
const ticketCategoryMode = (categoryResult.shouldChangeCategory && typeof categoryResult.newCategoryMode !== "undefined") ? categoryResult.newCategoryMode : undefined
//handle permissions
const permissions: discord.OverwriteResolvable[] = [{
@@ -73,7 +47,7 @@ export const registerActions = async () => {
permissions.push({
type:discord.OverwriteType.Role,
id:admin,
allow:["ViewChannel","SendMessages","AddReactions","AttachFiles","SendPolls","ReadMessageHistory","ManageMessages"],
allow:["ViewChannel","SendMessages","AddReactions","AttachFiles","SendPolls","ReadMessageHistory","ManageMessages","PinMessages","EmbedLinks"],
deny:[]
})
})
@@ -82,7 +56,7 @@ export const registerActions = async () => {
permissions.push({
type:discord.OverwriteType.Role,
id:admin,
allow:["ViewChannel","SendMessages","AddReactions","AttachFiles","SendPolls","ReadMessageHistory","ManageMessages"],
allow:["ViewChannel","SendMessages","AddReactions","AttachFiles","SendPolls","ReadMessageHistory","ManageMessages","PinMessages","EmbedLinks"],
deny:[]
})
})
@@ -93,29 +67,16 @@ export const registerActions = async () => {
type:discord.OverwriteType.Role,
id:admin,
allow:["ViewChannel","ReadMessageHistory"],
deny:["SendMessages","AddReactions","AttachFiles","SendPolls"]
deny:["SendMessages","AddReactions","AttachFiles","SendPolls","PinMessages"]
})
})
permissions.push({
type:discord.OverwriteType.Member,
id:user.id,
allow:["ViewChannel","SendMessages","AddReactions","AttachFiles","SendPolls","ReadMessageHistory"],
allow:["ViewChannel","SendMessages","AddReactions","AttachFiles","SendPolls","ReadMessageHistory","EmbedLinks","PinMessages"],
deny:[]
})
//create channel
const channel = await guild.channels.create({
type:discord.ChannelType.GuildText,
name:channelName,
nsfw:false,
topic:channelDescription,
parent:category,
reason:"Ticket Created By "+user.displayName,
permissionOverwrites:permissions
})
await opendiscord.events.get("afterTicketChannelCreated").emit([option,channel,user])
//create participants
const participants: {type:"role"|"user",id:string}[] = []
permissions.forEach((permission,index) => {
@@ -125,12 +86,43 @@ export const registerActions = async () => {
participants.push({type,id})
})
//manage slowmode
const slowMode = option.get("opendiscord:slowmode-enabled").value ? option.get("opendiscord:slowmode-seconds").value : undefined
//handle channel topic
const channelTopics: string[] = []
if (generalConfig.data.ticketSystem.channelTopic.showOptionName) channelTopics.push(option.get("opendiscord:name").value)
if (generalConfig.data.ticketSystem.channelTopic.showOptionDescription) channelTopics.push(option.get("opendiscord:description").value)
if (generalConfig.data.ticketSystem.channelTopic.showOptionTopic) channelTopics.push(channelTopicText)
if (generalConfig.data.ticketSystem.channelTopic.showPriority) channelTopics.push("**"+lang.getTranslation("params.uppercase.priority")+":** "+opendiscord.priorities.get("opendiscord:none").renderDisplayName())
if (generalConfig.data.ticketSystem.channelTopic.showClosed) channelTopics.push("**"+lang.getTranslation("params.uppercase.status")+":** "+lang.getTranslation("params.uppercase.open"))
if (generalConfig.data.ticketSystem.channelTopic.showClaimed) channelTopics.push("**"+lang.getTranslation("stats.properties.claimedBy")+":** "+lang.getTranslation("params.uppercase.noone"))
if (generalConfig.data.ticketSystem.channelTopic.showPinned) channelTopics.push("**"+lang.getTranslation("params.uppercase.pinned")+":** "+lang.getTranslation("params.uppercase.no"))
if (generalConfig.data.ticketSystem.channelTopic.showCreator) channelTopics.push("**"+lang.getTranslation("params.uppercase.creator")+":** "+discord.userMention(user.id))
if (generalConfig.data.ticketSystem.channelTopic.showParticipants) channelTopics.push("**"+lang.getTranslation("params.uppercase.participants")+":** "+participants.map((p) => (p.type == "user") ? discord.userMention(p.id) : discord.roleMention(p.id)).join(", "))
//create channel
const channel = await guild.channels.create({
type:discord.ChannelType.GuildText,
name:channelName,
nsfw:false,
topic:(channelTopics.length > 0) ? channelTopics.join(" • ") : undefined,
parent:ticketCategoryId,
reason:"Ticket Created By "+user.displayName,
permissionOverwrites:permissions,
rateLimitPerUser:slowMode
})
await opendiscord.events.get("afterTicketChannelCreated").emit([option,channel,user])
//create ticket
const ticket = new api.ODTicket(channel.id,option,[
new api.ODTicketData("opendiscord:busy",false),
new api.ODTicketData("opendiscord:ticket-message",null),
new api.ODTicketData("opendiscord:participants",participants),
new api.ODTicketData("opendiscord:channel-suffix",channelSuffix),
new api.ODTicketData("opendiscord:channel-renamed",null),
new api.ODTicketData("opendiscord:previous-creators",[]),
new api.ODTicketData("opendiscord:open",true),
new api.ODTicketData("opendiscord:opened-by",user.id),
@@ -138,6 +130,9 @@ export const registerActions = async () => {
new api.ODTicketData("opendiscord:closed",false),
new api.ODTicketData("opendiscord:closed-by",null),
new api.ODTicketData("opendiscord:closed-on",null),
new api.ODTicketData("opendiscord:reopened",false),
new api.ODTicketData("opendiscord:reopened-by",null),
new api.ODTicketData("opendiscord:reopened-on",null),
new api.ODTicketData("opendiscord:claimed",false),
new api.ODTicketData("opendiscord:claimed-by",null),
new api.ODTicketData("opendiscord:claimed-on",null),
@@ -146,8 +141,8 @@ export const registerActions = async () => {
new api.ODTicketData("opendiscord:pinned-on",null),
new api.ODTicketData("opendiscord:for-deletion",false),
new api.ODTicketData("opendiscord:category",category),
new api.ODTicketData("opendiscord:category-mode",categoryMode),
new api.ODTicketData("opendiscord:category",ticketCategoryId ?? null),
new api.ODTicketData("opendiscord:category-mode",ticketCategoryMode ?? null),
new api.ODTicketData("opendiscord:autoclose-enabled",option.get("opendiscord:autoclose-enable-hours").value),
new api.ODTicketData("opendiscord:autoclose-hours",(option.get("opendiscord:autoclose-enable-hours").value ? option.get("opendiscord:autoclose-hours").value : 0)),
@@ -155,12 +150,16 @@ export const registerActions = async () => {
new api.ODTicketData("opendiscord:autodelete-enabled",option.get("opendiscord:autodelete-enable-days").value),
new api.ODTicketData("opendiscord:autodelete-days",(option.get("opendiscord:autodelete-enable-days").value ? option.get("opendiscord:autodelete-days").value : 0)),
new api.ODTicketData("opendiscord:answers",answers)
new api.ODTicketData("opendiscord:answers",answers),
new api.ODTicketData("opendiscord:priority",-1),
new api.ODTicketData("opendiscord:topic",option.get("opendiscord:channel-topic").value),
new api.ODTicketData("opendiscord:message-sent",false),
new api.ODTicketData("opendiscord:admin-message-sent",false),
])
//manage stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-created",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-created",user.id,1,"increase")
await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-created",1,"increase")
await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-created",user.id,1,"increase")
//manage bot permissions
await opendiscord.events.get("onTicketPermissionsCreated").emit([option,opendiscord.permissions,channel,user])
@@ -172,7 +171,7 @@ export const registerActions = async () => {
instance.ticket = ticket
opendiscord.tickets.add(ticket)
}),
new api.ODWorker("opendiscord:send-ticket-message",2,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:send-ticket-message",2,async (instance,params,origin,cancel) => {
const {guild,user,answers,option} = params
const {ticket,channel} = instance
@@ -182,14 +181,23 @@ export const registerActions = async () => {
//check if ticket message is enabled
if (!option.get("opendiscord:ticket-message-enabled").value) return
try {
const msg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build(source,{guild,channel,user,ticket})).message)
const ticketMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build(origin,{guild,channel,user,ticket})).message)
ticket.get("opendiscord:ticket-message").value = msg.id
if (ticketMsg) await interactiveMsgState.setMsgState({channel,message:ticketMsg},{
messageType:"ticket-message",
messageOrigin:"other",
messageAuthor:user.id
},false)
ticket.get("opendiscord:ticket-message").value = ticketMsg.id
//pin ticket message (if required)
if (generalConfig.data.ticketSystem.pinFirstTicketMessage && ticketMsg.pinnable) await ticketMsg.pin("Ticket Message")
//manage stats
await opendiscord.stats.get("opendiscord:ticket").setStat("opendiscord:messages-sent",ticket.id.value,1,"increase")
await opendiscord.statistics.get("opendiscord:ticket").setStat("opendiscord:messages-sent",ticket.id.value,1,"increase")
await opendiscord.events.get("afterTicketMainMessageCreated").emit([ticket,msg,channel,user])
await opendiscord.events.get("afterTicketMainMessageCreated").emit([ticket,ticketMsg,channel,user])
}catch(err){
process.emit("uncaughtException",err)
//something went wrong while sending the ticket message
@@ -197,20 +205,22 @@ export const registerActions = async () => {
}
await opendiscord.events.get("afterTicketCreated").emit([ticket,user,channel])
}),
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => {
const {guild,user,answers,option} = params
const {ticket,channel} = instance
if (!ticket || !channel) return opendiscord.log("Ticket Creation Error: Unable to send ticket message. Previous worker failed!","error")
//to logs
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.creation.logs){
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.creation.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-created-logs").build(source,{guild,channel,user,ticket}))
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-created-logs").build(origin,{guild,channel,user,ticket}))
}
//to dm
if (generalConfig.data.system.messages.creation.dm) await opendiscord.client.sendUserDm(user,await opendiscord.builders.messages.getSafe("opendiscord:ticket-created-dm").build(source,{guild,channel,user,ticket}))
if (generalConfig.data.logs.logMessages.creation.dm) await opendiscord.client.sendUserDm(user,await opendiscord.builders.messages.getSafe("opendiscord:ticket-created-dm").build(origin,{guild,channel,user,ticket}))
}),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,user,answers,option} = params
const {ticket,channel} = instance
@@ -221,7 +231,7 @@ export const registerActions = async () => {
{key:"userid",value:user.id,hidden:true},
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"method",value:source},
{key:"method",value:origin},
{key:"option",value:option.id.value}
])
})
+10 -10
View File
@@ -1,13 +1,13 @@
///////////////////////////////////////
//TICKET CREATION SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:create-ticket-permissions"))
opendiscord.actions.get("opendiscord:create-ticket-permissions").workers.add([
new api.ODWorker("opendiscord:check-blacklist",4,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:check-blacklist",4,(instance,params,origin,cancel) => {
if (!params.option.get("opendiscord:allow-blacklisted-users").value && opendiscord.blacklist.exists(params.user.id)){
instance.valid = false
instance.reason = "blacklist"
@@ -19,7 +19,7 @@ export const registerActions = async () => {
return cancel()
}
}),
new api.ODWorker("opendiscord:check-cooldown",3,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:check-cooldown",3,(instance,params,origin,cancel) => {
const cooldown = opendiscord.cooldowns.get("opendiscord:option-cooldown_"+params.option.id.value)
if (cooldown && cooldown instanceof api.ODTimeoutCooldown && cooldown.use(params.user.id)){
instance.valid = false
@@ -36,16 +36,16 @@ export const registerActions = async () => {
return cancel()
}
}),
new api.ODWorker("opendiscord:check-global-limits",2,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:check-global-limits",2,(instance,params,origin,cancel) => {
const generalConfig = opendiscord.configs.get("opendiscord:general")
if (!generalConfig.data.system.limits.enabled) return
if (!generalConfig.data.ticketSystem.limits.enabled) return
const allTickets = opendiscord.tickets.getAll()
const globalTicketCount = allTickets.length
const userTickets = opendiscord.tickets.getFiltered((ticket) => ticket.exists("opendiscord:opened-by") && (ticket.get("opendiscord:opened-by").value == params.user.id))
const userTicketCount = userTickets.length
if (globalTicketCount >= generalConfig.data.system.limits.globalMaximum){
if (globalTicketCount >= generalConfig.data.ticketSystem.limits.globalMaximum){
instance.valid = false
instance.reason = "global-limit"
opendiscord.log(params.user.displayName+" tried to create a ticket but reached the limit!","info",[
@@ -55,7 +55,7 @@ export const registerActions = async () => {
{key:"limit",value:"global"}
])
return cancel()
}else if (userTicketCount >= generalConfig.data.system.limits.userMaximum){
}else if (userTicketCount >= generalConfig.data.ticketSystem.limits.userMaximum){
instance.valid = false
instance.reason = "global-user-limit"
opendiscord.log(params.user.displayName+" tried to create a ticket, but reached the limit!","info",[
@@ -67,7 +67,7 @@ export const registerActions = async () => {
return cancel()
}
}),
new api.ODWorker("opendiscord:check-option-limits",1,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:check-option-limits",1,(instance,params,origin,cancel) => {
if (!params.option.exists("opendiscord:limits-enabled") || !params.option.get("opendiscord:limits-enabled").value) return
const allTickets = opendiscord.tickets.getFiltered((ticket) => ticket.option.id.value == params.option.id.value)
@@ -97,7 +97,7 @@ export const registerActions = async () => {
return cancel()
}
}),
new api.ODWorker("opendiscord:valid",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:valid",0,(instance,params,origin,cancel) => {
instance.valid = true
instance.reason = null
cancel()
+58 -18
View File
@@ -1,15 +1,16 @@
///////////////////////////////////////
//TRANSCRIPT CREATION SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const transcriptConfig = opendiscord.configs.get("opendiscord:transcripts")
const transcriptDatabase = opendiscord.databases.get("opendiscord:transcripts")
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:create-transcript"))
opendiscord.actions.get("opendiscord:create-transcript").workers.add([
new api.ODWorker("opendiscord:select-compiler",4,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:select-compiler",4,async (instance,params,origin,cancel) => {
const {channel,user,ticket} = params
if (channel.type != discord.ChannelType.GuildText) return cancel()
if (!transcriptConfig.data.general.enabled) return cancel()
@@ -29,10 +30,15 @@ export const registerActions = async () => {
if (transcriptConfig.data.general.mode == "text") instance.compiler = opendiscord.transcripts.get("opendiscord:text-compiler")
else if (transcriptConfig.data.general.mode == "html") instance.compiler = opendiscord.transcripts.get("opendiscord:html-compiler")
}),
new api.ODWorker("opendiscord:init-transcript",3,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:init-transcript",3,async (instance,params,origin,cancel) => {
const {channel,user,ticket} = params
if (channel.type != discord.ChannelType.GuildText) return cancel()
if (!transcriptConfig.data.general.enabled) return cancel()
if (!instance.compiler){
instance.success = false
cancel()
throw new api.ODSystemError("ODAction(ot:create-transcript):ODWorker(ot:init-transcript) => Instance is missing transcript compiler!")
}
//run transcript compiler init()
await opendiscord.events.get("onTranscriptInit").emit([opendiscord.transcripts,ticket,channel,user])
@@ -63,7 +69,7 @@ export const registerActions = async () => {
}
await opendiscord.events.get("afterTranscriptInitiated").emit([opendiscord.transcripts,ticket,channel,user])
}),
new api.ODWorker("opendiscord:compile-transcript",2,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:compile-transcript",2,async (instance,params,origin,cancel) => {
const {channel,user,ticket} = params
if (channel.type != discord.ChannelType.GuildText) return cancel()
if (!instance.compiler){
@@ -71,6 +77,11 @@ export const registerActions = async () => {
cancel()
throw new api.ODSystemError("ODAction(ot:create-transcript):ODWorker(ot:compile-transcript) => Instance is missing transcript compiler!")
}
if (typeof instance.initData == "undefined"){
instance.success = false
cancel()
throw new api.ODSystemError("ODAction(ot:create-transcript):ODWorker(ot:compile-transcript) => Instance is missing transcript initData!")
}
//run transcript compiler compile()
await opendiscord.events.get("onTranscriptCompile").emit([opendiscord.transcripts,ticket,channel,user])
@@ -93,25 +104,54 @@ export const registerActions = async () => {
}
await opendiscord.events.get("afterTranscriptCompiled").emit([opendiscord.transcripts,ticket,channel,user])
}),
new api.ODWorker("opendiscord:ready-transcript",1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:ready-transcript",1,async (instance,params,origin,cancel) => {
if (!instance.compiler){
instance.success = false
cancel()
throw new api.ODSystemError("ODAction(ot:create-transcript):ODWorker(ot:ready-transcript) => Instance is missing transcript compiler! (1)")
}
if (!instance.result){
instance.success = false
cancel()
throw new api.ODSystemError("ODAction(ot:create-transcript):ODWorker(ot:ready-transcript) => Instance is missing transcript result!")
throw new api.ODSystemError("ODAction(ot:create-transcript):ODWorker(ot:ready-transcript) => Instance is missing transcript result! (1)")
}
//run transcript compiler ready()
utilities.runAsync(async () => {
await opendiscord.events.get("onTranscriptReady").emit([opendiscord.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
if (!instance.compiler){
instance.success = false
cancel()
throw new api.ODSystemError("ODAction(ot:create-transcript):ODWorker(ot:ready-transcript) => Instance is missing transcript compiler! (2)")
}
if (!instance.result){
instance.success = false
cancel()
throw new api.ODSystemError("ODAction(ot:create-transcript):ODWorker(ot:ready-transcript) => Instance is missing transcript result! (2)")
}
const result = instance.result as api.ODTranscriptCompilerCompileResult<{url:string,availableUntil:Date}|{contents:string}>
const historyData: api.ODTranscriptHistoryData = {
ticketId:result.channel.id,
ticketName:"#"+result.channel.name,
ticketCreatorId:result.user.id,
ticketCreatedDate:result.ticket.get("opendiscord:opened-on").value,
ticketDeletedDate:Date.now(),
transcriptType:(result.data && "contents" in result.data) ? "localContents" : "remoteUrl",
transcriptContents:(result.data && "contents" in result.data) ? result.data.contents : null,
transcriptUrl:(result.data && "url" in result.data) ? result.data.url : null,
}
transcriptDatabase.set("opendiscord:transcript","C:"+result.channel.id+",U:"+result.user.id,historyData)
await opendiscord.events.get("onTranscriptReady").emit([opendiscord.transcripts,result.ticket,result.channel,result.user])
if (instance.compiler.ready){
try{
const {channelMessage,creatorDmMessage,participantDmMessage,activeAdminDmMessage,everyAdminDmMessage} = await instance.compiler.ready(instance.result)
const {channelMessage,creatorDmMessage,participantDmMessage,activeAdminDmMessage,everyAdminDmMessage} = await instance.compiler.ready(result)
//send channel message
if (transcriptConfig.data.general.enableChannel && channelMessage){
if (instance.pendingMessage && instance.pendingMessage.message && instance.pendingMessage.success){
if (instance.pendingMessage && instance.pendingMessage.success){
//edit "pending" message to be the "ready" message
instance.pendingMessage.message.edit(channelMessage.message)
instance.pendingMessage.message.edit(utilities.getMessageFromBuildResult(channelMessage,"message"))
}else{
//send ready message to channel
const post = opendiscord.posts.get("opendiscord:transcripts")
@@ -128,7 +168,7 @@ export const registerActions = async () => {
}else if (p.role == "participant" && transcriptConfig.data.general.enableParticipantDM && participantDmMessage){
//send participant dm message
await opendiscord.client.sendUserDm(p.user,participantDmMessage)
}else if (p.role == "admin" && transcriptConfig.data.general.enableActiveAdminDM && instance.result.success && instance.result.messages && instance.result.messages.some((msg) => msg.author.id == p.user.id) && activeAdminDmMessage){
}else if (p.role == "admin" && transcriptConfig.data.general.enableActiveAdminDM && result.success && result.messages && result.messages.some((msg) => msg.author.id == p.user.id) && activeAdminDmMessage){
//send active admin dm message
await opendiscord.client.sendUserDm(p.user,activeAdminDmMessage)
}else if (p.role == "admin" && transcriptConfig.data.general.enableEveryAdminDM && everyAdminDmMessage){
@@ -145,15 +185,15 @@ export const registerActions = async () => {
throw new api.ODSystemError("ODAction(ot:create-transcript) => Failed transcript compiler ready()! (see error above)")
}
}
await opendiscord.events.get("afterTranscriptReady").emit([opendiscord.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
await opendiscord.events.get("afterTranscriptReady").emit([opendiscord.transcripts,result.ticket,result.channel,result.user])
})
//update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:transcripts-created",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:transcripts-created",params.user.id,1,"increase")
await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:transcripts-created",1,"increase")
await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:transcripts-created",params.user.id,1,"increase")
await opendiscord.events.get("afterTranscriptCreated").emit([opendiscord.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
}),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {user,channel,ticket} = params
opendiscord.log(user.displayName+" created a transcript!","info",[
{key:"user",value:user.username},
@@ -161,8 +201,8 @@ export const registerActions = async () => {
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"option",value:ticket.option.id.value},
{key:"method",value:source,hidden:true},
{key:"compiler",value:instance.compiler.id.value},
{key:"method",value:origin,hidden:true},
{key:"compiler",value:instance.compiler?.id.value ?? "<unknown-compiler>"},
])
})
])
+18 -381
View File
@@ -1,15 +1,16 @@
///////////////////////////////////////
//TICKET DELETION SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
const lang = opendiscord.languages
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:delete-ticket"))
opendiscord.actions.get("opendiscord:delete-ticket").workers.add([
new api.ODWorker("opendiscord:delete-ticket",3,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:delete-ticket",3,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason} = params
if (channel.isThread()) throw new api.ODSystemError("Unable to delete ticket! Open Ticket doesn't support threads!")
@@ -19,31 +20,18 @@ export const registerActions = async () => {
ticket.get("opendiscord:for-deletion").value = true
ticket.get("opendiscord:busy").value = true
//update ticket message
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
if (ticketMessage){
try{
ticketMessage.edit((await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket})).message)
}catch(e){
opendiscord.log("Unable to edit ticket message on ticket deletion!","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"messageid",value:ticketMessage.id},
{key:"option",value:ticket.option.id.value}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
}
//update ticket message (no await)
openticketUtils.updateTicketMessage(guild,channel,user,ticket)
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:delete-message").build(source,{guild,channel,user,ticket,reason})).message)
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:delete-message").build(origin,{guild,channel,user,ticket,reason})).message)
//create transcript
if (!params.withoutTranscript){
const transcriptRes = await opendiscord.actions.get("opendiscord:create-transcript").run(source,{guild,channel,user,ticket})
const transcriptRes = await opendiscord.actions.get("opendiscord:create-transcript").run(origin,{guild,channel,user,ticket})
//transcript failure
if (typeof transcriptRes.success == "boolean" && !transcriptRes.success && transcriptRes.compiler){
const {compiler} = transcriptRes
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:transcript-error").build(source,{guild,channel,user,ticket,compiler,reason:transcriptRes.errorReason ?? null})).message)
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:transcript-error").build(origin,{guild,channel,user,ticket,compiler,reason:transcriptRes.errorReason ?? null})).message)
.catch((reason) => opendiscord.log("Unable to send transcript failure to ticket channel!","error",[{key:"id",value:channel.id}]))
//undo deletion
@@ -58,8 +46,8 @@ export const registerActions = async () => {
}
//update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-deleted",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-deleted",user.id,1,"increase")
await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-deleted",1,"increase")
await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-deleted",user.id,1,"increase")
//delete ticket from manager
opendiscord.tickets.remove(ticket.id)
@@ -67,21 +55,21 @@ export const registerActions = async () => {
//delete permissions from manager
await (await import("../data/framework/permissionLoader.js")).removeTicketPermissions(ticket)
}),
new api.ODWorker("opendiscord:discord-logs",2,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:discord-logs",2,async (instance,params,origin,cancel) => {
//logs before channel deletion => channel might still be used in log embeds
const {guild,channel,user,ticket,reason} = params
//to logs
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.deleting.logs){
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.deleting.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"delete",reason,additionalData:null}))
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,ticket,mode:"delete",reason,additionalData:null}))
}
//to dm
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
if (creator && generalConfig.data.system.messages.deleting.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"delete",reason,additionalData:null}))
if (creator && generalConfig.data.logs.logMessages.deleting.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,ticket,mode:"delete",reason,additionalData:null}))
}),
new api.ODWorker("opendiscord:delete-channel",1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:delete-channel",1,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason} = params
//delete channel & events
await opendiscord.events.get("onTicketChannelDeletion").emit([ticket,channel,user])
@@ -93,7 +81,7 @@ export const registerActions = async () => {
await opendiscord.events.get("afterTicketDeleted").emit([ticket,user,reason])
}),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,channel,user,ticket} = params
opendiscord.log(user.displayName+" deleted a ticket!","info",[
@@ -102,7 +90,7 @@ export const registerActions = async () => {
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"reason",value:params.reason ?? "/"},
{key:"method",value:source},
{key:"method",value:origin},
{key:"transcript",value:(!params.withoutTranscript).toString()},
])
})
@@ -113,354 +101,3 @@ export const registerActions = async () => {
params.ticket.get("opendiscord:for-deletion").value = false
})
}
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
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
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
//start deleting ticket
if (params.data == "reason"){
//delete with reason
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:delete-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
}else{
//delete without reason
await instance.defer("update",false)
//don't await DELETE action => else it will update the message after the channel has been deleted
opendiscord.actions.get("opendiscord:delete-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true,withoutTranscript:(params.data == "no-transcript")})
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
ticket.get("opendiscord:for-deletion").value = true
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket}))
}
})
])
opendiscord.verifybars.get("opendiscord:delete-ticket-ticket-message").failure.add([
new api.ODWorker("opendiscord:back-to-ticket-message",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket}))
})
])
//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
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
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
//start deleting ticket
if (params.data == "reason"){
//delete with reason
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:delete-ticket-reason").build("close-message",{guild,channel,user,ticket}))
}else{
//delete without reason
await instance.defer("update",false)
//don't await DELETE action => else it will update the message after the channel has been deleted
opendiscord.actions.get("opendiscord:delete-ticket").run("close-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
ticket.get("opendiscord:for-deletion").value = true
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:delete-message").build("close-message",{guild,channel,user,ticket,reason:null}))
}
})
])
opendiscord.verifybars.get("opendiscord:delete-ticket-close-message").failure.add([
new api.ODWorker("opendiscord:back-to-close-message",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
const {verifybarMessage} = params
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:close-message").build("other",{guild,channel,user,ticket,reason}))
})
])
//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
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
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
//start deleting ticket
if (params.data == "reason"){
//delete with reason
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:delete-ticket-reason").build("reopen-message",{guild,channel,user,ticket}))
}else{
//delete without reason
await instance.defer("update",false)
//don't await DELETE action => else it will update the message after the channel has been deleted
opendiscord.actions.get("opendiscord:delete-ticket").run("reopen-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
ticket.get("opendiscord:for-deletion").value = true
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:delete-message").build("reopen-message",{guild,channel,user,ticket,reason:null}))
}
})
])
opendiscord.verifybars.get("opendiscord:delete-ticket-reopen-message").failure.add([
new api.ODWorker("opendiscord:back-to-reopen-message",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
const {verifybarMessage} = params
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:reopen-message").build("other",{guild,channel,user,ticket,reason}))
})
])
//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
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
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
//start deleting ticket
if (params.data == "reason"){
//delete with reason
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:delete-ticket-reason").build("autoclose-message",{guild,channel,user,ticket}))
}else{
//delete without reason
await instance.defer("update",false)
//don't await DELETE action => else it will update the message after the channel has been deleted
opendiscord.actions.get("opendiscord:delete-ticket").run("autoclose-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
ticket.get("opendiscord:for-deletion").value = true
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:delete-message").build("autoclose-message",{guild,channel,user,ticket,reason:null}))
}
})
])
opendiscord.verifybars.get("opendiscord:delete-ticket-autoclose-message").failure.add([
new api.ODWorker("opendiscord:back-to-autoclose-message",0,async (instance,params,source,cancel) => {
const {guild,channel,user} = instance
const {verifybarMessage} = params
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:autoclose-message").build("other",{guild,channel,user,ticket}))
})
])
}
+46 -112
View File
@@ -1,76 +1,43 @@
///////////////////////////////////////
//TRANSCRIPT ERROR SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
export const registerButtonResponders = async () => {
export async function registerButtonResponders(){
//TRANSCRIPT ERROR RETRY
opendiscord.responders.buttons.add(new api.ODButtonResponder("opendiscord:transcript-error-retry",/^od:transcript-error-retry_([^_]+)/))
opendiscord.responders.buttons.get("opendiscord:transcript-error-retry").workers.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,origin,cancel) => {
const {guild,channel,user,member} = instance
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
const originalSource = instance.interaction.customId.split("_")[1] as api.ODActionManagerIds_Default["opendiscord:delete-ticket"]["source"]
//responder checks
const hasPerms = await openticketUtils.replyHasPermissions(instance,origin,"delete")
if (!hasPerms) return cancel()
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
const isInGuild = await openticketUtils.replyIsInGuild(instance,origin)
if (!isInGuild || !guild || channel.isDMBased()) return cancel()
const ticket = await openticketUtils.replyIsTicket(instance,origin)
if (!ticket) return cancel()
const isAvailable = await openticketUtils.replyTicketIsAvailable(instance,origin,ticket)
if (!isAvailable) return cancel()
//fetch data
const originalOrigin = instance.interaction.customId.split("_")[1] as api.ODActionManagerIdMappings["opendiscord:delete-ticket"]["origin"]
//start deleting ticket (without reason)
await instance.defer("update",false)
//don't await DELETE action => else it will update the message after the channel has been deleted
opendiscord.actions.get("opendiscord:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason:"Transcript Error (Retried)",sendMessage:false,withoutTranscript:false})
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
ticket.get("opendiscord:for-deletion").value = true
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:delete-message").build("other",{guild,channel,user,ticket,reason:"Transcript Error (Retried)"}))
opendiscord.actions.get("opendiscord:delete-ticket").run(originalOrigin,{guild,channel,user,ticket,reason:"Transcript Error (Retried)",sendMessage:false,withoutTranscript:false})
ticket.get("opendiscord:for-deletion").value = true //disable ticket message buttons
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:delete-message").build("other",{guild,channel,user,ticket,reason:"Transcript Error (Retried)"}))
}),
new api.ODWorker("opendiscord:logs",-1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",-1,async (instance,params,origin,cancel) => {
const {user,channel} = instance
if (channel.isDMBased()) return
opendiscord.log(user.displayName+" retried deleting a ticket with transcript!","info",[
@@ -78,7 +45,7 @@ export const registerButtonResponders = async () => {
{key:"userid",value:user.id,hidden:true},
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"method",value:source}
{key:"method",value:origin}
])
})
])
@@ -86,68 +53,35 @@ export const registerButtonResponders = async () => {
//TRANSCRIPT ERROR CONTINUE
opendiscord.responders.buttons.add(new api.ODButtonResponder("opendiscord:transcript-error-continue",/^od:transcript-error-continue_([^_]+)/))
opendiscord.responders.buttons.get("opendiscord:transcript-error-continue").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("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) => {
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,origin,cancel) => {
const {guild,channel,user} = instance
const originalSource = instance.interaction.customId.split("_")[1] as api.ODActionManagerIds_Default["opendiscord:delete-ticket"]["source"]
if (!guild){
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
return cancel()
}
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()
}
//responder checks
const hasPerms = await openticketUtils.replyHasPermissions(instance,origin,"delete")
if (!hasPerms) return cancel()
//start deleting ticket (without reason)
const isInGuild = await openticketUtils.replyIsInGuild(instance,origin)
if (!isInGuild || !guild || channel.isDMBased()) return cancel()
const ticket = await openticketUtils.replyIsTicket(instance,origin)
if (!ticket) return cancel()
const isAvailable = await openticketUtils.replyTicketIsAvailable(instance,origin,ticket)
if (!isAvailable) return cancel()
//fetch data
const originalOrigin = instance.interaction.customId.split("_")[1] as api.ODActionManagerIdMappings["opendiscord:delete-ticket"]["origin"]
//start deleting ticket (without reason & without transcript)
await instance.defer("update",false)
//don't await DELETE action => else it will update the message after the channel has been deleted
opendiscord.actions.get("opendiscord:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason:"Transcript Error (Continued)",sendMessage:false,withoutTranscript:true})
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
ticket.get("opendiscord:for-deletion").value = true
opendiscord.actions.get("opendiscord:delete-ticket").run(originalOrigin,{guild,channel,user,ticket,reason:"Transcript Error (Continued)",sendMessage:false,withoutTranscript:true})
ticket.get("opendiscord:for-deletion").value = true //disable ticket message buttons
await instance.update(await opendiscord.builders.messages.getSafe("opendiscord:delete-message").build("other",{guild,channel,user,ticket,reason:"Transcript Error (Continued)"}))
}),
new api.ODWorker("opendiscord:logs",-1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",-1,async (instance,params,origin,cancel) => {
const {user,channel} = instance
if (channel.isDMBased()) return
opendiscord.log(user.displayName+" continued deleting a ticket without transcript!","info",[
@@ -155,7 +89,7 @@ export const registerButtonResponders = async () => {
{key:"userid",value:user.id,hidden:true},
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"method",value:source}
{key:"method",value:origin}
])
})
])
+13 -23
View File
@@ -1,32 +1,22 @@
///////////////////////////////////////
//VERIFYBAR SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
export const registerButtonResponders = async () => {
//VERIFYBAR SUCCESS
opendiscord.responders.buttons.add(new api.ODButtonResponder("opendiscord:verifybar-success",/^od:verifybar-success_([^_]+)/))
opendiscord.responders.buttons.get("opendiscord:verifybar-success").workers.add(
new api.ODWorker("opendiscord:handle-verifybar",0,async (instance,params,source,cancel) => {
const id = instance.interaction.customId.split("_")[1]
const customData = instance.interaction.customId.split("_")[2] as string|undefined
export async function registerButtonResponders(){
//HANDLE VERIFYBAR BUTTON
opendiscord.responders.buttons.add(new api.ODButtonResponder("opendiscord:verifybar-button",/^od:verifybar\|([^|]+)\|([^|]+)/))
opendiscord.responders.buttons.get("opendiscord:verifybar-button").workers.add(
new api.ODWorker("opendiscord:handle-verifybar",0,async (instance,params,origin,cancel) => {
const match = /^od:verifybar\|([^|]+)\|([^|]+)/.exec(instance.interaction.customId)
if (!match) return cancel()
const verifyBarId = match[1]
const verifyButtonId = match[2]
const verifybar = opendiscord.verifybars.get(id)
const verifybar = opendiscord.verifybars.get(verifyBarId)
if (!verifybar) return
if (verifybar.success) await verifybar.success.executeWorkers(instance,"verifybar",{data:customData ?? null,verifybarMessage:instance.message})
})
)
//VERIFYBAR FAILURE
opendiscord.responders.buttons.add(new api.ODButtonResponder("opendiscord:verifybar-failure",/^od:verifybar-failure_([^_]+)/))
opendiscord.responders.buttons.get("opendiscord:verifybar-failure").workers.add(
new api.ODWorker("opendiscord:handle-verifybar",0,async (instance,params,source,cancel) => {
const id = instance.interaction.customId.split("_")[1]
const customData = instance.interaction.customId.split("_")[2] as string|undefined
const verifybar = opendiscord.verifybars.get(id)
if (!verifybar) return
if (verifybar.failure) await verifybar.failure.executeWorkers(instance,"verifybar",{data:customData ?? null,verifybarMessage:instance.message})
await verifybar.activate(instance,verifyButtonId)
})
)
}
+43 -95
View File
@@ -1,15 +1,15 @@
///////////////////////////////////////
//TICKET MOVING SYSTEM
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index"
import {opendiscord, api, utilities, openticketUtils} from "../index.js"
import * as discord from "discord.js"
const generalConfig = opendiscord.configs.get("opendiscord:general")
export const registerActions = async () => {
export async function registerActions(){
opendiscord.actions.add(new api.ODAction("opendiscord:move-ticket"))
opendiscord.actions.get("opendiscord:move-ticket").workers.add([
new api.ODWorker("opendiscord:move-ticket",2,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:move-ticket",2,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason,data} = params
if (channel.isThread()) throw new api.ODSystemError("Unable to move ticket! Open Ticket doesn't support threads!")
@@ -17,77 +17,29 @@ export const registerActions = async () => {
ticket.option = data
//update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-moved",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-moved",user.id,1,"increase")
//get new channel properties
const channelPrefix = ticket.option.get("opendiscord:channel-prefix").value
const channelSuffix = ticket.get("opendiscord:channel-suffix").value
const channelCategory = ticket.option.get("opendiscord:channel-category").value
const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value
const rawClaimCategory = ticket.option.get("opendiscord:channel-categories-claimed").value.find((c) => c.user == user.id)
const claimCategory = (rawClaimCategory) ? rawClaimCategory.category : null
const closeCategory = ticket.option.get("opendiscord:channel-category-closed").value
const channelDescription = ticket.option.get("opendiscord:channel-description").value
const channelName = channelPrefix+channelSuffix
//handle category
let category: string|null = null
let categoryMode: "backup"|"normal"|"closed"|"claimed"|null = null
if (claimCategory){
//use claim category
category = claimCategory
categoryMode = "claimed"
}else if (closeCategory != "" && ticket.get("opendiscord:closed").value){
//use close category
category = closeCategory
categoryMode = "closed"
}else if (channelCategory != ""){
//category enabled
const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory)
if (!normalCategory){
//default category was not found
opendiscord.log("Ticket Move Error: Unable to find category! #1","error",[
{key:"categoryid",value:channelCategory},
{key:"backup",value:"false"}
])
}else{
//default category was found
if (normalCategory.children.cache.size >= 50 && channelBackupCategory != ""){
//use backup category
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
if (!backupCategory){
//default category was not found
opendiscord.log("Ticket Move Error: Unable to find category! #2","error",[
{key:"categoryid",value:channelBackupCategory},
{key:"backup",value:"true"}
])
}else{
category = backupCategory.id
categoryMode = "backup"
}
}else{
//use default category
category = normalCategory.id
categoryMode = "normal"
}
}
}
await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-moved",1,"increase")
await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-moved",user.id,1,"increase")
//calculate & update category
const categoryResult = await opendiscord.actions.get("opendiscord:calculate-ticket-category").run("move-ticket",{guild,user,option:ticket.option,channel,ticket,currentCategoryId:channel.parentId})
if (categoryResult && categoryResult.shouldChangeCategory && typeof categoryResult.newCategoryId !== "undefined" && typeof categoryResult.newCategoryMode !== "undefined" && typeof categoryResult.newCategory !== "undefined"){
const originalCategoryName = channel.parent?.name ?? "<unknown>"
const newCategoryName = categoryResult.newCategory?.name ?? "<unknown>"
try{
//only move category when not the same.
if (channel.parentId != category) await utilities.timedAwait(channel.setParent(category,{lockPermissions:false}),2500,(err) => {
opendiscord.log("Failed to change channel category on ticket move","error")
await utilities.timedAwait(channel.setParent(categoryResult.newCategoryId,{lockPermissions:false}),3000,(err) => {
process.emit("uncaughtException",new Error("Error: Unable to change channel parent: "+err))
})
ticket.get("opendiscord:category-mode").value = categoryMode
ticket.get("opendiscord:category").value = category
}catch(e){
opendiscord.log("Unable to move ticket to 'moved category'!","error",[
ticket.get("opendiscord:category-mode").value = categoryResult.newCategoryMode
ticket.get("opendiscord:category").value = categoryResult.newCategoryId
}catch(err){
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-category").build("ticket-move",{guild,channel,user,originalCategory:originalCategoryName,newCategory:newCategoryName})).message)
setTimeout(() => {if (sentMsg.deletable) sentMsg.delete()},7000) //autodelete error message
opendiscord.log("Unable to move ticket to moved category.","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"categoryid",value:category ?? "/"}
{key:"categoryid",value:categoryResult.newCategoryId ?? "/"}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
}
//handle permissions
@@ -154,54 +106,50 @@ export const registerActions = async () => {
ticket.get("opendiscord:participants").value = participants
ticket.get("opendiscord:participants").refreshDatabase()
//rename channel (and give error when crashed)
//calculate channel name
const channelNameResult = await opendiscord.actions.get("opendiscord:calculate-ticket-name").run("move-ticket",{guild,user,option:ticket.option,channel,ticket,currentChannelName:channel.name})
if (channelNameResult && channelNameResult.shouldChangeName && typeof channelNameResult.newChannelName !== "undefined"){
const originalName = channel.name
const newName = channelNameResult.newChannelName
try{
await utilities.timedAwait(channel.setName(channelName),2500,(err) => {
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
opendiscord.log("Failed to rename channel on ticket move","error")
})
}catch(err){
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-rename").build("ticket-move",{guild,channel,user,originalName,newName:channelName})).message)
}
try{
if (channel.type == discord.ChannelType.GuildText) channel.setTopic(channelDescription)
}catch{}
//update ticket message
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
if (ticketMessage){
try{
ticketMessage.edit((await opendiscord.builders.messages.getSafe("opendiscord:ticket-message").build("other",{guild,channel,user,ticket})).message)
}catch(e){
opendiscord.log("Unable to edit ticket message on ticket renaming!","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"messageid",value:ticketMessage.id},
{key:"option",value:ticket.option.id.value}
opendiscord.log("Unable to rename channel while moving ticket! Waiting until ratelimit expires...","warning",[
{key:"oldName",value:originalName},
{key:"newName",value:newName}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-rename").build("ticket-move",{guild,channel,user,originalName,newName})).message)
setTimeout(() => {if (sentMsg.deletable) sentMsg.delete()},7000) //autodelete error message
}
}
//update ticket message (no await)
openticketUtils.updateTicketMessage(guild,channel,user,ticket)
//reply with new message
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:move-message").build(source,{guild,channel,user,ticket,reason,data})).message)
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:move-message").build(origin,{guild,channel,user,ticket,reason,data})).message)
ticket.get("opendiscord:busy").value = false
await opendiscord.events.get("afterTicketMoved").emit([ticket,user,channel,reason])
//update channel topic
await opendiscord.actions.get("opendiscord:update-ticket-topic").run("ticket-action",{guild,channel,user,ticket,sendMessage:false,newTopic:null})
}),
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,source,cancel) => {
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,reason,data} = params
//to logs
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.moving.logs){
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.moving.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"move",reason,additionalData:data}))
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,ticket,mode:"move",reason,additionalData:data}))
}
//to dm
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
if (creator && generalConfig.data.system.messages.moving.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"move",reason,additionalData:data}))
if (creator && generalConfig.data.logs.logMessages.moving.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,ticket,mode:"move",reason,additionalData:data}))
}),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,channel,user,ticket} = params
opendiscord.log(user.displayName+" moved a ticket!","info",[
@@ -210,7 +158,7 @@ export const registerActions = async () => {
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
{key:"reason",value:params.reason ?? "/"},
{key:"method",value:source}
{key:"method",value:origin}
])
})
])

Some files were not shown because too many files have changed in this diff Show More