Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
849c688e56 | ||
|
|
6babc5e4b8 | ||
|
|
4606ddac3c | ||
|
|
e6ab09dbbd | ||
|
|
39427cdbea | ||
|
|
adfcb1c82f | ||
|
|
6c994f6f86 | ||
|
|
4cfde9f5c4 | ||
|
|
fd1e0d6bdb | ||
|
|
e7475af694 | ||
|
|
9da066e99e | ||
|
|
45f15a2df6 | ||
|
|
58a6bcde45 | ||
|
|
eb44f41d3a | ||
|
|
66c5bc4565 | ||
|
|
22d4caf03e | ||
|
|
77dde68edc | ||
|
|
c8c8a94d6f | ||
|
|
6c41aecfa7 | ||
|
|
c64220cad4 | ||
|
|
7f02dd5848 | ||
|
|
c442e50cb4 | ||
|
|
4af9b9e17f | ||
|
|
98d13c6569 | ||
|
|
345a64f51a | ||
|
|
45080ccd96 | ||
|
|
87c034d215 | ||
|
|
1b2e38f524 | ||
|
|
8f780992aa | ||
|
|
a28bcd4f8b | ||
|
|
a0b3aff661 | ||
|
|
9ca375ee2c | ||
|
|
0f9ae79d49 | ||
|
|
dd8d5a12d6 | ||
|
|
afd7f80b8d | ||
|
|
ca5faa3365 | ||
|
|
cf9ddf58d0 | ||
|
|
15ff345948 | ||
|
|
0c45a0ad6a | ||
|
|
e6f6aa1af4 | ||
|
|
1a530aae4c | ||
|
|
67f4417ee6 | ||
|
|
b5e15921ef | ||
|
|
cb8afdf9a6 | ||
|
|
7030b7011c | ||
|
|
7dd8a57a83 | ||
|
|
5763659900 | ||
|
|
65334a8a25 | ||
|
|
4be54399a6 | ||
|
|
1f9fa54344 | ||
|
|
e4b4acfd9f | ||
|
|
6bfa0e0f10 | ||
|
|
4eb9331bf4 | ||
|
|
10f5ae9d44 | ||
|
|
27a9f04d83 | ||
|
|
600419f763 | ||
|
|
a18b19da66 | ||
|
|
230ef70d86 | ||
|
|
2d9a9b42d4 | ||
|
|
50c7fc5e90 | ||
|
|
fa8bc0eb6c | ||
|
|
f42b70d1b9 | ||
|
|
4c2a617a51 | ||
|
|
a1198866f3 | ||
|
|
fe3f2d04a9 | ||
|
|
cb8139b8a0 | ||
|
|
ddae7b5e46 | ||
|
|
32c9a6b4f3 | ||
|
|
0ad24ba89f | ||
|
|
5412416166 | ||
|
|
78a937d4e9 | ||
|
|
5b45dc265b | ||
|
|
4b210fe793 | ||
|
|
8891320bdf | ||
|
|
8ccfd5c4eb | ||
|
|
44074004e4 | ||
|
|
2f1c885b4f | ||
|
|
c94867280d | ||
|
|
138f7fa2bb | ||
|
|
465eda1c24 | ||
|
|
c821e7dd6d | ||
|
|
f9ce496cc5 | ||
|
|
3989fb5f76 | ||
|
|
779efca39a | ||
|
|
4976aa3d45 | ||
|
|
9cdff2c1de | ||
|
|
2e29947ba5 | ||
|
|
0aa3dca63b | ||
|
|
90851f881d | ||
|
|
b972c97871 | ||
|
|
db94f226fb | ||
|
|
6a4f40d862 | ||
|
|
1f402a848e | ||
|
|
24d98aeaeb | ||
|
|
b95b8f239e | ||
|
|
488b5fce53 | ||
|
|
c2117a67ed | ||
|
|
d31be1bb57 | ||
|
|
76095bea30 | ||
|
|
da962c6c2e | ||
|
|
a89d5c2149 | ||
|
|
7d5313c77e | ||
|
|
16f1be32a3 | ||
|
|
e1a6feea6e | ||
|
|
9668851a82 | ||
|
|
68d6a2df3f | ||
|
|
f835850b3f | ||
|
|
f7fa0998b6 | ||
|
|
4416736947 | ||
|
|
5494c1ad8f | ||
|
|
4147658575 | ||
|
|
f7cda48ed6 | ||
|
|
4b485adf82 | ||
|
|
e55438cc67 | ||
|
|
c7b44232c4 | ||
|
|
68a8170570 | ||
|
|
34ed4edede | ||
|
|
a40a9b8be8 | ||
|
|
e8f96ef84f | ||
|
|
8413d3c2b7 | ||
|
|
30b6ab4df6 | ||
|
|
2aef855902 | ||
|
|
4aacdd1607 | ||
|
|
d66925a450 | ||
|
|
d2cd6be513 | ||
|
|
30a0a6c503 | ||
|
|
72f84b2566 | ||
|
|
6ce017b407 | ||
|
|
415330be21 | ||
|
|
21ce2921a1 | ||
|
|
b07252151b | ||
|
|
02d37dd177 | ||
|
|
706006e319 | ||
|
|
82f2aeaa90 | ||
|
|
793c6f0603 | ||
|
|
1ef74f0b6b | ||
|
|
337dc3827e | ||
|
|
810db76e91 | ||
|
|
f4f6f30fa2 | ||
|
|
8436b19cbf | ||
|
|
549c161830 | ||
|
|
adc2433216 | ||
|
|
3b3c0aff96 | ||
|
|
ce6ca6fc09 | ||
|
|
e3bc985c0c | ||
|
|
ff8568fde7 | ||
|
|
8ec710fa55 | ||
|
|
076fcbcb37 | ||
|
|
6df3498cb5 | ||
|
|
8116d4d8dd | ||
|
|
e987c176b7 | ||
|
|
2ea38cd7a5 | ||
|
|
b2f2ef3405 | ||
|
|
c2e6f781b9 | ||
|
|
8dfd17ddde | ||
|
|
5f077e87f6 | ||
|
|
76dc3b1022 | ||
|
|
93ed56b4ae | ||
|
|
160f89c7cf | ||
|
|
51c4ae0229 | ||
|
|
2cc2ccc68e | ||
|
|
0a29e13640 | ||
|
|
31b94718f1 | ||
|
|
6ac993617e | ||
|
|
9f4999b89b | ||
|
|
dd3c159413 | ||
|
|
72627a7058 | ||
|
|
b683365126 | ||
|
|
03b3495eb2 | ||
|
|
a6be9df213 | ||
|
|
6b2f291122 | ||
|
|
af0dc879c6 | ||
|
|
a12f60136a | ||
|
|
1d05d04bf2 | ||
|
|
ff6a9eefaf | ||
|
|
aa9004d7e2 | ||
|
|
7e1fe78a26 | ||
|
|
675571b8d8 | ||
|
|
48f0d65fad | ||
|
|
a54422b222 | ||
|
|
c243d03216 | ||
|
|
b965a4f5a2 | ||
|
|
0d8dd8cd17 | ||
|
|
6ac432cadc | ||
|
|
dec6c7598b | ||
|
|
2de2e3cd9b | ||
|
|
f117943e00 | ||
|
|
951aff093a | ||
|
|
2acd185d6f | ||
|
|
2fbef46a53 | ||
|
|
5d0776a9b9 | ||
|
|
7bf843c851 | ||
|
|
3e3ea9263f | ||
|
|
bb5c3e9c8d | ||
|
|
8df13b0d36 | ||
|
|
b5dd7158df | ||
|
|
05919bb57e | ||
|
|
1d6572aa36 | ||
|
|
83080a6e4d | ||
|
|
35fdafb21d | ||
|
|
a0e03be103 | ||
|
|
d404f343e0 | ||
|
|
adf4acd443 | ||
|
|
94f32674cb | ||
|
|
e8eb52e00b | ||
|
|
4efa165949 | ||
|
|
4c3e4ef9a5 | ||
|
|
fd739054fd | ||
|
|
2d1724893e | ||
|
|
7696202dec | ||
|
|
e36c1992de | ||
|
|
e73c8e9b3b | ||
|
|
ad623f9650 | ||
|
|
515b7e1ffc | ||
|
|
605173e788 | ||
|
|
e129724c12 | ||
|
|
49504bc3de | ||
|
|
f414fd77fc | ||
|
|
5dcbcbfabc | ||
|
|
6ec228df53 | ||
|
|
1f3894141a | ||
|
|
9253377766 | ||
|
|
6355fb5562 | ||
|
|
442c201994 | ||
|
|
b61f9d4d5a | ||
|
|
129053b9f5 | ||
|
|
35a0511b97 | ||
|
|
bae221056c | ||
|
|
9c6e4ccde4 | ||
|
|
ac6845b4d4 | ||
|
|
30352b570a | ||
|
|
1fddad1e96 | ||
|
|
75770c84b2 | ||
|
|
2281d78896 | ||
|
|
37cc3b794e | ||
|
|
d545d21bb1 | ||
|
|
5f79ae909b | ||
|
|
831e120093 | ||
|
|
376fa23288 | ||
|
|
9414b96221 | ||
|
|
0befd2860e | ||
|
|
74d4ac24f2 | ||
|
|
364bf4f702 | ||
|
|
dd5b76f3d8 | ||
|
|
a02ba56e9a | ||
|
|
6d5bdc5dd4 | ||
|
|
51bfb1a367 | ||
|
|
d85d842046 | ||
|
|
53136e0e6c | ||
|
|
2031a82523 | ||
|
|
453c48fab5 | ||
|
|
fd3bc0e7b9 | ||
|
|
f316ae83e7 | ||
|
|
d2c5cf0fc1 | ||
|
|
45dfc18c1d | ||
|
|
d81b1e7be3 | ||
|
|
2a82bdebae | ||
|
|
c9e13b2471 | ||
|
|
cbeac2fda2 | ||
|
|
8b1dd7d27a | ||
|
|
9e7cd28c6a | ||
|
|
fabe11bfd1 | ||
|
|
79187b9995 | ||
|
|
a1251cf11c | ||
|
|
1bc8b2b401 | ||
|
|
ce727e52b0 | ||
|
|
30233df7b0 | ||
|
|
48d3296868 | ||
|
|
6b8ef26b4c | ||
|
|
9c992c3dbd | ||
|
|
6feb56c25c | ||
|
|
e29b6afd87 | ||
|
|
d35b7fca99 | ||
|
|
126fada990 | ||
|
|
bd4929f11b | ||
|
|
d28fcf40d7 | ||
|
|
bed4e2a56a | ||
|
|
ba3a35a343 | ||
|
|
1e159c9bab | ||
|
|
e7ad3dd50b | ||
|
|
177dee7468 | ||
|
|
0d40c23aa8 | ||
|
|
15eef95fdd | ||
|
|
c89e93d33d | ||
|
|
e6c413cdf5 | ||
|
|
b12556120c | ||
|
|
58674452d8 | ||
|
|
a2f9593d55 | ||
|
|
9702c4d97d | ||
|
|
f13777e5f3 | ||
|
|
9395e9af75 | ||
|
|
b2a5e65fe2 | ||
|
|
071c8f953c | ||
|
|
9a4e5e2175 | ||
|
|
4e709f2a0b | ||
|
|
27e3e78439 | ||
|
|
06e7919162 | ||
|
|
bf952e3ef7 | ||
|
|
a397b66c9e | ||
|
|
27f6e3a81f | ||
|
|
f2cefae37c | ||
|
|
6acbf74846 | ||
|
|
29f8e1452c | ||
|
|
ce242741cd | ||
|
|
ac587568d3 | ||
|
|
f5e78949d7 | ||
|
|
8e7fe4e502 | ||
|
|
e51cc54090 | ||
|
|
dc3515da10 | ||
|
|
c57f3397a4 | ||
|
|
686b45b0bd | ||
|
|
96d6758b4a | ||
|
|
52b49ec564 | ||
|
|
deebd2b758 | ||
|
|
ed9afffd70 | ||
|
|
91cad963e5 | ||
|
|
baa4e35878 | ||
|
|
f6c70fa62a | ||
|
|
58fb7b7512 | ||
|
|
5e1cfe7942 | ||
|
|
507d254556 | ||
|
|
43356fef05 | ||
|
|
bbae139c6b | ||
|
|
6516857866 | ||
|
|
213ec32225 | ||
|
|
04789d5426 | ||
|
|
0437af1507 | ||
|
|
73d188c5dc | ||
|
|
057a5fc6ae | ||
|
|
d35eb8f8bf | ||
|
|
19e5902320 | ||
|
|
66b0377a2b | ||
|
|
3bd308007c | ||
|
|
40bd873a33 | ||
|
|
09d9b2d265 | ||
|
|
7fb169789b | ||
|
|
1ab207b4eb | ||
|
|
5e5ac3e409 | ||
|
|
7809ffc5c6 | ||
|
|
9da823aa4b | ||
|
|
ff23b0e89e | ||
|
|
c3474fb017 | ||
|
|
03982f644e | ||
|
|
3a30152cb2 | ||
|
|
334c9dde21 | ||
|
|
b6985f9d28 | ||
|
|
7d30bf24d9 | ||
|
|
138378ac31 | ||
|
|
9a73ee0d01 | ||
|
|
f26e6f5e99 | ||
|
|
209041c1e5 | ||
|
|
499901fbf1 | ||
|
|
1a1a3f3b02 | ||
|
|
dd5374f84c | ||
|
|
02e8b7d0a1 | ||
|
|
ce0af7e1e9 | ||
|
|
e1fab310a4 | ||
|
|
0615235780 | ||
|
|
abd672dd3b | ||
|
|
f05d2d7d1b | ||
|
|
e65a092bc0 | ||
|
|
17e1902681 | ||
|
|
91657f7519 | ||
|
|
cfa692b356 | ||
|
|
0604e334ed | ||
|
|
e9d20c0a14 | ||
|
|
67465bfdf4 | ||
|
|
a66d3aad2d | ||
|
|
f2de7fc408 | ||
|
|
0cbf991090 | ||
|
|
72f7cbce26 | ||
|
|
05b4080ac5 | ||
|
|
7646b3fc35 | ||
|
|
bf13e15d56 | ||
|
|
f0183c319a | ||
|
|
c6e836455c | ||
|
|
8a6a8e527f | ||
|
|
4e7d45ea07 | ||
|
|
b7f5c7191d | ||
|
|
106cb0f718 | ||
|
|
0c2b688862 | ||
|
|
a037d76060 | ||
|
|
1e2321313f | ||
|
|
91ea12a6cc | ||
|
|
5d86269743 | ||
|
|
42ff447a94 | ||
|
|
7627c07b71 | ||
|
|
147ebc90da | ||
|
|
e8319cccea | ||
|
|
66ab30bf06 | ||
|
|
d0ef2a9873 | ||
|
|
3e928ed06e | ||
|
|
b22f7b2de7 | ||
|
|
6b36b1caf6 | ||
|
|
f8da68607d | ||
|
|
a31588f025 | ||
|
|
5a4b45aa3f | ||
|
|
92aa42fc7c | ||
|
|
4022ae49c2 | ||
|
|
319bbe318d | ||
|
|
970807d144 | ||
|
|
929f57721b | ||
|
|
3469e61065 | ||
|
|
3ddb03a569 | ||
|
|
3fa72e07d8 | ||
|
|
6423ed4b41 | ||
|
|
fc8a252e67 | ||
|
|
ca9fe0aa77 | ||
|
|
798ab8fab1 | ||
|
|
848c968483 | ||
|
|
330ea47ab9 | ||
|
|
4e10cba203 | ||
|
|
56e1fb3939 | ||
|
|
7c76be8473 | ||
|
|
7fa5dca7b3 | ||
|
|
6d3f210612 | ||
|
|
118161698e | ||
|
|
6a8a8dd34d | ||
|
|
28f0d974e5 | ||
|
|
77c486e2b7 | ||
|
|
20bf25aa98 | ||
|
|
70048fa399 | ||
|
|
8eae88b1c6 | ||
|
|
35b02e0a8f | ||
|
|
2a8e41005f | ||
|
|
85026793a4 | ||
|
|
55bcff8030 | ||
|
|
39099a0dfe | ||
|
|
504889a83d | ||
|
|
c1c80fc04d | ||
|
|
4e030bf95b | ||
|
|
adae64bab9 | ||
|
|
bfa05297b2 | ||
|
|
509e961446 | ||
|
|
147eae05b3 | ||
|
|
e410ceaa64 | ||
|
|
51e1ca6fa3 | ||
|
|
e67c505e32 | ||
|
|
12885f63d6 | ||
|
|
c49f577f7f | ||
|
|
d5295a9480 | ||
|
|
177ab95dba | ||
|
|
5e2e0417dc | ||
|
|
b3cd37bb4b | ||
|
|
5512bc1134 | ||
|
|
7dd9bf1ac0 | ||
|
|
cd7fb7533f | ||
|
|
8e730fdfae | ||
|
|
1dd8c0246a | ||
|
|
0a69efdfe5 | ||
|
|
9028eaa16a | ||
|
|
0c2aca7039 | ||
|
|
9326d0fae8 | ||
|
|
e1f4936ae6 | ||
|
|
fd3ae39150 | ||
|
|
1b0da061ba | ||
|
|
07eb8f34e9 | ||
|
|
64fef62bf5 | ||
|
|
b2be76f5b6 | ||
|
|
856ccc10b9 | ||
|
|
8c6681f025 | ||
|
|
cc21e28470 | ||
|
|
7815400472 | ||
|
|
fda8a397d6 | ||
|
|
ae306332bb | ||
|
|
bc46d4ab46 | ||
|
|
b0b4e21aff | ||
|
|
fb3764eefb | ||
|
|
d5efe06fe5 | ||
|
|
cdb2673217 | ||
|
|
6018a183fb | ||
|
|
73f9f4037f | ||
|
|
b5b537e85e | ||
|
|
6ebeb7a93c | ||
|
|
7584c25e93 | ||
|
|
94b3788cfb | ||
|
|
e7d9ad374e | ||
|
|
0e597232f0 | ||
|
|
acc89990c2 | ||
|
|
ee9f8eaca1 | ||
|
|
ae8a8d1b14 | ||
|
|
38afb9c2a6 | ||
|
|
5bdb7941b6 | ||
|
|
01c1f3150e | ||
|
|
e524cccd19 | ||
|
|
ede102bddf | ||
|
|
ab5d5c06be | ||
|
|
355f078ee5 | ||
|
|
c207560743 | ||
|
|
b29dfaeaae | ||
|
|
1710111fcb | ||
|
|
805c6b8e55 | ||
|
|
d0ab311da4 | ||
|
|
92a3671768 | ||
|
|
71074e1afe | ||
|
|
e80ce1a64a | ||
|
|
5dfbce1856 | ||
|
|
407e56a806 | ||
|
|
e0f42834e5 | ||
|
|
d03abd9eeb | ||
|
|
466a4aea81 | ||
|
|
9d96d11cd3 | ||
|
|
e3b99e656e | ||
|
|
07e2a68d06 | ||
|
|
795ca4f981 | ||
|
|
5231129278 | ||
|
|
f62bc7adf9 | ||
|
|
5de6b1e906 | ||
|
|
62413505d6 | ||
|
|
20b617f6eb | ||
|
|
94510bbfb0 | ||
|
|
d51511fdb5 | ||
|
|
3447a37603 | ||
|
|
4b17aa640f | ||
|
|
3b7674f1a5 | ||
|
|
7de9339da3 | ||
|
|
e2e1e19bc8 | ||
|
|
5f19adf561 | ||
|
|
1bb70745ea | ||
|
|
589bbe5cd5 | ||
|
|
447fddea56 | ||
|
|
bf7a003799 | ||
|
|
6115ab1cc8 | ||
|
|
c2307fd1ed | ||
|
|
2a3850c3cc | ||
|
|
688c40ce7b | ||
|
|
dee2a21be9 | ||
|
|
d7ae040d60 | ||
|
|
7b6202985a | ||
|
|
a2f2c601a5 | ||
|
|
b27016df2e | ||
|
|
6341f2f71b | ||
|
|
56a5b9c7d0 | ||
|
|
f608cb71ce | ||
|
|
7c7c325307 | ||
|
|
832021d72a | ||
|
|
030554a7f5 | ||
|
|
ada5ea0c5d | ||
|
|
fb6b891835 | ||
|
|
739ad81f3f | ||
|
|
a6f67a9452 | ||
|
|
56a6540663 | ||
|
|
5f8812d261 | ||
|
|
7a3dcf4c42 | ||
|
|
7cebd4dd6a | ||
|
|
27912a0c37 | ||
|
|
67871d885a | ||
|
|
1bd0d013ed | ||
|
|
a074a17519 | ||
|
|
67af96ef5c | ||
|
|
a041f28cf7 | ||
|
|
a8c9c2ea8d | ||
|
|
8748301b04 | ||
|
|
2d7a7b5728 | ||
|
|
0807ca884c | ||
|
|
0ead037fa8 | ||
|
|
4287c11bf1 | ||
|
|
69fdc7ccf0 | ||
|
|
6c213306b6 | ||
|
|
4096e8196d | ||
|
|
94ee890848 | ||
|
|
4dced819a3 | ||
|
|
1159af9fa9 | ||
|
|
67d429c52b | ||
|
|
f67af805c1 | ||
|
|
944032f690 | ||
|
|
ee248e86bc | ||
|
|
b171bce62b | ||
|
|
df0bce0189 | ||
|
|
2630aa899f | ||
|
|
dba370d66e | ||
|
|
d0bcf26b93 | ||
|
|
65f82171d3 | ||
|
|
6e730f058d | ||
|
|
4702c633ec | ||
|
|
dc14a39c4e | ||
|
|
05c97909d4 | ||
|
|
b3c4c2f6e8 | ||
|
|
e0e678bee0 | ||
|
|
1b01b1703f | ||
|
|
26539360c6 | ||
|
|
627c461f64 | ||
|
|
2e40dc0468 | ||
|
|
fa57b9a93f | ||
|
|
930452155b | ||
|
|
e70f22162d | ||
|
|
d5b0a0f3c6 | ||
|
|
c43081e05d | ||
|
|
8c4bf735f1 | ||
|
|
3a20c4707b | ||
|
|
9a7e563c57 | ||
|
|
72b4f43a25 | ||
|
|
5fec028cc9 | ||
|
|
81300303e5 | ||
|
|
8a1ea1c856 | ||
|
|
8a9d63bf8b | ||
|
|
208b365276 | ||
|
|
abb64a0575 | ||
|
|
c930140540 | ||
|
|
294c4d3f2b | ||
|
|
28e7d48e7e | ||
|
|
bad278e681 | ||
|
|
2e2542d064 | ||
|
|
2c48da45ae | ||
|
|
e1232a559e | ||
|
|
3d58475461 | ||
|
|
f702b199da | ||
|
|
ea1604a805 | ||
|
|
f8bc3d9e12 | ||
|
|
af35f83291 | ||
|
|
39fec94ead | ||
|
|
1b8468330e | ||
|
|
b698c89a89 | ||
|
|
7ed2d7bcc7 | ||
|
|
f2ddaa5fd4 | ||
|
|
fc50a8e83f | ||
|
|
5bece3357d | ||
|
|
97d1489558 | ||
|
|
a211cef1f6 | ||
|
|
ae002e168b | ||
|
|
86a5a1a2ca | ||
|
|
23ebc14b8b | ||
|
|
3a5768a1b1 | ||
|
|
33c3803ca8 | ||
|
|
f3613fb674 | ||
|
|
f1dc8cbcf5 | ||
|
|
a365c4b69f | ||
|
|
687372481a | ||
|
|
1bc8bde922 | ||
|
|
4b8074c520 | ||
|
|
1d5830975f | ||
|
|
95bc1f4fbf | ||
|
|
bfc02611c7 | ||
|
|
e4c1e2559e | ||
|
|
69b669956e | ||
|
|
893a7c5b1f | ||
|
|
ed9c98e2f0 | ||
|
|
62d950b1a6 | ||
|
|
69de612d1e | ||
|
|
5494e112c0 | ||
|
|
cd2c08303e | ||
|
|
a8619e448a | ||
|
|
c990257c02 | ||
|
|
e7f05b4ed5 | ||
|
|
697594b311 | ||
|
|
6823b96114 | ||
|
|
0845390569 | ||
|
|
568b2c9bee | ||
|
|
034247ea99 | ||
|
|
ad10a98f33 | ||
|
|
8aee358081 | ||
|
|
e2f237e7b6 | ||
|
|
210923d29e | ||
|
|
a69f2ee5a1 | ||
|
|
ffa075d177 | ||
|
|
e7a331b969 | ||
|
|
6b32fc9d5d | ||
|
|
7603dbcc47 | ||
|
|
512e564c60 | ||
|
|
5a731e6336 | ||
|
|
d02bf2b826 |
@@ -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/**
|
||||
@@ -0,0 +1,128 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
support@dj-dj.be.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
||||
@@ -0,0 +1,39 @@
|
||||
# 🎥 Content Creators
|
||||
Hi there! We're searching for content creators to create tutorials & setup guides for Open Ticket.
|
||||
You can get many great rewards from helping us!
|
||||
|
||||
You can choose which type of tutorial you want to make. You can create a quick setup, full setup, plugin tutorial or something else!
|
||||
You are not required to talk in the video, but make sure it has some kind of subtitles instead.
|
||||
|
||||
### 📄 Requirements
|
||||
- 📌 Video length of at least 2 minutes.
|
||||
- 📌 Provide a link to the Open Ticket repository in the description of the video.
|
||||
- 📌 Please use the latest version of Open Ticket available at the time of making the video.
|
||||
- 📌 **(Optional)** Recommended language is English.
|
||||
- 📌 **(Optional)** Recommended platform is YouTube!
|
||||
- 📌 **(Optional)** Speech in the video *(AI is allowed)*
|
||||
|
||||
|
||||
### 🎁 Rewards
|
||||
We won't give out any compensation in money, but we will give you some advantages!
|
||||
- ✅ Advertisement of tutorial in the [README.md](../README.md)!
|
||||
- ✅ Advertisement of channel in our [discord server](https://discord.dj-dj.be)!
|
||||
- ✅ `Content Creator` role in our [discord server](https://discord.dj-dj.be)!
|
||||
- ✅ Advertisement of tutorial & channel in documentation!
|
||||
- ✅ Lot's of of views generated from GitHub traffic!
|
||||
- ✅ A completely free 24/7 hosted Open Ticket bot!
|
||||
- ✅ We will advertise the video to all our socials!
|
||||
|
||||
### 💤 Outdated Content
|
||||
When a tutorial or setup guide is outdated or no longer applicable,
|
||||
we will remove it from the `README.md` & documentation.
|
||||
Your channel will still stay in the list of contributors, so don't worry about that!
|
||||
|
||||
You will be noticed at least a month before removal.
|
||||
This way you can take time to create an updated tutorial if you want.
|
||||
|
||||
### 💬 Contact Us
|
||||
If you've read all these guidelines, requirements & rewards,
|
||||
you can create a ticket in our [discord server](https://discord.dj-dj.be) to start working on it!
|
||||
|
||||
We will try to help you as fast as possible!
|
||||
@@ -0,0 +1,92 @@
|
||||
# Contributing Guidelines
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
|
||||
|
||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.2.0) [](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>
|
||||
This includes new features, translations & bug fixes.
|
||||
|
||||
### 💬 Translations
|
||||
#### Step 1: View & Check
|
||||
1. Check the [`./languages/`](./languages/) folder for existing translations.
|
||||
2. When it doesn't exist yet, visit **[step 2](#step-2-translation)**.
|
||||
3. When it does exist, check if it is outdated, incorrect or incomplete.
|
||||
4. If you match one of these requirements, you can also visit **[step 2](#step-2-translating)**.
|
||||
|
||||
#### Step 2: Translation
|
||||
1. If your language doesn't exist yet, copy the [`english.json`](./../languages/english.json) file and rename it to your language.
|
||||
2. **(❌ Not Recommended)** You are allowed to use `Google Translate` or `DeepL`, but only when you say it in the pull request and enable the `"automated"` boolean.
|
||||
3. Only translate existing values in the json file. Don't add or remove any values from the file.
|
||||
4. You're **NOT REQUIRED** to translate everything! If you only want to translate a part of it, it's okay!
|
||||
5. If you are unable to translate something, leave it in `English`.
|
||||
|
||||
#### Step 3: Metadata
|
||||
Metadata can be found in the `_TRANSLATION` variable.
|
||||
|Value |Notes |
|
||||
|--------------|-------------------------------------------------------------------------------------------------|
|
||||
|`otversion` |The Open Ticket version of this translation. **❌ DON'T EDIT!** |
|
||||
|`translators` |The discord usernames from the translators. Add your name to the list when you've contributed. |
|
||||
|`lastedited` |The last edited date in the `DD/MM/YYYY` format. |
|
||||
|`language` |The full name of the language with capital letter. |
|
||||
|`automated` |Enable this boolean when this translation has been made using ChatGPT, Google Translate, ... |
|
||||
|
||||
> #### ✅ You are also allowed to add your username to the [`README.md`](./../README.md) translator list!
|
||||
|
||||
#### Step 4: Uploading
|
||||
1. When adding a new language, please mention @DJj123dj. He will add the code required for the language to work.
|
||||
2. There are currently 3 ways of uploading translations:
|
||||
- Create a pull request to the [__`dev` branch!__](https://github.com/open-discord-bots/open-ticket/tree/dev)
|
||||
- Create a ticket in our [discord server](https://discord.dj-dj.be)!
|
||||
- Send a DM to @DJj123dj on discord!
|
||||
3. Now you'll need to wait until the next Open Ticket version for it to be added.
|
||||
|
||||
#### Step 5: Rewards
|
||||
Translators get some rewards for translating Open Ticket!
|
||||
- ✅ Credits in the [`README.md`](./../README.md) translator list!
|
||||
- ✅ Credits in the changelog!
|
||||
- ✅ Credits in the documentation!
|
||||
- ✅ Credits in the translation JSON file!
|
||||
- ✅ A special role in our [Discord server](https://discord.dj-dj.be)!
|
||||
|
||||
### 🧩 Plugins
|
||||
#### Step 1: Creating Plugins
|
||||
The documentation for creating plugins will be ready soon!<br>
|
||||
In the meantime, you can already look at existing plugins or try it at your own!
|
||||
|
||||
#### Step 2: Uploading Plugins
|
||||
Create a pull request in the [**`open-discord-plugins`**](https://odplugins.dj-dj.be/) repository or contact DJj123dj in our [Discord server](https://discord.dj-dj.be)!
|
||||
|
||||
### 📦 Features
|
||||
Feature requests are required to be made in one of the following ways:
|
||||
- ✅ In our [Discord server](https://discord.dj-dj.be)
|
||||
- ✅ Create an issue on GitHub
|
||||
- ✅ Message DJj123dj in DM on Discord
|
||||
- ✅ Email to support@dj-dj.be
|
||||
|
||||
> **We won't accept pull requests for features. Only for bugs, small fixes, translation and plugins!**
|
||||
|
||||
### 🕷️ Bug Fixes
|
||||
You are able to report bugs in one of the following ways:
|
||||
- ✅ In our [Discord server](https://discord.dj-dj.be)
|
||||
- ✅ Create an issue on GitHub
|
||||
- ✅ Message DJj123dj in DM on Discord
|
||||
- ✅ Email to support@dj-dj.be
|
||||
|
||||
📌 **If you want, you can also create a pull request to fix the bug yourself :)**
|
||||
|
||||
#### 🔴 Security Vulnerabilities
|
||||
If you've found a bug which could affect the **SECURITY OF THE BOT** or may be potentially dangerous to the users of the bot,
|
||||
you are **REQUIRED to send the bug privately via one of the following methods:**
|
||||
- 🔴 Message DJj123dj in DM on Discord
|
||||
- 🔴 Email to support@dj-dj.be
|
||||
|
||||
> ### Please try to always include the `otdebug.txt` file!
|
||||
|
||||
---
|
||||
<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) - [Website](https://openticket.dj-dj.be) - [Support Server](https://discord.dj-dj.be) - [License](./LICENSE.md)<br>
|
||||
|
||||
© 2021 - 2026 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
@@ -0,0 +1,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 |
@@ -0,0 +1 @@
|
||||
github: DJj123dj
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: Report bugs to help us improve Open Ticket!
|
||||
title: "Your Bug Name"
|
||||
---
|
||||
|
||||
### Bug Description:
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
### Steps To Reproduce:
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
> Leave empty when you are unable to reproduce the bug!
|
||||
|
||||
### Expected Behaviour:
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
### Screenshots:
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
### Files:
|
||||
Please include the `otdebug.txt` file in your report! With this file, we can take a deep-dive in to the error that happend.
|
||||
> This file doesn't contain any credentials or sensitive information!
|
||||
|
||||
### Additional Notes:
|
||||
Add any other context about the problem here.
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: Documentation
|
||||
about: Do you know anything to be improved in the Open Ticket documentation?
|
||||
title: "Documentation Improvement Name"
|
||||
labels: "Documentation"
|
||||
---
|
||||
|
||||
### Related Docs/Systems:
|
||||
Choose related systems/docs for this improvement/change:
|
||||
- [ ] Guides
|
||||
- [ ] Developer Guides
|
||||
- [ ] API Reference
|
||||
- [ ] Blog
|
||||
- [ ] System (Docusaurus & Javascript)
|
||||
- [ ] Assets (images)
|
||||
- [ ] Other
|
||||
|
||||
### Improvement Description:
|
||||
A clear and concise description of the improvement.
|
||||
|
||||
> Please explain it as detailed as possible!
|
||||
|
||||
### Screenshots:
|
||||
If applicable, add screenshots to help explain your request.
|
||||
|
||||
### Additional Notes:
|
||||
Add any other context about the request here.
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: Do you have a great idea for Open Ticket? Let us know using this issue!
|
||||
title: "Your Feature Name"
|
||||
labels: "Concept"
|
||||
---
|
||||
|
||||
### Feature Description:
|
||||
A clear and concise description of what the feature is.
|
||||
|
||||
### Affected Systems
|
||||
Systems which are affected, improved or modified:
|
||||
- (example) Slash command registration...
|
||||
- (example) API embed builders...
|
||||
- Scroll down to '....'
|
||||
- See error
|
||||
|
||||
> Leave empty when you don't know which parts this feature affects!
|
||||
|
||||
### Advantages & Use Cases:
|
||||
What advantages & use cases do you think this feature would result in?
|
||||
|
||||
### Screenshots:
|
||||
If applicable, add screenshots to help explain your feature request.
|
||||
|
||||
### Additional Notes:
|
||||
Add any other context about the request here.
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: HTML Transcripts
|
||||
about: Found a bug related to the HTML Transcripts? Or do you have a feature request?
|
||||
title: "Your Bug/Improvement Name"
|
||||
labels: "HTML Transcripts"
|
||||
---
|
||||
|
||||
### Feature/Bug Description:
|
||||
A clear and concise description of what the feature/bug report is.
|
||||
|
||||
### Screenshots:
|
||||
If applicable, add screenshots to help explain your feature request or bug report.
|
||||
|
||||
### Files:
|
||||
Please include the `otdebug.txt` file in your report! With this file, we can take a deep-dive in to the error that happend.
|
||||
> #### Include this file for bug reports!
|
||||
> This file doesn't contain any credentials or sensitive information!
|
||||
|
||||
### Additional Notes:
|
||||
Add any other context about the problem here.
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
name: New Language
|
||||
about: Do you want to add a new language to Open Ticket?
|
||||
title: "Language Name"
|
||||
labels: "New Translation"
|
||||
---
|
||||
|
||||
### Language Name
|
||||
The name of the new language.
|
||||
|
||||
### Language Description/Details:
|
||||
A clear and concise description of the translation/language.
|
||||
|
||||
### Checklist
|
||||
Before the language is fully implemented, the following checklist must be met:
|
||||
- [ ] **📌 Created a language file in the `./languages/` directory.**
|
||||
- [ ] **📌 The translation file uses the `<lowercase-language-name>.json` format.**
|
||||
- [ ] **📌 The `"_TRANSLATION"` metadata in the language file is correctly configured.**
|
||||
- [ ] The `"otversion"` is correct.
|
||||
- [ ] The `"translators"` list is up to date has the discord/github usernames from all translators.
|
||||
- [ ] The `"lastedited"` variable is the last edited date in the following format: `DD/MM/YYYY`.
|
||||
- [ ] The `"language"` variable is the name of the language in English.
|
||||
- [ ] `"automated"` is enabled when `Google Translate`, `DeepL`, `ChatGPT` or any other kind of translation tools were used.
|
||||
- [ ] **📌 The language has been added to the `README.md` list.**
|
||||
- [ ] **📌 The language counters have been updated in the `README.md`.**
|
||||
- [ ] **📌 The language has been added to the list in the `ODLanguageManagerIds_Default` interface in (`./src/core/api/defaults/language.ts`).**
|
||||
- [ ] **📌 The language has been added to the list in `./src/data/languageLoader.ts`.**
|
||||
|
||||
### Additional Notes:
|
||||
Add any other context about the problem here.
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Plugin Request
|
||||
about: Do you have an idea for an Open Ticket plugin?
|
||||
title: "Your Plugin Name"
|
||||
labels: "Plugin"
|
||||
---
|
||||
|
||||
### Plugin Description:
|
||||
A clear and concise description of what the plugin is & does.
|
||||
|
||||
> Please explain the plugin as detailed as possible!
|
||||
|
||||
### Advantages & Use Cases:
|
||||
What advantages & use cases do you think this plugin would result in?
|
||||
|
||||
### Screenshots:
|
||||
If applicable, add screenshots to help explain your plugin request.
|
||||
|
||||
### Additional Notes:
|
||||
Add any other context about the request here.
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
name: Question
|
||||
about: Do you have a question about Open Ticket?
|
||||
title: "My Question"
|
||||
labels: "Question"
|
||||
---
|
||||
|
||||
### Question:
|
||||
A clear and concise description of the question.
|
||||
|
||||
> Please explain the question as detailed as possible!
|
||||
|
||||
### Screenshots:
|
||||
If applicable, add screenshots to help explain your plugin request.
|
||||
|
||||
### Checklist:
|
||||
Before creating this question, the following checklist must be met:
|
||||
- [ ] **📌 I've read the docs (https://otdocs.dj-dj.be) and I didn't found the solution.**
|
||||
- [ ] **📌 I've asked other people & they didn't know the solution.**
|
||||
- [ ] **📌 The question is not related to the following subjects: (If so, ask it in our discord server: https://discord.dj-dj.be)**
|
||||
- Configuring the bot
|
||||
- Hosting the bot (24/7)
|
||||
- Updating the bot
|
||||
- [ ] **📌 I know that this issue is publicly visible for everyone and I haven't shared any private info.**
|
||||
|
||||
|
||||
### Additional Notes:
|
||||
Add any other context about the request here.
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
name: Updated Language
|
||||
about: Do you want to update/improve an existing language in Open Ticket?
|
||||
title: "Language Name"
|
||||
labels: "Updated Translation"
|
||||
---
|
||||
|
||||
### Language Name
|
||||
The name of the existing language.
|
||||
|
||||
### Language Description/Details:
|
||||
A clear and concise description of the translation/language changes.
|
||||
|
||||
### Checklist
|
||||
Before the language is updated, the following checklist must be met:
|
||||
- [ ] **📌 The `"_TRANSLATION"` metadata in the language file is correctly configured.**
|
||||
- [ ] The `"otversion"` is correct.
|
||||
- [ ] The `"translators"` list is up to date has the discord/github usernames from all translators.
|
||||
- [ ] The `"lastedited"` variable is the last edited date in the following format: `DD/MM/YYYY`.
|
||||
- [ ] The `"language"` variable is the name of the language in English.
|
||||
- [ ] `"automated"` is enabled when `Google Translate`, `DeepL`, `ChatGPT` or any other kind of translation tools were used.
|
||||
|
||||
### Additional Notes:
|
||||
Add any other context about the problem here.
|
||||
@@ -0,0 +1,52 @@
|
||||
# Security Policy
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
|
||||
|
||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.0.4) [](https://github.com/sponsors/DJj123dj)
|
||||
|
||||
This is the Security Policy of Open Ticket!<br>
|
||||
Here you can find a list of all supported & deprecated versions of the bot.<br>
|
||||
You will also find some guidelines about how to report vulnerabilities, bugs & errors.
|
||||
|
||||
### 📦 Supported Versions
|
||||
Below, you can find a list with the status of every Open Ticket version.<br>
|
||||
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 only)**
|
||||
- ❌ Fully Deprecated
|
||||
|
||||
| Version | Supported | Notes |
|
||||
|------------|-----------|---------------------------------------------------------------|
|
||||
| 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:
|
||||
- Create an issue on GitHub!
|
||||
- Create a ticket in our [discord server](https://discord.dj-dj.be)!
|
||||
- Message @DJj123dj in DM on discord!
|
||||
- Send an E-mail to [support@dj-dj.be](mailto:support@dj-dj.be)!
|
||||
|
||||
When you report a problem, please **give a small description** about what & how it happend.<br>
|
||||
Try to explain the issue in as much detail as possible.
|
||||
|
||||
If possible, try to provide screenshots!
|
||||
|
||||
### Please upload the `otdebug.txt` file together with your bug report!
|
||||
|
||||
---
|
||||
<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) - [Website](https://openticket.dj-dj.be) - [Support Server](https://discord.dj-dj.be) - [License](./LICENSE.md)<br>
|
||||
|
||||
© 2021 - 2026 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
@@ -0,0 +1,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 |
@@ -0,0 +1,53 @@
|
||||
# Pterodactyl Eggs
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="500px">
|
||||
|
||||
[](https://discord.com/invite/26vT9wt3n3)
|
||||
[](https://github.com/open-discord-bots/open-ticket/releases/tag/v4.2.0)
|
||||
[](https://github.com/sponsors/DJj123dj)
|
||||
[](.eggs/README.md)
|
||||
|
||||
|
||||
Hi there! Open Ticket provides **official eggs** for the Pterodactyl & Pelican panels!<br>
|
||||
There are different eggs for different versions of Open Ticket.
|
||||
Please choose the one that fits your needs the most.
|
||||
|
||||
If you encounter any issues while installing these eggs, please head to our [**discord server**](https://discord.dj-dj.be) for further assistance!
|
||||
|
||||
### Requirements
|
||||
It's recommended to provide at least `1GB` of **Memory/RAM** and `5GB` of **disk space** for Open Ticket to work correctly.
|
||||
|
||||
### Egg Variants
|
||||
[**`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-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.
|
||||
|
||||
[**`openticket-egg-dev.json` (Not Recommended)**](openticket-egg-dev.json)
|
||||
- This egg will use the `dev` branch of Open Ticket.
|
||||
|
||||
---
|
||||
<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) - [Website](https://openticket.dj-dj.be) - [Support Server](https://discord.dj-dj.be) - [License](./LICENSE.md)<br>
|
||||
|
||||
© 2021 - 2026 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2025-03-16T18:10:21+01:00",
|
||||
"name": "Open Ticket (Experimental)",
|
||||
"author": "support@dj-dj.be",
|
||||
"description": "This is the experimental Pterodactyl egg for Open Ticket, the most advanced & customisable discord ticket bot that you will ever find! DO NOT USE IN PRODUCTION!",
|
||||
"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 (dev)\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=\"dev\"\r\n\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"[OT INSTALLER] \/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \"[OT INSTALLER] .git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"[OT INSTALLER] loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"[OT INSTALLER] files found with no git config\"\r\n echo -e \"[OT INSTALLER] closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"https:\/\/github.com\/open-discord-bots\/open-ticket.git\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"[OT INSTALLER] \/mnt\/server is empty.\"\r\n echo -e \"[OT INSTALLER] cloning files into repo.\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"[OT INSTALLER] cloning default branch\"\r\n git clone https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n else\r\n echo -e \"[OT INSTALLER] cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n fi\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing Open Ticket node.js packages.\"\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --omit=dev\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing custom node.js packages.\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\necho -e \"[OT INSTALLER] install complete!\"\r\nexit 0",
|
||||
"container": "node:latest",
|
||||
"entrypoint": "bash"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Additional Npm Packages",
|
||||
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
|
||||
"env_variable": "NODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Startup Flags",
|
||||
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
|
||||
"env_variable": "NODE_FLAGS",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Uninstall Npm Packages",
|
||||
"description": "A list of npm packages to uninstall. Separate by spaces.",
|
||||
"env_variable": "UNNODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2025-03-16T18:10:20+01:00",
|
||||
"name": "Open Ticket (Latest)",
|
||||
"author": "support@dj-dj.be",
|
||||
"description": "This is the official Pterodactyl egg for Open Ticket, 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 (main)\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=\"main\"\r\n\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"[OT INSTALLER] \/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \"[OT INSTALLER] .git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"[OT INSTALLER] loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"[OT INSTALLER] files found with no git config\"\r\n echo -e \"[OT INSTALLER] closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"https:\/\/github.com\/open-discord-bots\/open-ticket.git\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"[OT INSTALLER] \/mnt\/server is empty.\"\r\n echo -e \"[OT INSTALLER] cloning files into repo.\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"[OT INSTALLER] cloning default branch\"\r\n git clone https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n else\r\n echo -e \"[OT INSTALLER] cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n fi\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing Open Ticket node.js packages.\"\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --omit=dev\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing custom node.js packages.\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\necho -e \"[OT INSTALLER] install complete!\"\r\nexit 0",
|
||||
"container": "node:latest",
|
||||
"entrypoint": "bash"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Additional Npm Packages",
|
||||
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
|
||||
"env_variable": "NODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Startup Flags",
|
||||
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
|
||||
"env_variable": "NODE_FLAGS",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Uninstall Npm Packages",
|
||||
"description": "A list of npm packages to uninstall. Separate by spaces.",
|
||||
"env_variable": "UNNODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2025-03-16T18:10:19+01:00",
|
||||
"name": "Open Ticket (v3.5.9)",
|
||||
"author": "support@dj-dj.be",
|
||||
"description": "This is the official Pterodactyl egg for Open Ticket v3.5.9, 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 (v3.5.9)\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=\"v3.5.9\"\r\n\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"[OT INSTALLER] \/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \"[OT INSTALLER] .git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"[OT INSTALLER] loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"[OT INSTALLER] files found with no git config\"\r\n echo -e \"[OT INSTALLER] closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"https:\/\/github.com\/open-discord-bots\/open-ticket.git\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"[OT INSTALLER] \/mnt\/server is empty.\"\r\n echo -e \"[OT INSTALLER] cloning files into repo.\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"[OT INSTALLER] cloning default branch\"\r\n git clone https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n else\r\n echo -e \"[OT INSTALLER] cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n fi\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing Open Ticket node.js packages.\"\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --omit=dev\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing custom node.js packages.\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\necho -e \"[OT INSTALLER] install complete!\"\r\nexit 0",
|
||||
"container": "node:latest",
|
||||
"entrypoint": "bash"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Additional Npm Packages",
|
||||
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
|
||||
"env_variable": "NODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Startup Flags",
|
||||
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
|
||||
"env_variable": "NODE_FLAGS",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Uninstall Npm Packages",
|
||||
"description": "A list of npm packages to uninstall. Separate by spaces.",
|
||||
"env_variable": "UNNODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2025-03-16T18:10:18+01:00",
|
||||
"name": "Open Ticket (v4.0.7)",
|
||||
"author": "support@dj-dj.be",
|
||||
"description": "This is the official Pterodactyl egg for Open Ticket v4.0.7, 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.7)\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.7\"\r\n\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"[OT INSTALLER] \/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \"[OT INSTALLER] .git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"[OT INSTALLER] loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"[OT INSTALLER] files found with no git config\"\r\n echo -e \"[OT INSTALLER] closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"https:\/\/github.com\/open-discord-bots\/open-ticket.git\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"[OT INSTALLER] \/mnt\/server is empty.\"\r\n echo -e \"[OT INSTALLER] cloning files into repo.\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"[OT INSTALLER] cloning default branch\"\r\n git clone https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n else\r\n echo -e \"[OT INSTALLER] cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n fi\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing Open Ticket node.js packages.\"\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --omit=dev\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing custom node.js packages.\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\necho -e \"[OT INSTALLER] install complete!\"\r\nexit 0",
|
||||
"container": "node:latest",
|
||||
"entrypoint": "bash"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Additional Npm Packages",
|
||||
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
|
||||
"env_variable": "NODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Startup Flags",
|
||||
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
|
||||
"env_variable": "NODE_FLAGS",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Uninstall Npm Packages",
|
||||
"description": "A list of npm packages to uninstall. Separate by spaces.",
|
||||
"env_variable": "UNNODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2025-03-16T18:10:18+01:00",
|
||||
"name": "Open Ticket (v4.1.0)",
|
||||
"author": "support@dj-dj.be",
|
||||
"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"
|
||||
},
|
||||
"file_denylist": [],
|
||||
"startup": "if [[ ! -z ${NODE_PACKAGES} ]]; then npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then npm install; fi; node \"\/home\/container\/index.js\" ${NODE_FLAGS};",
|
||||
"config": {
|
||||
"files": "{}",
|
||||
"startup": "{\r\n \"done\": \"STARTUP INFO:\"\r\n}",
|
||||
"logs": "{}",
|
||||
"stop": "^C"
|
||||
},
|
||||
"scripts": {
|
||||
"installation": {
|
||||
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.1.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"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Additional Npm Packages",
|
||||
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
|
||||
"env_variable": "NODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Startup Flags",
|
||||
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
|
||||
"env_variable": "NODE_FLAGS",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Uninstall Npm Packages",
|
||||
"description": "A list of npm packages to uninstall. Separate by spaces.",
|
||||
"env_variable": "UNNODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2025-03-16T18:10:18+01:00",
|
||||
"name": "Open Ticket (v4.1.1)",
|
||||
"author": "support@dj-dj.be",
|
||||
"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"
|
||||
},
|
||||
"file_denylist": [],
|
||||
"startup": "if [[ ! -z ${NODE_PACKAGES} ]]; then npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then npm install; fi; node \"\/home\/container\/index.js\" ${NODE_FLAGS};",
|
||||
"config": {
|
||||
"files": "{}",
|
||||
"startup": "{\r\n \"done\": \"STARTUP INFO:\"\r\n}",
|
||||
"logs": "{}",
|
||||
"stop": "^C"
|
||||
},
|
||||
"scripts": {
|
||||
"installation": {
|
||||
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.1.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"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Additional Npm Packages",
|
||||
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
|
||||
"env_variable": "NODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Startup Flags",
|
||||
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
|
||||
"env_variable": "NODE_FLAGS",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Uninstall Npm Packages",
|
||||
"description": "A list of npm packages to uninstall. Separate by spaces.",
|
||||
"env_variable": "UNNODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2025-03-16T18:10:18+01:00",
|
||||
"name": "Open Ticket (v4.1.2)",
|
||||
"author": "support@dj-dj.be",
|
||||
"description": "This is the official Pterodactyl egg for Open Ticket v4.1.2, the most advanced & customisable discord ticket bot that you will ever find! You can customise up to 300+ variables! This includes Html Transcripts, Advanced Plugins, Custom Embeds, Questions\/Modals, Stats & more!",
|
||||
"features": null,
|
||||
"docker_images": {
|
||||
"ghcr.io\/parkervcp\/yolks:nodejs_20": "ghcr.io\/parkervcp\/yolks:nodejs_20"
|
||||
},
|
||||
"file_denylist": [],
|
||||
"startup": "if [[ ! -z ${NODE_PACKAGES} ]]; then npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then npm install; fi; node \"\/home\/container\/index.js\" ${NODE_FLAGS};",
|
||||
"config": {
|
||||
"files": "{}",
|
||||
"startup": "{\r\n \"done\": \"STARTUP INFO:\"\r\n}",
|
||||
"logs": "{}",
|
||||
"stop": "^C"
|
||||
},
|
||||
"scripts": {
|
||||
"installation": {
|
||||
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.1.2)\r\n# Inspired by: Node.js Installation Script\r\n# \u00a9 DJdj Development\r\n\r\necho -e \"[OT INSTALLER] installing dependencies. please wait...\"\r\napt update\r\napt install -y git curl\r\n\r\necho -e \"[OT INSTALLER] updating npm. please wait...\"\r\nnpm install npm@latest --location=global\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBRANCH=\"v4.1.2\"\r\n\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"[OT INSTALLER] \/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \"[OT INSTALLER] .git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"[OT INSTALLER] loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"[OT INSTALLER] files found with no git config\"\r\n echo -e \"[OT INSTALLER] closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"https:\/\/github.com\/open-discord-bots\/open-ticket.git\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"[OT INSTALLER] \/mnt\/server is empty.\"\r\n echo -e \"[OT INSTALLER] cloning files into repo.\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"[OT INSTALLER] cloning default branch\"\r\n git clone https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n else\r\n echo -e \"[OT INSTALLER] cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n fi\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing Open Ticket node.js packages.\"\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --omit=dev\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing custom node.js packages.\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\necho -e \"[OT INSTALLER] install complete!\"\r\nexit 0",
|
||||
"container": "node:latest",
|
||||
"entrypoint": "bash"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Additional Npm Packages",
|
||||
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
|
||||
"env_variable": "NODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Startup Flags",
|
||||
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
|
||||
"env_variable": "NODE_FLAGS",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Uninstall Npm Packages",
|
||||
"description": "A list of npm packages to uninstall. Separate by spaces.",
|
||||
"env_variable": "UNNODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
||||
"meta": {
|
||||
"version": "PTDL_v2",
|
||||
"update_url": null
|
||||
},
|
||||
"exported_at": "2025-03-16T18:10:18+01:00",
|
||||
"name": "Open Ticket (v4.1.3)",
|
||||
"author": "support@dj-dj.be",
|
||||
"description": "This is the official Pterodactyl egg for Open Ticket v4.1.3, the most advanced & customisable discord ticket bot that you will ever find! You can customise up to 300+ variables! This includes Html Transcripts, Advanced Plugins, Custom Embeds, Questions\/Modals, Stats & more!",
|
||||
"features": null,
|
||||
"docker_images": {
|
||||
"ghcr.io\/parkervcp\/yolks:nodejs_20": "ghcr.io\/parkervcp\/yolks:nodejs_20"
|
||||
},
|
||||
"file_denylist": [],
|
||||
"startup": "if [[ ! -z ${NODE_PACKAGES} ]]; then npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then npm install; fi; node \"\/home\/container\/index.js\" ${NODE_FLAGS};",
|
||||
"config": {
|
||||
"files": "{}",
|
||||
"startup": "{\r\n \"done\": \"STARTUP INFO:\"\r\n}",
|
||||
"logs": "{}",
|
||||
"stop": "^C"
|
||||
},
|
||||
"scripts": {
|
||||
"installation": {
|
||||
"script": "#!\/bin\/bash\r\n# Open Ticket Installation Script (v4.1.3)\r\n# Inspired by: Node.js Installation Script\r\n# \u00a9 DJdj Development\r\n\r\necho -e \"[OT INSTALLER] installing dependencies. please wait...\"\r\napt update\r\napt install -y git curl\r\n\r\necho -e \"[OT INSTALLER] updating npm. please wait...\"\r\nnpm install npm@latest --location=global\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBRANCH=\"v4.1.3\"\r\n\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"[OT INSTALLER] \/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \"[OT INSTALLER] .git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"[OT INSTALLER] loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"[OT INSTALLER] files found with no git config\"\r\n echo -e \"[OT INSTALLER] closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"https:\/\/github.com\/open-discord-bots\/open-ticket.git\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"[OT INSTALLER] \/mnt\/server is empty.\"\r\n echo -e \"[OT INSTALLER] cloning files into repo.\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"[OT INSTALLER] cloning default branch\"\r\n git clone https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n else\r\n echo -e \"[OT INSTALLER] cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} https:\/\/github.com\/open-discord-bots\/open-ticket.git .\r\n fi\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing Open Ticket node.js packages.\"\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --omit=dev\r\nfi\r\n\r\necho -e \"[OT INSTALLER] installing custom node.js packages.\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\necho -e \"[OT INSTALLER] install complete!\"\r\nexit 0",
|
||||
"container": "node:latest",
|
||||
"entrypoint": "bash"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "Additional Npm Packages",
|
||||
"description": "Specify additional npm packages used by Open Ticket plugins. Use spaces to separate.",
|
||||
"env_variable": "NODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Startup Flags",
|
||||
"description": "Start the bot with additional Open Ticket flags. Separate using spaces.\r\nA full reference list can be found in the documentation.",
|
||||
"env_variable": "NODE_FLAGS",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
},
|
||||
{
|
||||
"name": "Uninstall Npm Packages",
|
||||
"description": "A list of npm packages to uninstall. Separate by spaces.",
|
||||
"env_variable": "UNNODE_PACKAGES",
|
||||
"default_value": "",
|
||||
"user_viewable": false,
|
||||
"user_editable": true,
|
||||
"rules": "string|nullable",
|
||||
"field_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
+23
-10
@@ -1,13 +1,26 @@
|
||||
node_modules/
|
||||
package-lock.json
|
||||
devConfig.json
|
||||
devConfig1.json
|
||||
devConfig2.json
|
||||
devConfig3.json
|
||||
devConfig4.json
|
||||
devConfig5.json
|
||||
.vscode/
|
||||
|
||||
devconfig/
|
||||
devdatabase/
|
||||
plugins/*
|
||||
!plugins/example-plugin/
|
||||
database/openticket.sqlite
|
||||
dist/
|
||||
|
||||
otdebug.txt
|
||||
|
||||
.DS_Store
|
||||
openticketdebug.txt
|
||||
developerChangelog.md
|
||||
storage/dynamicDB/
|
||||
storage/.DS_Store
|
||||
*/.DS_Store
|
||||
*/*/.DS_Store
|
||||
*/*/*/.DS_Store
|
||||
**/.DS_Store
|
||||
|
||||
.backup/*
|
||||
.tools/*
|
||||
!.tools/createSponsors.ts
|
||||
!.tools/createContributors.ts
|
||||
!.tools/mergeTranslations.ts
|
||||
!.tools/docker-compose.yml
|
||||
!.tools/build-docker.sh
|
||||
Executable
+37
@@ -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)"
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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:
|
||||
@@ -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
@@ -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"]
|
||||
+42
-3
@@ -1,7 +1,17 @@
|
||||
<!-- omit from toc -->
|
||||
# Open Ticket (License)
|
||||
© 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.
|
||||
|
||||
@@ -70,7 +80,7 @@ modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
1. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
@@ -671,4 +681,33 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
```
|
||||
|
||||
### 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 (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 (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.
|
||||
|
||||
These additional terms are an extension to the GNU GPL v3 and must be followed alongside the original license terms. In case of any conflict between these additional terms and the GNU GPL v3, the additional terms shall take precedence.
|
||||
@@ -1,81 +1,189 @@
|
||||
## We need translators!
|
||||
If you know a language that isn't already in open ticket and you can write json,
|
||||
then is this the job for you!
|
||||
<p align="center">
|
||||
<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.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>
|
||||
<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=".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>
|
||||
|
||||
make a ticket in our server to start!
|
||||
<p align="center">
|
||||
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>
|
||||
|
||||
*if you translate, you will come in the credits*
|
||||
<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>
|
||||
|
||||
# open-ticket
|
||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v2.4.0) [](#packages) [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE)
|
||||
---
|
||||
> **[-> 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)**
|
||||
|
||||
This is an open-source discord ticket bot, you can configure it and it comes with cool features like transcripts & custom options!
|
||||
### 📌 Features
|
||||
#### 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.
|
||||
|
||||
<img src="logo.png" alt="Open Ticket logo" style="height: 200px; width:200px;"/>
|
||||
#### 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.
|
||||
|
||||
[](https://www.github.com/DJj123dj/open-ticket/wiki)
|
||||
#### 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.
|
||||
|
||||
### Thanks to these people:
|
||||
- DJ-Lite: for doing the administration
|
||||
- Sanke: for translation & new ideas
|
||||
- ExothDE: for translation
|
||||
- 1x1: for translation
|
||||
- R0JO: for translation
|
||||
- Everyone that reported a bug
|
||||
#### 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.
|
||||
|
||||
## features
|
||||
- discord buttons
|
||||
- slash & text commands
|
||||
- close, delete & re-open tickets
|
||||
- translation (we are searching for translators!)
|
||||
- dynamic database system
|
||||
- advanced transcripts
|
||||
- add/remove users from a ticket
|
||||
- large embed customisation
|
||||
- create custom ticket names, icons & colors
|
||||
- create url's & reaction roles!
|
||||
- uses discord.js v13
|
||||
- configure your own ticket options
|
||||
- remove credits if you want (don't do it please 😉)
|
||||
- unlimited tickets at the same time
|
||||
#### 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.
|
||||
|
||||
## installation
|
||||
**You need `node.js 16` to run this project!**
|
||||
#### 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.
|
||||
|
||||
**At this moment you still need discord.js v13!**
|
||||
This will change soon!
|
||||
#### 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.
|
||||
|
||||
You can clone or download this project.
|
||||
## ⏱️ 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 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)
|
||||
>
|
||||
> #### 🚦 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.
|
||||
|
||||
### packages
|
||||
- chalk => version `latest`
|
||||
- discord.js => version `latest`
|
||||
- express => version `latest`
|
||||
- node-localstorage => version `latest`
|
||||
## 📸 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">
|
||||
|
||||
You can install all of them by running `npm install`
|
||||
## 💬 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
|
||||
|
||||
## running
|
||||
you can run `node index.js` but i would recommend you to use `npm start`
|
||||
|🔍 |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) -->
|
||||
|
||||
if there are any errors, you can open an **issue on github** or **contact me in the discord server**.
|
||||
## 😎 Hall Of Fame
|
||||
<img alt="The full list of contributors for Open Ticket and Open Discord." src=".github/CONTRIBUTORS.svg">
|
||||
|
||||
### config
|
||||
Our config documentation is moved to another file:
|
||||
[click here to view](https://www.github.com/DJj123dj/open-ticket/wiki/config-v2.4.0)
|
||||
## ⭐️ Star History
|
||||
If you enjoy using Open ticket, **consider starring** our repository.
|
||||
This will help us grow and reach even more people!
|
||||
|
||||
### intents & permissions
|
||||
In the discord developer portal in the "bot" panel you will find 3 switches under the title "Gateaway Intents". The following switches should always be turned on
|
||||
- `SERVER MEMBERS INTENT`
|
||||
- `MESSAGE CONTENT INTENT`
|
||||
<a href="https://star-history.com/#open-discord-bots/open-ticket&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=open-discord-bots/open-ticket&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=open-discord-bots/open-ticket&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=open-discord-bots/open-ticket&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
To work the best, the bot needs `ADMINISTRATOR` permissions.
|
||||
You can also configure your own permissions
|
||||
---
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="170px">
|
||||
|
||||
## information
|
||||
**README.md**<br>
|
||||
[Changelog](https://otgithub.dj-dj.be/releases) - [Documentation](https://otdocs.dj-dj.be) - [Website](https://openticket.dj-dj.be) - [Support Server](https://discord.dj-dj.be) - [License](./LICENSE.md)<br>
|
||||
|
||||
_v2.4.0 stable_
|
||||
|
||||
changelog: [click here](https://www.github.com/DJj123dj/open-ticket/wiki/Changelog)
|
||||
|
||||
© 2022 - DJdj Development | [website](https://www.dj-dj.be) | [discord](https://discord.com/invite/26vT9wt3n3)
|
||||
© 2021 - 2026 - [DJdj Development](https://www.dj-dj.be) - [Terms](https://www.dj-dj.be/terms) - [Privacy Policy](https://www.dj-dj.be/privacy) - [Support Us](https://github.com/sponsors/DJj123dj)
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
client.on("messageCreate",msg => {
|
||||
if (!msg.content.startsWith(config.prefix+"add")) return
|
||||
var user = msg.mentions.users.first()
|
||||
if (!user) return msg.channel.send({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<user>`:\n`"+config.prefix+"add <user>`")]})
|
||||
|
||||
if (!msg.member.permissions.has("ManageChannels") && !msg.member.permissions.has("Administrator") && config.main_adminroles.some((item)=>{return msg.member.roles.cache.has(item)}) == false){
|
||||
try {
|
||||
return msg.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return msg.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
|
||||
msg.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
msg.channel.permissionOverwrites.create(user.id, { VIEW_CHANNEL:true, ADD_REACTIONS:true,ATTACH_FILES:true, EMBED_LINKS:true, SEND_MESSAGES:true})
|
||||
msg.channel.send({embeds:[bot.errorLog.success(l.commands.userAddedTitle,l.commands.userAddedDescription.replace("{0}",user.tag))]})
|
||||
|
||||
var loguser = msg.mentions.users.first()
|
||||
log("command","someone used the 'add' command",[{key:"user",value:msg.author.tag}])
|
||||
log("system","user added to ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"added_user",value:loguser.tag}])
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "add") return
|
||||
const user = interaction.options.getUser("user")
|
||||
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
interaction.reply({embeds:[bot.errorLog.noPermsMessage],ephemeral:true})
|
||||
return
|
||||
}
|
||||
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
interaction.channel.permissionOverwrites.create(user.id, { VIEW_CHANNEL:true, ADD_REACTIONS:true,ATTACH_FILES:true, EMBED_LINKS:true, SEND_MESSAGES:true})
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.commands.userAddedTitle,l.commands.userAddedDescription.replace("{0}",user.tag))]})
|
||||
|
||||
var loguser = user
|
||||
log("command","someone used the 'add' command",[{key:"user",value:interaction.user.tag}])
|
||||
log("system","user added to ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"added_user",value:loguser.tag}])
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
client.on("messageCreate",msg => {
|
||||
if (!msg.content.startsWith(config.prefix+"close")) return
|
||||
|
||||
|
||||
msg.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
const closebutton = new discord.ActionRowBuilder()
|
||||
.addComponents([
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicketTrue1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("🔒")
|
||||
])
|
||||
|
||||
msg.channel.send({embeds:[bot.errorLog.success(l.commands.closeTitle,l.commands.closeDescription)],components:[closebutton]})
|
||||
|
||||
log("command","someone used the 'close' command",[{key:"user",value:msg.author.tag}])
|
||||
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "close") return
|
||||
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
const closebutton = new discord.ActionRowBuilder()
|
||||
.addComponents([
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicketTrue1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("🔒")
|
||||
])
|
||||
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.commands.closeTitle,l.commands.closeDescription)],components:[closebutton]})
|
||||
|
||||
log("command","someone used the 'close' command",[{key:"user",value:interaction.user.tag}])
|
||||
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
client.on("messageCreate",msg => {
|
||||
if (!msg.content.startsWith(config.prefix+"delete")) return
|
||||
|
||||
if (!msg.member.permissions.has("ManageChannels") && !msg.member.permissions.has("Administrator") && config.main_adminroles.some((item)=>{return msg.member.roles.cache.has(item)}) == false){
|
||||
try {
|
||||
return msg.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return msg.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
|
||||
msg.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
const closebutton = new discord.ActionRowBuilder()
|
||||
.addComponents([
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketTrue")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
])
|
||||
|
||||
msg.channel.send({embeds:[bot.errorLog.success(l.commands.deleteTitle,l.commands.deleteDescription)],components:[closebutton]})
|
||||
|
||||
log("command","someone used the 'delete' command",[{key:"user",value:msg.author.tag}])
|
||||
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "delete") return
|
||||
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
interaction.reply({embeds:[bot.errorLog.noPermsMessage],ephemeral:true})
|
||||
return
|
||||
}
|
||||
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
const closebutton = new discord.ActionRowBuilder()
|
||||
.addComponents([
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketTrue")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
])
|
||||
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.commands.deleteTitle,l.commands.deleteDescription)],components:[closebutton]})
|
||||
|
||||
log("command","someone used the 'close' command",[{key:"user",value:interaction.user.tag}])
|
||||
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
const helpEmbed = new discord.EmbedBuilder()
|
||||
.setColor(config.main_color)
|
||||
.setTitle(l.helpMenu.title)
|
||||
|
||||
const prefix = config.prefix
|
||||
const header = config.system.ticket_channel ? l.helpMenu.header1.replace("{0}","<#"+config.system.ticket_channel+">") : l.helpMenu.header2
|
||||
helpEmbed.setDescription(header+"`"+prefix+"msg <id>` ➜ _"+l.helpMenu.msgCmd+"_\n\n`"+prefix+"rename <name>` ➜ _"+l.helpMenu.renameCmd+"_\n`"+prefix+"close` ➜ _"+l.helpMenu.closeCmd+"_\n`"+prefix+"delete` ➜ _"+l.helpMenu.deleteCmd+"_\n`"+prefix+"reopen` ➜ _"+l.helpMenu.reopenCmd+"_\n\n`"+prefix+"add <user>` ➜ _"+l.helpMenu.addCmd+"_\n`"+prefix+"remove <user>` ➜ _"+l.helpMenu.removeCmd+"_`")
|
||||
|
||||
if (config.credits) helpEmbed.setFooter({text:"Open-Ticket by DJdj Development | view on github for source code",iconURL:"https://raw.githubusercontent.com/DJj123dj/open-ticket/main/logo.png"})
|
||||
|
||||
|
||||
client.on("messageCreate",msg => {
|
||||
if (!msg.content.startsWith(config.prefix)) return
|
||||
var args = msg.content.split(config.prefix)
|
||||
|
||||
if (!args[1]){
|
||||
msg.channel.send({embeds:[helpEmbed]})
|
||||
log("command","someone used the 'help' command",[{key:"user",value:msg.author.tag}])
|
||||
return
|
||||
}
|
||||
|
||||
if (!args[1].startsWith("close") && !args[1].startsWith("delete") && !args[1].startsWith("remove") && !args[1].startsWith("add") && !args[1].startsWith("msg") && !args[1].startsWith("remove") && !args[1].startsWith("rename") && !args[1].startsWith("reopen")){
|
||||
|
||||
msg.channel.send({embeds:[helpEmbed]})
|
||||
log("command","someone used the 'help' command",[{key:"user",value:msg.author.tag}])
|
||||
}
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "help") return
|
||||
|
||||
interaction.reply({embeds:[helpEmbed]})
|
||||
log("command","someone used the 'help' command",[{key:"user",value:interaction.user.tag}])
|
||||
})
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
client.on("messageCreate",msg => {
|
||||
if (!msg.content.startsWith(config.prefix+"remove")) return
|
||||
var user = msg.mentions.users.first()
|
||||
if (!user) return msg.channel.send({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<user>`:\n`"+config.prefix+"remove <user>`")]})
|
||||
|
||||
if (!msg.member.permissions.has("ManageChannels") && !msg.member.permissions.has("Administrator") && config.main_adminroles.some((item)=>{return msg.member.roles.cache.has(item)}) == false){
|
||||
try {
|
||||
return msg.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return msg.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
|
||||
msg.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
msg.channel.permissionOverwrites.delete(user.id)
|
||||
msg.channel.send({embeds:[bot.errorLog.success(l.commands.userRemovedTitle,l.commands.userRemovedDescription.replace("{0}",user.tag))]})
|
||||
|
||||
var loguser = msg.mentions.users.first()
|
||||
|
||||
log("command","someone used the 'remove' command",[{key:"user",value:msg.author.tag}])
|
||||
log("system","user removed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"removed_user",value:loguser.tag}])
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "remove") return
|
||||
const user = interaction.options.getUser("user")
|
||||
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
interaction.reply({embeds:[bot.errorLog.noPermsMessage],ephemeral:true})
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
interaction.channel.permissionOverwrites.delete(user.id)
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.commands.userRemovedTitle,l.commands.userRemovedDescription.replace("{0}",user.tag))]})
|
||||
|
||||
var loguser = user
|
||||
|
||||
log("command","someone used the 'remove' command",[{key:"user",value:interaction.user.tag}])
|
||||
log("system","user removed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"removed_user",value:loguser.tag}])
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
client.on("messageCreate",msg => {
|
||||
if (!msg.content.startsWith(config.prefix+"rename")) return
|
||||
|
||||
msg.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
if (!msg.member.permissions.has("ManageChannels") && !msg.member.permissions.has("Administrator") && config.main_adminroles.some((item)=>{return msg.member.roles.cache.has(item)}) == false){
|
||||
try {
|
||||
return msg.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return msg.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
|
||||
var newname = msg.content.split(config.prefix+"rename")[1].substring(1)
|
||||
|
||||
if (!newname) return msg.channel.send({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<name>`:\n`"+config.prefix+"rename <name>`")]})
|
||||
|
||||
var name = msg.channel.name
|
||||
var prefix = ""
|
||||
const tickets = config.options
|
||||
tickets.forEach((ticket) => {
|
||||
if (name.startsWith(ticket.channelprefix)){
|
||||
prefix = ticket.channelprefix
|
||||
}
|
||||
})
|
||||
|
||||
if (!prefix) prefix = "noprefix-"
|
||||
|
||||
msg.channel.setName(prefix+newname)
|
||||
msg.channel.send({embeds:[bot.errorLog.success(l.commands.renameTitle,l.commands.renameWarning)]})
|
||||
|
||||
log("command","someone used the 'rename' command",[{key:"user",value:msg.author.tag}])
|
||||
log("system","ticket renamed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newname",value:newname}])
|
||||
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "rename") return
|
||||
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id)return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
interaction.reply({embeds:[bot.errorLog.noPermsMessage],ephemeral:true})
|
||||
return
|
||||
}
|
||||
|
||||
var newname = interaction.options.getString("name")
|
||||
var name = interaction.channel.name
|
||||
var prefix = ""
|
||||
const tickets = config.options
|
||||
tickets.forEach((ticket) => {
|
||||
if (name.startsWith(ticket.channelprefix)){
|
||||
prefix = ticket.channelprefix
|
||||
}
|
||||
})
|
||||
|
||||
if (!prefix) prefix = "noprefix-"
|
||||
|
||||
interaction.channel.setName(prefix+newname)
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.commands.renameTitle,l.commands.renameWarning)]})
|
||||
|
||||
log("command","someone used the 'rename' command",[{key:"user",value:interaction.user.tag}])
|
||||
log("system","ticket renamed",[{key:"user",value:interaction.user.tag},{key:"ticket",value:name},{key:"newname",value:newname}])
|
||||
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
var reopenCommandBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("🔓")
|
||||
)
|
||||
|
||||
client.on("messageCreate",msg => {
|
||||
if (!msg.content.startsWith(config.prefix+"reopen")) return
|
||||
|
||||
msg.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
msg.channel.send({embeds:[bot.errorLog.success(l.commands.reopenTitle,l.commands.reopenDescription)],components:[reopenCommandBar]})
|
||||
|
||||
|
||||
log("command","someone used the 'reopen' command",[{key:"user",value:msg.author.tag}])
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "reopen") return
|
||||
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.commands.reopenTitle,l.commands.reopenDescription)],components:[reopenCommandBar]})
|
||||
|
||||
|
||||
log("command","someone used the 'reopen' command",[{key:"user",value:interaction.user.tag}])
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
|
||||
module.exports = () => {
|
||||
/**@type {String[]} */
|
||||
var msgIds = []
|
||||
config.messages.forEach((msg) => {
|
||||
msgIds.push(msg.id)
|
||||
})
|
||||
|
||||
|
||||
client.on("messageCreate", msg => {
|
||||
if (msg.content.startsWith(config.prefix+"msg"||config.prefix+"message")){
|
||||
|
||||
if (!msg.member.permissions.has("ManageChannels") && !msg.member.permissions.has("Administrator") && config.main_adminroles.some((item)=>{return msg.member.roles.cache.has(item)}) == false){
|
||||
try {
|
||||
return msg.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return msg.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
|
||||
const id = msg.content.split(config.prefix+"msg")[1].substring(1) ? msg.content.split(config.prefix+"msg")[1].substring(1) : false
|
||||
|
||||
if (!id) return msg.channel.send({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<id>`:\n`"+config.prefix+"msg <id>`")]})
|
||||
if (!msgIds.includes(id)) return msg.channel.send({embeds:[bot.errorLog.invalidIdChooseFromList(msgIds)]})
|
||||
|
||||
|
||||
const {embed,componentRows} = require("../core/ticketMessageEmbed").createEmbed(id)
|
||||
|
||||
msg.channel.send({embeds:[embed],components:componentRows})
|
||||
|
||||
log("command","someone used the 'msg' command",[{key:"user",value:msg.author.tag},{key:"id",value:id}])
|
||||
}
|
||||
})
|
||||
|
||||
client.on("interactionCreate", (interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "message") return
|
||||
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
interaction.reply({embeds:[bot.errorLog.noPermsMessage],ephemeral:true})
|
||||
return
|
||||
}
|
||||
|
||||
const id = interaction.options.getString("id")
|
||||
|
||||
if (!msgIds.includes(id)) return interaction.reply({embeds:[bot.errorLog.invalidIdChooseFromList(msgIds)]})
|
||||
|
||||
const {embed,componentRows} = require("../core/ticketMessageEmbed").createEmbed(id)
|
||||
|
||||
interaction.reply({content:l.commands.ticketWarning})
|
||||
interaction.channel.send({embeds:[embed],components:componentRows})
|
||||
|
||||
log("command","someone used the 'msg' command",[{key:"user",value:interaction.user.tag},{key:"id",value:id}])
|
||||
|
||||
})
|
||||
}
|
||||
-91
@@ -1,91 +0,0 @@
|
||||
{
|
||||
"bot_name":"Wumpus",
|
||||
"main_color":"#ffffff",
|
||||
"server_id":"server id (for slash cmds)",
|
||||
"auth_token":"auth token",
|
||||
"main_adminroles":["discord role id"],
|
||||
"prefix":"!ticket ",
|
||||
"languagefile":"english",
|
||||
|
||||
"credits":true,
|
||||
"status":{
|
||||
"enabled":true,
|
||||
"type":"PLAYING",
|
||||
"text":"!ticket help"
|
||||
},
|
||||
|
||||
"system":{
|
||||
"ticket_channel":"channel id",
|
||||
"max_allowed_tickets":3,
|
||||
"enable_DM_Messages":true,
|
||||
|
||||
"has@everyoneaccess":false,
|
||||
"member_role":"member role (doesn't have access to tickets)",
|
||||
"closeMode":"adminonly|normal",
|
||||
|
||||
"enable_transcript":false,
|
||||
"enable_DM_transcript":false,
|
||||
"transcript_channel":"channel id"
|
||||
},
|
||||
|
||||
"options":[
|
||||
{
|
||||
"id":"general",
|
||||
"name":"Question",
|
||||
"description":"Create this ticket if you have a question.",
|
||||
"icon":"🎫",
|
||||
"label":"question",
|
||||
"type":"ticket",
|
||||
|
||||
"color":"gray",
|
||||
"adminroles":["role id"],
|
||||
"channelprefix":"question-",
|
||||
"category":"category id",
|
||||
"message":"You created a ticket!",
|
||||
"enableDMMessage":true,
|
||||
"ticketmessage":"The staff will help you soon!\n\n*Click on the button below to close the ticket!*"
|
||||
|
||||
},
|
||||
{
|
||||
"id":"website",
|
||||
"name":"Website",
|
||||
"description":"Go to our website.",
|
||||
"icon":"✅",
|
||||
"label":"click here",
|
||||
"type":"website",
|
||||
|
||||
"url":"https://www.dj-dj.be"
|
||||
|
||||
},
|
||||
{
|
||||
"id":"role",
|
||||
"name":"Verify",
|
||||
"description":"Click here to get the verify role.",
|
||||
"icon":"👮🏼",
|
||||
"label":"get a role",
|
||||
"type":"role",
|
||||
|
||||
"color":"red",
|
||||
"roles":["discord role id"],
|
||||
"mode":"add&remove|remove|add",
|
||||
"enableDMMessage":true
|
||||
|
||||
}
|
||||
],
|
||||
|
||||
"messages":[
|
||||
{
|
||||
"id":"1",
|
||||
"name":"Choose Your Ticket",
|
||||
"description":"You can click one of the buttons below!",
|
||||
"enableFooter":false,
|
||||
"footer":"Open Ticket v2.4.0 - I'm a footer!",
|
||||
"enableThumbnail":false,
|
||||
"thumbnail":"https://www.example.com/catmemes/cat.png",
|
||||
"color":"#ffffff",
|
||||
"options":["general","apply"],
|
||||
"enableTicketExplaination":true,
|
||||
"enableMaxTicketsWarning":true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -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."
|
||||
}
|
||||
]
|
||||
@@ -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,56 +0,0 @@
|
||||
# OT-API Documentation
|
||||
Extend open ticket with your own features!
|
||||
|
||||
The api is made for EXTENDING open ticket, not replacing! So with this api you are not able to replace existing features! You can only add your own features!
|
||||
|
||||
### DISCLAIMER:
|
||||
Only edit or extend the code when you know what you are doing!
|
||||
|
||||
If open ticket crashes while you change the code, then we can't help you!
|
||||
|
||||
**DO IT ON YOUR OWN RISK!**
|
||||
|
||||
## Events:
|
||||
Everything in the `events.js` file!
|
||||
|
||||
### onTicketOpen(...)
|
||||
This function is executed when a new ticket is created. It happens after everything else is done, so the channel is already created!
|
||||
|
||||
Parameters:
|
||||
- user: `discord.User`
|
||||
- channel: `discord.TextChannel`
|
||||
- guild: `discord.Guild`
|
||||
- date: `Date`
|
||||
- ticketdata: `OT TicketData` or `false` (more info further down this document)
|
||||
|
||||
### onTicketClose(...)
|
||||
This function is executed when a ticket gets closed, it can happen multiple times with one ticket (because of reopen).
|
||||
|
||||
Parameters:
|
||||
- user: `discord.User`
|
||||
- channel: `discord.TextChannel`
|
||||
- guild: `discord.Guild`
|
||||
- date: `Date`
|
||||
- ticketdata: `OT TicketData` or `false` (more info further down this document)
|
||||
|
||||
### onTicketDelete(...)
|
||||
This function is executed when a ticket gets deleted, it can happen only 1 time.
|
||||
|
||||
Parameters:
|
||||
- user: `discord.User`
|
||||
- channel: `discord.TextChannel`
|
||||
- guild: `discord.Guild`
|
||||
- date: `Date`
|
||||
- ticketdata: `OT TicketData` or `false` (more info further down this document)
|
||||
|
||||
### onTicketReopen(...)
|
||||
...
|
||||
|
||||
### onTranscriptCreation(...)
|
||||
...
|
||||
|
||||
### onCommand(...)
|
||||
...
|
||||
|
||||
### onReactionRole(...)
|
||||
...
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"version":"1.0.0"
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require("../../../index")
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
const storage = bot.storage
|
||||
|
||||
/** FOR DEVELOPERS ONLY!!
|
||||
* Don't change anything in this file, read the api documentation first!
|
||||
* look into "api docs.md" for the docs!
|
||||
*/
|
||||
|
||||
//used when creating plugins!
|
||||
exports.enableApiLogs = false
|
||||
|
||||
//this is used when embedding open ticket into another bot
|
||||
exports.embeddedMode = false
|
||||
exports.clientLocation = require("../../../index").client
|
||||
|
||||
/** !! WARNING !!
|
||||
* Only edit or extend the code when you know what you are doing!
|
||||
* If open ticket crashes while you change the code, then we can't help you!
|
||||
*
|
||||
* DO IT ON YOUR OWN RISK!
|
||||
*/
|
||||
@@ -1,9 +0,0 @@
|
||||
const discord = require("discord.js")
|
||||
const client = require("../../../index").client
|
||||
|
||||
module.exports = () => {
|
||||
//this code will run when the bot starts!
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../../../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
const storage = bot.storage
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.User} user
|
||||
* @param {discord.TextChannel} channel
|
||||
* @param {discord.Guild} guild
|
||||
* @param {Date} date
|
||||
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
||||
*/
|
||||
exports.onTicketOpen = (user,channel,guild,date,ticketdata) => {
|
||||
//system
|
||||
bot.errorLog.log("api","new ticket created",[{key:"userid",value:user.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)}])
|
||||
|
||||
//custom code
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.User} user
|
||||
* @param {discord.TextChannel} channel
|
||||
* @param {discord.Guild} guild
|
||||
* @param {Date} date
|
||||
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
||||
*/
|
||||
exports.onTicketClose = (user,channel,guild,date,ticketdata) => {
|
||||
//system
|
||||
bot.errorLog.log("api","ticket closed",[{key:"userid",value:user.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)}])
|
||||
|
||||
//custom code
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.User} user
|
||||
* @param {discord.TextChannel} channel
|
||||
* @param {discord.Guild} guild
|
||||
* @param {Date} date
|
||||
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
||||
*/
|
||||
exports.onTicketDelete = (user,channel,guild,date,ticketdata) => {
|
||||
//system
|
||||
bot.errorLog.log("api","ticket deleted",[{key:"userid",value:user.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)}])
|
||||
|
||||
//custom code
|
||||
|
||||
}
|
||||
-345
@@ -1,345 +0,0 @@
|
||||
exports.checker = async () => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
const config = require("../config.json")
|
||||
var errorList = []
|
||||
var isError = false
|
||||
var warnList = []
|
||||
var isWarn = false
|
||||
const createError = (message) => {
|
||||
isError = true
|
||||
errorList.push("open-ticket CONFIG ERROR: "+message)
|
||||
}
|
||||
const createWarn = (message) => {
|
||||
isWarn = true
|
||||
warnList.push("open-ticket CONFIG WARNING: "+message)
|
||||
}
|
||||
|
||||
//validators
|
||||
/**@param {"userid"|"roleid"|"channelid"|"serverid"|"categoryid"} mode @param {String} value @param {String} path */
|
||||
const checkDiscord = (mode,value,path) => {
|
||||
if (mode == "userid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this user id is invalid")
|
||||
}
|
||||
}else if (mode == "channelid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this channel id is invalid")
|
||||
}
|
||||
}else if (mode == "roleid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this role id is invalid")
|
||||
}
|
||||
}else if (mode == "serverid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this server id is invalid")
|
||||
}
|
||||
}else if (mode == "categoryid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this category id is invalid")
|
||||
}
|
||||
}
|
||||
}
|
||||
/**@param {String} value */
|
||||
const checkToken = (value) => {
|
||||
if (value.includes(" ") || value.length < 40 || value.length > 70){
|
||||
createError("'auth_token' | your token is invalid")
|
||||
}
|
||||
}
|
||||
|
||||
/**@param {String} value @param {String} path */
|
||||
const checkHexColor = (value,path) => {
|
||||
if (!/^#[a-fA-F0-9]{3,6}$/.test(value)){
|
||||
if (value.length < 4) return createError("'"+path+"' | hex color too short! (example: #123abc)")
|
||||
if (value.length > 7) return createError("'"+path+"' | hex color too long! (example: #123abc)")
|
||||
createError("'"+path+"' | invalid color! (example: #123abc)")
|
||||
}
|
||||
}
|
||||
|
||||
/**@param {String} value @param {String} path */
|
||||
const checkEmbedColor = (value,path) => {
|
||||
if (!['DEFAULT','WHITE','AQUA','GREEN','BLUE','YELLOW','PURPLE','LUMINOUS_VIVID_PINK','FUCHSIA','GOLD','ORANGE','RED','GREY','DARKER_GREY','NAVY','DARK_AQUA','DARK_GREEN','DARK_BLUE','DARK_PURPLE','DARK_VIVID_PINK','DARK_GOLD','DARK_ORANGE','DARK_RED','DARK_GREY','LIGHT_GREY','DARK_NAVY','BLURPLE','GREYPLE','DARK_BUT_NOT_BLACK','NOT_QUITE_BLACK','RANDOM'].includes(value)){
|
||||
return createError("'"+path+"' | invalid color, must be a hex code or default color (more info in the wiki)")
|
||||
}
|
||||
}
|
||||
|
||||
/**@param {String} value @param {String} path @param {Number} minLength @param {Number} maxLength @param {String} name */
|
||||
const checkString = (value,minLength,maxLength,path,name) => {
|
||||
if (value.length < minLength){
|
||||
createError("'"+path+"' | "+name+" is too short!")
|
||||
}else if (value.length > maxLength){
|
||||
createError("'"+path+"' | "+name+" is too long!")
|
||||
}
|
||||
}
|
||||
|
||||
/**@param {"userid"|"roleid"|"channelid"|"serverid"} mode @param {String[]} arrayValue @param {String} path */
|
||||
const checkDiscordArray = (mode,arrayValue,path) => {
|
||||
if (mode == "userid"){
|
||||
arrayValue.forEach((value,index) => {
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+":"+index+"' | this user id is invalid")
|
||||
}
|
||||
})
|
||||
}else if (mode == "channelid"){
|
||||
arrayValue.forEach((value,index) => {
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+":"+index+"' | this channel id is invalid")
|
||||
}
|
||||
})
|
||||
}else if (mode == "roleid"){
|
||||
arrayValue.forEach((value,index) => {
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+":"+index+"' | this role id is invalid")
|
||||
}
|
||||
})
|
||||
}else if (mode == "serverid"){
|
||||
arrayValue.forEach((value,index) => {
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+":"+index+"' | this server id is invalid")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
/**@param {String} value @param {"string"|"boolean"|"number"} type */
|
||||
const checkType = (value,type,path) => {
|
||||
if (type == "boolean"){
|
||||
if (typeof value != "boolean"){
|
||||
createError("'"+path+"' | invalid type, this must be a boolean!")
|
||||
}
|
||||
}else if (type == "number"){
|
||||
if (typeof value != "number"){
|
||||
createError("'"+path+"' | invalid type, this must be a number!")
|
||||
}
|
||||
}else if (type == "string"){
|
||||
if (typeof value != "string"){
|
||||
createError("'"+path+"' | invalid type, this must be a string!")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const checkButtonColor = (value,path) => {
|
||||
if (value != "none" && value != "grey" && value != "gray" && value != "black" && value != "red" && value != "green" && value != "blue" && value != "blurple"){
|
||||
createError("'"+path+"' | invalid color, it must be one of these: none, gray, red, green, blue!")
|
||||
}
|
||||
}
|
||||
|
||||
const getButtonClass = require("./utils/getButton").rawButtonData
|
||||
/**@param {getButtonClass} option */
|
||||
const checkOption = (option,path) => {
|
||||
|
||||
//id
|
||||
checkType(option.id,"string",path+"/id")
|
||||
if (option.id.includes(" ")){
|
||||
createError("'"+path+"/id' | option id can't contain space characters!")
|
||||
}
|
||||
if (option.id.length > 20){
|
||||
createError("'"+path+"/id' | option id max lenght is 20!")
|
||||
}
|
||||
|
||||
//name
|
||||
checkType(option.name,"string",path+"/name")
|
||||
if (option.name.length > 100){
|
||||
createWarn("'"+path+"/name' | if your name is too long it maybe doesn't look so good!")
|
||||
}else if (option.name.length < 1){
|
||||
createError("'"+path+"/name' | there is no name!")
|
||||
}
|
||||
|
||||
//description
|
||||
checkType(option.description,"string",path+"/description")
|
||||
|
||||
//icon
|
||||
const emojiRegex = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/gi;
|
||||
if (option.icon.length > 0){
|
||||
|
||||
const isEmoji = emojiRegex.test(option.icon)
|
||||
|
||||
if (isEmoji == false){
|
||||
createError("'"+path+"/icon' | invalid emoji or custom discord emoji")
|
||||
}
|
||||
}
|
||||
checkType(option.icon,"string",path+"/icon")
|
||||
|
||||
//label
|
||||
checkType(option.label,"string",path+"/label")
|
||||
if (option.label.length < 1 && option.icon.length < 1){
|
||||
createError("'"+path+"' | you need at least one of these: label, icon!")
|
||||
}
|
||||
|
||||
//type
|
||||
checkType(option.type,"string",path+"/type")
|
||||
if (option.type != "ticket" && option.type != "website" && option.type != "role"){
|
||||
createError("'"+path+"/type' | the type must be one of these: ticket, website, role!")
|
||||
}
|
||||
/**@type {"ticket"|"website"|"role"} */
|
||||
const type = option.type
|
||||
|
||||
if (type == "ticket"){
|
||||
//color
|
||||
checkType(option.color,"string",path+"/color")
|
||||
checkButtonColor(option.color,path+"/color")
|
||||
|
||||
//adminroles
|
||||
checkDiscordArray("roleid",option.adminroles,path+"/adminroles")
|
||||
|
||||
//channelprefix
|
||||
checkType(option.channelprefix,"string",path+"/channelprefix")
|
||||
if (option.channelprefix.includes(" ")){
|
||||
createWarn("'"+path+"/channelprefix' | this prefix can't contain spaces!")
|
||||
}
|
||||
|
||||
//category
|
||||
checkType(option.category,"string",path+"/category")
|
||||
if (option.category.length > 0){
|
||||
checkDiscord("categoryid",option.category,path+"/category")
|
||||
}
|
||||
|
||||
//message
|
||||
checkType(option.message,"string",path+"/message")
|
||||
|
||||
//enableDMmessage
|
||||
checkType(option.enableDMMessage,"boolean",path+"/enableDMMessage")
|
||||
|
||||
//ticketmessage
|
||||
checkType(option.ticketmessage,"string",path+"/ticketmessage")
|
||||
|
||||
}else if (type == "website"){
|
||||
//url
|
||||
checkType(option.url,"string",path+"/url")
|
||||
if (option.url.includes(" ")){
|
||||
createWarn("'"+path+"/url' | a url can't contain spaces")
|
||||
}
|
||||
if (option.url.length < 1){
|
||||
createError("'"+path+"/url' | you have no url in this button")
|
||||
}
|
||||
if (!option.url.startsWith("https://") && !option.url.startsWith("http://") && !option.url.startsWith("discord://")){
|
||||
createWarn("'"+path+"/url' | your url doesn't start with https or http!")
|
||||
}
|
||||
if (option.url.startsWith("http://")){
|
||||
createWarn("'"+path+"/url' | your url is not a HTTPS link! discord maybe blocks this url!")
|
||||
}
|
||||
}else if (type == "role"){
|
||||
//color
|
||||
checkType(option.color,"string",path+"/color")
|
||||
checkButtonColor(option.color,path+"/color")
|
||||
|
||||
//roles
|
||||
checkDiscordArray("roleid",option.roles,path+"/roles")
|
||||
|
||||
//mode
|
||||
checkType(option.mode,"string",path+"/mode")
|
||||
if (option.mode != "add&remove" && option.mode != "add" && option.mode != "remove"){
|
||||
createError("'"+path+"/mode' | mode must be one of these: add, remove, add&remove")
|
||||
}
|
||||
|
||||
//enableDMmessage
|
||||
checkType(option.enableDMMessage,"boolean",path+"/enableDMMessage")
|
||||
}
|
||||
}
|
||||
|
||||
const checkMessage = (input,path) => {
|
||||
|
||||
}
|
||||
|
||||
//--------------------------|
|
||||
//--------------------------|
|
||||
//checker => START HERE |
|
||||
//--------------------------|
|
||||
//--------------------------|
|
||||
|
||||
var configArray = ["bot_name","main_color","server_id","auth_token","main_adminroles","prefix","languagefile","credits","status","system","options","messages"]
|
||||
configArray.forEach((item) => {
|
||||
if (config[item] == undefined){
|
||||
throw new Error("\n\nMAIN ERROR: the item '"+item+"' doesn't exist in config.json")
|
||||
}
|
||||
})
|
||||
|
||||
checkType(config.bot_name,"string","bot_name")
|
||||
checkHexColor(config.main_color,"main_color")
|
||||
checkDiscord("serverid",config.server_id,"server_id")
|
||||
checkToken(config.auth_token)
|
||||
checkDiscordArray("roleid",config.main_adminroles,"main_adminroles")
|
||||
checkString(config.prefix,1,15,"prefix","prefix")
|
||||
//languagefile
|
||||
checkType(config.languagefile,"string","languagefile")
|
||||
const lf = config.languagefile
|
||||
if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish")){
|
||||
createError("'languagefile' | invalid language, more info in the wiki")
|
||||
}
|
||||
|
||||
|
||||
checkType(config.credits,"boolean","credits")
|
||||
//status:
|
||||
checkType(config.status.enabled,"boolean","status/enabled")
|
||||
if (config.status.enabled){
|
||||
if (config.status.type != "PLAYING" && config.status.type != "LISTENING" && config.status.type != "WATCHING"){
|
||||
createError("'status/type' | not a valid status type!")
|
||||
}
|
||||
if (config.status.text.length < 1 || config.status.text.length > 40){
|
||||
createError("'status/text' | text too long or short!")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//system:
|
||||
if (config.system.ticket_channel){
|
||||
if (config.system.ticket_channel.length < 16 || config.system.ticket_channel.length > 20 || !/^\d+$/.test(config.system.ticket_channel)){
|
||||
createError("'system/ticket_channel' | this channel id is invalid")
|
||||
}
|
||||
}else createWarn("'"+path+"' | you have no ticket channel selected!")
|
||||
checkType(config.system.max_allowed_tickets,"number","system/max_allowed_tickets")
|
||||
checkType(config.system.enable_DM_Messages,"boolean","system/enable_DM_Messages")
|
||||
checkType(config.system["has@everyoneaccess"],"boolean","system/has@everyoneaccess")
|
||||
if (config.system.member_role != "" && config.system.member_role != " " && config.system.member_role != "false" && config.system.member_role != "null" && config.system.member_role != "0"){
|
||||
checkDiscord("roleid",config.system.member_role,"system/member_role")
|
||||
}else{
|
||||
createWarn("'system/member_role' | You don't have a member role, but it's recommended!")
|
||||
}
|
||||
checkType(config.system.closeMode,"string","system/closeMode")
|
||||
if (!["normal","adminonly"].includes(config.system.closeMode)){
|
||||
createError("'system/closeMode' | the close mode must be adminonly or normal")
|
||||
}
|
||||
|
||||
checkType(config.system.enable_transcript,"boolean","system/enable_transcript")
|
||||
checkType(config.system.enable_DM_transcript,"boolean","system/enable_DM_transcript")
|
||||
if (config.system.enable_transcript){
|
||||
checkDiscord("channelid",config.system.transcript_channel,"system/transcript_channel")
|
||||
}
|
||||
|
||||
//options
|
||||
|
||||
config.options.forEach((option,index) => {
|
||||
checkOption(option,"options/"+index)
|
||||
})
|
||||
|
||||
|
||||
|
||||
//the end
|
||||
if (errorList.length > 0 || warnList.length > 0){
|
||||
console.log("REPORT:\n===========================")
|
||||
}
|
||||
warnList.forEach((w) => {
|
||||
const splitw = w.split("'")
|
||||
if (splitw.length > 1){
|
||||
var splitstring = chalk.yellow(splitw[0])+chalk.blue("'"+splitw[1]+"'")+chalk.yellow(splitw[2])
|
||||
}else {var splitstring = chalk.yellow(splitw[0])}
|
||||
console.log(splitstring)
|
||||
})
|
||||
errorList.forEach((e) => {
|
||||
const splite = e.split("'")
|
||||
if (splite.length > 1){
|
||||
var splitstring = chalk.red(splite[0])+chalk.blue("'"+splite[1]+"'")+chalk.red(splite[2])
|
||||
}else {var splitstring = chalk.red(splite[0])}
|
||||
console.log(splitstring)
|
||||
})
|
||||
if (isError){
|
||||
console.log("===========================")
|
||||
console.log("=> "+chalk.bgRed("your bot doesn't work if you don't fix the above errors!"))
|
||||
if (isWarn){
|
||||
console.log("\n=> "+chalk.bgYellow("if you ignore warns, some things may work differently than expected!"))
|
||||
}
|
||||
process.exit(0)
|
||||
}else if (isWarn == true && isError == false){
|
||||
console.log("===========================")
|
||||
console.log("=> "+chalk.bgYellow("if you ignore warns, some things may work differently than expected!"))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,331 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const l = bot.language
|
||||
|
||||
|
||||
module.exports = () => {
|
||||
//closebar
|
||||
var closeBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicketTrue")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicketFalse")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
var deleteBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketTrue")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketFalse")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
var deleteBar1 = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketTrue1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicketFalse1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
//closebutton
|
||||
var closeRowNormal = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
var closeRowClosed = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("sendTranscript")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.sendTranscript)
|
||||
.setEmoji("📄")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Success)
|
||||
.setLabel(l.buttons.reopen)
|
||||
.setEmoji("✔")
|
||||
)
|
||||
|
||||
var closeRowDisabled = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicket")
|
||||
.setDisabled(true)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket")
|
||||
.setDisabled(true)
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
|
||||
|
||||
//NORMAL CLOSE
|
||||
client.on("interactionCreate",interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "closeTicket") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[closeBar]})
|
||||
|
||||
})
|
||||
client.on("interactionCreate",interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "closeTicketFalse") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[closeRowNormal]})
|
||||
})
|
||||
|
||||
var closeTicketButtonChecker = false
|
||||
client.on("interactionCreate",async interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "closeTicketTrue") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
|
||||
if (closeTicketButtonChecker == true) return
|
||||
closeTicketButtonChecker = true
|
||||
|
||||
if (config.system.closeMode == "adminonly"){
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
try {
|
||||
return msg.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return msg.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interaction.message.edit({components:[closeRowDisabled]})
|
||||
|
||||
/**
|
||||
* @type {String}
|
||||
*/
|
||||
const name = interaction.channel.name
|
||||
var prefix = ""
|
||||
const tickets = config.options
|
||||
tickets.forEach((ticket) => {
|
||||
if (name.startsWith(ticket.channelprefix)){
|
||||
prefix = ticket.channelprefix
|
||||
}
|
||||
})
|
||||
|
||||
await require("./ticketCloser").closeTicket(interaction,prefix,"close")
|
||||
closeTicketButtonChecker = false
|
||||
})
|
||||
|
||||
var closeTicket1ButtonChecker = false
|
||||
client.on("interactionCreate",async interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "closeTicketTrue1") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
|
||||
if (closeTicket1ButtonChecker == true) return
|
||||
closeTicket1ButtonChecker = true
|
||||
|
||||
if (config.system.closeMode == "adminonly"){
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
try {
|
||||
return interaction.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const closedButtonDisabled = new discord.ActionRowBuilder()
|
||||
.addComponents([
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicketTrue1")
|
||||
.setDisabled(true)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("🔒")
|
||||
])
|
||||
interaction.message.edit({components:[closedButtonDisabled]})
|
||||
|
||||
interaction.channel.messages.fetchPinned().then((messages) => {
|
||||
messages.first().edit({components:[closeRowDisabled]})
|
||||
})
|
||||
|
||||
/**
|
||||
* @type {String}
|
||||
*/
|
||||
const name = interaction.channel.name
|
||||
var prefix = ""
|
||||
const tickets = config.options
|
||||
tickets.forEach((ticket) => {
|
||||
if (name.startsWith(ticket.channelprefix)){
|
||||
prefix = ticket.channelprefix
|
||||
}
|
||||
})
|
||||
|
||||
await require("./ticketCloser").closeTicket(interaction,prefix,"close")
|
||||
closeTicket1ButtonChecker = false
|
||||
})
|
||||
|
||||
|
||||
//NORMAL DELETE
|
||||
client.on("interactionCreate",interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "deleteTicket") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[deleteBar]})
|
||||
|
||||
})
|
||||
client.on("interactionCreate",interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "deleteTicketFalse") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[closeRowNormal]})
|
||||
})
|
||||
var deleteTicketButtonChecker = false
|
||||
client.on("interactionCreate",async interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "deleteTicketTrue") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
|
||||
if (deleteTicketButtonChecker == true) return
|
||||
deleteTicketButtonChecker = true
|
||||
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
try {
|
||||
return interaction.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {String}
|
||||
*/
|
||||
const name = interaction.channel.name
|
||||
var prefix = ""
|
||||
const tickets = config.options
|
||||
tickets.forEach((ticket) => {
|
||||
if (name.startsWith(ticket.channelprefix)){
|
||||
prefix = ticket.channelprefix
|
||||
}
|
||||
})
|
||||
|
||||
await require("./ticketCloser").closeTicket(interaction,prefix,"delete")
|
||||
deleteTicketButtonChecker = false
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
//CLOSED DELETE
|
||||
client.on("interactionCreate",interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "deleteTicket1") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[deleteBar1]})
|
||||
|
||||
})
|
||||
client.on("interactionCreate",interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "deleteTicketFalse1") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[closeRowClosed]})
|
||||
})
|
||||
|
||||
var deleteTicket1ButtonChecker = false
|
||||
client.on("interactionCreate",async interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "deleteTicketTrue1") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
|
||||
if (deleteTicket1ButtonChecker == true) return
|
||||
deleteTicket1ButtonChecker = true
|
||||
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
try {
|
||||
return interaction.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {String}
|
||||
*/
|
||||
const name = interaction.channel.name
|
||||
var prefix = ""
|
||||
const tickets = config.options
|
||||
tickets.forEach((ticket) => {
|
||||
if (name.startsWith(ticket.channelprefix)){
|
||||
prefix = ticket.channelprefix
|
||||
}
|
||||
})
|
||||
|
||||
await require("./ticketCloser").closeTicket(interaction,prefix,"deletenotranscript")
|
||||
deleteTicket1ButtonChecker = false
|
||||
})
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
const fs = require('fs')
|
||||
const readline = require("readline")
|
||||
const rl = readline.createInterface({
|
||||
input:process.stdin,
|
||||
output:process.stdout,
|
||||
terminal:true
|
||||
})
|
||||
|
||||
const ask = async () => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
rl.question(chalk.yellow("WARNING: are you sure that there are",chalk.red("no tickets open"),"at the moment? ")+chalk.green("(yes/no)")+"\n",(answer) => {
|
||||
if (answer != "1" && !answer.toLowerCase().startsWith("yes")){
|
||||
console.log(chalk.red("invalid answer"))
|
||||
ask()
|
||||
return
|
||||
}
|
||||
console.log(chalk.green("clearing data..."))
|
||||
runClear()
|
||||
rl.close()
|
||||
})
|
||||
}
|
||||
ask()
|
||||
|
||||
const runClear = async () => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
//console.log(chalk.blue("You can get a node.js warning below, just ignore that, it's not important!"))
|
||||
const dataPaths = ["./storage/dynamicDB"]
|
||||
|
||||
var index = 0
|
||||
|
||||
dataPaths.forEach((path) => {
|
||||
try {
|
||||
fs.rmSync(path,{recursive:true,force:true})
|
||||
}catch{
|
||||
//console.log(path,"doesn't exist")
|
||||
}
|
||||
setTimeout(() => {
|
||||
try{
|
||||
fs.mkdirSync(path)
|
||||
}catch{
|
||||
//console.log(path,"already exists")
|
||||
}
|
||||
index++
|
||||
},500)
|
||||
})
|
||||
|
||||
setInterval(() => {
|
||||
if (index >= 1){
|
||||
console.log(chalk.bgGreen("All local data is cleared!"))
|
||||
process.exit(1)
|
||||
}
|
||||
},500)
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
const localstorage = require("node-localstorage")
|
||||
|
||||
const ls = new localstorage.LocalStorage("./storage/dynamicDB")
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} category
|
||||
* @param {String} id
|
||||
* @param {String} value
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
exports.set = (category,id,value) => {
|
||||
ls.setItem(category+"--"+id,value.toString())
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} category
|
||||
* @param {String} id
|
||||
* @returns {String|false}
|
||||
*/
|
||||
exports.get = (category,id) => {
|
||||
const result = ls.getItem(category+"--"+id)
|
||||
if (!result) return false
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} category
|
||||
* @param {String} id
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
exports.delete = (category,id) => {
|
||||
ls.removeItem(category+"--"+id)
|
||||
return true
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
//Do not change this without knowing what you are doing!!
|
||||
const databaseFile = "local"
|
||||
//Do not change this without knowing what you are doing!!
|
||||
|
||||
|
||||
try {
|
||||
var db = require("./dynamicfiles/local")
|
||||
}catch{
|
||||
console.log("I couldn't find the database file! (location: ./core/dynamicdatabase/storage.js:2)")
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
module.exports = db
|
||||
|
||||
|
||||
/** =============================
|
||||
** NOT READY YET
|
||||
** must be dynamic
|
||||
** =============================*/
|
||||
//const LocalStorage = require("node-localstorage")
|
||||
//
|
||||
//const ticketStorage = new LocalStorage.LocalStorage("./storage/tickets")
|
||||
//exports.ticketStorage = ticketStorage
|
||||
//
|
||||
//const userTicketStorage = new LocalStorage.LocalStorage("./storage/userTickets")
|
||||
//exports.userTicketStorage = userTicketStorage
|
||||
//
|
||||
//const transcriptStorage = new LocalStorage.LocalStorage("./storage/transcripts")
|
||||
//exports.transcriptStorage = transcriptStorage
|
||||
|
||||
//const ticketNumberStorage = new LocalStorage.LocalStorage("./storage/ticketNumbers")
|
||||
//exports.ticketNumberStorage = ticketNumberStorage
|
||||
|
||||
@@ -1,124 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const l = bot.language
|
||||
|
||||
const loadChalk = async () => {
|
||||
return await (await import("chalk")).default
|
||||
}
|
||||
const embed = discord.EmbedBuilder
|
||||
const c = discord.Colors
|
||||
|
||||
exports.noPermsMessage = new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.noPermsTitle+" :x:")
|
||||
.setDescription(l.errors.noPermsDescription)
|
||||
|
||||
/**@param {String} message */
|
||||
exports.invalidArgsMessage = (message) => {
|
||||
var x = new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.missingArgsTitle+" :x:")
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
}
|
||||
|
||||
/**@param {String} message */
|
||||
exports.serverError = (message) => {
|
||||
var x = new embed()
|
||||
.setColor(c.Orange)
|
||||
.setTitle(":warning: "+l.errors.boterror+" :warning:")
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
}
|
||||
|
||||
/**@param {String[]} list */
|
||||
exports.invalidIdChooseFromList = (list) => {
|
||||
var x = new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.chooseFromListTitle+" :x:")
|
||||
.setDescription(l.errors.chooseFromListDescription+"\n`"+list.join("`\n`")+"`")
|
||||
return x
|
||||
}
|
||||
|
||||
exports.notInATicket = new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.notInTicketTitle+" :x:")
|
||||
.setDescription(l.errors.notInTicketDescription)
|
||||
|
||||
|
||||
/**@param {String} message @param {String} title */
|
||||
exports.success = (title,message) => {
|
||||
var x = new embed()
|
||||
.setColor(config.main_color)
|
||||
.setTitle(":white_check_mark: "+title+" :white_check_mark:")
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
}
|
||||
|
||||
/**@param {String} message @param {String} title */
|
||||
exports.warning = (title,message) => {
|
||||
var x = new embed()
|
||||
.setColor(c.Orange)
|
||||
.setTitle(":warning: "+title+" :warning:")
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
}
|
||||
|
||||
/**@param {String} message the message @param {String} title the title @param {String} emoji an discord emoji @param {discord.ColorResolvable} color the embed color*/
|
||||
exports.custom = (title,message,emoji,color) => {
|
||||
var x = new embed()
|
||||
.setColor(color)
|
||||
.setTitle(emoji+" "+title+" "+emoji)
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
}
|
||||
|
||||
const normalLog = (debugString) => {
|
||||
const fs = require("fs")
|
||||
const content = fs.existsSync("./openticketdebug.txt") ? fs.readFileSync("./openticketdebug.txt").toString() : "==========================\n<OPEN TICKET DEBUG FILE:>\n=========================="
|
||||
fs.writeFileSync("./openticketdebug.txt",content+"\nSYSTEM: "+debugString)
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {"system"|"command"|"info"|"api"} type
|
||||
* @param {String} message
|
||||
* @param {[{key:String,value:String}]} params
|
||||
*/
|
||||
exports.log = async (ptype,message,params) => {
|
||||
var type = ptype
|
||||
const chalk = await loadChalk()
|
||||
var paramstring = ""
|
||||
if (params){
|
||||
if (params.length > 0){
|
||||
params.forEach((p) => {
|
||||
paramstring = paramstring+p.key+": "+p.value+" "
|
||||
})
|
||||
}
|
||||
}
|
||||
const parameters = params ? "("+paramstring+")" : " "
|
||||
|
||||
if (type == "command"){
|
||||
console.log(chalk.green("[command] ")+message+" "+chalk.yellow(parameters))
|
||||
}else if (type == "info"){
|
||||
console.log(chalk.blue("[info] ")+message+" "+chalk.yellow(parameters))
|
||||
}else if (type == "system"){
|
||||
console.log(chalk.green("[system] ")+message+" "+chalk.yellow(parameters))
|
||||
}else if (type == "api"){
|
||||
if (require("./api/base").enableApiLogs == true){
|
||||
console.log(chalk.red("[api v"+require("./api/api.json").version+"] ")+message+" "+chalk.yellow(parameters))
|
||||
}
|
||||
type = "api v"+require("./api/api.json").version
|
||||
}
|
||||
|
||||
const cd = new Date()
|
||||
const months = ["January","February","March","April","May","June","July","August","September","October","November","December"]
|
||||
normalLog("["+cd.getDate()+" "+months[cd.getMonth()-1]+" "+cd.getFullYear()+" - "+cd.getSeconds()+":"+cd.getMinutes()+":"+cd.getHours()+"] ["+type+"] "+message+" "+parameters)
|
||||
}
|
||||
@@ -1,116 +0,0 @@
|
||||
const bot = require("../index")
|
||||
const config = bot.config
|
||||
|
||||
/**
|
||||
* @param {Number} index
|
||||
* @param {"id"|"name"|"description"|"icon"|"label"|"type"|"color"|"adminroles"|"channelprefix"|"category"|"message"|"enableDMMessage"|"ticketmessage"} value
|
||||
*/
|
||||
exports.getTicketValue = (index,value) => {
|
||||
if (value == "id"){
|
||||
return "newT"+config.options[index][value]
|
||||
}
|
||||
return config.options[index][value]
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Number} index
|
||||
* @param {"id"|"name"|"description"|"icon"|"label"|"type"|"url"} value
|
||||
*/
|
||||
exports.getWebsiteValue = (index,value) => {
|
||||
return config.options[index][value]
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Number} index
|
||||
* @param {"id"|"name"|"description"|"icon"|"label"|"type"|"color"|"roles"|"mode"|"enableDMMessage"} value
|
||||
*/
|
||||
exports.getRoleValue = (index,value) => {
|
||||
return config.options[index][value]
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {"id"|"name"|"description"|"icon"|"label"|"type"|"color"|"adminroles"|"channelprefix"|"category"|"message"|"enableDMMessage"|"ticketmessage"} value
|
||||
*/
|
||||
exports.getTicketValues = (value) => {
|
||||
var result = []
|
||||
config.options.forEach((o) => {
|
||||
if (value == "id"){
|
||||
result.push("newT"+o[value])
|
||||
}else{
|
||||
result.push(o[value])
|
||||
}
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {"id"|"name"|"description"|"icon"|"label"|"type"|"url"} value
|
||||
*/
|
||||
exports.getWebsiteValues = (value) => {
|
||||
var result = []
|
||||
config.options.forEach((o) => {
|
||||
result.push(o[value])
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {"id"|"name"|"description"|"icon"|"label"|"type"|"color"|"roles"|"mode"|"enableDMMessage""} value
|
||||
*/
|
||||
exports.getRoleValues = (value) => {
|
||||
var result = []
|
||||
config.options.forEach((o) => {
|
||||
result.push(o[value])
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
class TicketOptions {
|
||||
constructor() {
|
||||
this.id = ""
|
||||
this.name = ""
|
||||
this.description = ""
|
||||
this.icon = ""
|
||||
this.label = ""
|
||||
this.type = ""
|
||||
this.color = ""
|
||||
this.adminroles = ["",""]
|
||||
this.channelprefix = ""
|
||||
this.category = ""
|
||||
this.message = ""
|
||||
this.enableDMMessage = true
|
||||
this.ticketmessage = ""
|
||||
}
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param {String} id
|
||||
* @returns {TicketOptions|false}
|
||||
*/
|
||||
exports.getOptionsById = (id) => {
|
||||
var result = false
|
||||
config.options.forEach((option) => {
|
||||
if ("newT"+option.id == id){
|
||||
result = option
|
||||
}
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
exports.exportedOptionClass = class {
|
||||
constructor() {
|
||||
this.id = ""
|
||||
this.name = ""
|
||||
this.description = ""
|
||||
this.icon = ""
|
||||
this.label = ""
|
||||
this.type = ""
|
||||
this.color = ""
|
||||
this.adminroles = ["",""]
|
||||
this.channelprefix = ""
|
||||
this.category = ""
|
||||
this.message = ""
|
||||
this.enableDMMessage = true
|
||||
this.ticketmessage = ""
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
const index = require("../index")
|
||||
|
||||
if (index.developerMode){
|
||||
var config = require("../devConfig.json")
|
||||
}else{var config = require("../config.json")}
|
||||
|
||||
|
||||
var localLanguage = require("../language/english.json")
|
||||
if (config.languagefile.startsWith("custom")) localLanguage = require("../language/custom.json")
|
||||
else if (config.languagefile.startsWith("dutch")) localLanguage = require("../language/dutch.json")
|
||||
else if (config.languagefile.startsWith("english")) localLanguage = require("../language/english.json")
|
||||
else if (config.languagefile.startsWith("german")) localLanguage = require("../language/german.json")
|
||||
else if (config.languagefile.startsWith("french")) localLanguage = require("../language/french.json")
|
||||
else if (config.languagefile.startsWith("romanian")) localLanguage = require("../language/romanian.json")
|
||||
else if (config.languagefile.startsWith("arabic")) localLanguage = require("../language/arabic.json")
|
||||
else if (config.languagefile.startsWith("spanish")) localLanguage = require("../language/spanish.json")
|
||||
|
||||
const errorLog = async () => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
|
||||
console.log(chalk.red("Something went wrong when loading the language!")+"\nCheck the config file or create a ticket in our server!")
|
||||
}
|
||||
|
||||
const successLog = async (language) => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
|
||||
console.log(chalk.green("loaded language "+language+"..."))
|
||||
}
|
||||
|
||||
if (!localLanguage){
|
||||
const runError = async () => {
|
||||
await errorLog()
|
||||
process.exit(1)
|
||||
}
|
||||
runError()
|
||||
}else{
|
||||
exports.language = localLanguage
|
||||
successLog(config.languagefile)
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
const storage = bot.storage
|
||||
|
||||
module.exports = async () => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
if (!interaction.customId.startsWith("newR")) return
|
||||
|
||||
interaction.deferUpdate()
|
||||
|
||||
if (interaction.customId.startsWith("newR")){
|
||||
const optionid = interaction.customId.split("newR")[1]
|
||||
if (!optionid){
|
||||
interaction.reply({embeds:[bot.errorLog.serverError(l.errors.roleDoesntExist)]})
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
const option = require("./utils/getButton").getOption(optionid)
|
||||
/**@type {"add"|"remove"|"add&remove"} */
|
||||
const mode = option.mode
|
||||
const user = interaction.member
|
||||
|
||||
if (mode == "add"){
|
||||
option.roles.forEach((role) => {
|
||||
interaction.guild.members.cache.find(u => u.id == user.id).roles.add(role)
|
||||
|
||||
log("system","added role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}])
|
||||
})
|
||||
}else if (mode == "remove"){
|
||||
option.roles.forEach((role) => {
|
||||
interaction.guild.members.cache.find(u => u.id == user.id).roles.remove(role)
|
||||
|
||||
log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}])
|
||||
})
|
||||
}else if (mode == "add&remove"){
|
||||
option.roles.forEach((role) => {
|
||||
if (interaction.guild.members.cache.find(u => u.id == user.id).roles.cache.has(role)){
|
||||
interaction.guild.members.cache.find(u => u.id == user.id).roles.remove(role)
|
||||
|
||||
log("system","added role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}])
|
||||
}else {
|
||||
interaction.guild.members.cache.find(u => u.id == user.id).roles.add(role)
|
||||
|
||||
log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}])
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}catch{
|
||||
interaction.channel.send({embeds:[bot.errorLog.serverError(l.errors.somethingWentWrong)]})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
const discord = require("discord.js")
|
||||
const bot = require("../../index")
|
||||
const client = require("../../index").client
|
||||
const config = bot.config
|
||||
const getoptions = require("../getoptions")
|
||||
|
||||
module.exports = async () => {
|
||||
const chalk = (await import("chalk")).default
|
||||
|
||||
console.log(chalk.red("\nINSTRUCTIONS:\n\n1: Run the command you want to delete in discord.\n2: You get the message 'This command is now deleted!'\n3: There is also a message in the console that says the command is deleted.\n4: reload your discord."))
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return console.log("this isn't a command!")
|
||||
|
||||
interaction.reply({content:"This command is now deleted!"})
|
||||
|
||||
try {
|
||||
client.application.commands.delete(interaction.commandId,interaction.guild.id).then(() => {
|
||||
console.log("deleted the command",chalk.blue(interaction.commandName),"(id:",interaction.commandId+")")
|
||||
})
|
||||
}catch{
|
||||
console.log(chalk.red("something went wrong by the deleting of this command!"))
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1,198 +0,0 @@
|
||||
const discord = require("discord.js")
|
||||
const bot = require("../../index")
|
||||
const client = require("../../index").client
|
||||
const config = bot.config
|
||||
const getoptions = require("../getoptions")
|
||||
|
||||
const act = discord.ApplicationCommandType
|
||||
const acot = discord.ApplicationCommandOptionType
|
||||
|
||||
module.exports = async () => {
|
||||
const chalk = (await import("chalk")).default
|
||||
const sid = config.server_id
|
||||
|
||||
const ids = getoptions.getTicketValues("id")
|
||||
/**@type {[{name:String,value:String}]} */
|
||||
var choices = []
|
||||
ids.forEach((id) => {
|
||||
const option = getoptions.getOptionsById(id)
|
||||
if (option.type == "ticket"){
|
||||
choices.push({name:option.name,value:option.id})
|
||||
}
|
||||
})
|
||||
|
||||
/**@type {[{name:String,value:String}]} */
|
||||
var msgchoices = []
|
||||
config.messages.forEach((msg) => {
|
||||
msgchoices.push({name:msg.id,value:msg.id})
|
||||
})
|
||||
|
||||
var readystats = 0
|
||||
|
||||
process.stdout.write("[status] there are "+chalk.blue("0 out of 10")+" commands ready! (this can take up to 40 seconds)")
|
||||
setInterval(() => {
|
||||
process.stdout.cursorTo(0)
|
||||
process.stdout.write("[status] there are "+chalk.blue(readystats+" out of 9")+" commands ready! (this can take up to 40 seconds)")
|
||||
if (readystats >= 10){
|
||||
console.log(chalk.green("\nready!"))
|
||||
console.log(chalk.bgBlue("you can now start the bot with 'npm start'!"))
|
||||
process.exit(1)
|
||||
}
|
||||
},100)
|
||||
|
||||
//create a ticket (/new or /ticket)
|
||||
client.application.commands.create({
|
||||
name:"ticket",
|
||||
description:"Create a ticket!",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:acot.String,
|
||||
name:"type",
|
||||
description:"The type of ticket.",
|
||||
required:true,
|
||||
choices:choices
|
||||
|
||||
}
|
||||
]
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
client.application.commands.create({
|
||||
name:"new",
|
||||
description:"Create a ticket!",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:acot.String,
|
||||
name:"type",
|
||||
description:"The type of ticket.",
|
||||
required:true,
|
||||
choices:choices
|
||||
|
||||
}
|
||||
]
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
//help
|
||||
client.application.commands.create({
|
||||
name:"help",
|
||||
description:"The help menu",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
|
||||
})
|
||||
|
||||
//close
|
||||
client.application.commands.create({
|
||||
name:"close",
|
||||
description:"Close the current ticket.",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
//delete
|
||||
client.application.commands.create({
|
||||
name:"delete",
|
||||
description:"Delete the current ticket.",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
//msg
|
||||
client.application.commands.create({
|
||||
name:"message",
|
||||
description:"Create a ticket message.",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:acot.String,
|
||||
name:"id",
|
||||
description:"The message id.",
|
||||
required:true,
|
||||
choices:msgchoices,
|
||||
max_length:30
|
||||
|
||||
}
|
||||
]
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
//add
|
||||
client.application.commands.create({
|
||||
name:"add",
|
||||
description:"Add people to this ticket.",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:acot.User,
|
||||
name:"user",
|
||||
description:"The user to add.",
|
||||
required:true
|
||||
}
|
||||
]
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
//remove
|
||||
client.application.commands.create({
|
||||
name:"remove",
|
||||
description:"Remove people from this ticket.",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:acot.User,
|
||||
name:"user",
|
||||
description:"The user to remove.",
|
||||
required:true
|
||||
}
|
||||
]
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
//rename
|
||||
client.application.commands.create({
|
||||
name:"rename",
|
||||
description:"Rename this ticket.",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:acot.String,
|
||||
name:"name",
|
||||
description:"The new name (without prefix).",
|
||||
required:true
|
||||
}
|
||||
]
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
//reopen
|
||||
client.application.commands.create({
|
||||
name:"reopen",
|
||||
description:"Reopen this ticket.",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
}
|
||||
@@ -1,283 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
const storage = bot.storage
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.Interaction} interaction
|
||||
* @param {String} prefix
|
||||
* @param {"delete"|"close"|"deletenotranscript"} mode
|
||||
*/
|
||||
exports.closeTicket = async (interaction,prefix,mode) => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
const channelmessages = await interaction.channel.messages.fetch()
|
||||
const channel = interaction.channel
|
||||
|
||||
channelmessages.sweep((msgSweep) => {
|
||||
return msgSweep.author.id == client.user.id
|
||||
})
|
||||
|
||||
/**
|
||||
* @type {String} ticketuserarray
|
||||
*/
|
||||
const ticketuserarray = interaction.channel.name
|
||||
const ticketusername = ticketuserarray.split(prefix)[1]
|
||||
|
||||
var getuserID = storage.get("userTicketStorage",interaction.channel.id)
|
||||
try {
|
||||
var getusernameStep1 = client.users.cache.find(u => u.id === getuserID)
|
||||
var isDatabaseError = false
|
||||
}catch{
|
||||
var isDatabaseError = true
|
||||
}
|
||||
|
||||
if (!getusernameStep1){
|
||||
console.log(chalk.red("[database error]"),"something went wrong when getting the data in the database.\nNo panic, this error fixes itself!")
|
||||
var isDatabaseError = true
|
||||
}
|
||||
|
||||
var enableTranscript = true
|
||||
var deleteRequired = false
|
||||
|
||||
if (mode == "delete"){
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
try {
|
||||
return interaction.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
deleteRequired = true
|
||||
await interaction.channel.send({content:"**"+l.messages.gettingdeleted+"**"})
|
||||
log("system","deleted a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}])
|
||||
|
||||
if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1)
|
||||
|
||||
//getID & send DM
|
||||
await interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
|
||||
|
||||
const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1]
|
||||
const ticketData = require("./getoptions").getOptionsById("newT"+ticketId)
|
||||
|
||||
require("./api/modules/events").onTicketDelete(interaction.user,interaction.channel,interaction.guild,new Date(),{name:interaction.channel.name,status:"deleted",ticketOptions:ticketData})
|
||||
|
||||
if (!firstmsg.embeds[0].author) return false
|
||||
const id = firstmsg.embeds[0].author.name
|
||||
|
||||
if (!id) return false
|
||||
|
||||
try{
|
||||
if (config.system.enable_DM_Messages){
|
||||
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.deletedTicketDmTitle,l.messages.deletedTicketDmDescription,":ticket:",config.main_color)]})
|
||||
}
|
||||
}
|
||||
catch{log("system","can't send DM to member, member doesn't allow dm's")}
|
||||
})
|
||||
|
||||
}else if (mode == "close"){
|
||||
|
||||
if (config.system.closeMode == "adminonly"){
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
try {
|
||||
return interaction.member.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}catch{
|
||||
return interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var permissionArray = []
|
||||
const pfb = discord.PermissionFlagsBits
|
||||
|
||||
if (!isDatabaseError) permissionArray.push({
|
||||
id:getusernameStep1,
|
||||
type:"member",
|
||||
allow:[pfb.ViewChannel],
|
||||
deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages]
|
||||
})
|
||||
|
||||
permissionArray.push({
|
||||
id:interaction.guild.roles.everyone,
|
||||
type:"role",
|
||||
deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.set(permissionArray)
|
||||
|
||||
//message
|
||||
var closeButtonRow = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("sendTranscript")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.sendTranscript)
|
||||
.setEmoji("📄")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Success)
|
||||
.setLabel(l.buttons.reopen)
|
||||
.setEmoji("✔")
|
||||
)
|
||||
|
||||
const embed = new discord.EmbedBuilder()
|
||||
.setColor(config.main_color)
|
||||
.setTitle(":lock: "+l.messages.closedTitle+" :lock:")
|
||||
.setDescription(l.messages.closedDescription)
|
||||
interaction.channel.send({embeds:[embed],components:[closeButtonRow]})
|
||||
|
||||
log("system","closed a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}])
|
||||
|
||||
|
||||
//getID & send DM
|
||||
await interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
|
||||
const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1]
|
||||
const ticketData = require("./getoptions").getOptionsById("newT"+ticketId)
|
||||
|
||||
require("./api/modules/events").onTicketClose(interaction.user,interaction.channel,interaction.guild,new Date(),{name:interaction.channel.name,status:"closed",ticketOptions:ticketData})
|
||||
|
||||
const id = firstmsg.embeds[0].author.name
|
||||
|
||||
if (!id) return false
|
||||
|
||||
try{
|
||||
if (config.system.enable_DM_Messages){
|
||||
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.closedTicketDmTitle,l.messages.closedTicketDmDescription,":ticket:",config.main_color)]})
|
||||
}
|
||||
}
|
||||
catch{log("system","can't send DM to member, member doesn't allow dm's")}
|
||||
})
|
||||
|
||||
|
||||
}else if (mode == "deletenotranscript"){
|
||||
|
||||
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id)
|
||||
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("MANAGE_GUILD")){
|
||||
interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
|
||||
return
|
||||
}
|
||||
|
||||
enableTranscript = false
|
||||
deleteRequired = true
|
||||
interaction.channel.send({content:"**"+l.messages.gettingdeleted+"**"})
|
||||
log("system","deleted a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}])
|
||||
|
||||
if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1)
|
||||
|
||||
//getID & send DM
|
||||
await interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
|
||||
|
||||
const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1]
|
||||
const ticketData = require("./getoptions").getOptionsById("newT"+ticketId)
|
||||
|
||||
require("./api/modules/events").onTicketDelete(interaction.user,interaction.channel,interaction.guild,new Date(),{name:interaction.channel.name,status:"deleted",ticketOptions:ticketData})
|
||||
|
||||
const id = firstmsg.embeds[0].author.name
|
||||
|
||||
if (!id) return false
|
||||
|
||||
try{
|
||||
if (config.system.enable_DM_Messages){
|
||||
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.deletedTicketDmTitle,l.messages.deletedTicketDmDescription,":ticket:",config.main_color)]})
|
||||
}
|
||||
}
|
||||
catch{log("system","can't send DM to member, member doesn't allow dm's")}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if (enableTranscript == true && mode != "deletenotranscript"){
|
||||
|
||||
if (config.system.enable_transcript || config.system.enable_DM_transcript){
|
||||
var fileattachment = await require("./transcript").createTranscript(channelmessages,channel)
|
||||
|
||||
if (fileattachment == false){log("system","internal error: transcript is not created!");return}
|
||||
}
|
||||
|
||||
if (config.system.enable_transcript){
|
||||
const transcriptEmbed = new discord.EmbedBuilder()
|
||||
.setColor(config.main_color)
|
||||
.setTitle(l.messages.newTranscriptTitle)
|
||||
.setAuthor({name:interaction.user.username,iconURL:interaction.user.displayAvatarURL({format:"png"})})
|
||||
.setDescription(l.messages.newTranscriptDescription)
|
||||
.setFooter({text:"ticket: "+ticketuserarray})
|
||||
|
||||
interaction.guild.channels.cache.find(c => c.id == config.system.transcript_channel).send({
|
||||
embeds:[transcriptEmbed],
|
||||
files:[fileattachment]
|
||||
})
|
||||
}
|
||||
|
||||
if (config.system.enable_DM_transcript){
|
||||
const transcriptEmbed = new discord.EmbedBuilder()
|
||||
.setColor(config.main_color)
|
||||
.setTitle(l.messages.newTranscriptTitle)
|
||||
.setDescription(l.messages.newTranscriptDescription)
|
||||
.setFooter({text:"ticket: "+ticketuserarray})
|
||||
|
||||
if (!isDatabaseError) getusernameStep1.send({
|
||||
embeds:[transcriptEmbed],
|
||||
files:[fileattachment]
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (deleteRequired){
|
||||
const timer = () => {return new Promise((resolve,reject) => {
|
||||
setTimeout(() => {resolve(true)},7000)
|
||||
})}
|
||||
await timer()
|
||||
await interaction.channel.delete()
|
||||
}
|
||||
}
|
||||
|
||||
exports.runThis = () => {
|
||||
client.on("interactionCreate",async (interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "sendTranscript") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
|
||||
const channelmessages = await interaction.channel.messages.fetch()
|
||||
|
||||
channelmessages.sweep((msgSweep) => {
|
||||
return msgSweep.author.id == client.user.id
|
||||
})
|
||||
|
||||
var fileattachment = await require("./transcript").createTranscript(channelmessages,interaction.channel)
|
||||
|
||||
if (fileattachment == false){
|
||||
log("system","internal error: transcript is not created!")
|
||||
interaction.channel.send({embeds:[bot.errorLog.serverError(l.errors.somethingWentWrongTranscript)]})
|
||||
return
|
||||
}
|
||||
|
||||
interaction.channel.send({content:"**"+l.messages.hereIsTheTranscript+"**",files:[fileattachment]})
|
||||
})
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const getButton = require("./utils/getButton")
|
||||
const l = bot.language
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} id the id from an open-ticket embed
|
||||
* @returns {{embed:discord.EmbedBuilder,componentRows:discord.MessageActionRow[]}} discord embed
|
||||
*/
|
||||
|
||||
|
||||
|
||||
exports.createEmbed = (id) => {
|
||||
//-----------------------------------
|
||||
//general importing
|
||||
const data = require("./utils/getTicketMessages").getTicketMessage(id)
|
||||
/**@type {discord.ButtonBuilder[]}*/
|
||||
var buttons = []
|
||||
/**@type {getButton.rawButtonData[]} */
|
||||
var buttonData = []
|
||||
|
||||
data.options.forEach((option) => {
|
||||
var button = getButton.getButton(option)
|
||||
var localButtonData = getButton.getOption(option)
|
||||
if (button) buttons.push(button)
|
||||
if (localButtonData) buttonData.push(localButtonData)
|
||||
})
|
||||
//-----------------------------------
|
||||
|
||||
//-----------------------------------
|
||||
//create the embed
|
||||
const embed = new discord.EmbedBuilder()
|
||||
.setColor(data.color)
|
||||
.setTitle(data.name)
|
||||
if (data.enableFooter) embed.setFooter({text:data.footer})
|
||||
if (data.enableThumbnail) embed.setThumbnail(data.thumbnail)
|
||||
|
||||
var description = data.description
|
||||
if (data.enableTicketExplaination){
|
||||
description = description+"\n\n__"+l.messages.chooseCategory+"__\n"
|
||||
|
||||
var ticketExplainations = []
|
||||
buttonData.forEach((button) => {
|
||||
var explaination = button.icon+" **"+button.name+":**\n"+button.description
|
||||
ticketExplainations.push(explaination)
|
||||
})
|
||||
|
||||
description = description+ticketExplainations.join("\n\n")
|
||||
}
|
||||
|
||||
if (data.enableMaxTicketsWarning){
|
||||
description = description+"\n\n"+l.commands.maxTicketWarning.replace("{0}",config.system.max_allowed_tickets)
|
||||
}
|
||||
|
||||
embed.setDescription(description)
|
||||
//-----------------------------------
|
||||
|
||||
//-----------------------------------
|
||||
//create the components
|
||||
var AmountOfRows = Math.ceil(buttons.length / 4)
|
||||
var currentRow = 0
|
||||
|
||||
/**
|
||||
* @type {discord.MessageActionRow[]}
|
||||
*/
|
||||
var componentRows = []
|
||||
|
||||
for (let i = AmountOfRows; i > 0; i--){
|
||||
|
||||
componentRows.push(new discord.ActionRowBuilder())
|
||||
}
|
||||
|
||||
buttons.forEach((button,index) => {
|
||||
componentRows[currentRow].addComponents([button])
|
||||
|
||||
if (index == 3 || index == 7 || index == 11 || index == 15 || index == 19 || index == 23 || index == 27 || index == 31 || index == 35 || index == 39){
|
||||
currentRow = currentRow + 1
|
||||
}
|
||||
})
|
||||
//-----------------------------------
|
||||
|
||||
|
||||
|
||||
//return everything
|
||||
/**
|
||||
* @type {{embed:discord.EmbedBuilder,componentRows:discord.MessageActionRow[]}}
|
||||
*/
|
||||
const returnedData = {embed:embed,componentRows:componentRows}
|
||||
return returnedData
|
||||
}
|
||||
|
||||
|
||||
this.createEmbed()
|
||||
@@ -1,208 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const l = bot.language
|
||||
const log = bot.errorLog.log
|
||||
|
||||
const getconfigoptions = require("./getoptions")
|
||||
const storage = bot.storage
|
||||
|
||||
module.exports = () => {
|
||||
var closeButton = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
|
||||
//ticket button click / create ticket
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (interaction.isChatInputCommand() && (interaction.commandName == "new" || interaction.commandName == "ticket")){
|
||||
var customId = "newT"+interaction.options.getString("type")
|
||||
}else if (interaction.isButton()){
|
||||
var customId = interaction.customId
|
||||
}else return
|
||||
|
||||
if (interaction.isButton()){
|
||||
if (interaction.customId.startsWith("newT")){
|
||||
const optionid = interaction.customId.split("newT")[1]
|
||||
if (!optionid){
|
||||
interaction.reply({embeds:[bot.errorLog.serverError(l.errors.ticketDoesntExist)]})
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (getconfigoptions.getTicketValues("id").includes(customId)){
|
||||
|
||||
//ticketoptions from config
|
||||
const currentTicketOptions = getconfigoptions.getOptionsById(customId)
|
||||
|
||||
if (currentTicketOptions == false || currentTicketOptions.type != "ticket") return interaction.reply({embeds:[bot.errorLog.serverError(l.errors.anotherOption)]})
|
||||
|
||||
if (interaction.isButton()){
|
||||
interaction.deferUpdate()
|
||||
}else if (interaction.isChatInputCommand()){
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)]})
|
||||
}
|
||||
|
||||
if (storage.get("ticketStorage",interaction.member.id) == null || storage.get("ticketStorage",interaction.member.id) == "false"|| Number(storage.get("ticketStorage",interaction.member.id)) < config.system.max_allowed_tickets){
|
||||
|
||||
try{
|
||||
if (config.system.enable_DM_Messages){
|
||||
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.newTicketDmTitle,currentTicketOptions.message,":ticket:",config.main_color)]})
|
||||
}
|
||||
}
|
||||
catch{log("system","can't send DM to member, member doesn't allow dm's")}
|
||||
|
||||
|
||||
//update storage
|
||||
storage.set("ticketStorage",interaction.member.id,Number(storage.get("ticketStorage",interaction.member.id))+1)
|
||||
var ticketNumber = interaction.member.user.username
|
||||
|
||||
//set ticketName
|
||||
var ticketName = currentTicketOptions.channelprefix+ticketNumber
|
||||
var logsname = currentTicketOptions.name
|
||||
|
||||
//category
|
||||
if (currentTicketOptions.category.length < 16 || currentTicketOptions.category.length > 20){
|
||||
var newTicketCategory = null
|
||||
}else{
|
||||
var newTicketCategory = currentTicketOptions.category
|
||||
}
|
||||
|
||||
var permissionsArray = []
|
||||
const pfb = discord.PermissionFlagsBits
|
||||
const guild = client.guilds.cache.find(g => g.id == interaction.guild.id)
|
||||
|
||||
//set everyone allowed
|
||||
if (config.system['has@everyoneaccess']){
|
||||
var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
var everyoneDenyPerms = []
|
||||
}else{
|
||||
var everyoneAllowPerms = []
|
||||
var everyoneDenyPerms = [pfb.ViewChannel]
|
||||
}
|
||||
permissionsArray.push({
|
||||
id:interaction.guild.roles.everyone,
|
||||
type:"role",
|
||||
allow:everyoneAllowPerms,
|
||||
deny:everyoneDenyPerms
|
||||
})
|
||||
|
||||
//add the user that created the ticket
|
||||
permissionsArray.push({
|
||||
id:interaction.member.user,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
})
|
||||
|
||||
//add main adminroles
|
||||
config.main_adminroles.forEach((role,index) => {
|
||||
try {
|
||||
const adminrole = guild.roles.cache.find(r => r.id == role)
|
||||
if (!adminrole) return
|
||||
|
||||
permissionsArray.push({
|
||||
id:adminrole,
|
||||
type:"role",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
})
|
||||
}catch{
|
||||
log("system","invalid role! At 'config.json => main_adminroles:"+index)
|
||||
}
|
||||
})
|
||||
|
||||
//add ticket adminroles
|
||||
/**
|
||||
* @type {String[]}
|
||||
*/
|
||||
const ticketadmin = currentTicketOptions.adminroles
|
||||
ticketadmin.forEach((role,index) => {
|
||||
if (!config.main_adminroles.includes(role)){
|
||||
try {
|
||||
const adminrole = guild.roles.cache.find(r => r.id == role)
|
||||
if (!adminrole) return
|
||||
|
||||
permissionsArray.push({
|
||||
id:adminrole,
|
||||
type:"role",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
})
|
||||
}catch{
|
||||
log("system","invalid role! At 'config.json => options/ticket/...:"+index)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
//add member role
|
||||
if (config.system.member_role != "" && config.system.member_role != " " && config.system.member_role != "false" && config.system.member_role != "null" && config.system.member_role != "0"){
|
||||
try {
|
||||
const userrole = guild.roles.cache.find(r => r.id == config.system.member_role)
|
||||
if (!userrole) return
|
||||
permissionsArray.push({
|
||||
id:userrole,
|
||||
type:"role",
|
||||
deny:[pfb.ViewChannel]
|
||||
})
|
||||
}catch{
|
||||
log("system","invalid role! At 'config.json => system/member_role")
|
||||
}
|
||||
}
|
||||
|
||||
//create the channel
|
||||
interaction.guild.channels.create({
|
||||
name:ticketName,
|
||||
type:discord.ChannelType.GuildText,
|
||||
parent:newTicketCategory,
|
||||
reason:"A new ticket is created",
|
||||
permissionOverwrites:permissionsArray
|
||||
|
||||
}).then((ticketChannel) => {
|
||||
storage.set("userTicketStorage",ticketChannel.id,interaction.member.id)
|
||||
|
||||
var ticketEmbed = new discord.EmbedBuilder()
|
||||
.setAuthor({name:interaction.user.id})
|
||||
.setColor(config.main_color)
|
||||
.setTitle(currentTicketOptions.name)
|
||||
.setFooter({text:"Ticket Type: "+currentTicketOptions.id})
|
||||
if (currentTicketOptions.ticketmessage.length > 0) ticketEmbed.setDescription(currentTicketOptions.ticketmessage)
|
||||
|
||||
ticketChannel.send({
|
||||
content:"<@"+interaction.member.id+"> @here",
|
||||
embeds:[ticketEmbed],
|
||||
components:[closeButton]
|
||||
|
||||
}).then(firstmsg => {
|
||||
firstmsg.pin()
|
||||
})
|
||||
|
||||
log("system","created new ticket",[{key:"ticket",value:ticketName},{key:"user",value:interaction.user.tag}])
|
||||
require("./api/modules/events").onTicketOpen(interaction.user,ticketChannel,interaction.guild,new Date(),{name:ticketName,status:"open",ticketOptions:currentTicketOptions})
|
||||
})
|
||||
}else{
|
||||
try {
|
||||
if (config.system.enable_DM_Messages){
|
||||
interaction.member.send({embeds:[bot.errorLog.warning(l.errors.maxAmountTitle,l.errors.maxAmountDescription)]})
|
||||
}
|
||||
}
|
||||
catch{log("system","can't send DM to member, member doesn't allow dm's")}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1,289 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
const storage = bot.storage
|
||||
|
||||
module.exports = () => {
|
||||
var closeRowNormal = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("closeTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
|
||||
var closeRowClosed = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("deleteTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("sendTranscript")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setLabel(l.buttons.sendTranscript)
|
||||
.setEmoji("📄")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Success)
|
||||
.setLabel(l.buttons.reopen)
|
||||
.setEmoji("✔")
|
||||
)
|
||||
|
||||
var reopenBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicketTrue")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicketFalse")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
|
||||
var reopenBar1 = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicketTrue1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("✅")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicketFalse1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("❌")
|
||||
)
|
||||
|
||||
var reopenCommandBar = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("reopenTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Secondary)
|
||||
.setEmoji("🔓")
|
||||
)
|
||||
|
||||
//NORMAL WAY
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "reopenTicket") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[reopenBar]})
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "reopenTicketFalse") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[closeRowClosed]})
|
||||
|
||||
})
|
||||
|
||||
const pfb = discord.PermissionFlagsBits
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "reopenTicketTrue") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
|
||||
const embed = new discord.EmbedBuilder()
|
||||
.setColor(config.main_color)
|
||||
.setTitle(":unlock: "+l.messages.reopenTitle+" :unlock:")
|
||||
.setDescription(l.messages.reopenDescription)
|
||||
|
||||
interaction.message.edit({embeds:[embed],components:[closeRowNormal]})
|
||||
|
||||
log("system","re-opened a ticket",[{key:"ticket",value:interaction.channel.name},{key:"user",value:interaction.user.tag}])
|
||||
|
||||
|
||||
var permissionsArray = []
|
||||
|
||||
//set everyone allowed
|
||||
if (config.system['has@everyoneaccess']){
|
||||
var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
var everyoneDenyPerms = []
|
||||
}else{
|
||||
var everyoneAllowPerms = []
|
||||
var everyoneDenyPerms = [pfb.ViewChannel]
|
||||
}
|
||||
permissionsArray.push({
|
||||
id:interaction.guild.roles.everyone,
|
||||
type:"role",
|
||||
allow:everyoneAllowPerms,
|
||||
deny:everyoneDenyPerms
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.cache.forEach((p) => {
|
||||
if (p.type == "member"){
|
||||
permissionsArray.push({
|
||||
id:p.id,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel],
|
||||
deny:[]
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.set(permissionsArray)
|
||||
})
|
||||
|
||||
|
||||
//COMMAND WAY
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "reopenTicket1") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[reopenBar1]})
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "reopenTicketFalse1") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
interaction.message.edit({components:[reopenCommandBar]})
|
||||
|
||||
})
|
||||
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "reopenTicketTrue1") return
|
||||
|
||||
interaction.deferUpdate()
|
||||
|
||||
const embed = new discord.EmbedBuilder()
|
||||
.setColor(config.main_color)
|
||||
.setTitle(":unlock: "+l.messages.reopenTitle+" :unlock:")
|
||||
.setDescription(l.messages.reopenDescription)
|
||||
|
||||
interaction.message.edit({content:null,embeds:[embed],components:[closeRowNormal]})
|
||||
|
||||
log("system","re-opened a ticket",[{key:"ticket",value:interaction.channel.name},{key:"user",value:interaction.user.tag}])
|
||||
|
||||
|
||||
var permissionsArray = []
|
||||
|
||||
//set everyone allowed
|
||||
if (config.system['has@everyoneaccess']){
|
||||
var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
var everyoneDenyPerms = []
|
||||
}else{
|
||||
var everyoneAllowPerms = []
|
||||
var everyoneDenyPerms = [pfb.ViewChannel]
|
||||
}
|
||||
permissionsArray.push({
|
||||
id:interaction.guild.roles.everyone,
|
||||
type:"role",
|
||||
allow:everyoneAllowPerms,
|
||||
deny:everyoneDenyPerms
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.cache.forEach((p) => {
|
||||
if (p.type == "member"){
|
||||
permissionsArray.push({
|
||||
id:p.id,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel],
|
||||
deny:[]
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.set(permissionsArray)
|
||||
|
||||
//getID & send DM
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
|
||||
|
||||
const id = firstmsg.embeds[0].author.name
|
||||
|
||||
if (!id) return false
|
||||
|
||||
try{
|
||||
if (config.system.enable_DM_Messages){
|
||||
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.reopenTicketDmTitle,l.messages.reopenTicketDmDescription,":ticket:",config.main_color)]})
|
||||
}
|
||||
}
|
||||
catch{log("system","can't send DM to member, member doesn't allow dm's")}
|
||||
})
|
||||
})
|
||||
|
||||
//DASHBOARD (comming soon!)
|
||||
/**
|
||||
*
|
||||
* @param {discord.Guild} guild
|
||||
* @param {discord.TextBasedChannel} channel
|
||||
* @param {discord.User} user
|
||||
* @returns
|
||||
*/
|
||||
const reopenTicket = (guild,channel,user) => {
|
||||
log("system","re-opened a ticket",[{key:"ticket",value:channel.name},{key:"user",value:user.tag}])
|
||||
|
||||
var permissionsArray = []
|
||||
|
||||
//set everyone allowed
|
||||
if (config.system['has@everyoneaccess']){
|
||||
var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
var everyoneDenyPerms = []
|
||||
}else{
|
||||
var everyoneAllowPerms = []
|
||||
var everyoneDenyPerms = [pfb.ViewChannel]
|
||||
}
|
||||
permissionsArray.push({
|
||||
id:guild.roles.everyone,
|
||||
type:"role",
|
||||
allow:everyoneAllowPerms,
|
||||
deny:everyoneDenyPerms
|
||||
})
|
||||
|
||||
channel.permissionOverwrites.cache.forEach((p) => {
|
||||
if (p.type == "member"){
|
||||
permissionsArray.push({
|
||||
id:p.id,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel],
|
||||
deny:[]
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
channel.permissionOverwrites.set(permissionsArray)
|
||||
}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const l = bot.language
|
||||
|
||||
/** @param {discord.TextBasedChannel} channel @returns {Promise<{ticketname:String,ticketopener:{discordjsuser:discord.User,name:String,id:String}>} */
|
||||
const getUserInfo = (channel) => {
|
||||
return new Promise((promiseresolve,reject) => {
|
||||
//getID
|
||||
var result = {
|
||||
ticketopener:{
|
||||
discordjsuser:"",
|
||||
id:"/",
|
||||
name:"/"
|
||||
},
|
||||
ticketname:"/"
|
||||
}
|
||||
channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
|
||||
|
||||
const id = firstmsg.embeds[0].author.name ? firstmsg.embeds[0].author.name : false
|
||||
|
||||
result.ticketopener.id = id
|
||||
|
||||
const ticketopener = client.users.cache.find(u => u.id == id)
|
||||
const name = ticketopener.tag
|
||||
|
||||
const channelname = channel.name
|
||||
|
||||
promiseresolve({ticketname:channelname,ticketopener:{discordjsuser:ticketopener,name:name,id:id}})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.Message[]} messagecollection
|
||||
* @param {discord.Channel} channel
|
||||
* @returns new `discord.attachmentBuilder`
|
||||
*/
|
||||
|
||||
exports.createTranscript = async (messagecollection,channel) => {
|
||||
const ticketuserdata = await getUserInfo(channel)
|
||||
try {
|
||||
const cd = new Date()
|
||||
const months = ["January","February","March","April","May","June","July","August","September","October","November","December"]
|
||||
const dateString = cd.getDate()+" "+months[cd.getMonth()-1]+" "+cd.getFullYear()+" - "+cd.getSeconds()+":"+cd.getMinutes()+":"+cd.getHours()
|
||||
const filearray = ["open ticket transcript:\ntranscript creation: "+dateString+"\nticket name: "+ticketuserdata.ticketname+"\nticket opener: "+ticketuserdata.ticketopener.name,"\nTRANSCRIPT START:"]
|
||||
|
||||
messagecollection.reverse()
|
||||
|
||||
messagecollection.forEach((msg) => {
|
||||
const timestamp = new Date(msg.createdTimestamp)
|
||||
|
||||
if (msg.content){var content = msg.content}else{var content = "*empty message*"}
|
||||
|
||||
const msgstats = "files: "+msg.attachments.size+" | embeds: "+msg.embeds.length+" | isbot: "+msg.author.bot
|
||||
filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+" | "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+" | "+msg.author.tag+" ] ["+msgstats+"]\n"+content+"\n")
|
||||
})
|
||||
|
||||
if (filearray.length < 2) filearray.push("transcript is empty")
|
||||
const filestring = filearray.join("\n")
|
||||
const filebuff = Buffer.from(filestring,"utf-8")
|
||||
return new discord.AttachmentBuilder(filebuff,{name:"transcript_"+ticketuserdata.ticketname+".txt",description:"An Open Ticket transcript"})
|
||||
}catch(err){
|
||||
console.log("[error] "+err)
|
||||
return false
|
||||
}
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
const discord = require("discord.js")
|
||||
const bot = require("../../index")
|
||||
const config = bot.config
|
||||
const getoptions = require("../getoptions")
|
||||
const l = bot.language
|
||||
|
||||
/**@returns {"DANGER"|"SUCCESS"|"PRIMARY"|"SECONDARY"} */
|
||||
const getColor = (color) => {
|
||||
const b = discord.ButtonStyle
|
||||
if (color.toLowerCase() == "red"){
|
||||
return b.Danger
|
||||
}else if (color.toLowerCase() == "green"){
|
||||
return b.Success
|
||||
}else if (color.toLowerCase() == "blue" || color.toLowerCase() == "blurple"){
|
||||
return b.Primary
|
||||
}else if (color.toLowerCase() == "black" || color.toLowerCase() == "gray" || color.toLowerCase() == "grey"){
|
||||
return b.Secondary
|
||||
}else if (color == "DANGER" || color == "SECONDARY" || color == "SUCCESS" || color == "PRIMARY"){
|
||||
return color
|
||||
}else if (color.toLowerCase() == "none" || color.toLowerCase() == "false" || color.toLowerCase() == ""){
|
||||
return b.Secondary
|
||||
}else return b.Secondary
|
||||
}
|
||||
|
||||
const getOption = (id) => {
|
||||
const result = config.options.find((option) => option.id == id)
|
||||
if (!result){return false}else return result
|
||||
}
|
||||
exports.getOption = getOption
|
||||
/**
|
||||
*
|
||||
* @param {String} id
|
||||
* @returns {discord.ButtonBuilder|false}
|
||||
*/
|
||||
exports.getButton = (id) => {
|
||||
const option = getOption(id)
|
||||
if (!option) return false
|
||||
if (option.type == "ticket"){
|
||||
var button = new discord.ButtonBuilder()
|
||||
.setCustomId("newT"+option.id)
|
||||
.setDisabled(false)
|
||||
.setStyle(getColor(option.color))
|
||||
|
||||
if (option.label){button.setLabel(option.label)}
|
||||
if (option.icon){button.setEmoji(option.icon)}
|
||||
if (!option.label && !option.icon){button.setLabel("no label or emoji")}
|
||||
|
||||
}else if (option.type == "website"){
|
||||
var button = new discord.ButtonBuilder()
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Link)
|
||||
.setURL(option.url)
|
||||
|
||||
if (option.label){button.setLabel(option.label)}
|
||||
if (option.icon){button.setEmoji(option.icon)}
|
||||
if (!option.label && !option.icon){button.setLabel("no label or emoji")}
|
||||
|
||||
}else if (option.type == "role"){
|
||||
var button = new discord.ButtonBuilder()
|
||||
.setCustomId("newR"+option.id)
|
||||
.setDisabled(false)
|
||||
.setStyle(getColor(option.color))
|
||||
|
||||
if (option.label){button.setLabel(option.label)}
|
||||
if (option.icon){button.setEmoji(option.icon)}
|
||||
if (!option.label && !option.icon){button.setLabel("no label or emoji")}
|
||||
|
||||
}
|
||||
|
||||
return button
|
||||
}
|
||||
|
||||
|
||||
exports.rawButtonData = class {
|
||||
constructor() {
|
||||
this.id = ""
|
||||
this.name = ""
|
||||
this.description = ""
|
||||
this.icon = ""
|
||||
this.label = ""
|
||||
this.type = ""
|
||||
|
||||
this.color = ""
|
||||
this.enableDMMessage = true
|
||||
this.url = ""
|
||||
this.roles = ["",""]
|
||||
this.mode = ""
|
||||
this.adminroles = ["",""]
|
||||
this.channelprefix = ""
|
||||
this.category = ""
|
||||
this.message = ""
|
||||
this.ticketmessage = ""
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
const bot = require("../../index")
|
||||
const config = bot.config
|
||||
const l = bot.language
|
||||
|
||||
exports.getTicketMessage = (input) => {
|
||||
var returned = config.messages.find(a => a.id == input)
|
||||
if (returned){
|
||||
return returned
|
||||
}
|
||||
var result = config.messages[0]
|
||||
if (!result){
|
||||
throw new Error("'messages' object in config.json is empty")
|
||||
return
|
||||
}
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -1,174 +1,31 @@
|
||||
// __________ __________ ___________ ____ ____
|
||||
// / ____ \ / ______ \ / | | \ | |
|
||||
// | / \ | | | | | | |_______| | \ | |
|
||||
// | | | | | |____| | | | | |\ \ | |
|
||||
// | | | | | ________/ | |______ | | \ \ | |
|
||||
// | | | | | | | _____| | | \ \ | |
|
||||
// | | | | | | | | | | \ \ | |
|
||||
// | | | | | | | |________ | | \ \| |
|
||||
// | \____/ | | | | | | | \ |
|
||||
// \__________/ |__| \__________| |__| \___|
|
||||
/////////////// STARTUP FLAGS ///////////////
|
||||
const flags = [
|
||||
// Edit flags here when being unable to use the flags in the command prompt.
|
||||
//PTERODACTYL PANEL
|
||||
//add startup flags here (e.g. "--no-compile") when running via the panel
|
||||
]
|
||||
/////////////// STARTUP FLAGS ///////////////
|
||||
|
||||
/*
|
||||
██████╗ ██████╗ ███████╗███╗ ██╗ ████████╗██╗ ██████╗██╗ ██╗███████╗████████╗
|
||||
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ╚══██╔══╝██║██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝
|
||||
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ ██║██║ █████╔╝ █████╗ ██║
|
||||
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██║██║ ██╔═██╗ ██╔══╝ ██║
|
||||
╚██████╔╝██║ ███████╗██║ ╚████║ ██║ ██║╚██████╗██║ ██╗███████╗ ██║
|
||||
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝
|
||||
v4.2.0 - Made by DJj123dj & Contributors
|
||||
|
||||
const discord = require('discord.js')
|
||||
const fs = require('fs')
|
||||
const {GatewayIntentBits,Partials} = discord
|
||||
const client = new discord.Client({
|
||||
intents:[
|
||||
GatewayIntentBits.DirectMessages,
|
||||
GatewayIntentBits.GuildInvites,
|
||||
GatewayIntentBits.GuildMembers,
|
||||
GatewayIntentBits.GuildMessages,
|
||||
GatewayIntentBits.Guilds,
|
||||
GatewayIntentBits.MessageContent
|
||||
],
|
||||
partials:[Partials.Channel,Partials.Message]
|
||||
})
|
||||
exports.client = client
|
||||
Discord: https://discord.dj-dj.be
|
||||
Docs: https://otdocs.dj-dj.be
|
||||
Support Us: https://github.com/sponsors/DJj123dj/
|
||||
|
||||
*/
|
||||
|
||||
client.setMaxListeners(30)
|
||||
///////////////////////////////////////////
|
||||
////////// COMPILATION + STARTUP //////////
|
||||
///////////////////////////////////////////
|
||||
|
||||
if (process.argv[2]){
|
||||
if (process.argv[2].endsWith("d")){
|
||||
var isDev = true
|
||||
console.log("starting in dev mode...")
|
||||
}else{var isDev = false}
|
||||
}else{var isDev = false}
|
||||
|
||||
exports.developerMode = isDev
|
||||
const language = require("./core/languageManager").language
|
||||
exports.language = language
|
||||
|
||||
if (isDev){
|
||||
try {
|
||||
var config = require('./devConfig.json')
|
||||
}catch{
|
||||
console.log("devConfig.json not found! Trying the normal config...")
|
||||
var config = require("./config.json")
|
||||
}
|
||||
}else{var config = require('./config.json')}
|
||||
exports.config = config
|
||||
exports.errorLog = require("./core/errorLogSystem")
|
||||
const log = this.errorLog.log
|
||||
|
||||
client.on('ready',async () => {
|
||||
var statusSet = false
|
||||
const setStatus = (type,text) => {
|
||||
if (statusSet == true) return
|
||||
const getTypeEnum = (text) => {
|
||||
if (text.toLowerCase() == "playing") return discord.ActivityType.Playing
|
||||
else if (text.toLowerCase() == "listening") return discord.ActivityType.Listening
|
||||
else if (text.toLowerCase() == "watching") return discord.ActivityType.Watching
|
||||
else return discord.ActivityType.Listening
|
||||
}
|
||||
client.user.setActivity(text,{type:getTypeEnum(type)})
|
||||
statusSet = true
|
||||
log("system","loaded status",[{key:"type",value:type},{key:"text",value:text}])
|
||||
}
|
||||
|
||||
const chalk = await (await import("chalk")).default
|
||||
|
||||
if (!process.argv[2]){
|
||||
console.log(chalk.red("WELCOME TO OPEN TICKET!"))
|
||||
log("info","open ticket ready",[{key:"version",value:require("./package.json").version},{key:"language",value:config.languagefile}])
|
||||
|
||||
console.log(chalk.blue("\n\nlogs:")+"\n============")
|
||||
if (config.status.enabled){
|
||||
setStatus(config.status.type,config.status.text)
|
||||
}
|
||||
|
||||
log("system","bot logged in!")
|
||||
|
||||
await client.guilds.cache.find((g) => g.id == config.server_id).members.fetch()
|
||||
return
|
||||
}
|
||||
|
||||
if (process.argv[2] == "d"){
|
||||
if (config.status.enabled){
|
||||
setStatus(config.status.type,config.status.text)
|
||||
}
|
||||
}
|
||||
|
||||
if (!process.argv[2].startsWith("slash")){
|
||||
console.log(chalk.red("WELCOME TO OPEN TICKET!"))
|
||||
log("info","open ticket ready",[{key:"version",value:require("./package.json").version},{key:"language",value:config.languagefile}])
|
||||
|
||||
console.log(chalk.blue("\n\nlogs:")+"\n============")
|
||||
if (config.status.enabled){
|
||||
setStatus(config.status.type,config.status.text)
|
||||
}
|
||||
|
||||
log("system","bot logged in!")
|
||||
|
||||
await client.guilds.cache.find((g) => g.id == config.server_id).members.fetch()
|
||||
}else{
|
||||
console.log(chalk.red("STARTING IN ")+chalk.blue("SLASH MODE")+chalk.red("..."))
|
||||
console.log("logs:\n================")
|
||||
console.log("client logged in...")
|
||||
console.log("loading files...")
|
||||
if (process.argv[3] == "enable"){
|
||||
console.log(chalk.green("switching to slashEnable.js"))
|
||||
require("./core/slashSystem/slashEnable")()
|
||||
}else if (process.argv[3] == "disable"){
|
||||
console.log(chalk.green("switching to slashDisable.js"))
|
||||
require("./core/slashSystem/slashDisable")()
|
||||
}else{
|
||||
console.log(chalk.red("Internal Error: unknown slash mode!"))
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
if (!isDev){
|
||||
require("./core/checker").checker()
|
||||
}
|
||||
|
||||
if (process.argv[2] && process.argv[2].startsWith("slash")){
|
||||
//do nothing
|
||||
}else{
|
||||
var storage = require('./core/dynamicdatabase/storage')
|
||||
exports.storage = storage
|
||||
|
||||
//commands
|
||||
require('./commands/ticket')()
|
||||
require("./commands/help")()
|
||||
require("./commands/close")()
|
||||
require("./commands/delete")()
|
||||
require("./commands/rename")()
|
||||
require("./commands/add")()
|
||||
require("./commands/remove")()
|
||||
require("./commands/reopen")()
|
||||
|
||||
//core
|
||||
require('./core/ticketOpener')()
|
||||
require("./core/ticketCloser").runThis()
|
||||
require("./core/closebuttons")()
|
||||
require("./core/reactionRoles")()
|
||||
require("./core/ticketReopener")()
|
||||
|
||||
}
|
||||
|
||||
const debugLog = (debugString) => {
|
||||
const content = fs.existsSync("./openticketdebug.txt") ? fs.readFileSync("./openticketdebug.txt").toString() : "==========================\n<OPEN TICKET DEBUG FILE:>\n=========================="
|
||||
fs.writeFileSync("./openticketdebug.txt",content+"\nDEBUG: "+debugString)
|
||||
}
|
||||
const errorLog = (errorString,stack) => {
|
||||
const content = fs.existsSync("./openticketdebug.txt") ? fs.readFileSync("./openticketdebug.txt").toString() : "==========================\n<OPEN TICKET DEBUG FILE:>\n=========================="
|
||||
fs.writeFileSync("./openticketdebug.txt",content+"\nERROR: "+errorString+" STACK: "+stack)
|
||||
}
|
||||
|
||||
client.on("debug", async (message) => {
|
||||
if (message.startsWith("Provided token:")){
|
||||
debugLog("Provided token: ***********bot token is invisible**************...")
|
||||
return
|
||||
}
|
||||
debugLog(message)
|
||||
});
|
||||
|
||||
process.on("uncaughtException",async (error,origin) => {
|
||||
const chalk = await (await import("chalk")).default
|
||||
console.log(chalk.red("\nOPEN TICKET ERROR: ")+error+"\n"+chalk.green("\nCreate a ticket in our support server for more information!\nIf you do this, you might help us to avoid a future bug!\n"))
|
||||
errorLog(error.name+": "+error.message+" | origin: "+origin,error.stack)
|
||||
})
|
||||
|
||||
client.login(config.auth_token)
|
||||
import { frameworkStartup } from "@open-discord-bots/framework"
|
||||
frameworkStartup(flags,"openticket",async () => {
|
||||
await import("./dist/src/index.js")
|
||||
})
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
"errors":{
|
||||
"missingArgsTitle":"حجج باطلة",
|
||||
"missingArgsDescription":"حجة مفقودة",
|
||||
"noPermsTitle":"ليس لديك إذن",
|
||||
"noPermsDescription":"ليس لديك إذن لاستخدام هذا\nأنت بحاجة إلى إذن 'ADMINISTRATOR' أو أن تكون في قائمة الأدوار المسموح بها!",
|
||||
"chooseFromListTitle":"بطاقة التعريف غير صالحة",
|
||||
"chooseFromListDescription":"اختر أحد المعرفات أدناه:",
|
||||
"boterror":"مشكلة في الروبوت",
|
||||
"notInTicketTitle":"أنت لست في تذكرة!",
|
||||
"notInTicketDescription":"هذا الأمر لا يعمل خارج التذاكر!",
|
||||
"ticketDoesntExist":"هذه التذكرة لم تعد موجودة!",
|
||||
"roleDoesntExist":"هذا الدور لم يعد موجودًا!",
|
||||
"anotherOption":"هذا الخيار ليس تذكرة بل نوع آخر!",
|
||||
"maxAmountTitle":"بلغ الحد الأقصى!",
|
||||
"maxAmountDescription":"لقد وصلت إلى الحد الأقصى لعدد التذاكر المسموح بها!\nلذلك لا يمكنك إنشاء واحدة جديدة!",
|
||||
"somethingWentWrong":"**هناك خطأ ما!**\nالرجاء المحاولة مرة أخرى!",
|
||||
"somethingWentWrongTranscript":"**حدث خطأ ما أثناء كتابة النص!**\nالرجاء المحاولة مرة أخرى!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"تمت إضافة المستخدم!",
|
||||
"userAddedDescription":"{0} يضاف إلى هذه التذكرة!",
|
||||
"userRemovedTitle":"تمت إزالة المستخدم!",
|
||||
"userRemovedDescription":"{0} تمت إزالته من هذه التذكرة!",
|
||||
|
||||
"renameTitle":"تم تغيير الاسم!",
|
||||
"renameWarning":"تحذير: يمكنك فقط تغيير اسم القناة مرتين في الدقيقة!\n(هذا يرجع إلى حدود معدل الخلاف)",
|
||||
|
||||
"closeTitle":"أغلق هذه التذكرة!",
|
||||
"closeDescription":"يمكنك إغلاق هذه التذكرة بالضغط على الزر أدناه!",
|
||||
"deleteTitle":"احذف هذه التذكرة!",
|
||||
"deleteDescription":"يمكنك حذف هذه التذكرة بالضغط على الزر أدناه!",
|
||||
"reopenTitle":"أعد فتح هذه التذكرة!",
|
||||
"reopenDescription":"يمكنك إعادة فتح هذه التذكرة بالضغط على الزر أدناه!",
|
||||
|
||||
"ticketWarning":"التضمين في الرسالة أدناه!",
|
||||
"maxTicketWarning":"**تحذير:** _يمكنك فقط إنشاء ملفات {0} تذكرة في كل مرة!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"قائمة التعليمات:",
|
||||
"header1":"**اذهب إلى {0} لإنشاء تذكرة!**\n\n",
|
||||
"header2":"**قم بتشغيل الأمر `/new` أو `/ticket` لإنشاء تذكرة!**\n\n",
|
||||
|
||||
"msgCmd":"تفرخ تضمين مع الأزرار. (المسؤولون فقط)",
|
||||
"renameCmd":"إعادة تسمية تذكرة. (بدون مسافات)",
|
||||
"closeCmd":"أغلق التذكرة.",
|
||||
"deleteCmd":"حذف التذكرة.",
|
||||
"addCmd":"أضف مستخدمًا إلى التذكرة.",
|
||||
"removeCmd":"إزالة مستخدم من التذكرة.",
|
||||
"reopenCmd":"أعد فتح التذكرة بعد إغلاقه."
|
||||
},
|
||||
"buttons":{
|
||||
"close":"إغلاق التذكرة",
|
||||
"delete":"حذف التذكرة",
|
||||
"reopen":"إعادة فتح التذكرة",
|
||||
"sendTranscript":"إرسال ملف النص"
|
||||
},
|
||||
"messages":{
|
||||
"reopenTitle":"أعيد فتح هذه التذكرة!",
|
||||
"reopenDescription":"لا تتردد في التحدث مرة أخرى!",
|
||||
"closedTitle":"أغلقت هذه التذكرة!",
|
||||
"closedDescription":"يمكن للمسؤولين فقط التحدث في هذه التذكرة الآن!\n\n*انقر فوق الزر أدناه لحذف هذه التذكرة أو إعادة فتحها!*",
|
||||
"createdTitle":"تم إنشاء التذكرة!",
|
||||
"createdDescription":"تم إنشاء تذكرتك ، يمكنك اكتشافها عن طريق ping",
|
||||
|
||||
"newTicketDmTitle":"تذكرة جديدة!",
|
||||
"closedTicketDmTitle":"تم إغلاق التذكرة!",
|
||||
"deletedTicketDmTitle":"تم حذف التذكرة!",
|
||||
"closedTicketDmDescription":"تم إغلاق تذكرتك!",
|
||||
"deletedTicketDmDescription":"تم حذف تذكرتك!",
|
||||
"reopenTicketDmTitle":"أعيد فتح التذكرة!",
|
||||
"reopenTicketDmDescription":"تم إعادة فتح تذكرتك!",
|
||||
"newTranscriptTitle":"نسخة جديدة هنا!",
|
||||
"newTranscriptDescription":"يمكنك العثور على النص في الملف النصي أعلاه!",
|
||||
"hereIsTheTranscript":"هذا هو النص:",
|
||||
|
||||
"chooseCategory":"اختر فئة:",
|
||||
"gettingdeleted":"...يتم حذف التذكرة"
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
"errors":{
|
||||
"missingArgsTitle":"Invalid Arguments!",
|
||||
"missingArgsDescription":"Missing Argument",
|
||||
"noPermsTitle":"No Permissions!",
|
||||
"noPermsDescription":"You don't have the correct roles to run this command!\nYou need the `ADMINISTRATOR` permission or be in the list of allowed roles!",
|
||||
"chooseFromListTitle":"Invalid ID",
|
||||
"chooseFromListDescription":"Choose one of the id's below:",
|
||||
"boterror":"Bot Error!",
|
||||
"notInTicketTitle":"You are not in a ticket!",
|
||||
"notInTicketDescription":"This command doesn't work outside tickets!",
|
||||
"ticketDoesntExist":"This ticket doesn't exist anymore!",
|
||||
"roleDoesntExist":"This role doesn't exist anymore!",
|
||||
"anotherOption":"This option is not a ticket but another type!",
|
||||
"maxAmountTitle":"Max amount reached!",
|
||||
"maxAmountDescription":"You reached the maximum number of tickets allowed!\nSo you can't create a new one!",
|
||||
"somethingWentWrong":"**Something went wrong!**\nPlease try again another time!",
|
||||
"somethingWentWrongTranscript":"Something went wrong while making the transcript!**\nPlease try again another time!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"User Added!",
|
||||
"userAddedDescription":"{0} is added to this ticket!",
|
||||
"userRemovedTitle":"User Removed!",
|
||||
"userRemovedDescription":"{0} is removed from this ticket!",
|
||||
|
||||
"renameTitle":"The name is changed!",
|
||||
"renameWarning":"Warning: you can only change the channel name 2 times per minute!\n(this is due discord rate limits)",
|
||||
|
||||
"closeTitle":"Close this ticket!",
|
||||
"closeDescription":"You can close this ticket by clicking on the button below!",
|
||||
"deleteTitle":"Delete this ticket!",
|
||||
"deleteDescription":"You can delete this ticket by clicking on the button below!",
|
||||
"reopenTitle":"Re-Open this ticket!",
|
||||
"reopenDescription":"You can re-open this ticket by clicking on the button below!",
|
||||
|
||||
"ticketWarning":"The embed is in the message below!",
|
||||
"maxTicketWarning":"**Warning:** _You can only create {0} ticket(s) at a time!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Help Menu:",
|
||||
"header1":"**Go to {0} to create a ticket!**\n\n",
|
||||
"header2":"**Run the command `/new` or `/ticket` to create a ticket!**\n\n",
|
||||
|
||||
"msgCmd":"Spawn an embed with buttons. (admins only)",
|
||||
"renameCmd":"Rename a ticket. (no spaces)",
|
||||
"closeCmd":"Close a ticket.",
|
||||
"deleteCmd":"Delete a ticket.",
|
||||
"addCmd":"Add a user to the ticket.",
|
||||
"removeCmd":"Remove a user from the ticket.",
|
||||
"reopenCmd":"Re-Open a ticket after it was closed."
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Close Ticket",
|
||||
"delete":"Delete Ticket",
|
||||
"reopen":"Re-Open Ticket",
|
||||
"sendTranscript":"Send Transcript File"
|
||||
},
|
||||
"messages":{
|
||||
"reopenTitle":"Re-Opened this ticket!",
|
||||
"reopenDescription":"Feel free to talk again!",
|
||||
"closedTitle":"Closed this ticket!",
|
||||
"closedDescription":"Only admins can talk in this ticket now!\n\n*Click on the button below to delete or to re-open this ticket!*",
|
||||
"createdTitle":"Ticket Created!",
|
||||
"createdDescription":"Your ticket is created, you can detect it by a ping!",
|
||||
|
||||
"newTicketDmTitle":"New Ticket!",
|
||||
"closedTicketDmTitle":"Ticket Closed!",
|
||||
"deletedTicketDmTitle":"Ticket Deleted!",
|
||||
"closedTicketDmDescription":"Your ticket is closed!",
|
||||
"deletedTicketDmDescription":"Your ticket is deleted!",
|
||||
"reopenTicketDmTitle":"Ticket Re-opened!",
|
||||
"reopenTicketDmDescription":"Your ticket is re-opened!",
|
||||
"newTranscriptTitle":"A new transcript is here!",
|
||||
"newTranscriptDescription":"You can find the transcript in the text file above!",
|
||||
"hereIsTheTranscript":"Here is the transcript:",
|
||||
|
||||
"chooseCategory":"choose a category:",
|
||||
"gettingdeleted":"Ticket is getting deleted..."
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
"errors":{
|
||||
"missingArgsTitle":"Ongeldige Argumenten!",
|
||||
"missingArgsDescription":"Geen Argument",
|
||||
"noPermsTitle":"Geen permissies!",
|
||||
"noPermsDescription":"Je hebt niet de juiste rollen om deze command uit te voeren!\nJe hebt de `ADMINISTRATOR` permissie nodig of je moet in de lijst van toegestane rollen zitten!",
|
||||
"chooseFromListTitle":"Ongeldig ID",
|
||||
"chooseFromListDescription":"Kies een van deze id's:",
|
||||
"boterror":"Bot Error!",
|
||||
"notInTicketTitle":"Je bent niet in een ticket!",
|
||||
"notInTicketDescription":"Deze command werkt niet buiten tickets!",
|
||||
"ticketDoesntExist":"Dit ticket bestaat niet meer!",
|
||||
"roleDoesntExist":"Deze rol bestaat niet meer!",
|
||||
"anotherOption":"Deze optie is geen ticket maar een ander type!",
|
||||
"maxAmountTitle":"Max aantal bereikt!",
|
||||
"maxAmountDescription":"Je hebt het maximum aantal openstaande ticket bereikt!\nDus je kan er geen nieuwe maken!",
|
||||
"somethingWentWrong":"**Iets ging fout!**\nProbeer een andere keer opnieuw!",
|
||||
"somethingWentWrongTranscript":"Iets ging fout bij het maken van het transcript!**\nProbeer een andere keer opnieuw!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"User Toegevoegd!",
|
||||
"userAddedDescription":"{0} is toegevoegd aan dit ticket!",
|
||||
"userRemovedTitle":"User Verwijderd!",
|
||||
"userRemovedDescription":"{0} is verwijderd van dit ticket!",
|
||||
|
||||
"renameTitle":"De naam is veranderd!",
|
||||
"renameWarning":"Waarschuwing: je kan de kanaalnaam maar 2 keer per minuut veranderen!\n(dit heeft te maken met discord rate limits)",
|
||||
|
||||
"closeTitle":"Sluit dit ticket!",
|
||||
"closeDescription":"Je kan dit ticket sluiten door op de knop hier onder te duwen!",
|
||||
"deleteTitle":"Verwijder dit ticket!",
|
||||
"deleteDescription":"Je kan dit ticket verwijderen door op de knop hier onder te duwen!",
|
||||
"reopenTitle":"Heropen dit ticket!",
|
||||
"reopenDescription":"Je kan dit ticket heropenen door op de knop hier onder te duwen!",
|
||||
|
||||
"ticketWarning":"De embed is in het bericht hier onder!",
|
||||
"maxTicketWarning":"**Waarschuwing:** _Je kan maar {0} ticket(s) tegelijkertijd aanmaken!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Help Menu:",
|
||||
"header1":"**Ga naar {0} om een ticket te maken!**\n\n",
|
||||
"header2":"**Run de command `/new` of `/ticket` om een ticket te maken!**\n\n",
|
||||
|
||||
"msgCmd":"Spawn een embed met knoppen. (admins only)",
|
||||
"renameCmd":"Hernoem een ticket. (geen spaties)",
|
||||
"closeCmd":"Sluit een ticket.",
|
||||
"deleteCmd":"Verwijder een ticket.",
|
||||
"addCmd":"Voeg een user toe aan een ticket.",
|
||||
"removeCmd":"Verwijder een user van een ticket.",
|
||||
"reopenCmd":"Heropen een ticket nadat het gesloten wordt."
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Sluit Ticket",
|
||||
"delete":"Verwijder Ticket",
|
||||
"reopen":"Heropen Ticket",
|
||||
"sendTranscript":"Stuur Transcript Bestand"
|
||||
},
|
||||
"messages":{
|
||||
"reopenTitle":"Dit ticket is terug geopend!",
|
||||
"reopenDescription":"Voel vrij om terug te praten!",
|
||||
"closedTitle":"Dit ticket is gesloten!",
|
||||
"closedDescription":"Nu kunnen alleen nog admins praten in dit ticket!\n\n*Klik op de knop hier onder om het ticket terug te openen of te verwijderen!*",
|
||||
"createdTitle":"Ticket Gemaakt!",
|
||||
"createdDescription":"Je ticket is gemaakt, je kan het detecteren bij een ping!",
|
||||
|
||||
"newTicketDmTitle":"Nieuw Ticket!",
|
||||
"closedTicketDmTitle":"Ticket Gesloten!",
|
||||
"deletedTicketDmTitle":"Ticket Verwijderd!",
|
||||
"closedTicketDmDescription":"Je ticket is gesloten!",
|
||||
"deletedTicketDmDescription":"Je ticket is verwijderd!",
|
||||
"reopenTicketDmTitle":"Ticket Heropend!",
|
||||
"reopenTicketDmDescription":"Je ticket is heropend!",
|
||||
"newTranscriptTitle":"Een nieuw transcript is hier!",
|
||||
"newTranscriptDescription":"Je kan het transcript vinden in het bestand hierboven!",
|
||||
"hereIsTheTranscript":"Hier is het transcript:",
|
||||
|
||||
"chooseCategory":"kies een categorie:",
|
||||
"gettingdeleted":"Ticket wordt verwijderd..."
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
"errors":{
|
||||
"missingArgsTitle":"Invalid Arguments!",
|
||||
"missingArgsDescription":"Missing Argument",
|
||||
"noPermsTitle":"No Permissions!",
|
||||
"noPermsDescription":"You don't have the correct roles to run this command!\nYou need the `ADMINISTRATOR` permission or be in the list of allowed roles!",
|
||||
"chooseFromListTitle":"Invalid ID",
|
||||
"chooseFromListDescription":"Choose one of the id's below:",
|
||||
"boterror":"Bot Error!",
|
||||
"notInTicketTitle":"You are not in a ticket!",
|
||||
"notInTicketDescription":"This command doesn't work outside tickets!",
|
||||
"ticketDoesntExist":"This ticket doesn't exist anymore!",
|
||||
"roleDoesntExist":"This role doesn't exist anymore!",
|
||||
"anotherOption":"This option is not a ticket but another type!",
|
||||
"maxAmountTitle":"Max amount reached!",
|
||||
"maxAmountDescription":"You reached the maximum number of tickets allowed!\nSo you can't create a new one!",
|
||||
"somethingWentWrong":"**Something went wrong!**\nPlease try again another time!",
|
||||
"somethingWentWrongTranscript":"Something went wrong while making the transcript!**\nPlease try again another time!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"User Added!",
|
||||
"userAddedDescription":"{0} is added to this ticket!",
|
||||
"userRemovedTitle":"User Removed!",
|
||||
"userRemovedDescription":"{0} is removed from this ticket!",
|
||||
|
||||
"renameTitle":"The name is changed!",
|
||||
"renameWarning":"Warning: you can only change the channel name 2 times per minute!\n(this is due discord rate limits)",
|
||||
|
||||
"closeTitle":"Close this ticket!",
|
||||
"closeDescription":"You can close this ticket by clicking on the button below!",
|
||||
"deleteTitle":"Delete this ticket!",
|
||||
"deleteDescription":"You can delete this ticket by clicking on the button below!",
|
||||
"reopenTitle":"Re-Open this ticket!",
|
||||
"reopenDescription":"You can re-open this ticket by clicking on the button below!",
|
||||
|
||||
"ticketWarning":"The embed is in the message below!",
|
||||
"maxTicketWarning":"**Warning:** _You can only create {0} ticket(s) at a time!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Help Menu:",
|
||||
"header1":"**Go to {0} to create a ticket!**\n\n",
|
||||
"header2":"**Run the command `/new` or `/ticket` to create a ticket!**\n\n",
|
||||
|
||||
"msgCmd":"Spawn an embed with buttons. (admins only)",
|
||||
"renameCmd":"Rename a ticket. (no spaces)",
|
||||
"closeCmd":"Close a ticket.",
|
||||
"deleteCmd":"Delete a ticket.",
|
||||
"addCmd":"Add a user to the ticket.",
|
||||
"removeCmd":"Remove a user from the ticket.",
|
||||
"reopenCmd":"Re-Open a ticket after it was closed."
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Close Ticket",
|
||||
"delete":"Delete Ticket",
|
||||
"reopen":"Re-Open Ticket",
|
||||
"sendTranscript":"Send Transcript File"
|
||||
},
|
||||
"messages":{
|
||||
"reopenTitle":"Re-Opened this ticket!",
|
||||
"reopenDescription":"Feel free to talk again!",
|
||||
"closedTitle":"Closed this ticket!",
|
||||
"closedDescription":"Only admins can talk in this ticket now!\n\n*Click on the button below to delete or to re-open this ticket!*",
|
||||
"createdTitle":"Ticket Created!",
|
||||
"createdDescription":"Your ticket is created, you can detect it by a ping!",
|
||||
|
||||
"newTicketDmTitle":"New Ticket!",
|
||||
"closedTicketDmTitle":"Ticket Closed!",
|
||||
"deletedTicketDmTitle":"Ticket Deleted!",
|
||||
"closedTicketDmDescription":"Your ticket is closed!",
|
||||
"deletedTicketDmDescription":"Your ticket is deleted!",
|
||||
"reopenTicketDmTitle":"Ticket Re-opened!",
|
||||
"reopenTicketDmDescription":"Your ticket is re-opened!",
|
||||
"newTranscriptTitle":"A new transcript is here!",
|
||||
"newTranscriptDescription":"You can find the transcript in the text file above!",
|
||||
"hereIsTheTranscript":"Here is the transcript:",
|
||||
|
||||
"chooseCategory":"choose a category:",
|
||||
"gettingdeleted":"Ticket is getting deleted..."
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
{
|
||||
"errors":{
|
||||
"missingArgsTitle":"Arguments invalides !",
|
||||
"missingArgsDescription":"Argument manquant",
|
||||
"noPermsTitle":"Pas de permissions!",
|
||||
"noPermsDescription":"Vous n'avez pas les bons rôles pour exécuter cette commande !\nVous avez besoin de la permission `ADMINISTRATOR` ou d'être dans la liste des rôles autorisés !",
|
||||
"chooseFromListTitle":"Invalid ID",
|
||||
"chooseFromListDescription":"Choisissez l'un des identifiants ci-dessous:",
|
||||
"boterror":"Bot Error!",
|
||||
"notInTicketTitle":"Vous n'êtes pas dans un ticket !",
|
||||
"notInTicketDescription":"Cette commande ne fonctionne pas en dehors des tickets !",
|
||||
"ticketDoesntExist":"Ce billet n'existe plus !",
|
||||
"roleDoesntExist":"Ce rôle n'existe plus !",
|
||||
"anotherOption":"Cette option n'est pas un ticket mais un autre type !",
|
||||
"maxAmountTitle":"Montant max atteint !",
|
||||
"maxAmountDescription":"Vous avez atteint le nombre maximum de tickets autorisés !\nVous ne pouvez donc pas en créer un nouveau !",
|
||||
"somethingWentWrong":"**Une erreur s'est produite !**\nVeuillez réessayer une autre fois !",
|
||||
"somethingWentWrongTranscript":"Une erreur s'est produite lors de la création de la transcription !**\nVeuillez réessayer une autre fois !"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Utilisateur ajouté !",
|
||||
"userAddedDescription":"{0} est ajouté à ce billet !",
|
||||
"userRemovedTitle":"Utilisateur supprimé!",
|
||||
"userRemovedDescription":"{0} est supprimé de ce ticket!",
|
||||
|
||||
"renameTitle":"Le nom est changé !",
|
||||
"renameWarning":"Attention : vous ne pouvez modifier le nom de la chaîne que 2 fois par minute !\n(ceci est dû aux limites du taux de discorde)",
|
||||
|
||||
"closeTitle":"Fermez ce ticket !",
|
||||
"closeDescription":"Vous pouvez fermer ce ticket en cliquant sur le bouton ci-dessous !",
|
||||
"deleteTitle":"Supprimez ce billet !",
|
||||
"deleteDescription":"Vous pouvez supprimer ce ticket en cliquant sur le bouton ci-dessous !",
|
||||
"reopenTitle":"Ré-ouvrez ce ticket !",
|
||||
"reopenDescription":"Vous pouvez rouvrir ce ticket en cliquant sur le bouton ci-dessous !",
|
||||
|
||||
"ticketWarning":"L'intégration est dans le message ci-dessous !",
|
||||
"maxTicketWarning":"**Attention :** _Vous ne pouvez créer que {0} billet(s) à la fois !_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Menu d'aide:",
|
||||
"header1":"**Allez à {0} pour créer un ticket !**\n\n",
|
||||
"header2":"**Exécutez la commande `/new` ou `/ticket` pour créer un ticket!**\n\n",
|
||||
|
||||
"msgCmd":"Créez une intégration avec des boutons. (administrateurs uniquement)",
|
||||
"renameCmd":"Renommer un ticket. (sans espaces)",
|
||||
"closeCmd":"Fermer un ticket.",
|
||||
"deleteCmd":"Supprimer un billet.",
|
||||
"addCmd":"Ajouter un utilisateur au ticket.",
|
||||
"removeCmd":"Supprimer un utilisateur du ticket.",
|
||||
"reopenCmd":"Re-Open a ticket after it was closed."
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Fermer le ticket",
|
||||
"delete":"Supprimer le billet",
|
||||
"reopen":"Billet de réouverture",
|
||||
"sendTranscript":"Envoyer le fichier de transcription"
|
||||
},
|
||||
"messages":{
|
||||
"reopenTitle":"A rouvert ce ticket!",
|
||||
"reopenDescription":"N'hésitez pas à reparler!",
|
||||
"closedTitle":"Fermé ce ticket",
|
||||
"closedDescription":"Seuls les administrateurs peuvent parler dans ce ticket maintenant !\n\n*Cliquez sur le bouton ci-dessous pour supprimer ou rouvrir ce ticket !*",
|
||||
"createdTitle":"Ticket créé !",
|
||||
"createdDescription":"Votre ticket est créé, vous pouvez le détecter par un ping !",
|
||||
|
||||
"newTicketDmTitle":"Nouveau ticket!",
|
||||
"newTranscriptTitle":"Une nouvelle transcription est ici!",
|
||||
"newTranscriptDescription":"Vous pouvez trouver la transcription dans le fichier texte ci-dessus !",
|
||||
"hereIsTheTranscript":"Voici la transcription :",
|
||||
|
||||
"chooseCategory":"choisissez une catégorie:",
|
||||
"gettingdeleted":"Le ticket est en cours de suppression..."
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
"errors":{
|
||||
"missingArgsTitle":"Ungültiges Argument!",
|
||||
"missingArgsDescription":"Fehlendes Argument!",
|
||||
"noPermsTitle":"Du hast keine Rechte!",
|
||||
"noPermsDescription":"Sie haben nicht die richtigen Rollen, um diesen Befehl auszuführen!\nSie benötigen die `ADMINISTRATOR` Erlaubnis oder in der Liste der erlaubten Rollen sein!",
|
||||
"chooseFromListTitle":"Ungültige ID",
|
||||
"chooseFromListDescription":"Wählen Sie eine der folgenden ID:",
|
||||
"boterror":"Bot Fehler!",
|
||||
"notInTicketTitle":"Du bist ein kein Ticket!",
|
||||
"notInTicketDescription":"Der Befehl funktioniert nicht außerhalb eines Tickets!",
|
||||
"ticketDoesntExist":"Das Ticket Exisitert nicht mehr!",
|
||||
"roleDoesntExist":"Die Rolle Exisitiert nicht mehr!",
|
||||
"anotherOption":"Diese Option ist kein Ticket, sondern eine andere Art!",
|
||||
"maxAmountTitle":"Das Limit wurde erreicht!",
|
||||
"maxAmountDescription":"Sie haben die maximal zulässige Anzahl von Tickets erreicht!\nSie können also keine neue erstellen.!",
|
||||
"somethingWentWrong":"**Etwas ist schief gelaufen!**\nBitte versuchen Sie es ein anderes Mal!",
|
||||
"somethingWentWrongTranscript":"Bei der Erstellung der Transcript ist etwas schief gelaufen!**\nBitte versuchen Sie es ein anderes Mal!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"User geaddet!",
|
||||
"userAddedDescription":"{0} wird zu diesem Ticket hinzugefügt!",
|
||||
"userRemovedTitle":"User entfernt!",
|
||||
"userRemovedDescription":"{0} wird aus diesem Ticket entfernt!",
|
||||
|
||||
"renameTitle":"Der Name wurde geändert!",
|
||||
"renameWarning":"Achtung: Sie können den Kanalnamen nur 2 Mal pro Minute ändern!\n(dies ist auf die Begrenzung der Diskordrate zurückzuführen)",
|
||||
|
||||
"closeTitle":"Dieses Ticket schließen!",
|
||||
"closeDescription":"Sie können dieses Ticket schließen, indem Sie auf die Schaltfläche unten klicken!",
|
||||
"deleteTitle":"Löschen Sie dieses Ticket!",
|
||||
"deleteDescription":"Sie können dieses Ticket löschen, indem Sie auf die Schaltfläche unten klicken!",
|
||||
"reopenTitle":"Öffne dieses Ticket erneut!",
|
||||
"reopenDescription":"Sie können dieses Ticket erneut öffnen, indem Sie auf die Schaltfläche unten klicken!",
|
||||
|
||||
"ticketWarning":"Die Einbettung befindet sich in der Nachricht unten!",
|
||||
"maxTicketWarning":"**Warnung:** _Sie können nur {0} ticket(s) erstellen zu einer Zeit!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Hilfe Menu:",
|
||||
"header1":"**Gehe zu {0} um ein Ticket zu erstellen!**\n\n",
|
||||
"header2":"**Führen Sie den Befehl `/new` oder `/ticket` um ein Ticket zu erstellen!**\n\n",
|
||||
|
||||
"msgCmd":"Eine Einbettung mit Schaltflächen erzeugen. (nur admins)",
|
||||
"renameCmd":"Ein Ticket umbenennen. (keine Leerzeichen)",
|
||||
"closeCmd":"Schließen Sie ein Ticket.",
|
||||
"deleteCmd":"Ein Ticket löschen.",
|
||||
"addCmd":"Fügen Sie dem Ticket einen Benutzer hinzu.",
|
||||
"removeCmd":"Entfernen eines Benutzers aus dem Ticket.",
|
||||
"reopenCmd":"Öffnen Sie ein Ticket erneut, nachdem es geschlossen wurde."
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Ticket schließen",
|
||||
"delete":"Ticket löschen",
|
||||
"reopen":"Ticket wieder öffnen",
|
||||
"sendTranscript":"Transcript-Datei senden"
|
||||
},
|
||||
"messages":{
|
||||
"reopenTitle":"Dieses Ticket wiedereröffnet!",
|
||||
"reopenDescription":"Sie können gerne weiterreden!",
|
||||
"closedTitle":"Dieses Ticket geschlossen!",
|
||||
"closedDescription":"Nur Admins können jetzt in diesem Ticket sprechen!\n\n*Klicken Sie auf die Schaltfläche unten, um dieses Ticket zu löschen oder erneut zu öffnen!*",
|
||||
"createdTitle":"Ticket erstellt!",
|
||||
"createdDescription":"Ihr Ticket ist erstellt, Sie können es durch einen Ping erkennen!",
|
||||
|
||||
"newTicketDmTitle":"Neues Ticket!",
|
||||
"closedTicketDmTitle":"Ticket schließen!",
|
||||
"deletedTicketDmTitle":"Ticket löschen!",
|
||||
"closedTicketDmDescription":"Ihr Ticket ist geschlossen!",
|
||||
"deletedTicketDmDescription":"Ihr Ticket ist gelöscht!",
|
||||
"reopenTicketDmTitle":"Ticket neu Eröffnen!",
|
||||
"reopenTicketDmDescription":"Dein Ticket ist Neu eröffnet!",
|
||||
"newTranscriptTitle":"Eine neue Transscript finden Sie hier!",
|
||||
"newTranscriptDescription":"Die Abschrift finden Sie in der obigen Textdatei!",
|
||||
"hereIsTheTranscript":"Hier ist das Transscript:",
|
||||
|
||||
"chooseCategory":"Wähle eine Kategorie:",
|
||||
"gettingdeleted":"Ticket wird gelöscht..."
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
"errors":{
|
||||
"missingArgsTitle":"Argumente invalide!",
|
||||
"missingArgsDescription":"Argument lipsa",
|
||||
"noPermsTitle":"Nu ai permisiunile necesare!",
|
||||
"noPermsDescription":"Nu ai rolurile necesare!\nAi nevoie de permisiunea `ADMINISTRATOR` sau sa fii in lista rolurilor permise!",
|
||||
"chooseFromListTitle":"ID invalid",
|
||||
"chooseFromListDescription":"Alege unul dintre id-urile urmatoare:",
|
||||
"boterror":"Eroare bot!",
|
||||
"notInTicketTitle":"Nu esti intr-un ticket!",
|
||||
"notInTicketDescription":"Aceasta comanda nu functioneaza in afara ticket-urilor!",
|
||||
"ticketDoesntExist":"Acest ticket nu mai exista!",
|
||||
"roleDoesntExist":"Acest rol nu mai exista",
|
||||
"anotherOption":"Aceasta optiune nu este un ticket ci doar alt tip!",
|
||||
"maxAmountTitle":"Limita a fost atinsa",
|
||||
"maxAmountDescription":"Ai atins limita maxima de tickete\nNu mai poti creea altele!",
|
||||
"somethingWentWrong":"**Ceva nu a mers bine :(**\nTe rugam sa incerci din nou mai tarziu",
|
||||
"somethingWentWrongTranscript":"**Ceva nu a mers bine in timpul creerii copiei a ticket-ului!**\nTe rugam sa incerci din nou mai tarziu!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Utilizator adaugat!",
|
||||
"userAddedDescription":"{0} este adaugat la acest ticket!",
|
||||
"userRemovedTitle":"Utilizator eliminat!",
|
||||
"userRemovedDescription":"{0} este eliminat din acest ticket!",
|
||||
|
||||
"renameTitle":"Numele este schimbat!",
|
||||
"renameWarning":"ATENTIE: poti schimba numele acestui ticket doar de 2 ori pe minut!\n(se datoreaza limitarii discord-ului)",
|
||||
|
||||
"closeTitle":"Inchide acest ticket",
|
||||
"closeDescription":"Poti inchide acest ticket doar apasand butonul de mai jos!",
|
||||
"deleteTitle":"Sterge acest ticket!",
|
||||
"deleteDescription":"Poti sterge acest ticket doar apasand butonul de mai jos",
|
||||
"reopenTitle":"Re-deschide acest ticket!",
|
||||
"reopenDescription":"Poti redeschide acest ticket doar apasand butonul de mai jos!",
|
||||
|
||||
"ticketWarning":"Embed-ul se afla in mesajul de mai jos:",
|
||||
"maxTicketWarning":"**ATENTIE:** _Poti creea doar {0} ticket-e odata!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Meniu de ajutor:",
|
||||
"header1":"**Deschide {0} pentru a creea un ticket!**\n\n",
|
||||
"header2":"**Ruleaza comanda `/new` ori `/ticket` pentru a creea un ticket!**\n\n",
|
||||
|
||||
"msgCmd":"Afiseaza embed-ul cu tickete. (doar administratorii)",
|
||||
"renameCmd":"Redenumeste un ticket. (fara spatii)",
|
||||
"closeCmd":"Redenumeste un ticket ticket.",
|
||||
"deleteCmd":"Sterge un ticket a ticket.",
|
||||
"addCmd":"adauga un utilizator la ticket.",
|
||||
"removeCmd":"Elimina un utilizator de la ticket.",
|
||||
"reopenCmd":"Re-deschide un ticket dupa ce a fost inchis."
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Inchide Ticket-ul",
|
||||
"delete":"Sterge Ticket-ul",
|
||||
"reopen":"Re-deschide Ticket-ul",
|
||||
"sendTranscript":"Trimite copia chat-ului ticket-ului"
|
||||
},
|
||||
"messages":{
|
||||
"reopenTitle":"Ticket re-deschis",
|
||||
"reopenDescription":"Simte-te comfortabil sa vorbesti din nou!",
|
||||
"closedTitle":"Inchide acest ticket ticket!",
|
||||
"closedDescription":"Doar administratorii pot vorbi in acest ticket de acum!\n\n*Apasa pe butonele de mai jos pentru a inchide/deschide ticket-ul!*",
|
||||
"createdTitle":"Ticket Creat!",
|
||||
"createdDescription":"Ticket-ul tau a fost creat, il poti vedea dupa mentionarea ta!",
|
||||
|
||||
"newTicketDmTitle":"Ticket Nou!",
|
||||
"closedTicketDmTitle":"Ticket închis!",
|
||||
"deletedTicketDmTitle":"Ticket șters!",
|
||||
"closedTicketDmDescription":"Ticket-ul tau este închis!",
|
||||
"deletedTicketDmDescription":"Ticket-ul tau este șters!",
|
||||
"reopenTicketDmTitle":"Ticket Re-deschis!",
|
||||
"reopenTicketDmDescription":"Ticket-ul tau este re-deschis!",
|
||||
"newTranscriptTitle":"O noua copie a ticket-ului este aici!",
|
||||
"newTranscriptDescription":"Poti vedea copia ticket-ului in fisierul .txt de mai sus!",
|
||||
"hereIsTheTranscript":"Aceasta este copia ticket-ului:",
|
||||
|
||||
"chooseCategory":"Alege o categorie:",
|
||||
"gettingdeleted":"Ticket-ul se sterge..."
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
"errors":{
|
||||
"missingArgsTitle":"¡Argumentos inválidos!",
|
||||
"missingArgsDescription":"Argumento faltante.",
|
||||
"noPermsTitle":"¡Sin permisos!",
|
||||
"noPermsDescription":"¡No tienes permiso para usar este comando.!\n¡Necesitas el permiso `ADMINISTRATOR` permiso o tener uno de los roles permitidos!",
|
||||
"chooseFromListTitle":"ID Invalida",
|
||||
"chooseFromListDescription":"Elije una de las ID de abajo:",
|
||||
"boterror":"¡Error del bot!",
|
||||
"notInTicketTitle":"¡No te encuentras en un ticket!",
|
||||
"notInTicketDescription":"¡Este comando no funciona fuera de los tickets!",
|
||||
"ticketDoesntExist":"¡Este ticket no existe!",
|
||||
"roleDoesntExist":"¡Este rol no existe!",
|
||||
"anotherOption":"¡Esta opción no es un ticket, si no otra cosa!",
|
||||
"maxAmountTitle":"¡Máxima cantidad alcanzada!",
|
||||
"maxAmountDescription":"¡Has alcanzado la máxima cantidad de tickets permitida!\n¡Por lo que no puedes crear otro!",
|
||||
"somethingWentWrong":"**¡Algo salió mal!**\n¡Prueba dentro de un rato!",
|
||||
"somethingWentWrongTranscript":"**¡Algo salió mal al hacer el transcript!**\n¡Prueba en otro momento!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"¡Usuario agregado!",
|
||||
"userAddedDescription":"¡{0} fué agregado al ticket!",
|
||||
"userRemovedTitle":"¡Usuario eliminado!",
|
||||
"userRemovedDescription":"¡{0} fué eliminado del ticket!",
|
||||
|
||||
"renameTitle":"¡El nombre fué cambiado!",
|
||||
"renameWarning":"Aviso: Solo puedes cambiar el nombre 2 veces por minuto.\n(Esto es por limitaciones de Discord)",
|
||||
|
||||
"closeTitle":"¡Cierra el ticket!",
|
||||
"closeDescription":"¡Puedes cerrar el ticket con el botón de abajo!",
|
||||
"deleteTitle":"¡Elimina el ticket!",
|
||||
"deleteDescription":"¡Puedes eliminar el ticket con el botón de abajo!",
|
||||
"reopenTitle":"¡Re-Abre el ticket!",
|
||||
"reopenDescription":"¡Puedes re-abrir el ticket con el botón de abajo!",
|
||||
|
||||
"ticketWarning":"¡El emblema está en el mensaje de abajo!",
|
||||
"maxTicketWarning":"**Aviso:** _Solo puedes poseer {0} ticket(s) al mismo tiempo!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Menú de ayuda:",
|
||||
"header1":"**¡Dirígete a {0} para crear un nuevo ticket!**\n\n",
|
||||
"header2":"**¡Ejecuta el comando `/new` o `/ticket` para crear un ticket!**\n\n",
|
||||
|
||||
"msgCmd":"Generar un embed con botones. (Solo admins)",
|
||||
"renameCmd":"Renombrar un ticket. (Sin espacios)",
|
||||
"closeCmd":"Cerrar un ticket.",
|
||||
"deleteCmd":"Eliminar un ticket.",
|
||||
"addCmd":"Agregar un usuario al ticket.",
|
||||
"removeCmd":"Eliminar un usuario del ticket.",
|
||||
"reopenCmd":"Re-Abre un ticket después de que este se vea cerrado."
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Cerrar ticket.",
|
||||
"delete":"Eliminar ticket",
|
||||
"reopen":"Re-Abrir ticket",
|
||||
"sendTranscript":"Obtener transcript."
|
||||
},
|
||||
"messages":{
|
||||
"reopenTitle":"¡Ticket Re-Abierto!",
|
||||
"reopenDescription":"¡Siéntete libre de hablar de nuevo!",
|
||||
"closedTitle":"¡Ticket cerrado!",
|
||||
"closedDescription":"¡Solo admins pueden hablar ahora en este ticket!\n\n*¡Presiona en el botón de abajo para eliminar o re-abrir el ticket!*",
|
||||
"createdTitle":"¡Ticket creado!",
|
||||
"createdDescription":"¡Ticket creado, también te he mencionado en él!",
|
||||
|
||||
"newTicketDmTitle":"¡Nuevo ticket!",
|
||||
"closedTicketDmTitle":"¡Ticket cerrado!",
|
||||
"deletedTicketDmTitle":"¡Ticket eliminado!",
|
||||
"closedTicketDmDescription":"¡Tu ticket fué cerrado!",
|
||||
"deletedTicketDmDescription":"¡Tu ticket fué eliminado!",
|
||||
"reopenTicketDmTitle":"¡Ticket re-abierto!",
|
||||
"reopenTicketDmDescription":"¡Tu ticket se vió abierto de nuevo!",
|
||||
"newTranscriptTitle":"¡Un nuevo transcript está aquí!",
|
||||
"newTranscriptDescription":"¡Puedes encontrar el transcript en el archivo de texto que se muestra arriba!",
|
||||
"hereIsTheTranscript":"Aquí está el transcript:",
|
||||
|
||||
"chooseCategory":"elije una categoría:",
|
||||
"gettingdeleted":"El ticket se está viendo eliminado..."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["palestinian"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Arabic",
|
||||
"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 (Not A Number)!",
|
||||
"numberInvertedContains":"لا يُسمح لهذا الرقم باحتواء {0}!",
|
||||
|
||||
"booleanTrue":"لا يمكن أن تكون هذه القيمة صحيحة!",
|
||||
"booleanFalse":"لا يمكن أن تكون هذه القيمة خاطئة!",
|
||||
|
||||
"arrayEmptyDisabled":"لا يُسمح أن تكون هذه المصفوفة فارغة!",
|
||||
"arrayEmptyRequired":"هذه المصفوفة مطلوبة أن تكون فارغة!",
|
||||
"arrayTooShort":"يجب أن تحتوي هذه المصفوفة على طول لا يقل عن {0}!",
|
||||
"arrayTooLong":"يجب أن تحتوي هذه المصفوفة على طول لا يزيد عن {0}!",
|
||||
"arrayLengthInvalid":"يجب أن تحتوي هذه المصفوفة على طول {0}!",
|
||||
"arrayInvalidTypes":"يمكن أن تحتوي هذه المصفوفة فقط على الأنواع التالية: {0}!",
|
||||
"arrayDouble":"لا تسمح هذه المصفوفة بنفس القيمة مرتين!",
|
||||
|
||||
"discordInvalidId":"هذا هو معرف {0} غير صالح!",
|
||||
"discordInvalidIdOptions":"هذا هو معرف {0} غير صالح! يمكنك أيضًا استخدام واحد من هؤلاء: {1}!",
|
||||
"discordInvalidToken":"هذا هو رمز ديسكورد غير صالح (من الناحية التركيبية)!",
|
||||
"colorInvalid":"هذا هو لون سداسي غير صالح!",
|
||||
"emojiTooShort":"يجب أن تحتوي هذه السلسلة على ما لا يقل عن {0} رموز تعبيرية!",
|
||||
"emojiTooLong":"يجب أن تحتوي هذه السلسلة على ما لا يزيد عن {0} رموز تعبيرية!",
|
||||
"emojiCustom":"لا يمكن أن تكون هذه الرموز التعبيرية رمزًا مخصصًا لديسكورد!",
|
||||
"emojiInvalid":"هذه الرموز التعبيرية غير صالحة!",
|
||||
"urlInvalid":"هذا الرابط غير صالح!",
|
||||
"urlInvalidHttp":"يمكن أن يستخدم هذا الرابط بروتوكول https:// فقط!",
|
||||
"urlInvalidProtocol":"يمكن أن يستخدم هذا الرابط بروتوكولات http:// و https:// فقط!",
|
||||
"urlInvalidHostname":"هذا الرابط يحتوي على اسم مضيف غير مسموح به!",
|
||||
"urlInvalidExtension":"هذا الرابط يحتوي على امتداد غير صالح! اختر بين: {0}!",
|
||||
"urlInvalidPath":"هذا الرابط يحتوي على مسار غير صالح!",
|
||||
"idNotUnique":"هذا المعرف ليس فريدًا، استخدم معرفًا آخر بدلاً من ذلك!",
|
||||
"idNonExistent":"المعرف {0} غير موجود!",
|
||||
|
||||
"invalidType":"تحتاج هذه الخاصية إلى أن تكون من النوع: {0}!",
|
||||
"propertyMissing":"الخاصية {0} مفقودة من هذا الكائن!",
|
||||
"propertyOptional":"الخاصية {0} اختيارية في هذا الكائن!",
|
||||
"objectDisabled":"هذا الكائن معطل، قم بتمكينه باستخدام {0}!",
|
||||
"nullInvalid":"لا يمكن أن تكون هذه الخاصية فارغة!",
|
||||
"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":"`<name>` => معلمة مطلوبة\n`[name]` => معلمة اختيارية",
|
||||
"statsReset":"تم إعادة تعيين إحصائيات البوت بنجاح!",
|
||||
"statsError":"تعذر عرض إحصائيات التذكرة!\n{0} ليست تذكرة!",
|
||||
"blacklistAdd":"{0} تم حظره بنجاح!",
|
||||
"blacklistRemove":"{0} تم الإفراج عنه بنجاح!",
|
||||
"blacklistGetSuccess":"{0} محظور حاليًا!",
|
||||
"blacklistGetEmpty":"{0} غير محظور حاليًا!",
|
||||
"blacklistViewEmpty":"لم يتم حظر أي شخص بعد!",
|
||||
"blacklistViewTip":"استخدم \"/blacklist add\" لحظر مستخدم!",
|
||||
"clearVerify":"هل أنت متأكد أنك تريد حذف عدة تذاكر؟\nلا يمكن التراجع عن هذا الإجراء!",
|
||||
"clearReady":"{0} تذاكر تم حذفها بنجاح!",
|
||||
"rolesEmpty":"لم يتم تحديث أي أدوار!",
|
||||
|
||||
"autocloseLeave":"تم إغلاق هذه التذكرة تلقائيًا لأن المنشئ غادر الخادم!",
|
||||
"autocloseTimeout":"تم إغلاق هذه التذكرة تلقائيًا لأنها كانت غير نشطة لأكثر من `{0} ساعة`!",
|
||||
"autodeleteLeave":"تم حذف هذه التذكرة تلقائيًا لأن المنشئ غادر الخادم!",
|
||||
"autodeleteTimeout":"تم حذف هذه التذكرة تلقائيًا لأنها كانت غير نشطة لأكثر من `{0} يوم`!",
|
||||
"autocloseEnabled":"تم تمكين الإغلاق التلقائي في هذه التذكرة!\nسيتم إغلاقها عندما تكون غير نشطة لأكثر من `{0} ساعة`!",
|
||||
"autocloseDisabled":"تم تعطيل الإغلاق التلقائي في هذه التذكرة!\nلن يتم إغلاقها تلقائيًا بعد الآن!",
|
||||
"autodeleteEnabled":"تم تمكين الحذف التلقائي في هذه التذكرة!\nسيتم حذفها عندما تكون غير نشطة لأكثر من `{0} يوم`!",
|
||||
"autodeleteDisabled":"تم تعطيل الحذف التلقائي في هذه التذكرة!\nلن يتم حذفها تلقائيًا بعد الآن!",
|
||||
|
||||
"ticketMessageLimit":"يمكنك فقط إنشاء {0} تذكرة(ات) في نفس الوقت!",
|
||||
"ticketMessageAutoclose":"ستغلق هذه التذكرة تلقائيًا عندما تكون غير نشطة لمدة {0} ساعة!",
|
||||
"ticketMessageAutodelete":"ستحذف هذه التذكرة تلقائيًا عندما تكون غير نشطة لمدة {0} يوم!",
|
||||
"panelReady":"اللوحة متاحة في الرسالة التالية!\nيمكن الآن حذف هذه الرسالة!",
|
||||
|
||||
"topicSet":"تم تغيير موضوع القناة بنجاح بواسطة {0}!",
|
||||
"prioritySet":"تم تغيير أولوية التذكرة إلى {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":"زيارة النص",
|
||||
"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} لا يعمل في DM! يرجى المحاولة مرة أخرى في خادم!",
|
||||
"channelRename":"بسبب حدود معدل ديسكورد، من المستحيل حاليًا على البوت إعادة تسمية القناة. سيتم إعادة تسمية القناة تلقائيًا بعد 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":"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":"بدون"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["HanumeshGupta"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Bengali",
|
||||
"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":"এই সংখ্যাটি {1} থেকে শুরু করে {0} এর গুণিতক হতে হবে!",
|
||||
"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":"এটি একটি অবৈধ ডিসকর্ড {0} আইডি!",
|
||||
"discordInvalidIdOptions":"এটি একটি অবৈধ ডিসকর্ড {0} আইডি! আপনি এগুলির মধ্যে একটি ব্যবহার করতে পারেন: {1}!",
|
||||
"discordInvalidToken":"এটি একটি অবৈধ ডিসকর্ড টোকেন (বাক্য গঠনগতভাবে)!",
|
||||
"colorInvalid":"এটি একটি অবৈধ হেক্স রঙ!",
|
||||
"emojiTooShort":"এই স্ট্রিংটিতে কমপক্ষে {0} ইমোজি থাকতে হবে!",
|
||||
"emojiTooLong":"এই স্ট্রিংটিতে সর্বাধিক {0} ইমোজি থাকতে পারে!",
|
||||
"emojiCustom":"এই ইমোজিটি একটি কাস্টম ডিসকর্ড ইমোজি হতে পারে না!",
|
||||
"emojiInvalid":"এটি একটি অবৈধ ইমোজি!",
|
||||
"urlInvalid":"এই URL টি অবৈধ!",
|
||||
"urlInvalidHttp":"এই URL টি শুধুমাত্র https:// প্রোটোকল ব্যবহার করতে পারে!",
|
||||
"urlInvalidProtocol":"এই URL টি শুধুমাত্র http:// এবং https:// প্রোটোকল ব্যবহার করতে পারে!",
|
||||
"urlInvalidHostname":"এই URL টির একটি অননুমোদিত হোস্টনেম আছে!",
|
||||
"urlInvalidExtension":"এই URL টির একটি অবৈধ এক্সটেনশন আছে! নিম্নলিখিতগুলির মধ্যে选择一个: {0}!",
|
||||
"urlInvalidPath":"এই URL টির একটি অবৈধ পথ আছে!",
|
||||
"idNotUnique":"এই আইডিটি অনন্য নয়, পরিবর্তে অন্য একটি আইডি ব্যবহার করুন!",
|
||||
"idNonExistent":"আইডি {0} বিদ্যমান নেই!",
|
||||
|
||||
"invalidType":"এই প্রপার্টিটির ধরন হতে হবে: {0}!",
|
||||
"propertyMissing":"এই অবজেক্টে {0} প্রপার্টিটি অনুপস্থিত!",
|
||||
"propertyOptional":"এই অবজেক্টে {0} প্রপার্টিটি ঐচ্ছিক!",
|
||||
"objectDisabled":"এই অবজেক্টটি নিষ্ক্রিয়, {0} ব্যবহার করে এটি সক্রিয় করুন!",
|
||||
"nullInvalid":"এই প্রপার্টিটি null হতে পারে না!",
|
||||
"switchInvalidType":"এটি নিম্নলিখিত ধরনগুলির একটি হতে হবে: {0}!",
|
||||
"objectSwitchInvalid":"এই অবজেক্টটি নিম্নলিখিত ধরনগুলির একটি হতে হবে: {0}!",
|
||||
|
||||
"invalidLanguage":"এটি একটি অবৈধ ভাষা!",
|
||||
"invalidButton":"এই বাটনটিতে কমপক্ষে একটি {0} বা {1} থাকতে হবে!",
|
||||
"unusedOption":"অপশন {0} কোথাও ব্যবহার করা হয়নি!",
|
||||
"unusedQuestion":"প্রশ্ন {0} কোথাও ব্যবহার করা হয়নি!",
|
||||
"dropdownOption":"ড্রপডাউনসহ একটি প্যানেলে শুধুমাত্র এই ধরনের অপশন থাকতে পারে: '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":"এই টিকেটটির নাম {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":"এই টিকিটের মালিকানা {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":"এম্বেড",
|
||||
"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} DM-এ কাজ করে না! অনুগ্রহ করে এটি একটি সার্ভারে আবার চেষ্টা করুন!",
|
||||
"channelRename":"ডিসকর্ড রেটলিমিটের কারণে, বটের পক্ষে চ্যানেলের নাম পরিবর্তন করা বর্তমানে অসম্ভব। বট রিবুট না করা হলে চ্যানেলটি ১০ মিনিটের মধ্যে স্বয়ংক্রিয়ভাবে নাম পরিবর্তন করা হবে।",
|
||||
"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":"এইচটিএমএল",
|
||||
"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":"কোনোটি নয়"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["guillee3"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Catalan",
|
||||
"automated":false
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[ERROR]",
|
||||
"headerOpenTicket":"OPEN TICKET",
|
||||
"typeWarning":"[AVÍS]",
|
||||
"typeInfo":"[INFO]",
|
||||
"headerConfigChecker":"VERIFICADOR DE CONFIGURACIÓ",
|
||||
"headerDescription":"comprova si existeixen errors als teus fitxers de configuració!",
|
||||
"footerError":"el bot no s'iniciarà fins que tots els {0} es solucionin!",
|
||||
"footerWarning":"es recomana solucionar tots els {0} abans de començar!",
|
||||
"footerSupport":"SUPORT: {0} - DOCUMENTACIÓ: {1}",
|
||||
"compactInformation":"utilitza {0} per obtenir més informació!",
|
||||
"dataPath":"ruta",
|
||||
"dataDocs":"documents",
|
||||
"dataMessages":"missatge"
|
||||
},
|
||||
"messages":{
|
||||
"stringTooShort":"Aquesta cadena no pot tenir menys de {0} caràcters!",
|
||||
"stringTooLong":"Aquesta cadena no pot tenir més de {0} caràcters!",
|
||||
"stringLengthInvalid":"Aquesta cadena ha de tenir {0} caràcters!",
|
||||
"stringStartsWith":"Aquesta cadena ha de començar amb {0}!",
|
||||
"stringEndsWith":"Aquesta cadena ha d'acabar amb {0}!",
|
||||
"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!",
|
||||
"numberLengthInvalid":"Aquest nombre ha de tenir {0} caràcters!",
|
||||
"numberTooSmall":"Aquest nombre ha de ser almenys {0}!",
|
||||
"numberTooLarge":"Aquest nombre ha de ser com a màxim {0}!",
|
||||
"numberNotEqual":"Aquest nombre ha de ser {0}!",
|
||||
"numberStep":"Aquest nombre ha de ser un múltiple de {0}!",
|
||||
"numberStepOffset":"Aquest nombre ha de ser un múltiple de {0} començant amb {1}!",
|
||||
"numberStartsWith":"Aquest nombre ha de començar amb {0}!",
|
||||
"numberEndsWith":"Aquest nombre ha d'acabar amb {0}!",
|
||||
"numberContains":"Aquest nombre ha de contenir {0}!",
|
||||
"numberChoices":"Aquest nombre només pot ser un dels valors següents: {0}!",
|
||||
"numberFloat":"Aquest nombre no pot ser un decimal!",
|
||||
"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!",
|
||||
|
||||
"arrayEmptyDisabled":"Aquest array no pot estar buit!",
|
||||
"arrayEmptyRequired":"Aquest array ha d'estar buit!",
|
||||
"arrayTooShort":"Aquest array ha de tenir una longitud d'almenys {0}!",
|
||||
"arrayTooLong":"Aquest array ha de tenir una longitud màxima de {0}!",
|
||||
"arrayLengthInvalid":"Aquest array ha de tenir una longitud de {0}!",
|
||||
"arrayInvalidTypes":"Aquest array només pot contenir els tipus següents: {0}!",
|
||||
"arrayDouble":"Aquest array no permet el mateix valor dues vegades!",
|
||||
|
||||
"discordInvalidId":"Aquest és un id de {0} de discord invàlid!",
|
||||
"discordInvalidIdOptions":"Aquest és un id de {0} de discord invàlid! També en pots utilitzar un d'aquests: {1}!",
|
||||
"discordInvalidToken":"Aquest és un token de discord invàlid (sintàcticament)!",
|
||||
"colorInvalid":"Aquest és un color hex invàlid!",
|
||||
"emojiTooShort":"Aquesta cadena ha de tenir almenys {0} emojis!",
|
||||
"emojiTooLong":"Aquesta cadena ha de tenir com a màxim {0} emojis!",
|
||||
"emojiCustom":"Aquest emoji no pot ser un emoji personalitzat de discord!",
|
||||
"emojiInvalid":"Aquest és un emoji invàlid!",
|
||||
"urlInvalid":"Aquesta url és invàlida!",
|
||||
"urlInvalidHttp":"Aquesta url només pot utilitzar el protocol https://!",
|
||||
"urlInvalidProtocol":"Aquesta url només pot utilitzar els protocols http:// i https://!",
|
||||
"urlInvalidHostname":"Aquesta url té un nom de domini no permès!",
|
||||
"urlInvalidExtension":"Aquesta url té una extensió invàlida! Tria entre: {0}!",
|
||||
"urlInvalidPath":"Aquesta url té un camí invàlid!",
|
||||
"idNotUnique":"Aquest id no és únic, utilitza un altre id!",
|
||||
"idNonExistent":"L'id {0} no existeix!",
|
||||
|
||||
"invalidType":"Aquesta propietat ha de ser del tipus: {0}!",
|
||||
"propertyMissing":"La propietat {0} falta en aquest objecte!",
|
||||
"propertyOptional":"La propietat {0} és opcional en aquest objecte!",
|
||||
"objectDisabled":"Aquest objecte està desactivat, activa'l utilitzant {0}!",
|
||||
"nullInvalid":"Aquesta propietat no pot ser nul·la!",
|
||||
"switchInvalidType":"Això ha de ser d'un dels tipus següents: {0}!",
|
||||
"objectSwitchInvalid":"Aquest objecte ha de ser d'un dels tipus següents: {0}!",
|
||||
|
||||
"invalidLanguage":"Aquest és un idioma invàlid!",
|
||||
"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 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":{
|
||||
"buttons":{
|
||||
"create":"Veure Ticket",
|
||||
"close":"Tancar Ticket",
|
||||
"delete":"Eliminar Ticket",
|
||||
"reopen":"Reobrir Ticket",
|
||||
"claim":"Reclamar Ticket",
|
||||
"unclaim":"Alliberar Ticket",
|
||||
"pin":"Fixar Ticket",
|
||||
"unpin":"Desfixar Ticket",
|
||||
"clear":"Eliminar Tickets",
|
||||
"helpSwitchSlash":"Veure Comandes Slash",
|
||||
"helpSwitchText":"Veure Comandes de Text",
|
||||
"helpPage":"Pàgina {0}",
|
||||
"withReason":"Amb Motiu",
|
||||
"withoutTranscript":"Sense Transcripció",
|
||||
"blacklistAdd":"Afegir Usuari a la Llista Negra",
|
||||
"blacklistRemove":"Alliberar Usuari"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Ticket Creat",
|
||||
"close":"Ticket Tancat",
|
||||
"delete":"Ticket Eliminat",
|
||||
"reopen":"Ticket Reobert",
|
||||
"claim":"Ticket Reclamat",
|
||||
"unclaim":"Ticket Alliberat",
|
||||
"pin":"Ticket Fixat",
|
||||
"unpin":"Ticket Desfixat",
|
||||
"rename":"Ticket Renomenat",
|
||||
"move":"Ticket Mogut",
|
||||
"add":"Usuari Afegit al Ticket",
|
||||
"remove":"Usuari Eliminat del Ticket",
|
||||
|
||||
"help":"Comandes Disponibles",
|
||||
"statsReset":"Restablir Estadístiques",
|
||||
"blacklistAdd":"Usuari a la Llista Negra",
|
||||
"blacklistRemove":"Usuari Alliberat",
|
||||
"blacklistGet":"Usuari a la Llista Negra",
|
||||
"blacklistView":"Llista Negra Actual",
|
||||
"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",
|
||||
"autocloseEnabled":"Tancament Automàtic Activat",
|
||||
"autocloseDisabled":"Tancament Automàtic Desactivat",
|
||||
"autodelete":"Ticket Eliminat Automàticament",
|
||||
"autodeleteEnabled":"Eliminació Automàtica Activada",
|
||||
"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!",
|
||||
"close":"El ticket ha estat tancat amb èxit!",
|
||||
"delete":"El ticket ha estat eliminat amb èxit!",
|
||||
"reopen":"El ticket ha estat reobert amb èxit!",
|
||||
"claim":"El ticket ha estat reclamat amb èxit!",
|
||||
"unclaim":"El ticket ha estat alliberat amb èxit!",
|
||||
"pin":"El ticket ha estat fixat amb èxit!",
|
||||
"unpin":"El ticket ha estat desfixat amb èxit!",
|
||||
"rename":"El ticket ha estat renomenat a {0} amb èxit!",
|
||||
"move":"El ticket ha estat mogut a {0} amb èxit!",
|
||||
"add":"{0} ha estat afegit al ticket amb èxit!",
|
||||
"remove":"{0} ha estat eliminat del ticket amb èxit!",
|
||||
|
||||
"helpExplanation":"`<nom>` => paràmetre requerit\n`[nom]` => paràmetre opcional",
|
||||
"statsReset":"Les estadístiques del bot s'han restablert correctament!",
|
||||
"statsError":"No es poden veure les estadístiques del ticket!\n{0} no és un ticket!",
|
||||
"blacklistAdd":"{0} ha estat afegit a la llista negra amb èxit!",
|
||||
"blacklistRemove":"{0} ha estat alliberat amb èxit!",
|
||||
"blacklistGetSuccess":"{0} està actualment a la llista negra!",
|
||||
"blacklistGetEmpty":"{0} actualment no està a la llista negra!",
|
||||
"blacklistViewEmpty":"Encara no hi ha ningú a la llista negra!",
|
||||
"blacklistViewTip":"Utilitza \"/blacklist add\" per afegir un usuari a la llista negra!",
|
||||
"clearVerify":"Estàs segur que vols eliminar múltiples tickets?\nAquesta acció no es pot desfer!",
|
||||
"clearReady":"{0} tickets han estat eliminats amb èxit!",
|
||||
"rolesEmpty":"No s'han actualitzat rols!",
|
||||
|
||||
"autocloseLeave":"Aquest ticket ha estat tancat automàticament perquè el creador ha abandonat el servidor!",
|
||||
"autocloseTimeout":"Aquest ticket ha estat tancat automàticament perquè ha estat inactiu durant més de `{0}h`!",
|
||||
"autodeleteLeave":"Aquest ticket ha estat eliminat automàticament perquè el creador ha abandonat el servidor!",
|
||||
"autodeleteTimeout":"Aquest ticket ha estat eliminat automàticament perquè ha estat inactiu durant més de `{0} dies`!",
|
||||
"autocloseEnabled":"El tancament automàtic ha estat activat en aquest ticket!\nEs tancarà quan estigui inactiu durant més de `{0}h`!",
|
||||
"autocloseDisabled":"El tancament automàtic ha estat desactivat en aquest ticket!\nJa no es tancarà automàticament!",
|
||||
"autodeleteEnabled":"L'eliminació automàtica ha estat activada en aquest ticket!\nS'eliminarà quan estigui inactiu durant més de `{0} dies`!",
|
||||
"autodeleteDisabled":"L'eliminació automàtica ha estat desactivada en aquest ticket!\nJa no s'eliminarà automàticament!",
|
||||
|
||||
"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":"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?",
|
||||
"deletePlaceholder":"Per què has eliminat aquest ticket?",
|
||||
"reopenPlaceholder":"Per què has reobert aquest ticket?",
|
||||
"claimPlaceholder":"Per què has reclamat aquest ticket?",
|
||||
"unclaimPlaceholder":"Per què has alliberat aquest ticket?",
|
||||
"pinPlaceholder":"Per què has fixat aquest ticket?",
|
||||
"unpinPlaceholder":"Per què has desfixat aquest ticket?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"Un nou ticket ha estat creat per {0}!",
|
||||
"closeLog":"Aquest ticket ha estat tancat per {0}!",
|
||||
"closeDm":"El teu ticket ha estat tancat al nostre servidor!",
|
||||
"deleteLog":"Aquest ticket ha estat eliminat per {0}!",
|
||||
"deleteDm":"El teu ticket ha estat eliminat al nostre servidor!",
|
||||
"reopenLog":"Aquest ticket ha estat reobert per {0}!",
|
||||
"reopenDm":"El teu ticket ha estat reobert al nostre servidor!",
|
||||
"claimLog":"Aquest ticket ha estat reclamat per {0}!",
|
||||
"claimDm":"El teu ticket ha estat reclamat al nostre servidor!",
|
||||
"unclaimLog":"Aquest ticket ha estat alliberat per {0}!",
|
||||
"unclaimDm":"El teu ticket ha estat alliberat al nostre servidor!",
|
||||
"pinLog":"Aquest ticket ha estat fixat per {0}!",
|
||||
"pinDm":"El teu ticket ha estat fixat al nostre servidor!",
|
||||
"unpinLog":"Aquest ticket ha estat desfixat per {0}!",
|
||||
"unpinDm":"El teu ticket ha estat desfixat al nostre servidor!",
|
||||
"renameLog":"Aquest ticket ha estat renombrat a {0} per {1}!",
|
||||
"renameDm":"El teu ticket ha estat renombrat a {0} al nostre servidor!",
|
||||
"moveLog":"Aquest ticket ha estat mogut a {0} per {1}!",
|
||||
"moveDm":"El teu ticket ha estat mogut a {0} al nostre servidor!",
|
||||
"addLog":"{0} ha estat afegit a aquest ticket per {1}!",
|
||||
"addDm":"{0} ha estat afegit al teu ticket al nostre servidor!",
|
||||
"removeLog":"{0} ha estat eliminat d'aquest ticket per {1}!",
|
||||
"removeDm":"{0} ha estat eliminat del teu ticket al nostre servidor!",
|
||||
|
||||
"blacklistAddLog":"{0} ha estat afegit a la llista negra per {1}!",
|
||||
"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}!",
|
||||
|
||||
"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":{
|
||||
"success":{
|
||||
"visit":"Veure Transcripció",
|
||||
"ready":"Transcripció Creada",
|
||||
"textFileDescription":"Aquesta és la transcripció de text d'un ticket eliminat!",
|
||||
"htmlProgress":"Si us plau, espera mentre aquesta transcripció html es processa...",
|
||||
|
||||
"createdChannel":"S'ha creat una nova transcripció tipus {0} al servidor!",
|
||||
"createdCreator":"S'ha creat una nova transcripció tipus {0} per un dels teus tickets!",
|
||||
"createdParticipant":"S'ha creat una nova transcripció tipus {0} en un dels tickets on has participat!",
|
||||
"createdActiveAdmin":"S'ha creat una nova transcripció tipus {0} en un dels tickets on has participat com a administrador!",
|
||||
"createdEveryAdmin":"S'ha creat una nova transcripció tipus {0} en un dels tickets on eres administrador!",
|
||||
"createdOther":"S'ha creat una nova transcripció tipus {0}!"
|
||||
},
|
||||
"errors":{
|
||||
"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.",
|
||||
"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":{
|
||||
"titles":{
|
||||
"internalError":"Error Intern",
|
||||
"optionMissing":"Opció de Comanda Absent",
|
||||
"optionInvalid":"Opció de Comanda Invàlida",
|
||||
"unknownCommand":"Comanda Desconeguda",
|
||||
"noPermissions":"No Tens Permisos",
|
||||
"unknownTicket":"Ticket Desconegut",
|
||||
"deprecatedTicket":"Ticket Obsolet",
|
||||
"unknownOption":"Opció Desconeguda",
|
||||
"unknownPanel":"Panell Desconegut",
|
||||
"notInGuild":"No Ets Al Servidor",
|
||||
"channelRename":"No Es Pot Canviar El Nom Del Canal",
|
||||
"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ó!",
|
||||
"askForInfoResolve":"Contacta amb el propietari del bot si aquest problema no es resol després de diversos intents.",
|
||||
"internalError":"No s'ha pogut respondre a aquest {0} a causa d'un error intern!",
|
||||
"optionMissing":"Falta un paràmetre requerit en aquesta comanda!",
|
||||
"optionInvalid":"Un paràmetre d'aquesta comanda és invàlid!",
|
||||
"optionInvalidChoose":"Tria entre",
|
||||
"unknownCommand":"Prova de visitar el menú d'ajuda per obtenir més informació!",
|
||||
"noPermissions":"No tens permís per utilitzar aquest {0}!",
|
||||
"noPermissionsList":"Permisos Requerits: (un d'ells)",
|
||||
"noPermissionsCooldown":"No tens permís per utilitzar aquest {0} perquè tens un temps de refredament!",
|
||||
"noPermissionsBlacklist":"No tens permís per utilitzar aquest {0} perquè estàs a la llista negra!",
|
||||
"noPermissionsLimitGlobal":"No tens permís per crear un ticket perquè el servidor ha arribat al límit màxim de tickets!",
|
||||
"noPermissionsLimitGlobalUser":"No tens permís per crear un ticket perquè has arribat al límit màxim de tickets!",
|
||||
"noPermissionsLimitOption":"No tens permís per crear un ticket perquè el servidor ha arribat al límit màxim de tickets per aquesta opció!",
|
||||
"noPermissionsLimitOptionUser":"No tens permís per crear un ticket perquè has arribat al límit màxim de tickets per aquesta opció!",
|
||||
"unknownTicket":"Torna a intentar aquesta comanda en un ticket vàlid!",
|
||||
"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!",
|
||||
"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ó!",
|
||||
"stringMinLength":"El valor ha de tenir almenys {0} caràcters!",
|
||||
"stringMaxLength":"El valor ha de tenir com a màxim {0} caràcters!",
|
||||
"numberInvalid":"Nombre invàlid!",
|
||||
"numberMin":"El nombre ha de ser almenys {0}!",
|
||||
"numberMax":"El nombre ha de ser com a màxim {0}!",
|
||||
"numberDecimal":"El nombre no pot ser decimal!",
|
||||
"numberNegative":"El nombre no pot ser negatiu!",
|
||||
"numberPositive":"El nombre no pot ser positiu!",
|
||||
"numberZero":"El nombre no pot ser zero!",
|
||||
"channelNotFound":"No es pot trobar el canal!",
|
||||
"userNotFound":"No es pot trobar l'usuari!",
|
||||
"roleNotFound":"No es pot trobar el rol!",
|
||||
"memberNotFound":"No es pot trobar l'usuari!",
|
||||
"mentionableNotFound":"No es pot trobar l'usuari o el rol!",
|
||||
"channelType":"Tipus de canal invàlid!",
|
||||
"notInGuild":"Aquesta opció requereix que siguis en un servidor!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Has de ser el desenvolupador del bot.",
|
||||
"owner":"Has de ser el propietari del servidor.",
|
||||
"admin":"Has de ser un administrador del servidor.",
|
||||
"moderator":"Has de ser un moderador.",
|
||||
"support":"Has de formar part de l'equip de suport.",
|
||||
"member":"Has de ser un membre.",
|
||||
"discord-administrator":"Has de tenir el permís `ADMINISTRADOR`."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"El ticket ja està tancat!",
|
||||
"reopen":"El ticket encara no està tancat!",
|
||||
"claim":"El ticket ja està reclamat!",
|
||||
"unclaim":"El ticket encara no està reclamat!",
|
||||
"pin":"El ticket ja està fixat!",
|
||||
"unpin":"El ticket encara no està fixat!",
|
||||
"add":"Aquest usuari ja té accés al ticket!",
|
||||
"remove":"No es pot eliminar aquest usuari del ticket!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickets",
|
||||
"reason":"Motiu",
|
||||
"creator":"Creador",
|
||||
"remaining":"Temps Restant",
|
||||
"added":"Afegit",
|
||||
"removed":"Eliminat",
|
||||
"filter":"Filtre",
|
||||
"method":"Mètode",
|
||||
"type":"Tipus",
|
||||
"blacklisted":"Llista Negra",
|
||||
"panel":"Panell",
|
||||
"command":"Comanda",
|
||||
"system":"Sistema",
|
||||
"true":"Cert",
|
||||
"false":"Fals",
|
||||
"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",
|
||||
"autoclose":"Tancament Automàtic",
|
||||
"autodelete":"Eliminació Automàtica",
|
||||
"startupDate":"Data d'Inici",
|
||||
"version":"Versió",
|
||||
"name":"Nom",
|
||||
"role":"Rol",
|
||||
"status":"Estat",
|
||||
"claimed":"Reclamat",
|
||||
"pinned":"Fixat",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"comanda",
|
||||
"modal":"modal",
|
||||
"button":"botó",
|
||||
"dropdown":"desplegable",
|
||||
"method":"mètode"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Especifica una raó opcional que serà visible als registres.",
|
||||
"help":"Obtingues una llista de totes les comandes disponibles.",
|
||||
"panel":"Genera un missatge amb un desplegable o botons (per a la creació de tickets).",
|
||||
"panelId":"L'identificador del panell que vols generar.",
|
||||
"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ó.",
|
||||
"reopen":"Reobre un ticket.",
|
||||
"claim":"Reclama un ticket.",
|
||||
"claimUser":"Reclama aquest ticket per a una altra persona en lloc de tu mateix.",
|
||||
"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.",
|
||||
"renameName":"El nou nom per aquest ticket.",
|
||||
"add":"Afegeix un usuari a un ticket.",
|
||||
"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.",
|
||||
"blacklistRemove":"Elimina un usuari de la llista negra.",
|
||||
"blacklistGet":"Obtingues els detalls d'un usuari a la llista negra.",
|
||||
"blacklistGetUser":"L'usuari dels qual vols obtenir detalls.",
|
||||
"stats":"Veure estadístiques del bot, d'un membre o d'un ticket.",
|
||||
"statsReset":"Restablir totes les estadístiques del bot (i començar a comptar des de zero).",
|
||||
"statsGlobal":"Veure les estadístiques globals.",
|
||||
"statsUser":"Veure les estadístiques d'un usuari al servidor.",
|
||||
"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":{
|
||||
"all":"Tots",
|
||||
"open":"Oberts",
|
||||
"close":"Tancats",
|
||||
"claim":"Reclamats",
|
||||
"unclaim":"Alliberats",
|
||||
"pin":"Fixats",
|
||||
"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.",
|
||||
"autocloseEnableTime":"La quantitat d'hores que aquest ticket ha d'estar inactiu per tancar-lo.",
|
||||
"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.",
|
||||
|
||||
"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.",
|
||||
"ticket":"Crea instantàniament un ticket.",
|
||||
"close":"Tanca un ticket, això desactiva l'escriptura en aquest canal.",
|
||||
"delete":"Elimina un ticket, això crea una transcripció quan està activat.",
|
||||
"reopen":"Reobre un ticket, això permet escriure de nou en aquest canal.",
|
||||
"pin":"Fixar un ticket. Això mou el ticket a la part superior i afegeix un emoji '📌' al nom.",
|
||||
"unpin":"Desfixar un ticket. El ticket romandrà a la seva posició però perdrà l'emoji '📌'.",
|
||||
"move":"Mou un ticket. Això canvia el tipus d'aquest ticket.",
|
||||
"rename":"Renomena un ticket. Això canvia el nom del canal d'aquest ticket.",
|
||||
"claim":"Reclama un ticket. Amb això, pots fer saber al teu equip que estàs gestionant aquest ticket.",
|
||||
"unclaim":"Allibera un ticket. Amb això, pots fer saber al teu equip que aquest ticket està lliure de nou.",
|
||||
"add":"Afegeix un usuari a un ticket. Això permetrà a l'usuari llegir i escriure en aquest ticket.",
|
||||
"remove":"Elimina un usuari d'un ticket. Això eliminarà la capacitat de llegir i escriure per a un usuari en aquest ticket.",
|
||||
"panel":"Genera un missatge amb un desplegable o botons (per a la creació de tickets).",
|
||||
"blacklistView":"Veure una la llista negra actual.",
|
||||
"blacklistAdd":"Afegeix un usuari a la llista negra.",
|
||||
"blacklistRemove":"Elimina un usuari de la llista negra.",
|
||||
"blacklistGet":"Obtingues els detalls d'un usuari de la llista negra.",
|
||||
"statsGlobal":"Veure les estadístiques globals.",
|
||||
"statsTicket":"Veure les estadístiques d'un ticket al servidor.",
|
||||
"statsUser":"Veure les estadístiques d'un usuari al servidor.",
|
||||
"statsReset":"Restablir totes les estadístiques del bot (i començar a comptar des de zero).",
|
||||
"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.",
|
||||
"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":{
|
||||
"global":"Estadístiques Globals",
|
||||
"system":"Estadístiques del Sistema",
|
||||
"user":"Estadístiques d'Usuari",
|
||||
"ticket":"Estadístiques de Ticket",
|
||||
"participants":"Participants",
|
||||
"messages":"Missatges"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets Creats",
|
||||
"ticketsClosed":"Tickets Tancats",
|
||||
"ticketsDeleted":"Tickets Eliminats",
|
||||
"ticketsReopened":"Tickets Reoberts",
|
||||
"ticketsAutoclosed":"Tickets Tancats Automàticament",
|
||||
"ticketsClaimed":"Tickets Reclamats",
|
||||
"ticketsPinned":"Tickets Fixats",
|
||||
"ticketsMoved":"Tickets Moguts",
|
||||
"usersBlacklisted":"Usuaris a la Llista Negra",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["DJj123dj"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Custom",
|
||||
"automated":false
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[ERROR]",
|
||||
"headerOpenTicket":"OPEN TICKET",
|
||||
"typeWarning":"[WARNING]",
|
||||
"typeInfo":"[INFO]",
|
||||
"headerConfigChecker":"CONFIG CHECKER",
|
||||
"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 a detailed config report.",
|
||||
"dataPath":"path",
|
||||
"dataDocs":"docs",
|
||||
"dataMessages":"message"
|
||||
},
|
||||
"messages":{
|
||||
"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":"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":"Boolean must be false",
|
||||
"booleanFalse":"Boolean must be true",
|
||||
|
||||
"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":"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":"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":"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":{
|
||||
"buttons":{
|
||||
"create":"Visit Ticket",
|
||||
"close":"Close Ticket",
|
||||
"delete":"Delete Ticket",
|
||||
"reopen":"Reopen Ticket",
|
||||
"claim":"Claim Ticket",
|
||||
"unclaim":"Unclaim Ticket",
|
||||
"pin":"Pin Ticket",
|
||||
"unpin":"Unpin Ticket",
|
||||
"clear":"Delete Tickets",
|
||||
"helpSwitchSlash":"View Slash Commands",
|
||||
"helpSwitchText":"View Text Commands",
|
||||
"helpPage":"Page {0}",
|
||||
"withReason":"With Reason",
|
||||
"withoutTranscript":"Without Transcript",
|
||||
"blacklistAdd":"Blacklist User",
|
||||
"blacklistRemove":"Release User"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Ticket Created",
|
||||
"close":"Ticket Closed",
|
||||
"delete":"Ticket Deleted",
|
||||
"reopen":"Ticket Reopened",
|
||||
"claim":"Ticket Claimed",
|
||||
"unclaim":"Ticket Unclaimed",
|
||||
"pin":"Ticket Pinned",
|
||||
"unpin":"Ticket Unpinned",
|
||||
"rename":"Ticket Renamed",
|
||||
"move":"Ticket Moved",
|
||||
"add":"Ticket User Added",
|
||||
"remove":"Ticket User Removed",
|
||||
|
||||
"help":"Available Commands",
|
||||
"statsReset":"Reset Stats",
|
||||
"blacklistAdd":"User Blacklisted",
|
||||
"blacklistRemove":"User Released",
|
||||
"blacklistGet":"Blacklisted User",
|
||||
"blacklistView":"Current Blacklist",
|
||||
"blacklistAddDm":"Added To Blacklist",
|
||||
"blacklistRemoveDm":"Removed From Blacklist",
|
||||
"clear":"Tickets Cleared",
|
||||
"clearTickets":"Clear Tickets",
|
||||
"roles":"Roles Updated",
|
||||
|
||||
"autoclose":"Ticket Autoclosed",
|
||||
"autocloseEnabled":"Autoclose Enabled",
|
||||
"autocloseDisabled":"Autoclose Disabled",
|
||||
"autodelete":"Ticket Autodeleted",
|
||||
"autodeleteEnabled":"Autodelete Enabled",
|
||||
"autodeleteDisabled":"Autodelete Disabled",
|
||||
|
||||
"topicSet":"Topic Changed",
|
||||
"prioritySet":"Priority Changed",
|
||||
"priorityGet":"Ticket Priority",
|
||||
"transfer":"Ticket Transferred",
|
||||
"transcripts":"Transcript History"
|
||||
},
|
||||
"descriptions":{
|
||||
"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 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 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 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 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.",
|
||||
"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} 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 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 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 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":{
|
||||
"titles":{
|
||||
"internalError":"Internal Error",
|
||||
"optionMissing":"Command Option Missing",
|
||||
"optionInvalid":"Command Option Invalid",
|
||||
"unknownCommand":"Unknown Command",
|
||||
"noPermissions":"No Permissions",
|
||||
"unknownTicket":"Unknown Ticket",
|
||||
"deprecatedTicket":"Deprecated Ticket",
|
||||
"unknownOption":"Unknown Option",
|
||||
"unknownPanel":"Unknown Panel",
|
||||
"notInGuild":"Not In Server",
|
||||
"channelRename":"Unable To Rename Channel",
|
||||
"channelCategory":"Unable To Change Category",
|
||||
"busy":"Ticket Is Busy",
|
||||
"permissionError":"Permission Error"
|
||||
},
|
||||
"descriptions":{
|
||||
"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":"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":"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":"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":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickets",
|
||||
"reason":"Reason",
|
||||
"creator":"Creator",
|
||||
"remaining":"Time Remaining",
|
||||
"added":"Added",
|
||||
"removed":"Removed",
|
||||
"filter":"Filter",
|
||||
"method":"Method",
|
||||
"type":"Type",
|
||||
"blacklisted":"Blacklisted",
|
||||
"panel":"Panel",
|
||||
"command":"Command",
|
||||
"system":"System",
|
||||
"true":"True",
|
||||
"false":"False",
|
||||
"syntax":"Syntax",
|
||||
"originalName":"Original Name",
|
||||
"newName":"New Name",
|
||||
"originalCategory":"Original Category",
|
||||
"newCategory":"New Category",
|
||||
"until":"Until",
|
||||
"validOptions":"Valid Options",
|
||||
"validPanels":"Valid Panels",
|
||||
"autoclose":"Autoclose",
|
||||
"autodelete":"Autodelete",
|
||||
"startupDate":"Startup Date",
|
||||
"version":"Version",
|
||||
"name":"Name",
|
||||
"role":"Role",
|
||||
"status":"Status",
|
||||
"claimed":"Claimed",
|
||||
"pinned":"Pinned",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"command",
|
||||
"modal":"modal",
|
||||
"button":"button",
|
||||
"dropdown":"dropdown",
|
||||
"method":"method"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"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":"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 tickets",
|
||||
"open":"Open tickets",
|
||||
"close":"Closed tickets",
|
||||
"claim":"Claimed tickets",
|
||||
"unclaim":"Unclaimed tickets",
|
||||
"pin":"Pinned tickets",
|
||||
"unpin":"Unpinned tickets",
|
||||
"autoclose":"Autoclosed tickets"
|
||||
},
|
||||
|
||||
"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":"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":"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 Statistics",
|
||||
"system":"System Statistics",
|
||||
"user":"User Statistics",
|
||||
"ticket":"Ticket Statistics",
|
||||
"participants":"Participants",
|
||||
"messages":"Messages"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets Created",
|
||||
"ticketsClosed":"Tickets Closed",
|
||||
"ticketsDeleted":"Tickets Deleted",
|
||||
"ticketsReopened":"Tickets Reopened",
|
||||
"ticketsAutoclosed":"Tickets Autoclosed",
|
||||
"ticketsClaimed":"Tickets Claimed",
|
||||
"ticketsPinned":"Tickets Pinned",
|
||||
"ticketsMoved":"Tickets Moved",
|
||||
"usersBlacklisted":"Users Blacklisted",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["spyeye_"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Czech",
|
||||
"automated":false
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[ERROR]",
|
||||
"headerOpenTicket":"OPEN TICKET",
|
||||
"typeWarning":"[WARNING]",
|
||||
"typeInfo":"[INFO]",
|
||||
"headerConfigChecker":"CONFIG CHECKER",
|
||||
"headerDescription":"kontrola chyb v konfiguračních souborech!",
|
||||
"footerError":"Bot se nespustí, dokud všechny {0} nebudou opraveny!",
|
||||
"footerWarning":"Doporučejeme opravit všechny {0} před spuštěním!",
|
||||
"footerSupport":"PODPORA: {0} - DOKUMENTACE: {1}",
|
||||
"compactInformation":"Použij {0} pro více informací!",
|
||||
"dataPath":"path",
|
||||
"dataDocs":"docs",
|
||||
"dataMessages":"message"
|
||||
},
|
||||
"messages":{
|
||||
"stringTooShort":"Tento string nesmí být kratší než {0} znaků!",
|
||||
"stringTooLong":"Tento string nesmí být delší než {0} znaků!",
|
||||
"stringLengthInvalid":"Tento string musí mít délku {0} znaků!",
|
||||
"stringStartsWith":"Tento string musí začínat {0}!",
|
||||
"stringEndsWith":"Tento string musí končit {0}!",
|
||||
"stringContains":"Tento string musí obsahovat {0}!",
|
||||
"stringChoices":"Tento string může být pouze jednou z následujících možností: {0}!",
|
||||
"stringRegex":"Tento string je neplatný!",
|
||||
"stringInvertedContains":"Tento řetězec nesmí obsahovat {0}!",
|
||||
"stringLowercase":"Tento řetězec musí být napsán pouze malými písmeny!",
|
||||
"stringUppercase":"Tento řetězec musí být napsán pouze velkými písmeny!",
|
||||
"stringSpecialCharacters":"Tento řetězec nesmí obsahovat žádné speciální znaky! (pouze a-z, 0-9 a mezery)",
|
||||
"stringNoSpaces":"Tento řetězec nesmí obsahovat mezery!",
|
||||
"stringCapitalWord":"Doporučuje se, aby každé slovo v tomto řetězci začínalo velkým písmenem!",
|
||||
"stringCapitalSentence":"Zdá se, že některé věty v tomto řetězci nezačínají velkým písmenem!",
|
||||
"stringPunctuation":"Zdá se, že věta v tomto řetězci nekončí interpunkčním znaménkem!",
|
||||
|
||||
"numberTooShort":"Toto číslo nesmí být kratší než {0} znaků!",
|
||||
"numberTooLong":"Toto číslo nesmí být delší než {0} znaků.!",
|
||||
"numberLengthInvalid":"Toto číslo musí mít délku {0} znaků.!",
|
||||
"numberTooSmall":"Toto číslo musí být alespoň {0}.!",
|
||||
"numberTooLarge":"Toto číslo musí být nejvýše {0}!",
|
||||
"numberNotEqual":"Toto číslo musí být {0}!",
|
||||
"numberStep":"Toto číslo musí být násobkem {0}.!",
|
||||
"numberStepOffset":"Toto číslo musí být násobkem {0} žačínající {1}.!",
|
||||
"numberStartsWith":"Toto číslo musí začínat {0}!",
|
||||
"numberEndsWith":"Toto číslo musí končit {0}!",
|
||||
"numberContains":"Toto číslo musí obsahovat {0}!",
|
||||
"numberChoices":"Toto číslo může být pouze jedno z následujících hodnot: {0}!",
|
||||
"numberFloat":"Toto číslo nemůže být desetinné!",
|
||||
"numberNegative":"Toto číslo nemůže být záporné!",
|
||||
"numberPositive":"Toto číslo nemůže být kladné!",
|
||||
"numberZero":"Toto číslo nemůže být nula!",
|
||||
"numberNan":"Toto číslo nemůže být NaN (není číslo)!",
|
||||
"numberInvertedContains":"Toto číslo nesmí obsahovat {0}!",
|
||||
|
||||
"booleanTrue":"Tento boolean nemůže být true!",
|
||||
"booleanFalse":"Tento boolean nemůže být false!",
|
||||
|
||||
"arrayEmptyDisabled":"Toto pole nesmí být prázdné.!",
|
||||
"arrayEmptyRequired":"Toto pole musí být prázdné!",
|
||||
"arrayTooShort":"Toto pole musí mít délku alespoň {0}!",
|
||||
"arrayTooLong":"Toto pole musí mít délku maximálně {0}!",
|
||||
"arrayLengthInvalid":"Toto pole musí mít délku {0}!",
|
||||
"arrayInvalidTypes":"Toto pole může obsahovat pouze následující typy: {0}!",
|
||||
"arrayDouble":"Toto pole neumožňuje zadat stejnou hodnotu dvakrát.!",
|
||||
|
||||
"discordInvalidId":"Toto je neplatné discord {0} id!",
|
||||
"discordInvalidIdOptions":"Toto je neplatné Discord ID {0}! Můžete také použít jeden z těchto: {1}!",
|
||||
"discordInvalidToken":"Toto je neplatný discord token (syntakticky)!",
|
||||
"colorInvalid":"Toto je neplatná hex barva!",
|
||||
"emojiTooShort":"Tento string musí obsahovat alespoň {0} emotikonů.!",
|
||||
"emojiTooLong":"Tento string musí obsahovat nejvýše {0} emotikonů.!",
|
||||
"emojiCustom":"Tento emotikon nemůže být custom emotikon!",
|
||||
"emojiInvalid":"Toto je neplatný emotikon!",
|
||||
"urlInvalid":"Tato url adresa je neplatná!",
|
||||
"urlInvalidHttp":"Tato url může používat pouze protokol https://!",
|
||||
"urlInvalidProtocol":"Tato url může používat pouze protokoly http:// a https://!",
|
||||
"urlInvalidHostname":"Tato url má zakázané hostitelské jméno!",
|
||||
"urlInvalidExtension":"Tato url má neplatnou příponu! Vyberte si mezi: {0}!",
|
||||
"urlInvalidPath":"Tato url má neplatnou cestu!",
|
||||
"idNotUnique":"Toto id není jedinečné, místo něj použijte jiné id!",
|
||||
"idNonExistent":"Id {0} neexistuje!",
|
||||
|
||||
"invalidType":"Toto nastavení musí být typu: {0}!",
|
||||
"propertyMissing":"U tohoto objektu chybí vlastnost {0}!",
|
||||
"propertyOptional":"Vlastnost {0} je v tomto objektu nepovinná!",
|
||||
"objectDisabled":"Tento objekt je zakázán, povolte jej pomocí {0}!",
|
||||
"nullInvalid":"Tato vlastnost nemůže být nulová!",
|
||||
"switchInvalidType":"Musí se jednat o jeden z následujících typů: {0}!",
|
||||
"objectSwitchInvalid":"Tento objekt musí být jednoho z následujících typů: {0}!",
|
||||
|
||||
"invalidLanguage":"Jedná se o neplatný jazyk!",
|
||||
"invalidButton":"Toto tlačítko musí mít alespoň {0} nebo {1}!",
|
||||
"unusedOption":"Možnost {0} se nikde nepoužívá!",
|
||||
"unusedQuestion":"Otázka {0} není nikde použita!",
|
||||
"dropdownOption":"Panel s 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":{
|
||||
"buttons":{
|
||||
"create":"Zobrazit ticket",
|
||||
"close":"Uzavřít ticket",
|
||||
"delete":"Vymazat ticket",
|
||||
"reopen":"Znovu otevřít ticket",
|
||||
"claim":"Převzít ticket",
|
||||
"unclaim":"Zrušit převzetí ticketu",
|
||||
"pin":"Připnout ticket",
|
||||
"unpin":"Odepnout ticket",
|
||||
"clear":"Vymazat tickety",
|
||||
"helpSwitchSlash":"Zobrazit slash příkazy",
|
||||
"helpSwitchText":"Zobrazit textové příkazy",
|
||||
"helpPage":"Strana {0}",
|
||||
"withReason":"S důvodem",
|
||||
"withoutTranscript":"Bez důvodu",
|
||||
"blacklistAdd":"Přidat Uživatele na Blacklist",
|
||||
"blacklistRemove":"Uvolnit Uživatele"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Ticket vytvořen",
|
||||
"close":"Ticket uzavřen",
|
||||
"delete":"Ticket vymazán",
|
||||
"reopen":"Ticket znovu otevřen",
|
||||
"claim":"Ticket převzat",
|
||||
"unclaim":"Ticket již není převezmut",
|
||||
"pin":"Ticket připnut",
|
||||
"unpin":"Ticket odepnut",
|
||||
"rename":"Ticket přejmenován",
|
||||
"move":"Ticket přesunut",
|
||||
"add":"Uživatel přidán",
|
||||
"remove":"Uživatel odebrán",
|
||||
|
||||
"help":"Dostupné příkazy:",
|
||||
"statsReset":"Resetovat statistiky",
|
||||
"blacklistAdd":"Uživatel blacklistován",
|
||||
"blacklistRemove":"Uživatel odebrán z blacklistu",
|
||||
"blacklistGet":"Uživatel na blacklistu",
|
||||
"blacklistView":"Aktuální blacklist",
|
||||
"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",
|
||||
"autocloseEnabled":"Automatické uzavření povoleno",
|
||||
"autocloseDisabled":"Automatické uzavření zakázáno",
|
||||
"autodelete":"Ticket automaticky vymazán",
|
||||
"autodeleteEnabled":"Automatické mazání povoleno",
|
||||
"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í!",
|
||||
"close":"Ticket byl úspěšně uzavřen!",
|
||||
"delete":"Ticket byl úspěšně vymazán!",
|
||||
"reopen":"Ticket byl úspěšně znovu otevřen!",
|
||||
"claim":"Ticket byl úspěšně převzat!",
|
||||
"unclaim":"Ticket již není převezmut!",
|
||||
"pin":"Ticket byl úspěšně připnut!",
|
||||
"unpin":"Ticket byl úspěšně odepnut!",
|
||||
"rename":"Ticket byl úspěšně přejmenován na {0}!",
|
||||
"move":"Ticket byl úspěšně přesunut do {0}!",
|
||||
"add":"{0} byl úspěšně přidán do ticketu!",
|
||||
"remove":"{0} byl úspěšně odstraněn z ticketu!",
|
||||
|
||||
"helpExplanation":"`<name>` => povinný parametr\n`[name]` => nepovinný parametr",
|
||||
"statsReset":"Statistiky bota byly úspěšně resetovány!",
|
||||
"statsError":"Nelze zobrazit statistiky ticketu!\n{0} není ticket!",
|
||||
"blacklistAdd":"{0} byl přídán na blacklist!",
|
||||
"blacklistRemove":"{0} byl odebrán z blacklistu!",
|
||||
"blacklistGetSuccess":"{0} je nyní na blacklistu!",
|
||||
"blacklistGetEmpty":"{0} nyní není na blacklistu!",
|
||||
"blacklistViewEmpty":"Na blacklistu ještě nikdo není",
|
||||
"blacklistViewTip":"Použij \"/blacklist add\" pro přidání uživatele na blacklist!",
|
||||
"clearVerify":"Opravdu chcete smazat více ticketů?\nTuto akci nelze vrátit zpět!",
|
||||
"clearReady":"{0} ticketů bylo úspěšně smazány!",
|
||||
"rolesEmpty":"Žádné role nebyly aktualizovány!",
|
||||
|
||||
"autocloseLeave":"Tento ticket byl automaticky uzavřen, protože jeho autor opustil server.!",
|
||||
"autocloseTimeout":"Tento ticket byl automaticky uzavřen, protože byl neaktivní déle než `{0}h`!",
|
||||
"autodeleteLeave":"Tento ticket byl automaticky smazán, protože jeho autor opustil server!",
|
||||
"autodeleteTimeout":"Tento ticket byl automaticky smazán, protože je neaktivní déle než `{0} dní`!",
|
||||
"autocloseEnabled":"U tohoto ticketu bylo povoleno automatické uzavření!\nTicket bude uzavřen, pokud bude neaktivní déle než `{0}h`!",
|
||||
"autocloseDisabled":"U tohoto ticketu bylo vypnuto automatické zavírání!\nUž se nebude automaticky zavírat!",
|
||||
"autodeleteEnabled":"U tohoto ticketu bylo povoleno automatické mazání!\nBude smazán, pokud je neaktivní déle než `{0} dní`!",
|
||||
"autodeleteDisabled":"Automatické mazání bylo v tomto zakázáno!\nUž se nebude automaticky mazat!",
|
||||
|
||||
"ticketMessageLimit":"Současně lze vytvořit pouze {0} ticketu!",
|
||||
"ticketMessageAutoclose":"Tento ticket se automaticky uzavře, pokud je neaktivní po dobu {0}h!",
|
||||
"ticketMessageAutodelete":"Tento ticket bude automaticky smazán, pokud bude neaktivní po dobu {0} dnů!",
|
||||
"panelReady":"Panel 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?",
|
||||
"deletePlaceholder":"Proč jste tento ticket smazali?",
|
||||
"reopenPlaceholder":"Proč jste tento ticket znovu otevřeli?",
|
||||
"claimPlaceholder":"Proč jste si vyžádal tento ticket?",
|
||||
"unclaimPlaceholder":"Proč jste zrušili převzetí tohoto ticketu?",
|
||||
"pinPlaceholder":"Proč jste připnuli tento ticket?",
|
||||
"unpinPlaceholder":"Proč jste odepnuli tento ticket?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"Nový ticket byl vytvořen uživatelem {0}!",
|
||||
"closeLog":"Tento ticket byl uzavřen uživatelem {0}!",
|
||||
"closeDm":"Tvůj ticket byl uzavřen na našem serveru!",
|
||||
"deleteLog":"Tento ticket byl smazán uživatelem {0}!",
|
||||
"deleteDm":"Tvůj ticket byl smazán na našem serveru!",
|
||||
"reopenLog":"Tento ticket byl znovu otevřen uživatelem {0}!",
|
||||
"reopenDm":"Tvůj ticket byl znovu otevřen na našem serveru!",
|
||||
"claimLog":"Tento ticket byl přidělen uživatelem {0}!",
|
||||
"claimDm":"Tvůj ticket byl přidělen na našem serveru!",
|
||||
"unclaimLog":"Tento ticket byl odhlášen uživatelem {0}!",
|
||||
"unclaimDm":"Tvůj ticket byl odhlášen na našem serveru!",
|
||||
"pinLog":"Tento ticket byl připnut uživatelem {0}!",
|
||||
"pinDm":"Tvůj ticket byl připnut na našem serveru!",
|
||||
"unpinLog":"Tento ticket byl odepnut uživatelem {0}!",
|
||||
"unpinDm":"Tvůj ticket byl odepnut na našem serveru!",
|
||||
"renameLog":"Tento ticket byl přejmenován na {0} uživatelem {1}!",
|
||||
"renameDm":"Tvůj ticket byl přejmenován na {0} na našem serveru!",
|
||||
"moveLog":"Tento ticket byl přesunut do {0} uživatelem {1}!",
|
||||
"moveDm":"Tvůj ticket byl přesunut do {0} na našem serveru!",
|
||||
"addLog":"{0} byl přidán do tohoto ticketu uživatelem {1}!",
|
||||
"addDm":"{0} byl přidán do tvého ticketu na našem serveru!",
|
||||
"removeLog":"{0} byl odstraněn z tohoto ticketu uživatelem {1}!",
|
||||
"removeDm":"{0} byl odstraněn z tvého ticketu na našem serveru!",
|
||||
|
||||
"blacklistAddLog":"{0} byl přidán na blacklist uživatelem {1}!",
|
||||
"blacklistRemoveLog":"{0} byl odstraněn z blacklistu uživatelem {1}!",
|
||||
"blacklistAddDm":"Byl jsi přidán na blacklist na našem serveru!\nOd teď nemůžeš vytvářet tickety!",
|
||||
"blacklistRemoveDm":"Byl jsi odstraněn z blacklistu na našem serveru!\nNyní můžeš opět vytvářet tickety!",
|
||||
"clearLog":"{0} ticketů bylo smazáno uživatelem {1}!",
|
||||
|
||||
"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":{
|
||||
"success":{
|
||||
"visit":"Zobrazit přepis",
|
||||
"ready":"Přepis vytvořen",
|
||||
"textFileDescription":"Toto je textový přepis smazaného ticketu!",
|
||||
"htmlProgress":"Prosím, počkejte, zatímco se zpracovává HTML přepis...",
|
||||
|
||||
"createdChannel":"Na serveru byl vytvořen nový přepis {0}!",
|
||||
"createdCreator":"Byl vytvořen nový přepis {0} pro jeden z tvých ticketů!",
|
||||
"createdParticipant":"Byl vytvořen nový přepis {0} v jednom z ticketů, kterých ses účastnil!",
|
||||
"createdActiveAdmin":"Byl vytvořen nový přepis {0} v jednom z ticketů, kterých ses účastnil jako admin!",
|
||||
"createdEveryAdmin":"Byl vytvořen nový přepis {0} v jednom z ticketů, kde jsi byl adminem!",
|
||||
"createdOther":"Byl vytvořen nový přepis {0}!"
|
||||
},
|
||||
"errors":{
|
||||
"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.",
|
||||
"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":{
|
||||
"titles":{
|
||||
"internalError":"Interní chyba",
|
||||
"optionMissing":"Chybějící možnost příkazu",
|
||||
"optionInvalid":"Neplatná možnost příkazu",
|
||||
"unknownCommand":"Neznámý příkaz",
|
||||
"noPermissions":"Nemáš oprávnění",
|
||||
"unknownTicket":"Neznámý ticket",
|
||||
"deprecatedTicket":"Zastaralý ticket",
|
||||
"unknownOption":"Neznámá možnost",
|
||||
"unknownPanel":"Neznámý panel",
|
||||
"notInGuild":"Nejsi na serveru",
|
||||
"channelRename":"Nepodařilo se přejmenovat kanál",
|
||||
"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!",
|
||||
"askForInfoResolve":"Kontaktuj vlastníka tohoto bota, pokud se tento problém nevyřeší po několika pokusech.",
|
||||
"internalError":"Nepodařilo se odpovědět na tento {0} kvůli interní chybě!",
|
||||
"optionMissing":"V tomto příkazu chybí požadovaný parametr!",
|
||||
"optionInvalid":"V tomto příkazu je neplatný parametr!",
|
||||
"optionInvalidChoose":"Vyber z",
|
||||
"unknownCommand":"Zkus navštívit nabídku nápovědy pro více informací!",
|
||||
"noPermissions":"Nemáš oprávnění k použití tohoto {0}!",
|
||||
"noPermissionsList":"Požadovaná oprávnění: (jedno z nich)",
|
||||
"noPermissionsCooldown":"Nemáš oprávnění k použití tohoto {0}, protože máš cooldown!",
|
||||
"noPermissionsBlacklist":"Nemáš oprávnění k použití tohoto {0}, protože jsi byl přidán na blacklist!",
|
||||
"noPermissionsLimitGlobal":"Nemáš oprávnění vytvořit ticket, protože server dosáhl maximálního limitu ticketů!",
|
||||
"noPermissionsLimitGlobalUser":"Nemáš oprávnění vytvořit ticket, protože jsi dosáhl maximálního limitu ticketů!",
|
||||
"noPermissionsLimitOption":"Nemáš oprávnění vytvořit ticket, protože server dosáhl maximálního limitu ticketů pro tuto možnost!",
|
||||
"noPermissionsLimitOptionUser":"Nemáš oprávnění vytvořit ticket, protože jsi dosáhl maximálního limitu ticketů pro tuto možnost!",
|
||||
"unknownTicket":"Zkus tento příkaz znovu v platném ticketu!",
|
||||
"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!",
|
||||
"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!",
|
||||
"stringMinLength":"Hodnota musí mít alespoň {0} znaků!",
|
||||
"stringMaxLength":"Hodnota může mít maximálně {0} znaků!",
|
||||
"numberInvalid":"Neplatné číslo!",
|
||||
"numberMin":"Číslo musí být alespoň {0}!",
|
||||
"numberMax":"Číslo může být maximálně {0}!",
|
||||
"numberDecimal":"Číslo nesmí být desetinné!",
|
||||
"numberNegative":"Číslo nesmí být záporné!",
|
||||
"numberPositive":"Číslo nesmí být kladné!",
|
||||
"numberZero":"Číslo nesmí být nula!",
|
||||
"channelNotFound":"Nelze najít kanál!",
|
||||
"userNotFound":"Nelze najít uživatele!",
|
||||
"roleNotFound":"Nelze najít roli!",
|
||||
"memberNotFound":"Nelze najít uživatele!",
|
||||
"mentionableNotFound":"Nelze najít uživatele nebo roli!",
|
||||
"channelType":"Neplatný typ kanálu!",
|
||||
"notInGuild":"Tato možnost vyžaduje, abys byl na serveru!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Musíš být vývojářem tohoto bota.",
|
||||
"owner":"Musíš být vlastníkem serveru.",
|
||||
"admin":"Musíš být adminem serveru.",
|
||||
"moderator":"Musíš být moderátorem.",
|
||||
"support":"Musíš být členem týmu podpory.",
|
||||
"member":"Musíš být členem.",
|
||||
"discord-administrator":"Musíš mít oprávnění `ADMINISTRATOR`."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"Ticket je již uzavřený!",
|
||||
"reopen":"Ticket ještě není uzavřený!",
|
||||
"claim":"Ticket je již přidělený!",
|
||||
"unclaim":"Ticket ještě není přidělený!",
|
||||
"pin":"Ticket je již připnutý!",
|
||||
"unpin":"Ticket ještě není připnutý!",
|
||||
"add":"Tento uživatel už má k ticketu přístup!",
|
||||
"remove":"Tohoto uživatele nelze z ticketu odstranit!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickety",
|
||||
"reason":"Důvod",
|
||||
"creator":"Tvůrce",
|
||||
"remaining":"Zbývající čas",
|
||||
"added":"Přidáno",
|
||||
"removed":"Odstraněno",
|
||||
"filter":"Filtr",
|
||||
"method":"Metoda",
|
||||
"type":"Typ",
|
||||
"blacklisted":"Na blacklistu",
|
||||
"panel":"Panel",
|
||||
"command":"Příkaz",
|
||||
"system":"Systém",
|
||||
"true":"true",
|
||||
"false":"false",
|
||||
"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",
|
||||
"autoclose":"Automatické uzavření",
|
||||
"autodelete":"Automatické smazání",
|
||||
"startupDate":"Datum spuštění",
|
||||
"version":"Verze",
|
||||
"name":"Jméno",
|
||||
"role":"Role",
|
||||
"status":"STAV",
|
||||
"claimed":"Přiděleno",
|
||||
"pinned":"Připnuto",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"příkaz",
|
||||
"modal":"modal",
|
||||
"button":"tlačítko",
|
||||
"dropdown":"roletka",
|
||||
"method":"metoda"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Zadej nepovinný důvod, který bude viditelný v logu.",
|
||||
"help":"Získej seznam všech dostupných příkazů.",
|
||||
"panel":"Vytvoř zprávu s roletkou nebo tlačítky (pro vytvoření ticketu).",
|
||||
"panelId":"Identifikátor panelu, který chceš vytvořit.",
|
||||
"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.",
|
||||
"reopen":"Znovu otevři ticket.",
|
||||
"claim":"Přiděl ticket.",
|
||||
"claimUser":"Přiděl tento ticket někomu jinému místo sebe.",
|
||||
"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.",
|
||||
"renameName":"Nový název pro tento ticket.",
|
||||
"add":"Přidej uživatele k ticketu.",
|
||||
"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.",
|
||||
"blacklistRemove":"Odstraň uživatele z blacklistu.",
|
||||
"blacklistGet":"Získej detaily o uživateli na blacklistu.",
|
||||
"blacklistGetUser":"Uživatel, o kterém chceš získat detaily.",
|
||||
"stats":"Zobraz statistiky bota, člena nebo ticketu.",
|
||||
"statsReset":"Resetuj všechny statistiky bota (a začni počítat od nuly).",
|
||||
"statsGlobal":"Zobraz globální statistiky.",
|
||||
"statsUser":"Zobraz statistiky uživatele na serveru.",
|
||||
"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":{
|
||||
"all":"Vše",
|
||||
"open":"Otevřené",
|
||||
"close":"Uzavřené",
|
||||
"claim":"Přidělené",
|
||||
"unclaim":"Nepřidělené",
|
||||
"pin":"Připnuté",
|
||||
"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.",
|
||||
"autocloseEnableTime":"Počet hodin neaktivity, po kterých se ticket uzavře.",
|
||||
"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.",
|
||||
|
||||
"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ů.",
|
||||
"ticket":"Okamžitě vytvoř ticket.",
|
||||
"close":"Uzavři ticket, čímž se zakáže psaní v tomto kanálu.",
|
||||
"delete":"Smaž ticket, čímž se vytvoří přepis, pokud je to povoleno.",
|
||||
"reopen":"Znovu otevři ticket, což opět umožní psaní v tomto kanálu.",
|
||||
"pin":"Připni ticket. Tento ticket se přesune na začátek a bude mít ve jménu emoji '📌'.",
|
||||
"unpin":"Odepni ticket. Ticket zůstane na svém místě, ale ztratí emoji '📌'.",
|
||||
"move":"Přesuň ticket. Tím se změní typ tohoto ticketu.",
|
||||
"rename":"Přejmenuj ticket. Tím se změní název kanálu tohoto ticketu.",
|
||||
"claim":"Přiděl ticket. Tím dáš svému týmu najevo, že tento ticket řešíš.",
|
||||
"unclaim":"Odeber přidělení ticketu. Tím dáš svému týmu najevo, že je tento ticket znovu volný.",
|
||||
"add":"Přidej uživatele k ticketu. Tímto uživateli umožníš číst a psát v tomto ticketu.",
|
||||
"remove":"Odstraň uživatele z ticketu. Tímto uživateli odebereš možnost číst a psát v tomto ticketu.",
|
||||
"panel":"Vytvoř zprávu s roletkou nebo tlačítky (pro vytvoření ticketu).",
|
||||
"blacklistView":"Zobraz seznam aktuálního blacklistu.",
|
||||
"blacklistAdd":"Přidej uživatele na blacklist.",
|
||||
"blacklistRemove":"Odstraň uživatele z blacklistu.",
|
||||
"blacklistGet":"Získej detaily o uživateli na blacklistu.",
|
||||
"statsGlobal":"Zobraz globální statistiky.",
|
||||
"statsTicket":"Zobraz statistiky ticketu na serveru.",
|
||||
"statsUser":"Zobraz statistiky uživatele na serveru.",
|
||||
"statsReset":"Resetuj všechny statistiky bota (a začni počítat od nuly).",
|
||||
"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.",
|
||||
"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":{
|
||||
"global":"Globální statistiky",
|
||||
"system":"Statistiky systému",
|
||||
"user":"Statistiky uživatele",
|
||||
"ticket":"Statistiky ticketu",
|
||||
"participants":"Účastníci",
|
||||
"messages":"Zprávy"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Vytvořené tickety",
|
||||
"ticketsClosed":"Uzavřené tickety",
|
||||
"ticketsDeleted":"Smazané tickety",
|
||||
"ticketsReopened":"Znovu otevřené tickety",
|
||||
"ticketsAutoclosed":"Automaticky uzavřené tickety",
|
||||
"ticketsClaimed":"Přidělené tickety",
|
||||
"ticketsPinned":"Připnuté tickety",
|
||||
"ticketsMoved":"Přesunuté tickety",
|
||||
"usersBlacklisted":"Uživatelé na blacklistu",
|
||||
"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é"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["the_gamer"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Danish",
|
||||
"automated":false
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[FEJL]",
|
||||
"headerOpenTicket":"ÅBEN TICKET",
|
||||
"typeWarning":"[ADVARSEL]",
|
||||
"typeInfo":"[INFO]",
|
||||
"headerConfigChecker":"CONFIG CHECKER",
|
||||
"headerDescription":"tjek efter fejl i din config!",
|
||||
"footerError":"botten vil ikke fikse før alle {0}'s are fixed!",
|
||||
"footerWarning":"it's recommended to fix all {0}'s before starting!",
|
||||
"footerSupport":"SUPPORT: {0} - DOCS: {1}",
|
||||
"compactInformation":"brug {0} for mere information!",
|
||||
"dataPath":"path",
|
||||
"dataDocs":"docs",
|
||||
"dataMessages":"besked"
|
||||
},
|
||||
"messages":{
|
||||
"stringTooShort":"Denne linje kan ikke være kortere end {0} karaktere!",
|
||||
"stringTooLong":"Denne linke kan ikke være længere end {0} karaktere!",
|
||||
"stringLengthInvalid":"Denne linje skal være {0} karaktere lang!",
|
||||
"stringStartsWith":"Denne linje skal starte med {0}!",
|
||||
"stringEndsWith":"Denne linje skal ende med {0}!",
|
||||
"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!",
|
||||
"numberLengthInvalid":"Dette nummer skal være {0} tegn langt!",
|
||||
"numberTooSmall":"Dette nummer skal være mindst {0}!",
|
||||
"numberTooLarge":"Dette nummer skal være højst {0}!",
|
||||
"numberNotEqual":"Dette nummer skal være {0}!",
|
||||
"numberStep":"Dette nummer skal være et multiplum af {0}!",
|
||||
"numberStepOffset":"Dette nummer skal være et multiplum af {0}, startende med {1}!",
|
||||
"numberStartsWith":"Dette nummer skal starte med {0}!",
|
||||
"numberEndsWith":"Dette nummer skal ende med {0}!",
|
||||
"numberContains":"Dette nummer skal indeholde {0}!",
|
||||
"numberChoices":"Dette nummer kan kun være en af følgende værdier: {0}!",
|
||||
"numberFloat":"Dette nummer kan ikke være et decimaltal!",
|
||||
"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!",
|
||||
|
||||
"arrayEmptyDisabled":"Dette array må ikke være tomt!",
|
||||
"arrayEmptyRequired":"Dette array skal være tomt!",
|
||||
"arrayTooShort":"Dette array skal have en længde på mindst {0}!",
|
||||
"arrayTooLong":"Dette array skal have en længde på højst {0}!",
|
||||
"arrayLengthInvalid":"Dette array skal have en længde på {0}!",
|
||||
"arrayInvalidTypes":"Dette array kan kun indeholde følgende typer: {0}!",
|
||||
"arrayDouble":"Dette array tillader ikke den samme værdi to gange!",
|
||||
|
||||
"discordInvalidId":"Dette er et ugyldigt Discord {0} id!",
|
||||
"discordInvalidIdOptions":"Dette er et ugyldigt Discord {0} id! Du kan også bruge en af disse: {1}!",
|
||||
"discordInvalidToken":"Dette er et ugyldigt Discord token (syntaktisk)!",
|
||||
"colorInvalid":"Dette er en ugyldig hex-farve!",
|
||||
"emojiTooShort":"Denne tekst skal have mindst {0} emojis!",
|
||||
"emojiTooLong":"Denne tekst skal have højst {0} emojis!",
|
||||
"emojiCustom":"Denne emoji kan ikke være en brugerdefineret Discord-emoji!",
|
||||
"emojiInvalid":"Dette er en ugyldig emoji!",
|
||||
"urlInvalid":"Denne URL er ugyldig!",
|
||||
"urlInvalidHttp":"Denne URL kan kun bruge https:// protokollen!",
|
||||
"urlInvalidProtocol":"Denne URL kan kun bruge http:// & https:// protokoller!",
|
||||
"urlInvalidHostname":"Denne URL har et ikke-tilladt hostname!",
|
||||
"urlInvalidExtension":"Denne URL har en ugyldig filendelse! Vælg mellem: {0}!",
|
||||
"urlInvalidPath":"Denne URL har en ugyldig sti!",
|
||||
"idNotUnique":"Dette id er ikke unikt, brug et andet id i stedet!",
|
||||
"idNonExistent":"Id'et {0} eksisterer ikke!",
|
||||
|
||||
"invalidType":"Denne egenskab skal være typen: {0}!",
|
||||
"propertyMissing":"Egenskaben {0} mangler i dette objekt!",
|
||||
"propertyOptional":"Egenskaben {0} er valgfri i dette objekt!",
|
||||
"objectDisabled":"Dette objekt er deaktiveret, aktiver det ved at bruge {0}!",
|
||||
"nullInvalid":"Denne egenskab kan ikke være null!",
|
||||
"switchInvalidType":"Dette skal være en af følgende typer: {0}!",
|
||||
"objectSwitchInvalid":"Dette objekt skal være en af følgende typer: {0}!",
|
||||
|
||||
"invalidLanguage":"Dette er et ugyldigt sprog!",
|
||||
"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 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":{
|
||||
"buttons":{
|
||||
"create":"Opret Ticket",
|
||||
"close":"Luk Ticket",
|
||||
"delete":"Slet Ticket",
|
||||
"reopen":"Genåbn Ticket",
|
||||
"claim":"Tag Ticket",
|
||||
"unclaim":"Fraskriv Ticket",
|
||||
"pin":"Fastgør Ticket",
|
||||
"unpin":"Fjern Fastgørelse af Ticket",
|
||||
"clear":"Slet Tickets",
|
||||
"helpSwitchSlash":"Vis Slash Kommandoer",
|
||||
"helpSwitchText":"Vis Tekst Kommandoer",
|
||||
"helpPage":"Side {0}",
|
||||
"withReason":"Med Årsag",
|
||||
"withoutTranscript":"Uden Transkript",
|
||||
"blacklistAdd":"Blacklist Bruger",
|
||||
"blacklistRemove":"Frigiv Bruger"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Ticket Oprettet",
|
||||
"close":"Ticket Lukket",
|
||||
"delete":"Ticket Slettet",
|
||||
"reopen":"Ticket Genåbnet",
|
||||
"claim":"Ticket Taget",
|
||||
"unclaim":"Ticket Fraskrevet",
|
||||
"pin":"Ticket Fastgjort",
|
||||
"unpin":"Ticket Fjernet fra Fastgørelse",
|
||||
"rename":"Ticket Omdøbt",
|
||||
"move":"Ticket Flyttet",
|
||||
"add":"Bruger Tilføjet til Ticket",
|
||||
"remove":"Bruger Fjernet fra Ticket",
|
||||
|
||||
"help":"Tilgængelige Kommandoer",
|
||||
"statsReset":"Nulstil Statistik",
|
||||
"blacklistAdd":"Bruger Blacklistet",
|
||||
"blacklistRemove":"Bruger Fjernet fra Blacklist",
|
||||
"blacklistGet":"Blacklistet Bruger",
|
||||
"blacklistView":"Nuværende Blacklist",
|
||||
"blacklistAddDm":"Tilføjet til Blacklist",
|
||||
"blacklistRemoveDm":"Fjernet fra Blacklist",
|
||||
"clear":"Tickets Renset",
|
||||
"clearTickets":"Ryd Tickets",
|
||||
"roles":"Roller Opdateret",
|
||||
|
||||
"autoclose":"Ticket Autolukket",
|
||||
"autocloseEnabled":"Autolukning Aktiveret",
|
||||
"autocloseDisabled":"Autolukning Deaktiveret",
|
||||
"autodelete":"Ticket Autoslettet",
|
||||
"autodeleteEnabled":"Autosletning Aktiveret",
|
||||
"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!",
|
||||
"close":"ticket er blevet lukket succesfuldt!",
|
||||
"delete":"ticket er blevet slettet succesfuldt!",
|
||||
"reopen":"ticket er blevet genåbnet succesfuldt!",
|
||||
"claim":"ticket er blevet taget succesfuldt!",
|
||||
"unclaim":"ticket er blevet fraskrevet succesfuldt!",
|
||||
"pin":"ticket er blevet fastgjort succesfuldt!",
|
||||
"unpin":"ticket er blevet fjernet fra fastgørelse succesfuldt!",
|
||||
"rename":"ticket er blevet omdøbt til {0} succesfuldt!",
|
||||
"move":"ticket er blevet flyttet til {0} succesfuldt!",
|
||||
"add":"{0} er blevet tilføjet til ticketten succesfuldt!",
|
||||
"remove":"{0} er blevet fjernet fra ticketten succesfuldt!",
|
||||
|
||||
"helpExplanation":"`<name>` => påkrævet parameter\n`[name]` => valgfri parameter",
|
||||
"statsReset":"Bot-statistikken er blevet nulstillet succesfuldt!",
|
||||
"statsError":"Kan ikke vise ticketstatistik!\n{0} er ikke en ticket!",
|
||||
"blacklistAdd":"{0} er blevet blacklistet succesfuldt!",
|
||||
"blacklistRemove":"{0} er blevet frigivet succesfuldt!",
|
||||
"blacklistGetSuccess":"{0} er i øjeblikket blacklistet!",
|
||||
"blacklistGetEmpty":"{0} er i øjeblikket ikke blacklistet!",
|
||||
"blacklistViewEmpty":"Ingen har endnu været blacklistet!",
|
||||
"blacklistViewTip":"Brug \"/blacklist add\" for at blacklist en bruger!",
|
||||
"clearVerify":"Er du sikker på, at du vil slette flere tickets?\nDenne handling kan ikke fortrydes!",
|
||||
"clearReady":"{0} tickets er blevet slettet succesfuldt!",
|
||||
"rolesEmpty":"Ingen roller er blevet opdateret!",
|
||||
|
||||
"autocloseLeave":"Denne ticket er blevet autolukket, fordi skaberen forlod serveren!",
|
||||
"autocloseTimeout":"Denne ticket er blevet autolukket, fordi den har været inaktiv i mere end `{0}h`!",
|
||||
"autodeleteLeave":"Denne ticket er blevet autoslettet, fordi skaberen forlod serveren!",
|
||||
"autodeleteTimeout":"Denne ticket er blevet autoslettet, fordi den har været inaktiv i mere end `{0} dage`!",
|
||||
"autocloseEnabled":"Autolukning er blevet aktiveret i denne ticket!\nDen vil blive lukket, når den er inaktiv i mere end `{0}h`!",
|
||||
"autocloseDisabled":"Autolukning er blevet deaktiveret i denne ticket!\nDen vil ikke blive lukket automatisk længere!",
|
||||
"autodeleteEnabled":"Autosletning er blevet aktiveret i denne ticket!\nDen vil blive slettet, når den er inaktiv i mere end `{0} dage`!",
|
||||
"autodeleteDisabled":"Autosletning er blevet deaktiveret i denne ticket!\nDen vil ikke blive slettet automatisk længere!",
|
||||
|
||||
"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":"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?",
|
||||
"deletePlaceholder":"Hvorfor slettede du denne ticket?",
|
||||
"reopenPlaceholder":"Hvorfor genåbnede du denne ticket?",
|
||||
"claimPlaceholder":"Hvorfor tog du denne ticket?",
|
||||
"unclaimPlaceholder":"Hvorfor fraskrev du denne ticket?",
|
||||
"pinPlaceholder":"Hvorfor fastgjorde du denne ticket?",
|
||||
"unpinPlaceholder":"Hvorfor fjernede du fastgørelsen af denne ticket?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"En ny ticket er blevet oprettet af {0}!",
|
||||
"closeLog":"Denne ticket er blevet lukket af {0}!",
|
||||
"closeDm":"Din ticket er blevet lukket på vores server!",
|
||||
"deleteLog":"Denne ticket er blevet slettet af {0}!",
|
||||
"deleteDm":"Din ticket er blevet slettet på vores server!",
|
||||
"reopenLog":"Denne ticket er blevet genåbnet af {0}!",
|
||||
"reopenDm":"Din ticket er blevet genåbnet på vores server!",
|
||||
"claimLog":"Denne ticket er blevet taget af {0}!",
|
||||
"claimDm":"Din ticket er blevet taget på vores server!",
|
||||
"unclaimLog":"Denne ticket er blevet fraskrevet af {0}!",
|
||||
"unclaimDm":"Din ticket er blevet fraskrevet på vores server!",
|
||||
"pinLog":"Denne ticket er blevet fastgjort af {0}!",
|
||||
"pinDm":"Din ticket er blevet fastgjort på vores server!",
|
||||
"unpinLog":"Denne ticket er blevet fjernet fra fastgørelse af {0}!",
|
||||
"unpinDm":"Din ticket er blevet fjernet fra fastgørelse på vores server!",
|
||||
"renameLog":"Denne ticket er blevet omdøbt til {0} af {1}!",
|
||||
"renameDm":"Din ticket er blevet omdøbt til {0} på vores server!",
|
||||
"moveLog":"Denne ticket er blevet flyttet til {0} af {1}!",
|
||||
"moveDm":"Din ticket er blevet flyttet til {0} på vores server!",
|
||||
"addLog":"{0} er blevet tilføjet til denne ticket af {1}!",
|
||||
"addDm":"{0} er blevet tilføjet til din ticket på vores server!",
|
||||
"removeLog":"{0} er blevet fjernet fra denne ticket af {1}!",
|
||||
"removeDm":"{0} er blevet fjernet fra din ticket på vores server!",
|
||||
|
||||
"blacklistAddLog":"{0} er blevet blacklistet af {1}!",
|
||||
"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}!",
|
||||
|
||||
"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":{
|
||||
"success":{
|
||||
"visit":"Besøg Transkript",
|
||||
"ready":"Transkript Oprettet",
|
||||
"textFileDescription":"Dette er teksttranskriptet af en slettet billet!",
|
||||
"htmlProgress":"Vent venligst mens dette HTML-transkript bliver behandlet...",
|
||||
|
||||
"createdChannel":"Et nyt {0} transkript er blevet oprettet på serveren!",
|
||||
"createdCreator":"Et nyt {0} transkript er blevet oprettet for en af dine billetter!",
|
||||
"createdParticipant":"Et nyt {0} transkript er blevet oprettet i en af de billetter, du deltog i!",
|
||||
"createdActiveAdmin":"Et nyt {0} transkript er blevet oprettet i en af de billetter, hvor du deltog som administrator!",
|
||||
"createdEveryAdmin":"Et nyt {0} transkript er blevet oprettet i en af de billetter, hvor du var administrator!",
|
||||
"createdOther":"Et nyt {0} transkript er blevet oprettet!"
|
||||
},
|
||||
"errors":{
|
||||
"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.",
|
||||
"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":{
|
||||
"titles":{
|
||||
"internalError":"Intern fejl",
|
||||
"optionMissing":"Kommandoindstilling mangler",
|
||||
"optionInvalid":"Ugyldig kommandoindstilling",
|
||||
"unknownCommand":"Ukendt kommando",
|
||||
"noPermissions":"Ingen tilladelser",
|
||||
"unknownTicket":"Ukendt ticket",
|
||||
"deprecatedTicket":"Forældet ticket",
|
||||
"unknownOption":"Ukendt indstilling",
|
||||
"unknownPanel":"Ukendt panel",
|
||||
"notInGuild":"Ikke på server",
|
||||
"channelRename":"Kan ikke omdøbe kanalen",
|
||||
"channelCategory":"Kan Ikke Ændre Kategori",
|
||||
"busy":"Ticket er optaget",
|
||||
"permissionError":"Tilladelsesfejl"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Kontakt ejeren af denne bot for mere info!",
|
||||
"askForInfoResolve":"Kontakt ejeren af denne bot, hvis problemet ikke løses efter et par forsøg.",
|
||||
"internalError":"Kunne ikke svare på denne {0} på grund af en intern fejl!",
|
||||
"optionMissing":"Der mangler en påkrævet parameter i denne kommando!",
|
||||
"optionInvalid":"En parameter i denne kommando er ugyldig!",
|
||||
"optionInvalidChoose":"Vælg mellem",
|
||||
"unknownCommand":"Prøv at besøge hjælpe-menuen for mere info!",
|
||||
"noPermissions":"Du har ikke tilladelse til at bruge denne {0}!",
|
||||
"noPermissionsList":"Påkrævede tilladelser: (en af dem)",
|
||||
"noPermissionsCooldown":"Du har ikke tilladelse til at bruge denne {0}, fordi du har en nedkølingsperiode!",
|
||||
"noPermissionsBlacklist":"Du har ikke tilladelse til at bruge denne {0}, fordi du er blevet sortlistet!",
|
||||
"noPermissionsLimitGlobal":"Du har ikke tilladelse til at oprette en ticket, fordi serveren har nået det maksimale antal tickets!",
|
||||
"noPermissionsLimitGlobalUser":"Du har ikke tilladelse til at oprette en ticket, fordi du har nået det maksimale antal tickets!",
|
||||
"noPermissionsLimitOption":"Du har ikke tilladelse til at oprette en ticket, fordi serveren har nået det maksimale antal tickets for denne indstilling!",
|
||||
"noPermissionsLimitOptionUser":"Du har ikke tilladelse til at oprette en ticket, fordi du har nået det maksimale antal tickets for denne indstilling!",
|
||||
"unknownTicket":"Prøv denne kommando igen i en gyldig ticket!",
|
||||
"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!",
|
||||
"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!",
|
||||
"stringMinLength":"Værdien skal være mindst {0} tegn!",
|
||||
"stringMaxLength":"Værdien skal være højst {0} tegn!",
|
||||
"numberInvalid":"Ugyldigt tal!",
|
||||
"numberMin":"Tallet skal være mindst {0}!",
|
||||
"numberMax":"Tallet skal være højst {0}!",
|
||||
"numberDecimal":"Tallet må ikke være et decimaltal!",
|
||||
"numberNegative":"Tallet må ikke være negativt!",
|
||||
"numberPositive":"Tallet må ikke være positivt!",
|
||||
"numberZero":"Tallet må ikke være nul!",
|
||||
"channelNotFound":"Kan ikke finde kanalen!",
|
||||
"userNotFound":"Kan ikke finde brugeren!",
|
||||
"roleNotFound":"Kan ikke finde rollen!",
|
||||
"memberNotFound":"Kan ikke finde brugeren!",
|
||||
"mentionableNotFound":"Kan ikke finde brugeren eller rollen!",
|
||||
"channelType":"Ugyldig kanaltype!",
|
||||
"notInGuild":"Denne mulighed kræver, at du er på en server!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Du skal være udvikler af botten.",
|
||||
"owner":"Du skal være serverejer.",
|
||||
"admin":"Du skal være serveradministrator.",
|
||||
"moderator":"Du skal være moderator.",
|
||||
"support":"Du skal være en del af supportteamet.",
|
||||
"member":"Du skal være medlem.",
|
||||
"discord-administrator":"Du skal have `ADMINISTRATOR` tilladelsen."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"Ticket er allerede lukket!",
|
||||
"reopen":"Ticket er ikke lukket endnu!",
|
||||
"claim":"Ticket er allerede gjort krav på!",
|
||||
"unclaim":"Ticket er ikke gjort krav på endnu!",
|
||||
"pin":"Ticket er allerede fastgjort!",
|
||||
"unpin":"Ticket er ikke fastgjort endnu!",
|
||||
"add":"Denne bruger har allerede adgang til ticketen!",
|
||||
"remove":"Kan ikke fjerne denne bruger fra ticketen!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickets",
|
||||
"reason":"Årsag",
|
||||
"creator":"Skaber",
|
||||
"remaining":"Tid tilbage",
|
||||
"added":"Tilføjet",
|
||||
"removed":"Fjernet",
|
||||
"filter":"Filter",
|
||||
"method":"Metode",
|
||||
"type":"Type",
|
||||
"blacklisted":"Sortlistet",
|
||||
"panel":"Panel",
|
||||
"command":"Kommando",
|
||||
"system":"System",
|
||||
"true":"Sand",
|
||||
"false":"Falsk",
|
||||
"syntax":"Syntaks",
|
||||
"originalName":"Originalt navn",
|
||||
"newName":"Nyt navn",
|
||||
"originalCategory":"Original Kategori",
|
||||
"newCategory":"Ny Kategori",
|
||||
"until":"Indtil",
|
||||
"validOptions":"Gyldige indstillinger",
|
||||
"validPanels":"Gyldige paneler",
|
||||
"autoclose":"Auto-lukning",
|
||||
"autodelete":"Auto-sletning",
|
||||
"startupDate":"Startdato",
|
||||
"version":"Version",
|
||||
"name":"Navn",
|
||||
"role":"Rolle",
|
||||
"status":"STATUS",
|
||||
"claimed":"Gjort krav på",
|
||||
"pinned":"Fastgjort",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"kommando",
|
||||
"modal":"modal",
|
||||
"button":"knap",
|
||||
"dropdown":"dropdown",
|
||||
"method":"metode"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Angiv en valgfri årsag, der vil være synlig i loggene.",
|
||||
"help":"Få en liste over alle tilgængelige kommandoer.",
|
||||
"panel":"Opret en besked med en dropdown eller knapper (til ticket-oprettelse).",
|
||||
"panelId":"Identifikatoren for panelet, som du vil oprette.",
|
||||
"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.",
|
||||
"reopen":"Genåbn en ticket.",
|
||||
"claim":"Gør krav på en ticket.",
|
||||
"claimUser":"Gør krav på denne ticket til en anden bruger i stedet for dig selv.",
|
||||
"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.",
|
||||
"renameName":"Det nye navn for denne ticket.",
|
||||
"add":"Tilføj en bruger til en ticket.",
|
||||
"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.",
|
||||
"blacklistRemove":"Fjern en bruger fra blacklisten.",
|
||||
"blacklistGet":"Få detaljer fra en sortlistet bruger.",
|
||||
"blacklistGetUser":"Brugeren at få detaljer fra.",
|
||||
"stats":"Se statistik fra botten, en bruger eller en ticket.",
|
||||
"statsReset":"Nulstil al statistik for botten (og start tælling fra nul).",
|
||||
"statsGlobal":"Se de globale statistikker.",
|
||||
"statsUser":"Se statistik fra en bruger på serveren.",
|
||||
"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":{
|
||||
"all":"Alle",
|
||||
"open":"Åbne",
|
||||
"close":"Lukkede",
|
||||
"claim":"Gjort krav på",
|
||||
"unclaim":"Ikke gjort krav på",
|
||||
"pin":"Fastgjort",
|
||||
"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.",
|
||||
"autocloseEnableTime":"Antal timer, denne ticket skal være inaktiv for at lukke den.",
|
||||
"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.",
|
||||
|
||||
"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.",
|
||||
"ticket":"Opret en ticket med det samme.",
|
||||
"close":"Luk en ticket, dette deaktiverer skrivning i denne kanal.",
|
||||
"delete":"Slet en ticket, dette opretter et transkript, når det er aktiveret.",
|
||||
"reopen":"Genåbn en ticket, dette aktiverer skrivning i denne kanal igen.",
|
||||
"pin":"Fastgør en ticket. Dette vil flytte ticketen til toppen og tilføje en '📌' emoji til navnet.",
|
||||
"unpin":"Frigør en ticket. Ticketen forbliver på sin position, men mister '📌' emoji.",
|
||||
"move":"Flyt en ticket. Dette vil ændre typen af denne ticket.",
|
||||
"rename":"Omdøb en ticket. Dette vil ændre kanalnavnet på denne ticket.",
|
||||
"claim":"Gør krav på en ticket. Med dette kan du lade dit team vide, at du håndterer denne ticket.",
|
||||
"unclaim":"Afstå fra krav på en ticket. Med dette kan du lade dit team vide, at denne ticket er fri igen.",
|
||||
"add":"Tilføj en bruger til en ticket. Dette vil give brugeren mulighed for at læse og skrive i denne ticket.",
|
||||
"remove":"Fjern en bruger fra en ticket. Dette vil fjerne muligheden for at læse og skrive for en bruger i denne ticket.",
|
||||
"panel":"Opret en besked med en dropdown eller knapper (til ticket-oprettelse).",
|
||||
"blacklistView":"Se en liste over den nuværende blacklist.",
|
||||
"blacklistAdd":"Tilføj en bruger til blacklisten.",
|
||||
"blacklistRemove":"Fjern en bruger fra blacklisten.",
|
||||
"blacklistGet":"Få detaljerne fra en sortlistet bruger.",
|
||||
"statsGlobal":"Se de globale statistikker.",
|
||||
"statsTicket":"Se statistikken for en ticket på serveren.",
|
||||
"statsUser":"Se statistikken fra en bruger på serveren.",
|
||||
"statsReset":"Nulstil al statistik for botten (og start tælling fra nul).",
|
||||
"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.",
|
||||
"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":{
|
||||
"global":"Globale Statistikker",
|
||||
"system":"Systemstatistikker",
|
||||
"user":"Brugerstatistikker",
|
||||
"ticket":"Ticketstatistikker",
|
||||
"participants":"Deltagere",
|
||||
"messages":"Beskeder"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Oprettede Tickets",
|
||||
"ticketsClosed":"Lukkede Tickets",
|
||||
"ticketsDeleted":"Slettede Tickets",
|
||||
"ticketsReopened":"Genåbnede Tickets",
|
||||
"ticketsAutoclosed":"Auto-lukkede Tickets",
|
||||
"ticketsClaimed":"Gjorte krav på Tickets",
|
||||
"ticketsPinned":"Fastgjorte Tickets",
|
||||
"ticketsMoved":"Flyttede Tickets",
|
||||
"usersBlacklisted":"Sortlistede Brugere",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["DJj123dj"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Dutch",
|
||||
"automated":false
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[ERROR]",
|
||||
"headerOpenTicket":"OPEN TICKET",
|
||||
"typeWarning":"[WAARSCHUWING]",
|
||||
"typeInfo":"[INFO]",
|
||||
"headerConfigChecker":"CONFIG CHECKER",
|
||||
"headerDescription":"check voor errors in je config bestanden!",
|
||||
"footerError":"de bot start niet tot alle {0}'s opgelost zijn!",
|
||||
"footerWarning":"het is aangeraden om alle {0}'en op te lossen voor het starten!",
|
||||
"footerSupport":"SUPPORT: {0} - DOCS: {1}",
|
||||
"compactInformation":"gebruik {0} voor meer informatie!",
|
||||
"dataPath":"pad",
|
||||
"dataDocs":"docs",
|
||||
"dataMessages":"bericht"
|
||||
},
|
||||
"messages":{
|
||||
"stringTooShort":"Deze tekst kan niet korter dan {0} karakters zijn!",
|
||||
"stringTooLong":"Deze tekst kan niet langer dan {0} karakters zijn!",
|
||||
"stringLengthInvalid":"Deze tekst moet {0} karakters lang zijn!",
|
||||
"stringStartsWith":"Deze tekst moet starten met {0}!",
|
||||
"stringEndsWith":"Deze tekst moet eindigen met {0}!",
|
||||
"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!",
|
||||
"numberLengthInvalid":"Dit nummer moet {0} karakters lang zijn!",
|
||||
"numberTooSmall":"Dit nummer moet minimum {0} zijn!",
|
||||
"numberTooLarge":"Dit nummer kan maximum {0} zijn!",
|
||||
"numberNotEqual":"Dit nummer moet gelijk zijn aan {0}!",
|
||||
"numberStep":"Dit nummer moet een meervoud zijn van {0}!",
|
||||
"numberStepOffset":"Dit nummer moet een meervoud zijn van {0} startend bij {1}!",
|
||||
"numberStartsWith":"Dit nummer moet starten met {0}!",
|
||||
"numberEndsWith":"Dit nummer moet eindigen met {0}!",
|
||||
"numberContains":"Dit nummer moet {0} bevatten!",
|
||||
"numberChoices":"Dit nummer kan alleen een van de volgende waardes bevatten: {0}!",
|
||||
"numberFloat":"Dit nummer kan geen kommagetal zijn!",
|
||||
"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!",
|
||||
|
||||
"arrayEmptyDisabled":"Deze array mag niet leeg zijn!",
|
||||
"arrayEmptyRequired":"Deze array moet leeg zijn!",
|
||||
"arrayTooShort":"Deze array moet een minimum lengte hebben van {0}!",
|
||||
"arrayTooLong":"Deze array mag niet langer zijn dan {0}!",
|
||||
"arrayLengthInvalid":"Deze array moet een lengte hebben van {0}!",
|
||||
"arrayInvalidTypes":"Deze array kan alleen de volgende waardes bevatten: {0}!",
|
||||
"arrayDouble":"Deze array staat dubbele waardes niet toe!",
|
||||
|
||||
"discordInvalidId":"Dit is een ongeldig discord {0} id!",
|
||||
"discordInvalidIdOptions":"Dit is an ongeldig discord {0} id! Je kan ook een van deze gebruiken: {1}!",
|
||||
"discordInvalidToken":"Dit is een ongeldig discord token (syntactisch)!",
|
||||
"colorInvalid":"Dit is een ongeldig hex kleur!",
|
||||
"emojiTooShort":"Deze tekst moet minimum {0} emoji's hebben!",
|
||||
"emojiTooLong":"Deze tekst mag maximum {0} emoji's hebben!",
|
||||
"emojiCustom":"Deze emoji kan geen custom discord emoji zijn!",
|
||||
"emojiInvalid":"Dit is een ongeldige emoji!",
|
||||
"urlInvalid":"Deze url is ongeldig!",
|
||||
"urlInvalidHttp":"Deze url kan alleen het https:// protocol gebruiken!",
|
||||
"urlInvalidProtocol":"Deze url kan alleen de http:// & https:// protocolen gebruiken!",
|
||||
"urlInvalidHostname":"Deze url heeft een verboden hostnaam (domein)!",
|
||||
"urlInvalidExtension":"Deze url heeft een ongeldige extensie! Kies tussen: {0}!",
|
||||
"urlInvalidPath":"Deze url heeft een ongeldig pad!",
|
||||
"idNotUnique":"Dit id is niet uniek, gebruik een andere in de plaats!",
|
||||
"idNonExistent":"Het id {0} bestaat niet!",
|
||||
|
||||
"invalidType":"Het type van deze property moet gelijk zijn aan: {0}!",
|
||||
"propertyMissing":"De property {0} mist in dit object!",
|
||||
"propertyOptional":"De property {0} is optioneel in dit object!",
|
||||
"objectDisabled":"Dit object is uitgeschakeld, gebruik het met behulp van {0}!",
|
||||
"nullInvalid":"Deze property kan niet null zijn!",
|
||||
"switchInvalidType":"Dit moet een van de volgende types zijn: {0}!",
|
||||
"objectSwitchInvalid":"Dit object moet een van de volgende types zijn: {0}!",
|
||||
|
||||
"invalidLanguage":"Dit is een ongeldige taal!",
|
||||
"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 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":{
|
||||
"buttons":{
|
||||
"create":"Bekijk Ticket",
|
||||
"close":"Sluit Ticket",
|
||||
"delete":"Verwijder Ticket",
|
||||
"reopen":"Heropen Ticket",
|
||||
"claim":"Claim Ticket",
|
||||
"unclaim":"Ontclaim Ticket",
|
||||
"pin":"Pin Ticket",
|
||||
"unpin":"Maak Ticket Los",
|
||||
"clear":"Verwijder Tickets",
|
||||
"helpSwitchSlash":"Bekijk Slash Commands",
|
||||
"helpSwitchText":"Bekijk Text Commands",
|
||||
"helpPage":"Pagina {0}",
|
||||
"withReason":"Met Reden",
|
||||
"withoutTranscript":"Zonder Transcript",
|
||||
"blacklistAdd":"Gebruiker Blacklisten",
|
||||
"blacklistRemove":"Gebruiker Vrijgeven"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Ticket Gecreëerd",
|
||||
"close":"Ticket Gesloten",
|
||||
"delete":"Ticket Verwijderd",
|
||||
"reopen":"Ticket Heropend",
|
||||
"claim":"Ticket Geclaimd",
|
||||
"unclaim":"Ticket Ontclaimd",
|
||||
"pin":"Ticket Gepind",
|
||||
"unpin":"Ticket Losgemaakt",
|
||||
"rename":"Ticket Hernoemd",
|
||||
"move":"Ticket Verplaatst",
|
||||
"add":"Ticket Gebruiker Toegevoegd",
|
||||
"remove":"Ticket Gebruiker Verwijderd",
|
||||
|
||||
"help":"Beschikbare Commands",
|
||||
"statsReset":"Reset Stats",
|
||||
"blacklistAdd":"Gebruiker Geblacklisted",
|
||||
"blacklistRemove":"Gebruiker Vrijgelaten",
|
||||
"blacklistGet":"Geblackliste Gebruiker",
|
||||
"blacklistView":"Huidige Blacklist",
|
||||
"blacklistAddDm":"Toegevoegd Aan Blacklist",
|
||||
"blacklistRemoveDm":"Verwijderd Van Blacklist",
|
||||
"clear":"Tickets Opgeruimd",
|
||||
"clearTickets":"Tickets Opruimen",
|
||||
"roles":"Rollen Bijgewerkt",
|
||||
|
||||
"autoclose":"Ticket Automatisch Gesloten",
|
||||
"autocloseEnabled":"Autoclose Ingeschakeld",
|
||||
"autocloseDisabled":"Autoclose Uitgeschakeld",
|
||||
"autodelete":"Ticket Automatisch Verwijderd",
|
||||
"autodeleteEnabled":"Autodelete Ingeschakeld",
|
||||
"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!",
|
||||
"close":"Het ticket is succesvol gesloten!",
|
||||
"delete":"Het ticket is succesvol verwijderd!",
|
||||
"reopen":"Het ticket is succesvol heropend!",
|
||||
"claim":"Het ticket is succesvol geclaimd!",
|
||||
"unclaim":"Het ticket is succesvol ontclaimd!",
|
||||
"pin":"Het ticket is succesvol gepind!",
|
||||
"unpin":"Het ticket is succesvol losgemaakt!",
|
||||
"rename":"Het ticket is succesvol hernoemd naar {0}!",
|
||||
"move":"Het ticket is succesvol verplaatst naar {0}!",
|
||||
"add":"{0} is succesvol toegevoegd aan het ticket!",
|
||||
"remove":"{0} is succesvol verwijderd van het ticket!",
|
||||
|
||||
"helpExplanation":"`<naam>` => verplichte parameter\n`[naam]` => optionele parameter",
|
||||
"statsReset":"De bot stats zijn succesvol gereset!",
|
||||
"statsError":"Kan ticket stats niet bekijken!\n{0} is geen ticket!",
|
||||
"blacklistAdd":"{0} is succesvol geblacklist!",
|
||||
"blacklistRemove":"{0} is succesvol vrijgelaten!",
|
||||
"blacklistGetSuccess":"{0} is op dit moment geblacklist!",
|
||||
"blacklistGetEmpty":"{0} is op dit moment niet geblacklist!",
|
||||
"blacklistViewEmpty":"Nog niemand is geblacklist!",
|
||||
"blacklistViewTip":"Gebruik \"/blacklist add\" om een gebruiker te blacklisten!",
|
||||
"clearVerify":"Weet je zeker dat je meerdere tickets wilt verwijderen? Deze actie kan niet teruggedraaid worden!",
|
||||
"clearReady":"{0} tickets zijn succesvol verwijderd!",
|
||||
"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 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 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 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":"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?",
|
||||
"deletePlaceholder":"Waarom heb je dit ticket verwijderd?",
|
||||
"reopenPlaceholder":"Waarom heb je dit ticket heropend?",
|
||||
"claimPlaceholder":"Waarom heb je dit ticket geclaimd?",
|
||||
"unclaimPlaceholder":"Waarom heb je dit ticket ontclaimd?",
|
||||
"pinPlaceholder":"Waarom heb je dit ticket gepind?",
|
||||
"unpinPlaceholder":"Waarom heb je dit ticket losgemaakt?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"Een nieuw ticket is aangemaakt door {0}!",
|
||||
"closeLog":"Dit ticket is gesloten door {0}!",
|
||||
"closeDm":"Jouw ticket is gesloten in onze server!",
|
||||
"deleteLog":"Dit ticket is verwijderd door {0}!",
|
||||
"deleteDm":"Jouw ticket is verwijderd in onze server!",
|
||||
"reopenLog":"Dit ticket is heropend door {0}!",
|
||||
"reopenDm":"Jouw ticket is heropend in onze server!",
|
||||
"claimLog":"Dit ticket is geclaimd door {0}!",
|
||||
"claimDm":"Jouw ticket is geclaimd in onze server!",
|
||||
"unclaimLog":"Dit ticket is ontclaimd door {0}!",
|
||||
"unclaimDm":"Jouw ticket is ontclaimd in onze server!",
|
||||
"pinLog":"Dit ticket is gepind door {0}!",
|
||||
"pinDm":"Jouw ticket is gepind in onze server!",
|
||||
"unpinLog":"Dit ticket is losgemaakt door {0}!",
|
||||
"unpinDm":"Jouw ticket is losgemaakt in onze server!",
|
||||
"renameLog":"Dit ticket is hernoemd naar {0} door {1}!",
|
||||
"renameDm":"Jouw ticket is hernoemd naar {0} in onze server!",
|
||||
"moveLog":"Dit ticket is verplaatst naar {0} door {1}!",
|
||||
"moveDm":"Jouw ticket is verplaatst naar {0} in onze server!",
|
||||
"addLog":"{0} is toegevoegd aan dit ticket door {1}!",
|
||||
"addDm":"{0} is toegevoegd aan jouw ticket in onze server!",
|
||||
"removeLog":"{0} is verwijderd van dit ticket door {1}!",
|
||||
"removeDm":"{0} is verwijderd van jouw ticket in onze server!",
|
||||
|
||||
"blacklistAddLog":"{0} is geblacklist door {1}!",
|
||||
"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}!",
|
||||
|
||||
"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":{
|
||||
"success":{
|
||||
"visit":"Bekijk Transcript",
|
||||
"ready":"Transcript Aangemaakt",
|
||||
"textFileDescription":"Dit is een tekst transcript van een verwijderd ticket!",
|
||||
"htmlProgress":"Gelieve te wachten terwijl dit html transcript verwerkt wordt...",
|
||||
|
||||
"createdChannel":"Een nieuw {0} transcript is aangemaakt in de server!",
|
||||
"createdCreator":"Een nieuw {0} transcript is aangemaakt voor een van jouw tickets!",
|
||||
"createdParticipant":"Een nieuw {0} transcript is aangemaakt in een van de tickets waar jij lid van was!",
|
||||
"createdActiveAdmin":"Een nieuw {0} transcript is aangemaakt in een van de tickets waar jij een actieve admin was!",
|
||||
"createdEveryAdmin":"Een nieuw {0} transcript is aangemaakt in een van de tickets waar jij admin was!",
|
||||
"createdOther":"Een nieuw {0} transcript is aangemaakt!"
|
||||
},
|
||||
"errors":{
|
||||
"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.",
|
||||
"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":{
|
||||
"titles":{
|
||||
"internalError":"Interne Error",
|
||||
"optionMissing":"Missende Command Optie",
|
||||
"optionInvalid":"Onjuiste Command Optie",
|
||||
"unknownCommand":"Onbekende Command",
|
||||
"noPermissions":"Geen Permissies",
|
||||
"unknownTicket":"Onbekend Ticket",
|
||||
"deprecatedTicket":"Verouderd Ticket",
|
||||
"unknownOption":"Onbekende Optie",
|
||||
"unknownPanel":"Onbekend Paneel",
|
||||
"notInGuild":"Niet In Server",
|
||||
"channelRename":"Kan Kanaal Niet Hernoemen",
|
||||
"channelCategory":"Kan Categorie Niet Wijzigen",
|
||||
"busy":"Ticket Is Bezig",
|
||||
"permissionError":"Permission Error"
|
||||
},
|
||||
"descriptions":{
|
||||
"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!",
|
||||
"optionInvalid":"Een parameter in deze command is ongeldig!",
|
||||
"optionInvalidChoose":"Kies tussen",
|
||||
"unknownCommand":"Probeer het help menu te bekijken voor meer info!",
|
||||
"noPermissions":"Je bent niet toegestaan om deze {0} te gebruiken!",
|
||||
"noPermissionsList":"Benodigde Permissies: (één van deze)",
|
||||
"noPermissionsCooldown":"Je bent niet toegestaan om deze {0} te gebruiken omdat je een cooldown hebt!",
|
||||
"noPermissionsBlacklist":"Je bent niet toegestaan om deze {0} te gebruiken omdat je geblacklist bent!",
|
||||
"noPermissionsLimitGlobal":"Je bent niet toegestaan om een ticket aan te maken omdat de server het maximum tickets limiet heeft bereikt!",
|
||||
"noPermissionsLimitGlobalUser":"Je bent niet toegestaan om een ticket aan te maken omdat je het maximum tickets limiet hebt bereikt!",
|
||||
"noPermissionsLimitOption":"Je bent niet toegestaan om een ticket aan te maken omdat de server het maximum tickets limiet van deze optie heeft bereikt!",
|
||||
"noPermissionsLimitOptionUser":"Je bent niet toegestaan om een ticket aan te maken omdat je het maximum tickets limiet van deze optie hebt bereikt!",
|
||||
"unknownTicket":"Probeer deze command opnieuw in een geldig ticket!",
|
||||
"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!",
|
||||
"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!",
|
||||
"stringMinLength":"Waarde moet minstens {0} karakters hebben!",
|
||||
"stringMaxLength":"Waarde moet maximum {0} karakters hebben!",
|
||||
"numberInvalid":"Ongeldig nummer!",
|
||||
"numberMin":"Nummer moet minstens {0} zijn!",
|
||||
"numberMax":"Nummer moet maximum {0} zijn!",
|
||||
"numberDecimal":"Nummer kan geen kommagetal zijn!",
|
||||
"numberNegative":"Nummer mag niet negatief zijn!",
|
||||
"numberPositive":"Nummer mag niet positief zijn!",
|
||||
"numberZero":"Nummer mag niet nul zijn!",
|
||||
"channelNotFound":"Kan kanaal niet vinden!",
|
||||
"userNotFound":"Kan gebruiker niet vinden!",
|
||||
"roleNotFound":"Kan rol niet vinden!",
|
||||
"memberNotFound":"Kan gebruiker niet vinden!",
|
||||
"mentionableNotFound":"Kan gebruiker of rol niet vinden!",
|
||||
"channelType":"Ongeldig kanaal type!",
|
||||
"notInGuild":"Voor deze optie moet je in een server zitten!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Je moet de ontwikkelaar van de bot zijn.",
|
||||
"owner":"Je moet de server eigenaar zijn.",
|
||||
"admin":"Je moet een server admin zijn.",
|
||||
"moderator":"Je moet een server moderator zijn.",
|
||||
"support":"Je moet in het support team zitten.",
|
||||
"member":"Je moet een member van de server zijn.",
|
||||
"discord-administrator":"Je hebt de `ADMINISTRATOR` permissie nodig."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"Ticket is al gesloten!",
|
||||
"reopen":"Ticket is nog niet gesloten!",
|
||||
"claim":"Ticket is al geclaimd!",
|
||||
"unclaim":"Ticket nog niet geclaimd!",
|
||||
"pin":"Ticket is al gepind!",
|
||||
"unpin":"Ticket nog niet gepind!",
|
||||
"add":"Deze gebruiker heeft al toegang tot dit ticket!",
|
||||
"remove":"Deze gebruiker kan niet verwijderd worden van dit ticket!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickets",
|
||||
"reason":"Reden",
|
||||
"creator":"Maker",
|
||||
"remaining":"Resterende Tijd",
|
||||
"added":"Toegevoegd",
|
||||
"removed":"Verwijderd",
|
||||
"filter":"Filter",
|
||||
"method":"Methode",
|
||||
"type":"Type",
|
||||
"blacklisted":"Geblacklist",
|
||||
"panel":"Paneel",
|
||||
"command":"Command",
|
||||
"system":"Systeem",
|
||||
"true":"Waar",
|
||||
"false":"Onwaar",
|
||||
"syntax":"Syntax",
|
||||
"originalName":"Originele Naam",
|
||||
"newName":"Nieuwe Naam",
|
||||
"originalCategory":"Originele Categorie",
|
||||
"newCategory":"Nieuwe Categorie",
|
||||
"until":"Tot",
|
||||
"validOptions":"Geldige Opties",
|
||||
"validPanels":"Geldige Panelen",
|
||||
"autoclose":"Autoclose",
|
||||
"autodelete":"Autodelete",
|
||||
"startupDate":"Opstart Datum",
|
||||
"version":"Versie",
|
||||
"name":"Naam",
|
||||
"role":"Rol",
|
||||
"status":"Status",
|
||||
"claimed":"Geclaimd",
|
||||
"pinned":"Gepind",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"command",
|
||||
"modal":"form",
|
||||
"button":"knop",
|
||||
"dropdown":"dropdown",
|
||||
"method":"methode"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Specifieer een optionele reden die zichtbaar is in de logs.",
|
||||
"help":"Verkrijg een lijst met alle beschikbare commands.",
|
||||
"panel":"Spawn een bericht met een dropdown of knoppen (voor ticket creatie).",
|
||||
"panelId":"Het id van het paneel dat je wilt spawnen.",
|
||||
"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.",
|
||||
"reopen":"Heropen een ticket, dit schakelt schrijven in het kanaal terug aan.",
|
||||
"claim":"Claim een ticket.",
|
||||
"claimUser":"Claim dit ticket voor iemand anders.",
|
||||
"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.",
|
||||
"renameName":"De nieuwe naam voor dit ticket.",
|
||||
"add":"Voeg een gebruiker toe aan dit ticket.",
|
||||
"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.",
|
||||
"blacklistRemove":"Verwijder een gebruiker van de blacklist.",
|
||||
"blacklistGet":"Verkrijg de details van een geblackliste gebruiker.",
|
||||
"blacklistGetUser":"De gebruiker om details van te verkrijgen.",
|
||||
"stats":"Bekijk statistieken van de bot, een gebruiker of ticket.",
|
||||
"statsReset":"Reset alle stats van de bot (en begin terug bij nul).",
|
||||
"statsGlobal":"Bekijk de globale stats.",
|
||||
"statsUser":"Bekijk de stats van een gebruiker in de server.",
|
||||
"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":{
|
||||
"all":"Allemaal",
|
||||
"open":"Open (niet gesloten)",
|
||||
"close":"Gesloten",
|
||||
"claim":"Geclaimd",
|
||||
"unclaim":"Ontclaimd (niet geclaimd)",
|
||||
"pin":"Gepind",
|
||||
"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.",
|
||||
"autocloseEnableTime":"De hoeveelheid uren dat dit ticket inactief moet zijn voor het te sluiten.",
|
||||
"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.",
|
||||
|
||||
"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.",
|
||||
"ticket":"Maak een instant ticket.",
|
||||
"close":"Sluit een ticket, dit schakelt schrijven in het kanaal uit.",
|
||||
"delete":"Verwijder een ticket, dit maakt een transcript wanneer ingeschakeld.",
|
||||
"reopen":"Heropen een ticket, dit schakeld schrijven in het kanaal terug aan.",
|
||||
"pin":"Pin een ticket. Dit verplaatst het ticket naar boven & voegt een '📌' emoij toe.",
|
||||
"unpin":"Maak een ticket los. Het ticket zal blijven staan, maar de '📌' emoij verliezen.",
|
||||
"move":"Verplaats een ticket. Dit verandert het soort van dit ticket.",
|
||||
"rename":"Hernoem een ticket. Dit zal de kanaalnaam veranderen.",
|
||||
"claim":"Claim een ticket. Hiermee kan je laten weten dat je bezig bent met dit ticket.",
|
||||
"unclaim":"Ontclaim een ticket. Hiermee kan je laten weten dat het ticket terug vrij is.",
|
||||
"add":"Voeg een user toe aan een ticket.",
|
||||
"remove":"Verwijder een user van een ticket.",
|
||||
"panel":"Spawn een bericht met dropdown of knoppen.",
|
||||
"blacklistView":"Bekijk een lijst van de huidige blacklist.",
|
||||
"blacklistAdd":"Voeg een user toe aan de blacklist.",
|
||||
"blacklistRemove":"Verwijder een user van de blacklist.",
|
||||
"blacklistGet":"Verkrijg de details van een geblacklisted user.",
|
||||
"statsGlobal":"Bekijk de globale stats.",
|
||||
"statsTicket":"Bekijk de stats van een ticket in de server.",
|
||||
"statsUser":"Bekijk de stats van een user in de server.",
|
||||
"statsReset":"Reset alle stats van de bot (en begin terug vanaf 0).",
|
||||
"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.",
|
||||
"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":{
|
||||
"global":"Globale Stats",
|
||||
"system":"Systeem Stats",
|
||||
"user":"User Stats",
|
||||
"ticket":"Ticket Stats",
|
||||
"participants":"Deelnemers",
|
||||
"messages":"Berichten"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets Aangemaakt",
|
||||
"ticketsClosed":"Tickets Gesloten",
|
||||
"ticketsDeleted":"Tickets Verwijderd",
|
||||
"ticketsReopened":"Tickets Heropend",
|
||||
"ticketsAutoclosed":"Tickets Autoclosed",
|
||||
"ticketsClaimed":"Tickets Geclaimd",
|
||||
"ticketsPinned":"Tickets Gepind",
|
||||
"ticketsMoved":"Tickets Verplaatst",
|
||||
"usersBlacklisted":"Users Geblacklist",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["DJj123dj"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"English",
|
||||
"automated":false
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[ERROR]",
|
||||
"headerOpenTicket":"OPEN TICKET",
|
||||
"typeWarning":"[WARNING]",
|
||||
"typeInfo":"[INFO]",
|
||||
"headerConfigChecker":"CONFIG CHECKER",
|
||||
"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 a detailed config report.",
|
||||
"dataPath":"path",
|
||||
"dataDocs":"docs",
|
||||
"dataMessages":"message"
|
||||
},
|
||||
"messages":{
|
||||
"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":"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":"Boolean must be false",
|
||||
"booleanFalse":"Boolean must be true",
|
||||
|
||||
"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":"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":"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":"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":{
|
||||
"buttons":{
|
||||
"create":"Visit Ticket",
|
||||
"close":"Close Ticket",
|
||||
"delete":"Delete Ticket",
|
||||
"reopen":"Reopen Ticket",
|
||||
"claim":"Claim Ticket",
|
||||
"unclaim":"Unclaim Ticket",
|
||||
"pin":"Pin Ticket",
|
||||
"unpin":"Unpin Ticket",
|
||||
"clear":"Delete Tickets",
|
||||
"helpSwitchSlash":"View Slash Commands",
|
||||
"helpSwitchText":"View Text Commands",
|
||||
"helpPage":"Page {0}",
|
||||
"withReason":"With Reason",
|
||||
"withoutTranscript":"Without Transcript",
|
||||
"blacklistAdd":"Blacklist User",
|
||||
"blacklistRemove":"Release User"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Ticket Created",
|
||||
"close":"Ticket Closed",
|
||||
"delete":"Ticket Deleted",
|
||||
"reopen":"Ticket Reopened",
|
||||
"claim":"Ticket Claimed",
|
||||
"unclaim":"Ticket Unclaimed",
|
||||
"pin":"Ticket Pinned",
|
||||
"unpin":"Ticket Unpinned",
|
||||
"rename":"Ticket Renamed",
|
||||
"move":"Ticket Moved",
|
||||
"add":"Ticket User Added",
|
||||
"remove":"Ticket User Removed",
|
||||
|
||||
"help":"Available Commands",
|
||||
"statsReset":"Reset Stats",
|
||||
"blacklistAdd":"User Blacklisted",
|
||||
"blacklistRemove":"User Released",
|
||||
"blacklistGet":"Blacklisted User",
|
||||
"blacklistView":"Current Blacklist",
|
||||
"blacklistAddDm":"Added To Blacklist",
|
||||
"blacklistRemoveDm":"Removed From Blacklist",
|
||||
"clear":"Tickets Cleared",
|
||||
"clearTickets":"Clear Tickets",
|
||||
"roles":"Roles Updated",
|
||||
|
||||
"autoclose":"Ticket Autoclosed",
|
||||
"autocloseEnabled":"Autoclose Enabled",
|
||||
"autocloseDisabled":"Autoclose Disabled",
|
||||
"autodelete":"Ticket Autodeleted",
|
||||
"autodeleteEnabled":"Autodelete Enabled",
|
||||
"autodeleteDisabled":"Autodelete Disabled",
|
||||
|
||||
"topicSet":"Topic Changed",
|
||||
"prioritySet":"Priority Changed",
|
||||
"priorityGet":"Ticket Priority",
|
||||
"transfer":"Ticket Transferred",
|
||||
"transcripts":"Transcript History"
|
||||
},
|
||||
"descriptions":{
|
||||
"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 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 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 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 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.",
|
||||
"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} 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 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 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 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":{
|
||||
"titles":{
|
||||
"internalError":"Internal Error",
|
||||
"optionMissing":"Command Option Missing",
|
||||
"optionInvalid":"Command Option Invalid",
|
||||
"unknownCommand":"Unknown Command",
|
||||
"noPermissions":"No Permissions",
|
||||
"unknownTicket":"Unknown Ticket",
|
||||
"deprecatedTicket":"Deprecated Ticket",
|
||||
"unknownOption":"Unknown Option",
|
||||
"unknownPanel":"Unknown Panel",
|
||||
"notInGuild":"Not In Server",
|
||||
"channelRename":"Unable To Rename Channel",
|
||||
"channelCategory":"Unable To Change Category",
|
||||
"busy":"Ticket Is Busy",
|
||||
"permissionError":"Permission Error"
|
||||
},
|
||||
"descriptions":{
|
||||
"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":"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":"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":"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":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickets",
|
||||
"reason":"Reason",
|
||||
"creator":"Creator",
|
||||
"remaining":"Time Remaining",
|
||||
"added":"Added",
|
||||
"removed":"Removed",
|
||||
"filter":"Filter",
|
||||
"method":"Method",
|
||||
"type":"Type",
|
||||
"blacklisted":"Blacklisted",
|
||||
"panel":"Panel",
|
||||
"command":"Command",
|
||||
"system":"System",
|
||||
"true":"True",
|
||||
"false":"False",
|
||||
"syntax":"Syntax",
|
||||
"originalName":"Original Name",
|
||||
"newName":"New Name",
|
||||
"originalCategory":"Original Category",
|
||||
"newCategory":"New Category",
|
||||
"until":"Until",
|
||||
"validOptions":"Valid Options",
|
||||
"validPanels":"Valid Panels",
|
||||
"autoclose":"Autoclose",
|
||||
"autodelete":"Autodelete",
|
||||
"startupDate":"Startup Date",
|
||||
"version":"Version",
|
||||
"name":"Name",
|
||||
"role":"Role",
|
||||
"status":"Status",
|
||||
"claimed":"Claimed",
|
||||
"pinned":"Pinned",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"command",
|
||||
"modal":"modal",
|
||||
"button":"button",
|
||||
"dropdown":"dropdown",
|
||||
"method":"method"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"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":"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 tickets",
|
||||
"open":"Open tickets",
|
||||
"close":"Closed tickets",
|
||||
"claim":"Claimed tickets",
|
||||
"unclaim":"Unclaimed tickets",
|
||||
"pin":"Pinned tickets",
|
||||
"unpin":"Unpinned tickets",
|
||||
"autoclose":"Autoclosed tickets"
|
||||
},
|
||||
|
||||
"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":"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":"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 Statistics",
|
||||
"system":"System Statistics",
|
||||
"user":"User Statistics",
|
||||
"ticket":"Ticket Statistics",
|
||||
"participants":"Participants",
|
||||
"messages":"Messages"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets Created",
|
||||
"ticketsClosed":"Tickets Closed",
|
||||
"ticketsDeleted":"Tickets Deleted",
|
||||
"ticketsReopened":"Tickets Reopened",
|
||||
"ticketsAutoclosed":"Tickets Autoclosed",
|
||||
"ticketsClaimed":"Tickets Claimed",
|
||||
"ticketsPinned":"Tickets Pinned",
|
||||
"ticketsMoved":"Tickets Moved",
|
||||
"usersBlacklisted":"Users Blacklisted",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["iamnotmega","ChatGPT"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Estonian",
|
||||
"automated":true
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[VIGA]",
|
||||
"headerOpenTicket":"AVATUD PILET",
|
||||
"typeWarning":"[HOIATUS]",
|
||||
"typeInfo":"[INFO]",
|
||||
"headerConfigChecker":"KONFIGURATSIOONI KONTROLLIJA",
|
||||
"headerDescription":"kontrollige konfiguratsioonifailides vigu!",
|
||||
"footerError":"robot ei käivitu enne, kui kõik {0} on parandatud!",
|
||||
"footerWarning":"enne alustamist on soovitatav kõik {0} parandada!",
|
||||
"footerSupport":"TUGI: {0} – DOKUMENTATSIOON: {1}",
|
||||
"compactInformation":"lisateabe saamiseks kasutage {0}!",
|
||||
"dataPath":"tee",
|
||||
"dataDocs":"dokumentatsioon",
|
||||
"dataMessages":"message"
|
||||
},
|
||||
"messages":{
|
||||
"stringTooShort":"See string ei tohi olla lühem kui {0} tähemärki!",
|
||||
"stringTooLong":"See string ei tohi olla pikem kui {0} tähemärki!",
|
||||
"stringLengthInvalid":"See string peab olema {0} tähemärki pikk!",
|
||||
"stringStartsWith":"See string peab algama tähega {0}!",
|
||||
"stringEndsWith":"See string peab lõppema tähega {0}!",
|
||||
"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!",
|
||||
"numberLengthInvalid":"See number peab olema {0} tähemärki pikk!",
|
||||
"numberTooSmall":"See number peab olema vähemalt {0}!",
|
||||
"numberTooLarge":"See arv peab olema kuni {0}!",
|
||||
"numberNotEqual":"See number peab olema {0}!",
|
||||
"numberStep":"See arv peab olema arvu {0} kordne!",
|
||||
"numberStepOffset":"See arv peab olema arvu {0} kordne, mis algab numbriga {1}!",
|
||||
"numberStartsWith":"See number peab algama tähega {0}!",
|
||||
"numberEndsWith":"See number peab lõppema numbriga {0}!",
|
||||
"numberContains":"See number peab sisaldama {0}!",
|
||||
"numberChoices":"See arv võib olla ainult üks järgmistest väärtustest: {0}!",
|
||||
"numberFloat":"See arv ei tohi olla kümnendkoht!",
|
||||
"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!",
|
||||
|
||||
"arrayEmptyDisabled":"See massiiv ei tohi olla tühi!",
|
||||
"arrayEmptyRequired":"See massiiv peab olema tühi!",
|
||||
"arrayTooShort":"Selle massiivi pikkus peab olema vähemalt {0}!",
|
||||
"arrayTooLong":"Selle massiivi pikkus peab olema maksimaalselt {0}!",
|
||||
"arrayLengthInvalid":"Selle massiivi pikkus peab olema {0}!",
|
||||
"arrayInvalidTypes":"See massiiv võib sisaldada ainult järgmisi tüüpe: {0}!",
|
||||
"arrayDouble":"See massiiv ei luba sama väärtust kaks korda kasutada!",
|
||||
|
||||
"discordInvalidId":"See on kehtetu Discordi {0} ID!",
|
||||
"discordInvalidIdOptions":"See on kehtetu Discordi {0} ID! Võite kasutada ka ühte järgmistest: {1}!",
|
||||
"discordInvalidToken":"See on kehtetu Discordi tooken (süntaktiliselt)!",
|
||||
"colorInvalid":"See on sobimatu kuusnurkne värv!",
|
||||
"emojiTooShort":"Sellel stringil peab olema vähemalt {0} emotikonit!",
|
||||
"emojiTooLong":"Selles stringis peab olema kuni {0} emotikonit!",
|
||||
"emojiCustom":"See emotikon ei saa olla kohandatud emotikon!",
|
||||
"emojiInvalid":"See on sobimatu emotikon!",
|
||||
"urlInvalid":"See URL on kehtetu!",
|
||||
"urlInvalidHttp":"See URL saab kasutada ainult https:// protokolli!",
|
||||
"urlInvalidProtocol":"See URL saab kasutada ainult http:// ja https:// protokolle!",
|
||||
"urlInvalidHostname":"Sellel URL-il on keelatud hostinimi!",
|
||||
"urlInvalidExtension":"Sellel URL-il on sobimatu laiend! Valige järgmiste hulgast: {0}!",
|
||||
"urlInvalidPath":"Sellel URL-il on vale tee!",
|
||||
"idNotUnique":"See ID ei ole kordumatu, kasutage selle asemel teist ID-d!",
|
||||
"idNonExistent":"ID-d {0} pole olemas!",
|
||||
|
||||
"invalidType":"Selle atribuudi tüüp peab olema: {0}!",
|
||||
"propertyMissing":"Sellel objektil puudub atribuut {0}!",
|
||||
"propertyOptional":"Atribuut {0} on selles objektis valikuline!",
|
||||
"objectDisabled":"See objekt on keelatud, lubage see, kasutades {0}!",
|
||||
"nullInvalid":"See vara ei saa olla tühi!",
|
||||
"switchInvalidType":"See peab olema üks järgmistest tüüpidest: {0}!",
|
||||
"objectSwitchInvalid":"See objekt peab olema ühte järgmistest tüüpidest: {0}!",
|
||||
|
||||
"invalidLanguage":"See on sobimatu keel!",
|
||||
"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":"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":{
|
||||
"buttons":{
|
||||
"create":"Külastage Piletit",
|
||||
"close":"Sulge pilet",
|
||||
"delete":"Kustuta pilet",
|
||||
"reopen":"Ava pilet uuesti",
|
||||
"claim":"Nõudke pilet",
|
||||
"unclaim":"Tühista pilet",
|
||||
"pin":"Kinnita pilet",
|
||||
"unpin":"Vabastage pilet",
|
||||
"clear":"Kustuta piletid",
|
||||
"helpSwitchSlash":"Vaadake kaldkriipsu käske",
|
||||
"helpSwitchText":"Vaadake tekstikäske",
|
||||
"helpPage":"Leht {0}",
|
||||
"withReason":"Põhjusega",
|
||||
"withoutTranscript":"Ilma ärakirjata",
|
||||
"blacklistAdd":"Lisa kasutaja musta nimekirja",
|
||||
"blacklistRemove":"Vabasta kasutaja"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Pilet loodud",
|
||||
"close":"Pilet suletud",
|
||||
"delete":"Pilet kustutatud",
|
||||
"reopen":"Pilet taasavatud",
|
||||
"claim":"Pilet nõutud",
|
||||
"unclaim":"Pilet tühistatud",
|
||||
"pin":"Pilet kinnitatud",
|
||||
"unpin":"Pilet vabastatud",
|
||||
"rename":"Pilet nimetati ümber",
|
||||
"move":"Pilet teisaldatud",
|
||||
"add":"Pileti kasutaja lisatud",
|
||||
"remove":"Pileti kasutaja eemaldatud",
|
||||
|
||||
"help":"Saadaolevad käsud",
|
||||
"statsReset":"Lähtestage statistika",
|
||||
"blacklistAdd":"Kasutaja on mustas nimekirjas",
|
||||
"blacklistRemove":"Kasutaja vabastatud",
|
||||
"blacklistGet":"Musta nimekirja kantud kasutaja",
|
||||
"blacklistView":"Praegune must nimekiri",
|
||||
"blacklistAddDm":"Lisatud musta nimekirja",
|
||||
"blacklistRemoveDm":"Eemaldatud mustast nimekirjast",
|
||||
"clear":"Piletid kustutatud",
|
||||
"clearTickets":"Kustuta Piletid",
|
||||
"roles":"Rollid uuendatud",
|
||||
|
||||
"autoclose":"Pilet automaatselt suletud",
|
||||
"autocloseEnabled":"Automaatne sulgemine lubatud",
|
||||
"autocloseDisabled":"Automaatne sulgemine keelatud",
|
||||
"autodelete":"Pilet on automaatselt kustutatud",
|
||||
"autodeleteEnabled":"Automaatne kustutamine lubatud",
|
||||
"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!",
|
||||
"close":"Pilet on edukalt suletud!",
|
||||
"delete":"Pilet on edukalt kustutatud!",
|
||||
"reopen":"Pilet on edukalt taasavatud!",
|
||||
"claim":"Pilet on edukalt vastu võetud!",
|
||||
"unclaim":"Pilet on edukalt tühistatud!",
|
||||
"pin":"Pilet on edukalt kinnitatud!",
|
||||
"unpin":"Pilet on edukalt vabastatud!",
|
||||
"rename":"Pilet on edukalt ümber nimetatud nimeks {0}!",
|
||||
"move":"Pilet teisaldati asukohta {0} edukalt!",
|
||||
"add":"{0} lisati piletile edukalt!",
|
||||
"remove":"{0} eemaldati piletist edukalt!",
|
||||
|
||||
"helpExplanation":"`<nimi>` => nõutav parameeter\n`[nimi]` => valikuline parameeter",
|
||||
"statsReset":"Boti statistika on edukalt lähtestatud!",
|
||||
"statsError":"Piletistatistikat ei saa vaadata!\n{0} ei ole pilet!",
|
||||
"blacklistAdd":"{0} on edukalt musta nimekirja kantud!",
|
||||
"blacklistRemove":"{0} vabastati edukalt!",
|
||||
"blacklistGetSuccess":"{0} on praegu mustas nimekirjas!",
|
||||
"blacklistGetEmpty":"{0} ei ole praegu mustas nimekirjas!",
|
||||
"blacklistViewEmpty":"Keegi pole veel musta nimekirja kantud!",
|
||||
"blacklistViewTip":"Kasutage \"/blacklist add\" kasutaja musta nimekirja lisamiseks!",
|
||||
"clearVerify":"Kas soovite kindlasti mitu piletit kustutada?\nSeda toimingut ei saa tagasi võtta!",
|
||||
"clearReady":"{0} piletit on edukalt kustutatud!",
|
||||
"rolesEmpty":"Ühtegi rolli pole värskendatud!",
|
||||
|
||||
"autocloseLeave":"See pilet on automaatselt suletud, kuna looja lahkus serverist!",
|
||||
"autocloseTimeout":"See pilet on automaatselt suletud, kuna see on olnud passiivne rohkem kui `{0}h`!",
|
||||
"autodeleteLeave":"See pilet on automaatselt kustutatud, kuna looja lahkus serverist!",
|
||||
"autodeleteTimeout":"See pilet on automaatselt kustutatud, kuna see on olnud passiivne rohkem kui `{0} päeva`!",
|
||||
"autocloseEnabled":"Sellel piletil on automaatne sulgemine lubatud!\nSee suletakse, kui see on passiivne rohkem kui `{0}h`!",
|
||||
"autocloseDisabled":"Automaatne sulgemine on sellel piletil keelatud!\nSeda ei suleta enam automaatselt!",
|
||||
"autodeleteEnabled":"Sellel piletil on automaatne kustutamine lubatud!\nSee kustutatakse, kui see on passiivne rohkem kui `{0} päeva`!",
|
||||
"autodeleteDisabled":"Automaatne kustutamine on sellel piletil keelatud!\nSeda ei kustutata enam automaatselt!",
|
||||
|
||||
"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":"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?",
|
||||
"deletePlaceholder":"Miks sa selle pileti kustutasid?",
|
||||
"reopenPlaceholder":"Miks te selle pileti uuesti avasite?",
|
||||
"claimPlaceholder":"Miks sa selle pileti välja nõudsid?",
|
||||
"unclaimPlaceholder":"Miks te selle pileti tühistasite?",
|
||||
"pinPlaceholder":"Miks sa selle pileti kinni panid?",
|
||||
"unpinPlaceholder":"Miks sa selle pileti lahti kinnitasid?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"{0} lõi uue pileti!",
|
||||
"closeLog":"Selle pileti sulges {0}!",
|
||||
"closeDm":"Teie pilet on meie serveris suletud!",
|
||||
"deleteLog":"{0} on selle pileti kustutanud!",
|
||||
"deleteDm":"Teie pilet on meie serverist kustutatud!",
|
||||
"reopenLog":"{0} on selle pileti uuesti avanud!",
|
||||
"reopenDm":"Teie pilet on meie serveris uuesti avatud!",
|
||||
"claimLog":"Selle pileti on nõudnud {0}!",
|
||||
"claimDm":"Teie pilet on meie serveris välja nõutud!",
|
||||
"unclaimLog":"{0} on selle pileti tagasi võtnud!",
|
||||
"unclaimDm":"Teie pilet on meie serveris välja võtmata!",
|
||||
"pinLog":"Selle pileti on kinnitanud {0}!",
|
||||
"pinDm":"Teie pilet on kinnitatud meie serverisse!",
|
||||
"unpinLog":"{0} on selle pileti vabastanud!",
|
||||
"unpinDm":"Teie pilet on meie serveris vabastatud!",
|
||||
"renameLog":"{1} on selle pileti ümber nimetanud piletiks {0}!",
|
||||
"renameDm":"Teie pilet on meie serveris ümber nimetatud {0}-ks!",
|
||||
"moveLog":"{1} on selle pileti teisaldanud asukohta {0}!",
|
||||
"moveDm":"Teie pilet on teisaldatud meie serverisse {0}!",
|
||||
"addLog":"{1} on sellele piletile lisanud {0}!",
|
||||
"addDm":"{0} lisati teie piletile meie serveris!",
|
||||
"removeLog":"Kasutaja {1} eemaldas sellelt piletilt {0}!",
|
||||
"removeDm":"{0} on teie piletist meie serveris eemaldatud!",
|
||||
|
||||
"blacklistAddLog":"{1} lisas kasutaja {0} musta nimekirja!",
|
||||
"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!",
|
||||
|
||||
"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":{
|
||||
"success":{
|
||||
"visit":"Külastage Transkriptsiooni",
|
||||
"ready":"Transkriptsioon loodud",
|
||||
"textFileDescription":"See on kustutatud pileti teksti ärakiri!",
|
||||
"htmlProgress":"Palun oodake, kuni seda html-i ärakirja töödeldakse...",
|
||||
|
||||
"createdChannel":"Serveris on loodud uus {0} ärakiri!",
|
||||
"createdCreator":"Ühe teie pileti jaoks on loodud uus {0} ärakiri!",
|
||||
"createdParticipant":"Ühes teie osalenud piletis on loodud uus {0} ärakiri!",
|
||||
"createdActiveAdmin":"Ühes piletis, milles osalesite administraatorina, on loodud uus {0} ärakiri!",
|
||||
"createdEveryAdmin":"Ühes piletis, mille administraator olite, on loodud uus {0} ärakiri!",
|
||||
"createdOther":"Uus {0} ärakiri on loodud!"
|
||||
},
|
||||
"errors":{
|
||||
"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.",
|
||||
"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":{
|
||||
"titles":{
|
||||
"internalError":"Sisemine viga",
|
||||
"optionMissing":"Käsuvalik puudub",
|
||||
"optionInvalid":"Käsuvalik on kehtetu",
|
||||
"unknownCommand":"Tundmatu käsk",
|
||||
"noPermissions":"Lubasid pole",
|
||||
"unknownTicket":"Tundmatu pilet",
|
||||
"deprecatedTicket":"Aegunud pilet",
|
||||
"unknownOption":"Tundmatu valik",
|
||||
"unknownPanel":"Tundmatu paneel",
|
||||
"notInGuild":"Pole serveris",
|
||||
"channelRename":"Kanalit ei saa ümber nimetada",
|
||||
"channelCategory":"Kategooriat ei saa muuta",
|
||||
"busy":"Pilet on kinni",
|
||||
"permissionError":"Õiguste Viga"
|
||||
},
|
||||
"descriptions":{
|
||||
"askForInfo":"Lisateabe saamiseks võtke ühendust selle roboti omanikuga!",
|
||||
"askForInfoResolve":"Kui probleem mõne katsega ei lahene, võtke ühendust selle roboti omanikuga.",
|
||||
"internalError":"Sellele {0}-le vastamine ebaõnnestus sisemise vea tõttu!",
|
||||
"optionMissing":"Selles käsus puudub nõutav parameeter!",
|
||||
"optionInvalid":"Selle käsu parameeter on kehtetu!",
|
||||
"optionInvalidChoose":"Valige vahel",
|
||||
"unknownCommand":"Lisateabe saamiseks külastage abimenüüd!",
|
||||
"noPermissions":"Teil ei ole lubatud seda {0} kasutada!",
|
||||
"noPermissionsList":"Nõutavad load: (üks neist)",
|
||||
"noPermissionsCooldown":"Teil ei ole lubatud seda {0} kasutada, kuna teil on jahtumine!",
|
||||
"noPermissionsBlacklist":"Teil ei ole lubatud seda {0} kasutada, kuna olete lisatud musta nimekirja!",
|
||||
"noPermissionsLimitGlobal":"Teil ei ole lubatud piletit luua, kuna server saavutas maksimaalse piletite limiidi!",
|
||||
"noPermissionsLimitGlobalUser":"Teil ei ole lubatud piletit luua, kuna olete täis piletite maksimumlimiiti!",
|
||||
"noPermissionsLimitOption":"Teil ei ole lubatud piletit luua, kuna server saavutas selle valiku maksimaalse piletite limiidi!",
|
||||
"noPermissionsLimitOptionUser":"Teil ei ole lubatud piletit luua, kuna olete saavutanud selle valiku maksimaalse piletite limiidi!",
|
||||
"unknownTicket":"Proovige seda käsku kehtiva piletiga uuesti!",
|
||||
"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!",
|
||||
"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!",
|
||||
"stringMinLength":"Väärtus peab olema vähemalt {0} tähemärki!",
|
||||
"stringMaxLength":"Väärtus võib olla kuni {0} tähemärki!",
|
||||
"numberInvalid":"Vale number!",
|
||||
"numberMin":"Number peab olema vähemalt {0}!",
|
||||
"numberMax":"Arv võib olla kuni {0}!",
|
||||
"numberDecimal":"Arv ei tohi olla kümnendkoht!",
|
||||
"numberNegative":"Arv ei tohi olla negatiivne!",
|
||||
"numberPositive":"Arv ei tohi olla positiivne!",
|
||||
"numberZero":"Arv ei tohi olla null!",
|
||||
"channelNotFound":"Kanalit ei leitud!",
|
||||
"userNotFound":"Kasutajat ei leitud!",
|
||||
"roleNotFound":"Rolli ei leitud!",
|
||||
"memberNotFound":"Kasutajat ei leitud!",
|
||||
"mentionableNotFound":"Kasutajat või rolli ei leitud!",
|
||||
"channelType":"Sobimatu kanali tüüp!",
|
||||
"notInGuild":"See valik nõuab serveris viibimist!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Peate olema roboti arendaja.",
|
||||
"owner":"Peate olema serveri omanik.",
|
||||
"admin":"Peate olema serveri administraator.",
|
||||
"moderator":"Peate olema moderaator.",
|
||||
"support":"Peate olema tugimeeskonnas.",
|
||||
"member":"You need to be a member.",
|
||||
"discord-administrator":"Teil peab olema ADMINISTRATORI luba."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"Pilet on juba suletud!",
|
||||
"reopen":"Pilet pole veel suletud!",
|
||||
"claim":"Pilet on juba ostetud!",
|
||||
"unclaim":"Piletit pole veel ostetud!",
|
||||
"pin":"Pilet on juba kinni pandud!",
|
||||
"unpin":"Pilet pole veel kinnitatud!",
|
||||
"add":"Sellel kasutajal on juba juurdepääs piletile!",
|
||||
"remove":"Seda kasutajat ei saa piletist eemaldada!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Pilet",
|
||||
"tickets":"Piletid",
|
||||
"reason":"Põhjus",
|
||||
"creator":"Looja",
|
||||
"remaining":"Järelejäänud aeg",
|
||||
"added":"Lisatud",
|
||||
"removed":"Eemaldatud",
|
||||
"filter":"Filter",
|
||||
"method":"Meetod",
|
||||
"type":"Tüüp",
|
||||
"blacklisted":"Mustas nimekirjas",
|
||||
"panel":"Paneel",
|
||||
"command":"Käsk",
|
||||
"system":"Süsteem",
|
||||
"true":"Tõsi",
|
||||
"false":"Vale",
|
||||
"syntax":"Süntaks",
|
||||
"originalName":"Algne nimi",
|
||||
"newName":"Uus nimi",
|
||||
"originalCategory":"Algne kategooria",
|
||||
"newCategory":"Uus kategooria",
|
||||
"until":"Kuni",
|
||||
"validOptions":"Kehtivad valikud",
|
||||
"validPanels":"Kehtivad paneelid",
|
||||
"autoclose":"Automaatne sulgemine",
|
||||
"autodelete":"Automaatne kustutamine",
|
||||
"startupDate":"Käivitamise kuupäev",
|
||||
"version":"Versioon",
|
||||
"name":"Nimi",
|
||||
"role":"Roll",
|
||||
"status":"Olek",
|
||||
"claimed":"Nõutud",
|
||||
"pinned":"Kinnitatud",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"käsk",
|
||||
"modal":"modaalne",
|
||||
"button":"nuppu",
|
||||
"dropdown":"rippmenüüst",
|
||||
"method":"meetod"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Määrake valikuline põhjus, mis on logides nähtav.",
|
||||
"help":"Hankige kõigi saadaolevate käskude loend.",
|
||||
"panel":"Looge sõnum rippmenüü või nuppudega (pileti loomiseks).",
|
||||
"panelId":"Selle paneeli identifikaator, mille soovite luua.",
|
||||
"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.",
|
||||
"reopen":"Avage pilet uuesti.",
|
||||
"claim":"Nõudke pilet.",
|
||||
"claimUser":"Hankige see pilet enda asemel kellelegi teisele.",
|
||||
"unclaim":"Tühista pilet.",
|
||||
"pin":"Kinnitage pilet.",
|
||||
"unpin":"Vabastage pilet.",
|
||||
|
||||
"move":"Liigutage pilet.",
|
||||
"moveId":"Selle valiku identifikaator, millele soovite liikuda.",
|
||||
"rename":"Nimetage pilet ümber.",
|
||||
"renameName":"Selle pileti uus nimi.",
|
||||
"add":"Lisage piletile kasutaja.",
|
||||
"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.",
|
||||
"blacklistRemove":"Eemaldage kasutaja mustast nimekirjast.",
|
||||
"blacklistGet":"Hankige üksikasjad musta nimekirja kantud kasutajalt.",
|
||||
"blacklistGetUser":"Kasutaja, kellelt üksikasju saada.",
|
||||
"stats":"Vaadake boti, liikme või pileti statistikat.",
|
||||
"statsReset":"Lähtestage kogu roboti statistika (ja alustage loendamist nullist).",
|
||||
"statsGlobal":"Vaadake globaalset statistikat.",
|
||||
"statsUser":"Vaadake serveris oleva kasutaja statistikat.",
|
||||
"statsUserUser":"Kasutaja vaatamiseks.",
|
||||
"statsTicket":"Vaadake serveris pileti statistikat.",
|
||||
"statsTicketTicket":"Pilet vaatamiseks.",
|
||||
|
||||
"clear":"Kustutage mitu piletit korraga.",
|
||||
"clearFilter":"Piletite puhastamise filter.",
|
||||
"clearFilters":{
|
||||
"all":"Kõik",
|
||||
"open":"Avatud",
|
||||
"close":"Suletud",
|
||||
"claim":"Nõutud",
|
||||
"unclaim":"Nõudmata",
|
||||
"pin":"Kinnitatud",
|
||||
"unpin":"Vabastatud",
|
||||
"autoclose":"Automaatselt suletud"
|
||||
},
|
||||
|
||||
"autoclose":"Hallake piletis automaatset sulgemist.",
|
||||
"autocloseDisable":"Keela sellel piletil automaatne sulgemine.",
|
||||
"autocloseEnable":"Luba sellel piletil automaatne sulgemine.",
|
||||
"autocloseEnableTime":"Selle pileti sulgemiseks peab olema passiivne tundide arv.",
|
||||
"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.",
|
||||
|
||||
"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.",
|
||||
"ticket":"Looge pilet koheselt.",
|
||||
"close":"Sulgege pilet, see keelab sellele kanalile kirjutamise.",
|
||||
"delete":"Kustutage pilet, kui see on lubatud, loob see ärakirja.",
|
||||
"reopen":"Avage pilet uuesti, see võimaldab sellele kanalile uuesti kirjutada.",
|
||||
"pin":"Kinnitage pilet. See liigutab pileti ülaossa ja lisab nimele emoij '📌'",
|
||||
"unpin":"\nVabastage pilet. Pilet jääb oma positsioonile, kuid kaotab emoij '📌'",
|
||||
"move":"Liigutage pilet. See muudab selle pileti tüüpi.",
|
||||
"rename":"Nimetage pilet ümber. See muudab selle pileti kanali nime.",
|
||||
"claim":"Nõudke pilet. Sellega saate oma meeskonnale teada anda, et tegelete selle piletiga.",
|
||||
"unclaim":"Tühista pilet. Sellega saate oma meeskonnale teada anda, et see pilet on taas tasuta.",
|
||||
"add":"Lisage piletile kasutaja. See võimaldab kasutajal sellel piletil lugeda ja kirjutada.",
|
||||
"remove":"Kasutaja eemaldamine piletist. See eemaldab selle pileti kasutajalt lugemis- ja kirjutamisvõimaluse.",
|
||||
"panel":"Looge sõnum rippmenüü või nuppudega (pileti loomiseks).",
|
||||
"blacklistView":"Vaadake praeguse musta nimekirja loendit.",
|
||||
"blacklistAdd":"Lisage kasutaja musta nimekirja.",
|
||||
"blacklistRemove":"Eemaldage kasutaja mustast nimekirjast.",
|
||||
"blacklistGet":"Hankige üksikasjad musta nimekirja kantud kasutajalt.",
|
||||
"statsGlobal":"Vaadake globaalset statistikat.",
|
||||
"statsTicket":"Vaadake serveris pileti statistikat.",
|
||||
"statsUser":"Vaadake serveris oleva kasutaja statistikat.",
|
||||
"statsReset":"Lähtestage kogu roboti statistika (ja alustage loendamist nullist).",
|
||||
"autocloseDisable":"Keela sellel piletil automaatne sulgemine.",
|
||||
"autocloseEnable":"Luba sellel piletil automaatne sulgemine.",
|
||||
"autodeleteDisable":"Keela 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":{
|
||||
"global":"Globaalne statistika",
|
||||
"system":"Süsteemi statistika",
|
||||
"user":"Kasutaja statistika",
|
||||
"ticket":"Piletistatistika",
|
||||
"participants":"Osalejad",
|
||||
"messages":"Sõnumid"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Pileteid loodud",
|
||||
"ticketsClosed":"Pileteid suletud",
|
||||
"ticketsDeleted":"Pileteid kustutatud",
|
||||
"ticketsReopened":"Pileteid taasavatud",
|
||||
"ticketsAutoclosed":"Pileteid suletud",
|
||||
"ticketsClaimed":"Pileteid välja nõutud",
|
||||
"ticketsPinned":"Pileteid kinnitatud",
|
||||
"ticketsMoved":"Pileteid teisaldatud",
|
||||
"usersBlacklisted":"Kasutajaid mustas nimekirjas",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["iamnotmega","ChatGPT"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"Finnish",
|
||||
"automated":true
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[VIRHE]",
|
||||
"headerOpenTicket":"AVAA LIPPU",
|
||||
"typeWarning":"[VAROITUS]",
|
||||
"typeInfo":"[TIEDOT]",
|
||||
"headerConfigChecker":"ASETUKSEN TARKISTAJA",
|
||||
"headerDescription":"tarkista asetustiedostoissasi virheitä!",
|
||||
"footerError":"botti ei käynnisty ennen kuin kaikki {0} on korjattu!",
|
||||
"footerWarning":"on suositeltavaa korjata kaikki {0} ennen aloittamista!",
|
||||
"footerSupport":"TUKI: {0} - DOCS: {1}",
|
||||
"compactInformation":"käytä {0} saadaksesi lisätietoja!",
|
||||
"dataPath":"polku",
|
||||
"dataDocs":"asiakirjoja",
|
||||
"dataMessages":"viesti"
|
||||
},
|
||||
"messages":{
|
||||
"stringTooShort":"Tämä merkkijono ei voi olla lyhyempi kuin {0} merkkiä!",
|
||||
"stringTooLong":"Tämä merkkijono ei voi olla pidempi kuin {0} merkkiä!",
|
||||
"stringLengthInvalid":"Tämän merkkijonon on oltava {0} merkkiä pitkä!",
|
||||
"stringStartsWith":"Tämän merkkijonon on alettava kirjaimella {0}!",
|
||||
"stringEndsWith":"Tämän merkkijonon tulee päättyä {0}!",
|
||||
"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ä!",
|
||||
"numberLengthInvalid":"Tämän numeron on oltava {0} merkkiä pitkä!",
|
||||
"numberTooSmall":"Tämän numeron on oltava vähintään {0}!",
|
||||
"numberTooLarge":"Tämän numeron on oltava enintään {0}!",
|
||||
"numberNotEqual":"Tämän numeron on oltava {0}!",
|
||||
"numberStep":"Tämän luvun on oltava luvun {0} kerrannainen!",
|
||||
"numberStepOffset":"Tämän luvun on oltava luvun {0} jaollinen, joka alkaa numerolla {1}!",
|
||||
"numberStartsWith":"Tämän numeron täytyy alkaa numerolla {0}!",
|
||||
"numberEndsWith":"Tämän numeron lopussa on oltava {0}!",
|
||||
"numberContains":"Tämän numeron on sisällettävä {0}!",
|
||||
"numberChoices":"Tämä numero voi olla vain yksi seuraavista arvoista: {0}!",
|
||||
"numberFloat":"Tämä luku ei voi olla desimaali!",
|
||||
"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ä!",
|
||||
|
||||
"arrayEmptyDisabled":"Tämä taulukko ei saa olla tyhjä!",
|
||||
"arrayEmptyRequired":"Tämän taulukon on oltava tyhjä!",
|
||||
"arrayTooShort":"Tämän taulukon pituuden on oltava vähintään {0}!",
|
||||
"arrayTooLong":"Tämän taulukon pituus saa olla enintään {0}!",
|
||||
"arrayLengthInvalid":"Tämän taulukon pituuden on oltava {0}!",
|
||||
"arrayInvalidTypes":"Tämä matriisi voi sisältää vain seuraavat tyypit: {0}!",
|
||||
"arrayDouble":"Tämä matriisi ei salli samaa arvoa kahdesti!",
|
||||
|
||||
"discordInvalidId":"Tämä on virheellinen discord {0} -tunnus!",
|
||||
"discordInvalidIdOptions":"Tämä on virheellinen discord {0} -tunnus! Voit myös käyttää jotakin seuraavista: {1}!",
|
||||
"discordInvalidToken":"Tämä on virheellinen discord tunnus (syntaktisesti)!",
|
||||
"colorInvalid":"Tämä on virheellinen kuusioväri!",
|
||||
"emojiTooShort":"Tässä merkkijonossa on oltava vähintään {0} emojia!",
|
||||
"emojiTooLong":"Tässä merkkijonossa saa olla enintään {0} emojia!",
|
||||
"emojiCustom":"Tämä emoji ei voi olla mukautettu emoji!",
|
||||
"emojiInvalid":"Tämä on virheellinen emoji!",
|
||||
"urlInvalid":"Tämä URL-osoite on virheellinen!",
|
||||
"urlInvalidHttp":"Tämä URL-osoite voi käyttää vain https://-protokollaa!",
|
||||
"urlInvalidProtocol":"Tämä URL-osoite voi käyttää vain http://- ja https://-protokollia!",
|
||||
"urlInvalidHostname":"Tällä URL-osoitteella on kielletty isäntänimi!",
|
||||
"urlInvalidExtension":"Tässä URL-osoitteessa on virheellinen laajennus! Valitse seuraavista: {0}!",
|
||||
"urlInvalidPath":"Tällä URL-osoitteella on virheellinen polku!",
|
||||
"idNotUnique":"Tämä tunnus ei ole ainutlaatuinen, käytä sen sijaan toista tunnusta!",
|
||||
"idNonExistent":"Tunnusta {0} ei ole olemassa!",
|
||||
|
||||
"invalidType":"Tämän ominaisuuden on oltava tyyppiä: {0}!",
|
||||
"propertyMissing":"Ominaisuus {0} puuttuu tästä objektista!",
|
||||
"propertyOptional":"Ominaisuus {0} on valinnainen tässä objektissa!",
|
||||
"objectDisabled":"Tämä objekti on poistettu käytöstä, ota se käyttöön käyttämällä {0}!",
|
||||
"nullInvalid":"Tämä omaisuus ei voi olla tyhjä!",
|
||||
"switchInvalidType":"Tämän on oltava jokin seuraavista: {0}!",
|
||||
"objectSwitchInvalid":"Tämän objektin on oltava jokin seuraavista tyypeistä: {0}!",
|
||||
|
||||
"invalidLanguage":"Tämä on virheellinen kieli!",
|
||||
"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":"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":{
|
||||
"buttons":{
|
||||
"create":"Vieraile Ticketissä",
|
||||
"close":"Sulje lippu",
|
||||
"delete":"Poista lippu",
|
||||
"reopen":"Avaa lippu uudelleen",
|
||||
"claim":"Lunasta lippu",
|
||||
"unclaim":"Peruuta lippu",
|
||||
"pin":"Pin Lippu",
|
||||
"unpin":"Irrota lippu",
|
||||
"clear":"Poista liput",
|
||||
"helpSwitchSlash":"Näytä Slash-komennot",
|
||||
"helpSwitchText":"Näytä tekstikomennot",
|
||||
"helpPage":"Sivu {0}",
|
||||
"withReason":"Syyllä",
|
||||
"withoutTranscript":"Ilman transkriptiota",
|
||||
"blacklistAdd":"Lisää käyttäjä mustalle listalle",
|
||||
"blacklistRemove":"Vapauta käyttäjä"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Lippu luotu",
|
||||
"close":"Lippu suljettu",
|
||||
"delete":"Lippu poistettu",
|
||||
"reopen":"Lippu avattu uudelleen",
|
||||
"claim":"Lippu lunastettu",
|
||||
"unclaim":"Lippu lunastamaton",
|
||||
"pin":"Lippu kiinnitetty",
|
||||
"unpin":"Lippu irrotettu",
|
||||
"rename":"Lippu nimetty uudelleen",
|
||||
"move":"Lippu siirretty",
|
||||
"add":"Lipun käyttäjä lisätty",
|
||||
"remove":"Lipun käyttäjä poistettu",
|
||||
|
||||
"help":"Käytettävissä olevat komennot",
|
||||
"statsReset":"Nollaa tilastot",
|
||||
"blacklistAdd":"Käyttäjä mustalla listalla",
|
||||
"blacklistRemove":"Käyttäjä vapautettu",
|
||||
"blacklistGet":"Mustalla listalla oleva käyttäjä",
|
||||
"blacklistView":"Nykyinen musta lista",
|
||||
"blacklistAddDm":"Lisätty mustalle listalle",
|
||||
"blacklistRemoveDm":"Poistettu mustalta listalta",
|
||||
"clear":"Liput tyhjennetty",
|
||||
"clearTickets":"Tyhjennä Tiketit",
|
||||
"roles":"Roolit päivitetty",
|
||||
|
||||
"autoclose":"Lippu suljettu automaattisesti",
|
||||
"autocloseEnabled":"Automaattinen sulkeminen käytössä",
|
||||
"autocloseDisabled":"Automaattinen sulkeminen pois käytöstä",
|
||||
"autodelete":"Lippu poistettu automaattisesti",
|
||||
"autodeleteEnabled":"Automaattinen poisto käytössä",
|
||||
"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!",
|
||||
"close":"Lippu on suljettu onnistuneesti!",
|
||||
"delete":"Lippu on poistettu onnistuneesti!",
|
||||
"reopen":"Lippu on avattu uudelleen onnistuneesti!",
|
||||
"claim":"Lippu on lunastettu onnistuneesti!",
|
||||
"unclaim":"Lippu on lunastettu onnistuneesti!",
|
||||
"pin":"Lippu on kiinnitetty onnistuneesti!",
|
||||
"unpin":"Lippu on irrotettu onnistuneesti!",
|
||||
"rename":"Lippu on nimetty uudelleen muotoon {0}!",
|
||||
"move":"Lippu on siirretty kohteeseen {0} onnistuneesti!",
|
||||
"add":"{0} on lisätty lippuun onnistuneesti!",
|
||||
"remove":"{0} on poistettu lipusta onnistuneesti!",
|
||||
|
||||
"helpExplanation":"`<nimi>` => pakollinen parametri\n`[nimi]` => valinnainen parametri",
|
||||
"statsReset":"Bottitilastot on nollattu onnistuneesti!",
|
||||
"statsError":"Lipputilastoja ei voi tarkastella!\n{0} ei ole lippu!",
|
||||
"blacklistAdd":"{0} on lisätty mustalle listalle onnistuneesti!",
|
||||
"blacklistRemove":"{0} on julkaistu onnistuneesti!",
|
||||
"blacklistGetSuccess":"{0} on tällä hetkellä mustalla listalla!",
|
||||
"blacklistGetEmpty":"{0} ei ole tällä hetkellä mustalla listalla!",
|
||||
"blacklistViewEmpty":"Ketään ei ole vielä mustalla listalla!",
|
||||
"blacklistViewTip":"Käytä \"/blacklist add\" lisätäksesi käyttäjän mustalle listalle!",
|
||||
"clearVerify":"Haluatko varmasti poistaa useita lippuja? Tätä toimintoa ei voi kumota!",
|
||||
"clearReady":"{0} lippua on poistettu onnistuneesti!",
|
||||
"rolesEmpty":"Rooleja ei ole päivitetty!",
|
||||
|
||||
"autocloseLeave":"Tämä lippu on suljettu automaattisesti, koska luoja poistui palvelimelta!",
|
||||
"autocloseTimeout":"Tämä lippu on suljettu automaattisesti, koska se on ollut passiivinen yli `{0}h`!",
|
||||
"autodeleteLeave":"Tämä lippu on poistettu automaattisesti, koska sisällöntuottaja poistui palvelimelta!",
|
||||
"autodeleteTimeout":"Tämä lippu on poistettu automaattisesti, koska se on ollut passiivinen yli `{0} päivää`!",
|
||||
"autocloseEnabled":"Automaattinen sulkeminen on otettu käyttöön tässä lipussa! Se suljetaan, kun se on epäaktiivinen yli `{0}h'!",
|
||||
"autocloseDisabled":"Automaattinen sulkeminen on poistettu käytöstä tässä lipussa! Se ei enää sulkeudu automaattisesti!",
|
||||
"autodeleteEnabled":"Automaattinen poisto on otettu käyttöön tässä lipussa! Se poistetaan, kun se on passiivinen yli `{0} päivään`!",
|
||||
"autodeleteDisabled":"Automaattinen poisto on poistettu käytöstä tässä lipussa! Sitä ei enää poisteta automaattisesti!",
|
||||
|
||||
"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":"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?",
|
||||
"deletePlaceholder":"Miksi poistit tämän lipun?",
|
||||
"reopenPlaceholder":"Miksi avasit tämän lipun uudelleen?",
|
||||
"claimPlaceholder":"Miksi lunasit tämän lipun?",
|
||||
"unclaimPlaceholder":"Miksi peruutit tämän lipun?",
|
||||
"pinPlaceholder":"Miksi kiinnitit tämän lipun?",
|
||||
"unpinPlaceholder":"Miksi irrotit tämän lipun?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"{0} loi uuden lipun!",
|
||||
"closeLog":"Tämän lipun on sulkenut {0}!",
|
||||
"closeDm":"Lippusi on suljettu palvelimellamme!",
|
||||
"deleteLog":"{0} on poistanut tämän lipun!",
|
||||
"deleteDm":"Lippusi on poistettu palvelimeltamme!",
|
||||
"reopenLog":"{0} on avannut tämän lipun uudelleen!",
|
||||
"reopenDm":"Lippusi on avattu uudelleen palvelimellamme!",
|
||||
"claimLog":"{0} on lunastanut tämän lipun!",
|
||||
"claimDm":"Lippusi on lunastettu palvelimellamme!",
|
||||
"unclaimLog":"{0} ei ole lunastanut tätä lippua!",
|
||||
"unclaimDm":"Lippuasi on lunastettu palvelimellamme!",
|
||||
"pinLog":"{0} on kiinnittänyt tämän lipun!",
|
||||
"pinDm":"Lippusi on kiinnitetty palvelimellemme!",
|
||||
"unpinLog":"{0} on irrottanut tämän lipun!",
|
||||
"unpinDm":"Lippusi on irrotettu palvelimeltamme!",
|
||||
"renameLog":"{1} on nimennyt tämän lipun uudelleen nimellä {0}!",
|
||||
"renameDm":"Lippusi nimeksi on muutettu palvelimellamme {0}!",
|
||||
"moveLog":"{1} on siirtänyt tämän lipun paikkaan {0}!",
|
||||
"moveDm":"Lippusi on siirretty palvelimellamme osoitteeseen {0}!",
|
||||
"addLog":"{1} on lisännyt {0} tähän lippuun!",
|
||||
"addDm":"{0} on lisätty lippuusi palvelimellamme!",
|
||||
"removeLog":"{1} on poistanut {0} tästä lipusta!",
|
||||
"removeDm":"{0} on poistettu lipustasi palvelimellamme!",
|
||||
|
||||
"blacklistAddLog":"{1} lisäsi käyttäjän {0} mustalle listalle!",
|
||||
"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!",
|
||||
|
||||
"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":{
|
||||
"success":{
|
||||
"visit":"Vieraile Transcriptissä",
|
||||
"ready":"Transkriptio luotu",
|
||||
"textFileDescription":"Tämä on poistetun lipun tekstikopio!",
|
||||
"htmlProgress":"Odota, kun tätä html-transkriptiota käsitellään...",
|
||||
|
||||
"createdChannel":"Uusi {0}-transkriptio on luotu palvelimelle!",
|
||||
"createdCreator":"Yhdelle lipullesi on luotu uusi transkriptio {0}!",
|
||||
"createdParticipant":"Uusi {0}-transkriptio on luotu yhteen lipuista, joihin osallistuit!",
|
||||
"createdActiveAdmin":"Yhdessä lipussa, johon osallistuit järjestelmänvalvojana, on luotu uusi transkriptio {0}!",
|
||||
"createdEveryAdmin":"Uusi {0}-transkriptio on luotu yhteen lipuista, joissa olit järjestelmänvalvoja!",
|
||||
"createdOther":"Uusi transkriptio {0} on luotu!"
|
||||
},
|
||||
"errors":{
|
||||
"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. ",
|
||||
"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":{
|
||||
"titles":{
|
||||
"internalError":"Sisäinen virhe",
|
||||
"optionMissing":"Komentovaihtoehto puuttuu",
|
||||
"optionInvalid":"Komentovaihtoehto ei kelpaa",
|
||||
"unknownCommand":"Tuntematon komento",
|
||||
"noPermissions":"Ei käyttöoikeuksia",
|
||||
"unknownTicket":"Tuntematon lippu",
|
||||
"deprecatedTicket":"Käytöstä poistettu lippu",
|
||||
"unknownOption":"Tuntematon vaihtoehto",
|
||||
"unknownPanel":"Tuntematon paneeli",
|
||||
"notInGuild":"Ei Palvelimessa",
|
||||
"channelRename":"Kanavaa ei voi nimetä uudelleen",
|
||||
"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!",
|
||||
"askForInfoResolve":"Ota yhteyttä tämän botin omistajaan, jos ongelma ei ratkea muutaman yrityksen jälkeen.",
|
||||
"internalError":"Tähän viestiin {0} ei voi vastata sisäisen virheen vuoksi!",
|
||||
"optionMissing":"Tästä komennosta puuttuu pakollinen parametri!",
|
||||
"optionInvalid":"Tämän komennon parametri on virheellinen!",
|
||||
"optionInvalidChoose":"Valitse väliltä",
|
||||
"unknownCommand":"Kokeile lisätietoja ohjevalikosta!",
|
||||
"noPermissions":"Sinulla ei ole lupaa käyttää tätä {0}!",
|
||||
"noPermissionsList":"Vaaditut luvat: (yksi niistä)",
|
||||
"noPermissionsCooldown":"Sinulla ei ole oikeutta käyttää tätä {0}-palvelua, koska sinulla on jäähdytys!",
|
||||
"noPermissionsBlacklist":"Sinulla ei ole oikeutta käyttää tätä {0}, koska sinut on mustalla listalla!",
|
||||
"noPermissionsLimitGlobal":"Et voi luoda lippua, koska palvelin saavutti lippujen enimmäisrajan!",
|
||||
"noPermissionsLimitGlobalUser":"Et voi luoda lippua, koska saavutit lippujen enimmäisrajan!",
|
||||
"noPermissionsLimitOption":"Et voi luoda lippua, koska palvelin saavutti tämän vaihtoehdon lippujen enimmäisrajan!",
|
||||
"noPermissionsLimitOptionUser":"Et voi luoda lippua, koska saavutit tämän vaihtoehdon lippujen enimmäisrajan!",
|
||||
"unknownTicket":"Kokeile tätä komentoa uudelleen voimassa olevalla lipulla!",
|
||||
"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!",
|
||||
"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!",
|
||||
"stringMinLength":"Arvon on oltava vähintään {0} merkkiä!",
|
||||
"stringMaxLength":"Arvo saa olla enintään {0} merkkiä!",
|
||||
"numberInvalid":"Virheellinen numero!",
|
||||
"numberMin":"Numeron on oltava vähintään {0}!",
|
||||
"numberMax":"Numeron on oltava enintään {0}!",
|
||||
"numberDecimal":"Numero ei saa olla desimaali!",
|
||||
"numberNegative":"Numero ei saa olla negatiivinen!",
|
||||
"numberPositive":"Numero ei saa olla positiivinen!",
|
||||
"numberZero":"Numero ei saa olla nolla!",
|
||||
"channelNotFound":"Kanavaa ei löydy!",
|
||||
"userNotFound":"Käyttäjää ei löydy!",
|
||||
"roleNotFound":"Roolia ei löydy!",
|
||||
"memberNotFound":"Käyttäjää ei löydy!",
|
||||
"mentionableNotFound":"Käyttäjää tai roolia ei löydy!",
|
||||
"channelType":"Virheellinen kanavatyyppi!",
|
||||
"notInGuild":"Tämä vaihtoehto edellyttää, että olet palvelimella!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Sinun on oltava botin kehittäjä.",
|
||||
"owner":"Sinun on oltava palvelimen omistaja.",
|
||||
"admin":"Sinun tulee olla palvelimen järjestelmänvalvoja.",
|
||||
"moderator":"Sinun täytyy olla moderaattori.",
|
||||
"support":"Sinun on kuuluttava tukitiimiin.",
|
||||
"member":"Sinun täytyy olla jäsen.",
|
||||
"discord-administrator":"Sinulla on oltava ADMINISTRATOR-käyttöoikeus."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"Lippu on jo suljettu!",
|
||||
"reopen":"Lippu ei ole vielä suljettu!",
|
||||
"claim":"Lippu on jo lunastettu!",
|
||||
"unclaim":"Lippua ei ole vielä lunastettu!",
|
||||
"pin":"Lippu on jo kiinnitetty!",
|
||||
"unpin":"Lippua ei ole vielä kiinnitetty!",
|
||||
"add":"Tämä käyttäjä voi jo käyttää lippua!",
|
||||
"remove":"Tätä käyttäjää ei voi poistaa lipusta!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Lippu",
|
||||
"tickets":"Liput",
|
||||
"reason":"Syy",
|
||||
"creator":"Luoja",
|
||||
"remaining":"Aikaa jäljellä",
|
||||
"added":"Lisätty",
|
||||
"removed":"Poistettu",
|
||||
"filter":"Suodattaa",
|
||||
"method":"Menetelmä",
|
||||
"type":"Tyyppi",
|
||||
"blacklisted":"Mustalla listalla",
|
||||
"panel":"Paneeli",
|
||||
"command":"Komento",
|
||||
"system":"Järjestelmä",
|
||||
"true":"Totta",
|
||||
"false":"Väärä",
|
||||
"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",
|
||||
"autoclose":"Automaattinen sulkeminen",
|
||||
"autodelete":"Automaattinen poisto",
|
||||
"startupDate":"Aloituspäivämäärä",
|
||||
"version":"Versio",
|
||||
"name":"Nimi",
|
||||
"role":"Rooli",
|
||||
"status":"Tila",
|
||||
"claimed":"Väitetty",
|
||||
"pinned":"Kiinnitetty",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"komento",
|
||||
"modal":"modaalinen",
|
||||
"button":"-painiketta",
|
||||
"dropdown":"pudotusvalikosta",
|
||||
"method":"menetelmä"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Määritä valinnainen syy, joka näkyy lokeissa.",
|
||||
"help":"Hanki luettelo kaikista käytettävissä olevista komennoista.",
|
||||
"panel":"Luo viesti avattavalla valikosta tai painikkeilla (lippujen luomista varten).",
|
||||
"panelId":"Sen paneelin tunniste, jonka haluat luoda.",
|
||||
"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.",
|
||||
"reopen":"Avaa lippu uudelleen.",
|
||||
"claim":"Lunasta lippu.",
|
||||
"claimUser":"Lunasta tämä lippu jollekin muulle itsesi sijaan.",
|
||||
"unclaim":"Peruuta lippu.",
|
||||
"pin":"Kiinnitä lippu.",
|
||||
"unpin":"Irrota lippu.",
|
||||
|
||||
"move":"Siirrä lippu.",
|
||||
"moveId":"Sen vaihtoehdon tunniste, johon haluat siirtyä.",
|
||||
"rename":"Nimeä lippu uudelleen.",
|
||||
"renameName":"Tämän lipun uusi nimi.",
|
||||
"add":"Lisää käyttäjä lippuun.",
|
||||
"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.",
|
||||
"blacklistRemove":"Poista käyttäjä mustalta listalta.",
|
||||
"blacklistGet":"Hanki tiedot mustalla listalla olevalta käyttäjältä.",
|
||||
"blacklistGetUser":"Käyttäjä, jolta saa tietoja.",
|
||||
"stats":"Tarkastele botin, jäsenen tai lipun tilastoja.",
|
||||
"statsReset":"Nollaa kaikki botin tilastot (ja aloita laskeminen nollasta).",
|
||||
"statsGlobal":"Katso globaalit tilastot.",
|
||||
"statsUser":"Tarkastele palvelimella olevan käyttäjän tilastoja.",
|
||||
"statsUserUser":"Käyttäjä katsella.",
|
||||
"statsTicket":"Tarkastele lipun tilastoja palvelimella.",
|
||||
"statsTicketTicket":"Lippu katsottavaksi.",
|
||||
|
||||
"clear":"Poista useita lippuja samanaikaisesti.",
|
||||
"clearFilter":"Lippujen tyhjennyssuodatin.",
|
||||
"clearFilters":{
|
||||
"all":"Kaikki",
|
||||
"open":"Avata",
|
||||
"close":"Suljettu",
|
||||
"claim":"Väitetty",
|
||||
"unclaim":"Lunastamaton",
|
||||
"pin":"Kiinnitetty",
|
||||
"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.",
|
||||
"autocloseEnableTime":"Tämän lipun on oltava passiivinen, jotta se voidaan sulkea.",
|
||||
"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.",
|
||||
|
||||
"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.",
|
||||
"ticket":"Luo lippu välittömästi.",
|
||||
"close":"Sulje lippu, tämä estää kirjoittamisen tälle kanavalle.",
|
||||
"delete":"Poista lippu. Tämä luo transkription, kun se on käytössä.",
|
||||
"reopen":"Avaa lippu uudelleen, tämä mahdollistaa kirjoittamisen uudelleen tälle kanavalle.",
|
||||
"pin":"Kiinnitä lippu. Tämä siirtää lipun yläreunaan ja lisää nimeen emoijin '📌'.",
|
||||
"unpin":"\nIrrota lippu. Lippu pysyy paikallaan, mutta menettää '📌' emoijin.",
|
||||
"move":"Siirrä lippu. Tämä muuttaa tämän lipun tyyppiä.",
|
||||
"rename":"Nimeä lippu uudelleen. Tämä muuttaa tämän lipun kanavan nimen.",
|
||||
"claim":"Lunasta lippu. Tämän avulla voit ilmoittaa tiimillesi, että käsittelet tätä lippua.",
|
||||
"unclaim":"Peruuta lippu. Tällä voit ilmoittaa joukkueellesi, että tämä lippu on jälleen ilmainen.",
|
||||
"add":"Lisää käyttäjä lippuun. Tämä antaa käyttäjälle mahdollisuuden lukea ja kirjoittaa tähän lippuun.",
|
||||
"remove":"Poista käyttäjä lipusta. Tämä poistaa tämän lipun käyttäjältä mahdollisuuden lukea ja kirjoittaa.",
|
||||
"panel":"Luo viesti avattavalla valikosta tai painikkeilla (lippujen luomista varten).",
|
||||
"blacklistView":"Näytä luettelo nykyisestä mustasta listasta.",
|
||||
"blacklistAdd":"Lisää käyttäjä mustalle listalle.",
|
||||
"blacklistRemove":"Poista käyttäjä mustalta listalta.",
|
||||
"blacklistGet":"Hanki tiedot mustalla listalla olevalta käyttäjältä.",
|
||||
"statsGlobal":"Katso globaalit tilastot.",
|
||||
"statsTicket":"Tarkastele lipun tilastoja palvelimella.",
|
||||
"statsUser":"Tarkastele palvelimella olevan käyttäjän tilastoja.",
|
||||
"statsReset":"Nollaa kaikki botin tilastot (ja aloita laskeminen nollasta).",
|
||||
"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.",
|
||||
"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":{
|
||||
"global":"Globaalit tilastot",
|
||||
"system":"Järjestelmätilastot",
|
||||
"user":"Käyttäjätilastot",
|
||||
"ticket":"Lipputilastot",
|
||||
"participants":"Osallistujat",
|
||||
"messages":"Viestit"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Liput luotu",
|
||||
"ticketsClosed":"Liput suljettu",
|
||||
"ticketsDeleted":"Liput poistettu",
|
||||
"ticketsReopened":"Liput avattu uudelleen",
|
||||
"ticketsAutoclosed":"Liput automaattisesti suljettu",
|
||||
"ticketsClaimed":"Liput lunastettu",
|
||||
"ticketsPinned":"Liput kiinni",
|
||||
"ticketsMoved":"Liput siirretty",
|
||||
"usersBlacklisted":"Käyttäjät mustalla listalla",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"_TRANSLATION":{
|
||||
"otversion":"v4.2.0",
|
||||
"translators":["guillee3"],
|
||||
"lastedited":"25/05/2026",
|
||||
"language":"French",
|
||||
"automated":false
|
||||
},
|
||||
"checker":{
|
||||
"system":{
|
||||
"typeError":"[ERREUR]",
|
||||
"headerOpenTicket":"OUVRIR TICKET",
|
||||
"typeWarning":"[ALERTE]",
|
||||
"typeInfo":"[INFO]",
|
||||
"headerConfigChecker":"VÉRIFICATEUR DE CONFIGURATION",
|
||||
"headerDescription":"vérifiez les erreurs dans vos fichiers de config!",
|
||||
"footerError":"le bot ne démarrera pas tant que tous les {0} ne sont pas corrigés!",
|
||||
"footerWarning":"il est recommandé de corriger tous les {0} avant de commencer!",
|
||||
"footerSupport":"SUPPORT: {0} - DOCS: {1}",
|
||||
"compactInformation":"utilisez {0} pour plus d'informations!",
|
||||
"dataPath":"chemin",
|
||||
"dataDocs":"docs",
|
||||
"dataMessages":"message"
|
||||
},
|
||||
"messages":{
|
||||
"stringTooShort":"Cette chaîne ne peut pas être plus courte que {0} caractères!",
|
||||
"stringTooLong":"Cette chaîne ne peut pas être plus longue que {0} caractères!",
|
||||
"stringLengthInvalid":"Cette chaîne doit comporter {0} caractères!",
|
||||
"stringStartsWith":"Cette chaîne doit commencer par {0}!",
|
||||
"stringEndsWith":"Cette chaîne doit se terminer par {0}!",
|
||||
"stringContains":"Cette chaîne doit contenir {0}!",
|
||||
"stringChoices":"Cette chaîne ne peut être que l'une des valeurs suivantes : {0}!",
|
||||
"stringRegex":"Cette chaîne est invalide!",
|
||||
"stringInvertedContains":"Cette chaîne ne peut pas contenir {0}!",
|
||||
"stringLowercase":"Cette chaîne doit être écrite uniquement en minuscules!",
|
||||
"stringUppercase":"Cette chaîne doit être écrite uniquement en majuscules!",
|
||||
"stringSpecialCharacters":"Cette chaîne ne peut pas contenir de caractères spéciaux! (a-z, 0-9 et espace uniquement)",
|
||||
"stringNoSpaces":"Cette chaîne ne peut pas contenir d'espaces!",
|
||||
"stringCapitalWord":"Il est recommandé que chaque mot de cette chaîne commence par une majuscule!",
|
||||
"stringCapitalSentence":"Il semble que certaines phrases dans cette chaîne ne commencent pas par une majuscule!",
|
||||
"stringPunctuation":"Il semble que la phrase dans cette chaîne ne se termine pas par un signe de ponctuation!",
|
||||
|
||||
"numberTooShort":"Ce nombre ne peut pas être plus court que {0} caractères!",
|
||||
"numberTooLong":"Ce nombre ne peut pas être plus long que {0} caractères!",
|
||||
"numberLengthInvalid":"Ce nombre doit comporter {0} caractères!",
|
||||
"numberTooSmall":"Ce nombre doit être au moins {0}!",
|
||||
"numberTooLarge":"Ce nombre doit être au maximum {0}!",
|
||||
"numberNotEqual":"Ce nombre doit être {0}!",
|
||||
"numberStep":"Ce nombre doit être un multiple de {0}!",
|
||||
"numberStepOffset":"Ce nombre doit être un multiple de {0} en commençant par {1}!",
|
||||
"numberStartsWith":"Ce nombre doit commencer par {0}!",
|
||||
"numberEndsWith":"Ce nombre doit se terminer par {0}!",
|
||||
"numberContains":"Ce nombre doit contenir {0}!",
|
||||
"numberChoices":"Ce nombre ne peut être que l'une des valeurs suivantes : {0}!",
|
||||
"numberFloat":"Ce nombre ne peut pas être un décimal!",
|
||||
"numberNegative":"Ce nombre ne peut pas être négatif!",
|
||||
"numberPositive":"Ce nombre ne peut pas être positif!",
|
||||
"numberZero":"Ce nombre ne peut pas être zéro!",
|
||||
"numberNan":"Ce nombre ne peut pas être NaN (Not A Number)!",
|
||||
"numberInvertedContains":"Ce nombre ne peut pas contenir {0}!",
|
||||
|
||||
"booleanTrue":"Ce booléen ne peut pas être vrai!",
|
||||
"booleanFalse":"Ce booléen ne peut pas être faux!",
|
||||
|
||||
"arrayEmptyDisabled":"Ce tableau ne peut pas être vide!",
|
||||
"arrayEmptyRequired":"Ce tableau doit être vide!",
|
||||
"arrayTooShort":"Ce tableau doit avoir une longueur d'au moins {0}!",
|
||||
"arrayTooLong":"Ce tableau doit avoir une longueur d'au plus {0}!",
|
||||
"arrayLengthInvalid":"Ce tableau doit avoir une longueur de {0}!",
|
||||
"arrayInvalidTypes":"Ce tableau ne peut contenir que les types suivants : {0}!",
|
||||
"arrayDouble":"Ce tableau n'autorise pas la même valeur deux fois!",
|
||||
|
||||
"discordInvalidId":"Ceci est un identifiant de {0} Discord invalide!",
|
||||
"discordInvalidIdOptions":"Ceci est un identifiant de {0} Discord invalide! Vous pouvez également utiliser l'un de ceux-ci: {1}!",
|
||||
"discordInvalidToken":"Ceci est un token Discord invalide (syntactiquement)!",
|
||||
"colorInvalid":"Ceci est une couleur hex invalide!",
|
||||
"emojiTooShort":"Cette chaîne doit contenir au moins {0} émojis!",
|
||||
"emojiTooLong":"Cette chaîne doit contenir au plus {0} émojis!",
|
||||
"emojiCustom":"Cet émoji ne peut pas être un émoji Discord personnalisé!",
|
||||
"emojiInvalid":"Ceci est un émoji invalide!",
|
||||
"urlInvalid":"Cette URL est invalide!",
|
||||
"urlInvalidHttp":"Cette URL ne peut utiliser que le protocole https://!",
|
||||
"urlInvalidProtocol":"Cette URL ne peut utiliser que les protocoles http:// et https://!",
|
||||
"urlInvalidHostname":"Cette URL a un nom d'hôte non autorisé!",
|
||||
"urlInvalidExtension":"Cette URL a une extension invalide! Choisissez parmi : {0}!",
|
||||
"urlInvalidPath":"Cette URL a un chemin invalide!",
|
||||
"idNotUnique":"Cet identifiant n'est pas unique, utilisez un autre identifiant à la place!",
|
||||
"idNonExistent":"L'identifiant {0} n'existe pas!",
|
||||
|
||||
"invalidType":"Cette propriété doit être du type: {0}!",
|
||||
"propertyMissing":"La propriété {0} est manquante dans cet objet!",
|
||||
"propertyOptional":"La propriété {0} est optionnelle dans cet objet!",
|
||||
"objectDisabled":"Cet objet est désactivé, activez-le en utilisant {0}!",
|
||||
"nullInvalid":"Cette propriété ne peut pas être nulle!",
|
||||
"switchInvalidType":"Cela doit être l'un des types suivants: {0}!",
|
||||
"objectSwitchInvalid":"Cet objet doit être l'un des types suivants : {0}!",
|
||||
|
||||
"invalidLanguage":"Ceci est une langue invalide!",
|
||||
"invalidButton":"Ce bouton doit avoir au moins un {0} ou {1}!",
|
||||
"unusedOption":"L'option {0} n'est utilisée nulle part!",
|
||||
"unusedQuestion":"La question {0} n'est utilisée nulle part!",
|
||||
"dropdownOption":"Un panneau avec 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":{
|
||||
"buttons":{
|
||||
"create":"Visiter le Ticket",
|
||||
"close":"Fermer le Ticket",
|
||||
"delete":"Supprimer le Ticket",
|
||||
"reopen":"Rouvrir le Ticket",
|
||||
"claim":"Réclamer le ticket",
|
||||
"unclaim":"Libérer le Ticket",
|
||||
"pin":"Épingler le Ticket",
|
||||
"unpin":"Désépingler le Ticket",
|
||||
"clear":"Supprimer les Tickets",
|
||||
"helpSwitchSlash":"Voir les Commandes Slash",
|
||||
"helpSwitchText":"Voir les Commandes Textuelles",
|
||||
"helpPage":"Page {0}",
|
||||
"withReason":"Avec Raison",
|
||||
"withoutTranscript":"Sans Transcription",
|
||||
"blacklistAdd":"Mettre l'Utilisateur en Liste Noire",
|
||||
"blacklistRemove":"Retirer l'Utilisateur"
|
||||
},
|
||||
"titles":{
|
||||
"created":"Ticket Créé",
|
||||
"close":"Ticket Fermé",
|
||||
"delete":"Ticket Supprimé",
|
||||
"reopen":"Ticket Rouvert",
|
||||
"claim":"Ticket Pris en Charge",
|
||||
"unclaim":"Ticket libéré",
|
||||
"pin":"Ticket Épinglé",
|
||||
"unpin":"Ticket Désépinglé",
|
||||
"rename":"Ticket Renommé",
|
||||
"move":"Ticket Déplacé",
|
||||
"add":"Utilisateur Ajouté au Ticket",
|
||||
"remove":"Utilisateur Retiré du Ticket",
|
||||
|
||||
"help":"Commandes Disponibles",
|
||||
"statsReset":"Réinitialiser les Statistiques",
|
||||
"blacklistAdd":"Utilisateur Ajouté à la Liste Noire",
|
||||
"blacklistRemove":"Utilisateur Retiré de la Liste Noire",
|
||||
"blacklistGet":"Utilisateur en Liste Noire",
|
||||
"blacklistView":"Liste Noire Actuelle",
|
||||
"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",
|
||||
"autocloseEnabled":"Fermeture Automatique Activée",
|
||||
"autocloseDisabled":"Fermeture Automatique Désactivée",
|
||||
"autodelete":"Ticket Supprimé Automatiquement",
|
||||
"autodeleteEnabled":"Suppression Automatique Activé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!",
|
||||
"close":"Le ticket a été fermé avec succès!",
|
||||
"delete":"Le ticket a été supprimé avec succès!",
|
||||
"reopen":"Le ticket a été rouvert avec succès!",
|
||||
"claim":"Le ticket a été pris en charge avec succès!",
|
||||
"unclaim":"Le ticket a été libéré avec succès!",
|
||||
"pin":"Le ticket a été épinglé avec succès!",
|
||||
"unpin":"Le ticket a été désépinglé avec succès!",
|
||||
"rename":"Le ticket a été renommé en {0} avec succès!",
|
||||
"move":"Le ticket a été déplacé vers {0} avec succès!",
|
||||
"add":"{0} a été ajouté au ticket avec succès!",
|
||||
"remove":"{0} a été retiré du ticket avec succès!",
|
||||
|
||||
"helpExplanation":"`<nom>` => paramètre requis\n`[nom]` => paramètre optionnel",
|
||||
"statsReset":"Les statistiques du bot ont été réinitialisées avec succès!",
|
||||
"statsError":"Impossible de visualiser les statistiques du ticket!\n{0} n'est pas un ticket!",
|
||||
"blacklistAdd":"{0} a été ajouté à la liste noire avec succès!",
|
||||
"blacklistRemove":"{0} a été retiré de la liste noire avec succès!",
|
||||
"blacklistGetSuccess":"{0} est actuellement sur la liste noire!",
|
||||
"blacklistGetEmpty":"{0} n'est actuellement pas sur la liste noire!",
|
||||
"blacklistViewEmpty":"Personne n'a encore été ajouté à la liste noire!",
|
||||
"blacklistViewTip":"Utilisez \"/blacklist add\" pour ajouter un utilisateur à la liste noire!",
|
||||
"clearVerify":"Êtes-vous sûr de vouloir supprimer plusieurs tickets?\nCette action est irréversible!",
|
||||
"clearReady":"{0} tickets ont été supprimés avec succès!",
|
||||
"rolesEmpty":"Aucun rôle n'a été mis à jour!",
|
||||
|
||||
"autocloseLeave":"Ce ticket a été fermé automatiquement parce que le créateur a quitté le serveur!",
|
||||
"autocloseTimeout":"Ce ticket a été fermé automatiquement car il est resté inactif pendant plus de `{0}h`!",
|
||||
"autodeleteLeave":"Ce ticket a été supprimé automatiquement parce que le créateur a quitté le serveur!",
|
||||
"autodeleteTimeout":"Ce ticket a été supprimé automatiquement car il est resté inactif pendant plus de `{0} jours`!",
|
||||
"autocloseEnabled":"La fermeture automatique a été activée dans ce ticket!\nIl sera fermé lorsqu'il restera inactif pendant plus de `{0}h`!",
|
||||
"autocloseDisabled":"La fermeture automatique a été désactivée dans ce ticket!\nIl ne sera plus fermé automatiquement!",
|
||||
"autodeleteEnabled":"La suppression automatique a été activée dans ce ticket!\nIl sera supprimé lorsqu'il restera inactif pendant plus de `{0} jours`!",
|
||||
"autodeleteDisabled":"La suppression automatique a été désactivée dans ce ticket!\nIl ne sera plus supprimé automatiquement!",
|
||||
|
||||
"ticketMessageLimit":"Vous ne pouvez créer que {0} ticket(s) en même temps!",
|
||||
"ticketMessageAutoclose":"Ce ticket sera fermé automatiquement après {0}h d'inactivité!",
|
||||
"ticketMessageAutodelete":"Ce ticket sera supprimé automatiquement après {0} jours d'inactivité!",
|
||||
"panelReady":"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?",
|
||||
"deletePlaceholder":"Pourquoi avez-vous supprimé ce ticket?",
|
||||
"reopenPlaceholder":"Pourquoi avez-vous rouvert ce ticket?",
|
||||
"claimPlaceholder":"Pourquoi avez-vous pris en charge ce ticket?",
|
||||
"unclaimPlaceholder":"Pourquoi avez-vous libéré ce ticket?",
|
||||
"pinPlaceholder":"Pourquoi avez-vous épinglé ce ticket?",
|
||||
"unpinPlaceholder":"Pourquoi avez-vous désépinglé ce ticket?"
|
||||
},
|
||||
"logs":{
|
||||
"createLog":"Un nouveau ticket a été créé par {0}!",
|
||||
"closeLog":"Ce ticket a été fermé par {0}!",
|
||||
"closeDm":"Votre ticket a été fermé sur notre serveur!",
|
||||
"deleteLog":"Ce ticket a été supprimé par {0}!",
|
||||
"deleteDm":"Votre ticket a été supprimé sur notre serveur!",
|
||||
"reopenLog":"Ce ticket a été rouvert par {0}!",
|
||||
"reopenDm":"Votre ticket a été rouvert sur notre serveur!",
|
||||
"claimLog":"Ce ticket a été pris en charge par {0}!",
|
||||
"claimDm":"Votre ticket a été pris en charge sur notre serveur!",
|
||||
"unclaimLog":"Ce ticket a été libéré par {0}!",
|
||||
"unclaimDm":"Votre ticket a été libéré sur notre serveur!",
|
||||
"pinLog":"Ce ticket a été épinglé par {0}!",
|
||||
"pinDm":"Votre ticket a été épinglé sur notre serveur!",
|
||||
"unpinLog":"Ce ticket a été désépinglé par {0}!",
|
||||
"unpinDm":"Votre ticket a été désépinglé sur notre serveur!",
|
||||
"renameLog":"Ce ticket a été renommé en {0} par {1}!",
|
||||
"renameDm":"Votre ticket a été renommé en {0} sur notre serveur!",
|
||||
"moveLog":"Ce ticket a été déplacé vers {0} par {1}!",
|
||||
"moveDm":"Votre ticket a été déplacé vers {0} sur notre serveur!",
|
||||
"addLog":"{0} a été ajouté à ce ticket par {1}!",
|
||||
"addDm":"{0} a été ajouté à votre ticket sur notre serveur!",
|
||||
"removeLog":"{0} a été retiré de ce ticket par {1}!",
|
||||
"removeDm":"{0} a été retiré de votre ticket sur notre serveur!",
|
||||
|
||||
"blacklistAddLog":"{0} a été ajouté à la liste noire par {1}!",
|
||||
"blacklistRemoveLog":"{0} a été retiré de la liste noire par {1}!",
|
||||
"blacklistAddDm":"Vous avez été ajouté à la liste noire sur notre serveur!\nDésormais, vous ne pouvez pas créer de ticket!",
|
||||
"blacklistRemoveDm":"Vous avez été retiré de la liste noire sur notre serveur!\nVous pouvez désormais créer des tickets à nouveau!",
|
||||
"clearLog":"{0} tickets ont été supprimés par {1}!",
|
||||
|
||||
"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":{
|
||||
"success":{
|
||||
"visit":"Visiter la Transcription",
|
||||
"ready":"Transcription Créée",
|
||||
"textFileDescription":"Ceci est la transcription textuelle d'un ticket supprimé!",
|
||||
"htmlProgress":"Veuillez patienter pendant que cette transcription HTML est en cours de traitement...",
|
||||
|
||||
"createdChannel":"Une nouvelle transcription {0} a été créée sur le serveur!",
|
||||
"createdCreator":"Une nouvelle transcription {0} a été créée pour l'un de vos tickets!",
|
||||
"createdParticipant":"Une nouvelle transcription {0} a été créée dans l'un des tickets auxquels vous avez participé!",
|
||||
"createdActiveAdmin":"Une nouvelle transcription {0} a été créée dans l'un des tickets auxquels vous avez participé en tant qu'admin!",
|
||||
"createdEveryAdmin":"Une nouvelle transcription {0} a été créée dans l'un des tickets où vous étiez admin!",
|
||||
"createdOther":"Une nouvelle transcription {0} a été créée!"
|
||||
},
|
||||
"errors":{
|
||||
"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.",
|
||||
"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":{
|
||||
"titles":{
|
||||
"internalError":"Erreur Interne",
|
||||
"optionMissing":"Option de Commande Manquante",
|
||||
"optionInvalid":"Option de Commande Invalide",
|
||||
"unknownCommand":"Commande Inconnue",
|
||||
"noPermissions":"Pas de Permissions",
|
||||
"unknownTicket":"Ticket Inconnu",
|
||||
"deprecatedTicket":"Ticket Déprécié",
|
||||
"unknownOption":"Option Inconnue",
|
||||
"unknownPanel":"Panneau Inconnu",
|
||||
"notInGuild":"Pas Dans le Serveur",
|
||||
"channelRename":"Impossible de Renommer le Canal",
|
||||
"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!",
|
||||
"askForInfoResolve":"Contactez le propriétaire du bot si ce problème ne se résout pas après quelques essais.",
|
||||
"internalError":"Échec de la réponse à ce {0} en raison d'une erreur interne!",
|
||||
"optionMissing":"Un paramètre requis est manquant dans cette commande!",
|
||||
"optionInvalid":"Un paramètre dans cette commande est invalide!",
|
||||
"optionInvalidChoose":"Choisissez entre",
|
||||
"unknownCommand":"Essayez de visiter le menu d'aide pour plus d'informations!",
|
||||
"noPermissions":"Vous n'êtes pas autorisé à utiliser ce {0}!",
|
||||
"noPermissionsList":"Permissions Requises : (une d'entre elles)",
|
||||
"noPermissionsCooldown":"Vous n'êtes pas autorisé à utiliser ce {0} car vous êtes en cooldown!",
|
||||
"noPermissionsBlacklist":"Vous n'êtes pas autorisé à utiliser ce {0} car vous avez été mis sur la liste noire!",
|
||||
"noPermissionsLimitGlobal":"Vous n'êtes pas autorisé à créer un ticket car le serveur a atteint la limite maximale de tickets!",
|
||||
"noPermissionsLimitGlobalUser":"Vous n'êtes pas autorisé à créer un ticket car vous avez atteint la limite maximale de tickets!",
|
||||
"noPermissionsLimitOption":"Vous n'êtes pas autorisé à créer un ticket car le serveur a atteint la limite maximale de tickets pour cette option!",
|
||||
"noPermissionsLimitOptionUser":"Vous n'êtes pas autorisé à créer un ticket car vous avez atteint la limite maximale de tickets pour cette option!",
|
||||
"unknownTicket":"Essayez cette commande à nouveau dans un ticket valide!",
|
||||
"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!",
|
||||
"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!",
|
||||
"stringMinLength":"La valeur doit comporter au moins {0} caractères!",
|
||||
"stringMaxLength":"La valeur doit comporter au maximum {0} caractères!",
|
||||
"numberInvalid":"Nombre invalide!",
|
||||
"numberMin":"Le nombre doit être au moins {0}!",
|
||||
"numberMax":"Le nombre doit être au maximum {0}!",
|
||||
"numberDecimal":"Le nombre ne peut pas être un décimal!",
|
||||
"numberNegative":"Le nombre ne peut pas être négatif!",
|
||||
"numberPositive":"Le nombre ne peut pas être positif!",
|
||||
"numberZero":"Le nombre ne peut pas être zéro!",
|
||||
"channelNotFound":"Impossible de trouver le canal!",
|
||||
"userNotFound":"Impossible de trouver l'utilisateur!",
|
||||
"roleNotFound":"Impossible de trouver le rôle!",
|
||||
"memberNotFound":"Impossible de trouver l'utilisateur!",
|
||||
"mentionableNotFound":"Impossible de trouver l'utilisateur ou le rôle!",
|
||||
"channelType":"Type de canal invalide!",
|
||||
"notInGuild":"Cette option nécessite que vous soyez dans un serveur!"
|
||||
},
|
||||
"permissions":{
|
||||
"developer":"Vous devez être le développeur du bot.",
|
||||
"owner":"Vous devez être le propriétaire du serveur.",
|
||||
"admin":"Vous devez être un administrateur du serveur.",
|
||||
"moderator":"Vous devez être un modérateur.",
|
||||
"support":"Vous devez faire partie de l'équipe de support.",
|
||||
"member":"Vous devez être membre.",
|
||||
"discord-administrator":"Vous devez avoir la permission `ADMINISTRATOR`."
|
||||
},
|
||||
"actionInvalid":{
|
||||
"close":"Le ticket est déjà fermé!",
|
||||
"reopen":"Le ticket n'est pas encore fermé!",
|
||||
"claim":"Le ticket est déjà pris en charge!",
|
||||
"unclaim":"Le ticket n'est pas encore pris en charge!",
|
||||
"pin":"Le ticket est déjà épinglé!",
|
||||
"unpin":"Le ticket n'est pas encore épinglé!",
|
||||
"add":"Cet utilisateur a déjà accès au ticket!",
|
||||
"remove":"Impossible de retirer cet utilisateur du ticket!"
|
||||
}
|
||||
},
|
||||
"params":{
|
||||
"uppercase":{
|
||||
"ticket":"Ticket",
|
||||
"tickets":"Tickets",
|
||||
"reason":"Raison",
|
||||
"creator":"Créateur",
|
||||
"remaining":"Temps Restant",
|
||||
"added":"Ajouté",
|
||||
"removed":"Retiré",
|
||||
"filter":"Filtre",
|
||||
"method":"Méthode",
|
||||
"type":"Type",
|
||||
"blacklisted":"Liste Noire",
|
||||
"panel":"Panneau",
|
||||
"command":"Commande",
|
||||
"system":"Système",
|
||||
"true":"Vrai",
|
||||
"false":"Faux",
|
||||
"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",
|
||||
"autoclose":"Fermeture Automatique",
|
||||
"autodelete":"Suppression Automatique",
|
||||
"startupDate":"Date de Démarrage",
|
||||
"version":"Version",
|
||||
"name":"Nom",
|
||||
"role":"Rôle",
|
||||
"status":"Statut",
|
||||
"claimed":"Pris en Charge",
|
||||
"pinned":"Épinglé",
|
||||
"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",
|
||||
"html":"html",
|
||||
"command":"commande",
|
||||
"modal":"modal",
|
||||
"button":"bouton",
|
||||
"dropdown":"menu déroulant",
|
||||
"method":"méthode"
|
||||
}
|
||||
},
|
||||
"commands":{
|
||||
"reason":"Spécifiez une raison optionnelle qui sera visible dans les journaux.",
|
||||
"help":"Obtenez une liste de toutes les commandes disponibles.",
|
||||
"panel":"Générez un message avec un menu déroulant ou des boutons (pour la création de tickets).",
|
||||
"panelId":"L'identifiant du panneau que vous souhaitez générer.",
|
||||
"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.",
|
||||
"reopen":"Rouvrez un ticket.",
|
||||
"claim":"Prendre en charge un ticket.",
|
||||
"claimUser":"Prendre en charge ce ticket pour quelqu'un d'autre au lieu de vous-même.",
|
||||
"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.",
|
||||
"renameName":"Le nouveau nom pour ce ticket.",
|
||||
"add":"Ajoutez un utilisateur à un ticket.",
|
||||
"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.",
|
||||
"blacklistRemove":"Retirez un utilisateur de la liste noire.",
|
||||
"blacklistGet":"Obtenez les détails d'un utilisateur mis sur la liste noire.",
|
||||
"blacklistGetUser":"L'utilisateur dont vous souhaitez obtenir les détails.",
|
||||
"stats":"Voir les statistiques du bot, d'un membre ou d'un ticket.",
|
||||
"statsReset":"Réinitialisez toutes les statistiques du bot (et commencez à compter à partir de zéro).",
|
||||
"statsGlobal":"Voir les statistiques globales.",
|
||||
"statsUser":"Voir les statistiques d'un utilisateur dans le serveur.",
|
||||
"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":{
|
||||
"all":"Tous",
|
||||
"open":"Ouverts",
|
||||
"close":"Fermés",
|
||||
"claim":"Pris en charge",
|
||||
"unclaim":"Non pris en charge",
|
||||
"pin":"Épinglés",
|
||||
"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.",
|
||||
"autocloseEnableTime":"Le nombre d'heures d'inactivité nécessaire pour fermer ce ticket.",
|
||||
"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.",
|
||||
|
||||
"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.",
|
||||
"ticket":"Créez instantanément un ticket.",
|
||||
"close":"Fermez un ticket, cela désactive l'écriture dans ce canal.",
|
||||
"delete":"Supprimez un ticket, cela crée une transcription lorsqu'elle est activée.",
|
||||
"reopen":"Rouvrez un ticket, cela active à nouveau l'écriture dans ce canal.",
|
||||
"pin":"Épinglez un ticket. Cela déplacera le ticket en haut et ajoutera un émoji '📌' au nom.",
|
||||
"unpin":"Désépingler un ticket. Le ticket restera à sa position mais perdra l'émoji '📌'.",
|
||||
"move":"Déplacez un ticket. Cela changera le type de ce ticket.",
|
||||
"rename":"Renommez un ticket. Cela changera le nom du canal de ce ticket.",
|
||||
"claim":"Prendre en charge un ticket. Ainsi, vous pouvez informer votre équipe que vous gérez ce ticket.",
|
||||
"unclaim":"Libérer un ticket. Ainsi, vous pouvez informer votre équipe que ce ticket est à nouveau libre.",
|
||||
"add":"Ajoutez un utilisateur à un ticket. Cela permettra à l'utilisateur de lire et d'écrire dans ce ticket.",
|
||||
"remove":"Retirez un utilisateur d'un ticket. Cela supprimera la capacité de lire et d'écrire pour un utilisateur dans ce ticket.",
|
||||
"panel":"Générez un message avec un menu déroulant ou des boutons (pour la création de tickets).",
|
||||
"blacklistView":"Voir la liste noire actuelle.",
|
||||
"blacklistAdd":"Ajoutez un utilisateur à la liste noire.",
|
||||
"blacklistRemove":"Retirez un utilisateur de la liste noire.",
|
||||
"blacklistGet":"Obtenez les détails d'un utilisateur mis sur la liste noire.",
|
||||
"statsGlobal":"Voir les statistiques globales.",
|
||||
"statsTicket":"Voir les statistiques d'un ticket dans le serveur.",
|
||||
"statsUser":"Voir les statistiques d'un utilisateur dans le serveur.",
|
||||
"statsReset":"Réinitialisez toutes les statistiques du bot (et commencez à compter à partir de zéro).",
|
||||
"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.",
|
||||
"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":{
|
||||
"global":"Statistiques Globales",
|
||||
"system":"Statistiques Système",
|
||||
"user":"Statistiques Utilisateur",
|
||||
"ticket":"Statistiques Ticket",
|
||||
"participants":"Participants",
|
||||
"messages":"Messages"
|
||||
},
|
||||
"properties":{
|
||||
"ticketsCreated":"Tickets Créés",
|
||||
"ticketsClosed":"Tickets Fermés",
|
||||
"ticketsDeleted":"Tickets Supprimés",
|
||||
"ticketsReopened":"Tickets Rouverts",
|
||||
"ticketsAutoclosed":"Tickets Fermés Automatiquement",
|
||||
"ticketsClaimed":"Tickets pris en charge",
|
||||
"ticketsPinned":"Tickets Épinglés",
|
||||
"ticketsMoved":"Tickets Déplacés",
|
||||
"usersBlacklisted":"Utilisateurs en Liste Noire",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user