Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
+10
-8
@@ -4,19 +4,21 @@
|
||||
1. [Check if the language isn't already in open ticket!](/language/)
|
||||
2. Check if the current translation is up-to-date!
|
||||
3. Can you edit/write JSON?
|
||||
4. [Have you read the documentation?](https://otdocs.dj-dj.be)
|
||||
|
||||
If there is translation missing & you can write json, then go to the next step!
|
||||
If there is translation missing, you go to the next step!
|
||||
|
||||
### Step 2: translating
|
||||
**RULES:**
|
||||
- Always upload to the [__`dev` branch!__](https://github.com/DJj123dj/open-ticket/tree/dev)
|
||||
- Always upload or create a pull request to the [__`dev` branch!__](https://github.com/DJj123dj/open-ticket/tree/dev)
|
||||
- Don't change anything else, except the translation you are adding!
|
||||
- Translations are checked before uploading, so don't write things that aren't specified in the json file
|
||||
- Always start translating from `english.json` or `custom.json`! Never from another language.
|
||||
|
||||
If you translate, you need to change 2 files! The first one is required, the other one is optional & will be added by us if you don't do it!
|
||||
If you translate, you need to change 2 files! The first one is required, the other 2 are optional & will be added by us if you don't do it!
|
||||
1. add `yourlanguage.json` to the `/language/` directory
|
||||
2. (OPTIONAL) add your discord name & tag in the translator table in `README.md`
|
||||
2. add your username to the `_CREDITS` part of `yourlanguage.json`!
|
||||
3. add your discord username in the translator table in `README.md`
|
||||
|
||||
### Step 3: waiting
|
||||
Translations will always be added in the **next version** of Open Ticket! They will never be added to the `main` branch directly without anything else! This means that it can take some time before your translation is in the official version!
|
||||
@@ -28,15 +30,15 @@ But don't worry! You can already write some plugins!
|
||||
**RULES:**
|
||||
- Always specify the versions that the plugin is compatible with!
|
||||
- If extra npm dependencies are needed, then they also need to be specified!
|
||||
- If there are errors while you write a plugin/edit the code in some way. Then we can't help you with fixing the bug. We only fix bugs that are part of an unedited version of Open Ticket!
|
||||
- If there are errors while you write a plugin/edit the code in some way. Then we can't help you with fixing the bug. We only fix bugs that are part of the original unedited version of Open Ticket!
|
||||
|
||||
## Other versions of contributing
|
||||
If you want to contribute in another way, feel free to join [our discord server](https://discord.dj-dj.be) & talk about how you are going to do it. We will always help you!
|
||||
If you want to contribute in another way, feel free to join [our discord server](https://discord.dj-dj.be) & talk about how you are going to do it. We will always help you further!
|
||||
|
||||
<br>
|
||||
CONTRIBUTING GUIDELINES - Last updated: 23/3/2023<br>
|
||||
CONTRIBUTING GUIDELINES - Last updated: 31/5/2024<br>
|
||||
© DJdj Development<br><br>
|
||||
Website: https://www.dj-dj.be <br>
|
||||
Discord: https://discord.dj-dj.be <br>
|
||||
Email: support@dj-dj.be <br>
|
||||
Open Ticket website: https://openticket.dj-dj.be
|
||||
Documentation: https://otdocs.dj-dj.be
|
||||
@@ -0,0 +1 @@
|
||||
github: DJj123dj
|
||||
+21
-22
@@ -1,39 +1,38 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
Below, you can find a list with the status of every open ticket version. This list will change every update!
|
||||
|
||||
Support for Open Ticket is only available for the versions specified below!
|
||||
- ✅ Supported **(bugs, errors, discord support, documentation, html transcripts)**
|
||||
- 🟧 Deprecated / Partially Supported **(discord support, documentation, html transcripts)**
|
||||
- ❌ Fully Deprecated / Not Supported **(sometimes documentation)**
|
||||
|
||||
✅ Supported
|
||||
🟧 Partially Supported
|
||||
❌ Not Supported
|
||||
|
||||
| Version | Supported |
|
||||
|-----------|-------------------|
|
||||
| 3.4.1 | ✅ |
|
||||
| 3.4.0 | ✅ |
|
||||
| 3.3.3 | 🟧 |
|
||||
| < 3.3.3 | ❌ |
|
||||
| Version | Supported | Until |
|
||||
|-----------|-----------|-----------------------------|
|
||||
| 3.5.8 | ✅ | |
|
||||
| 3.5.7 | ✅ | September 2024 |
|
||||
| 3.5.6 | 🟧 | September 2024 |
|
||||
| < 3.5.6 | ❌ | |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
You can report Vulnerabilities, errors & bugs in the following ways:
|
||||
You can report Vulnerabilities, Errors & Bugs using one of the methods below:
|
||||
- Create an issue on github
|
||||
- Create a ticket in our [discord server](https://discord.dj-dj.be)
|
||||
- Report the bug in DM on discord (djj123dj)
|
||||
- Email [support@dj-dj.be](mailto:support@dj-dj.be)
|
||||
|
||||
- Creating an issue on github
|
||||
- Creating a ticket in our discord server
|
||||
- Reporting the bug in DM on discord (DJj123dj#1706)
|
||||
- Emailing support@dj-dj.be
|
||||
|
||||
If your report an error, be clear about what is going on.
|
||||
Specify the version & language of the bot together with when the error happend. (for example: when I click the close button)
|
||||
Send screenshots from the error if possible, and send openticketdebug.txt (or a screenshot of it) to us.
|
||||
Don't just report the error and never reply again! It can be possible that we need you for more information!
|
||||
While reporting your problem, please be clear about what the problem is.
|
||||
We would like to know the issue in as much detail as possible.
|
||||
If possible, try to provide screenshots!
|
||||
The `openticketdebug.txt` file would also be handy to upload!<br>
|
||||
**Always specify the version of open ticket that you are working with and if you have modified it or not!**
|
||||
|
||||
## Contributing
|
||||
Visit [Contributing.md](/.github/CONTRIBUTING.md) for rules about translating & adding features!
|
||||
|
||||
<br>
|
||||
SECURITY POLICY - Last updated: 23/3/2023<br>
|
||||
SECURITY POLICY - Last updated: 2/8/2024<br>
|
||||
© DJdj Development<br><br>
|
||||
Website: https://www.dj-dj.be <br>
|
||||
Discord: https://discord.dj-dj.be <br>
|
||||
|
||||
@@ -13,6 +13,7 @@ storage/dynamicDB/
|
||||
storage/slashcmdEnabled.txt
|
||||
storage/database.json
|
||||
storage/tsdatabase.json
|
||||
storage/stats.json
|
||||
storage/.DS_Store
|
||||
.vscode/
|
||||
livestatus.json
|
||||
|
||||
@@ -1,71 +1,110 @@
|
||||
<img src="https://www.dj-dj.be/wp-content/uploads/2023/02/open-ticket-cropped.png" alt="Open Ticket" width="600px">
|
||||
# Coming Soon: OPEN TICKET v4.0 Beta 🎉
|
||||
Open Ticket v4 beta will be released **in a few weeks!** So stay tuned!
|
||||
|
||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v3.4.1) []() [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [](https://docs.openticket.dj-dj.be)
|
||||
What is Open Ticket v4? Well, it's a complete rewrite of Open Ticket with the main focus being "plugins".
|
||||
There will be massive stability & speed improvements! Hundreds of new features! And obviously very powerful plugins!
|
||||
Plugins will be 100x better and advanced than the current system!
|
||||
<hr>
|
||||
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket" width="600px">
|
||||
|
||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v3.5.8) []() [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [](https://otdocs.dj-dj.be)
|
||||
|
||||
### Open Ticket
|
||||
Open Ticket is the most customisable discord ticket bot that you will ever find! There are more than 150 options to customise in the config! This includes html transcripts, unlimited amount of tickets, custom embeds & more! Did you know that even the html transcripts are highly customisable? Don't wait and check it out! If you're having trouble setting the bot up, feel free to join our support server and we will help you further!
|
||||
Open Ticket is the most customisable discord ticket bot that you will ever find on Github! There are more than 150+ options to configure! This includes html transcripts, claiming, unlimited tickets, custom embeds & more! Did you know that even the transcripts are highly customisable? Don't wait and check it out! If you're having trouble setting the bot up, feel free to join our support server and we will help you further!
|
||||
|
||||
Take a look at all the features and discover the possibilities!
|
||||
### [Documentation](https://docs.openticket.dj-dj.be/quick-start)
|
||||
### [📚 Read The Documentation!](https://otdocs.dj-dj.be/)
|
||||
### [🎥 Or Watch The YouTube Tutorial!](https://www.youtube.com/watch?v=2jK9kAf6ASU)
|
||||
[](https://www.youtube.com/watch?v=2jK9kAf6ASU)
|
||||
|
||||
## Features
|
||||
- **🎉 NEW! html transcripts V2!**
|
||||
- 🔒 close, ❌ delete & ✅ re-open tickets
|
||||
- 🇬🇧 translation in 19 different languages
|
||||
- 📄 very advanced customisation
|
||||
- 🆗 buttons or 🔽 dropdowns!
|
||||
- 🆒 plugins
|
||||
- ∞ unlimited tickets & unlimited messages
|
||||
- ➕➖ add/remove users from a ticket
|
||||
- /slash & text commands
|
||||
## 📌 Features
|
||||
- **🎉 html transcripts** - Make use of the most customisable, beautiful and easy-to-use HTML Transcripts!
|
||||
- **✅ ticket actions** - Close, Re-Open, Delete, Rename & Move all your tickets!
|
||||
- **🇬🇧 translation** - Open Ticket has been translated in more than **33 languages** by our community!
|
||||
- **🎨 customisation** - Open Ticket has been created around customisation, everything can be customised!
|
||||
- **🖥️ interactions** - The bot has full support for Buttons, Dropdowns, Slash Commands and Modals!
|
||||
- **∞ unlimited everywhere** - Create an infinite amount of tickets & panels!
|
||||
- **📝 custom plugins** - Create the most advanced plugins that you want or use premade ones by our community!
|
||||
- **👥 user management** - Add & Remove users from all tickets!
|
||||
- **📊 detailed stats** - Open Ticket has ticket, user & global staticstics available for everyone!
|
||||
- **📦 commands** Open Ticket supports both Slash Commands & Text Commands!
|
||||
- **📥 extra types** - The bot also supports Reaction Roles & Url Buttons, because why not ¯\\_(ツ)_/¯
|
||||
- **🎛️ dependencies** - We try to use as little external dependencies as needed!
|
||||
|
||||
<details>
|
||||
<summary><b>Click here for even more features!</b></summary>
|
||||
## 📸 Preview
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/message_buttons.png" alt="Message with buttons" width="350px">
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/message_dropdown.png" alt="Message with dropdown" width="350px">
|
||||
<br>
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/firstmsg.png" alt="Ticket start message" width="350px">
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/command_close.png" alt="Ticket start message" width="350px">
|
||||
|
||||
## ❤️ Sponsors
|
||||
A big thanks to all our sponsors! Without them, it wouldn't be possible to create this project!
|
||||
|
||||
- very customisable
|
||||
- close tickets with reason
|
||||
- also includes reaction roles!
|
||||
- discord interaction buttons
|
||||
- discord.js 14
|
||||
</details>
|
||||
|<img src="https://github.com/SpyEye2.png" alt="Profile Picture" width="80px"></img>|<img src="https://github.com/DOSEV5.png" alt="Profile Picture" width="80px"></img>|<img src="https://github.com/mods-hd.png" alt="Profile Picture" width="80px"></img>|
|
||||
|----|-|-|
|
||||
|**[SpyEye](https://github.com/SpyEye2)**|**[DOSEV5](https://github.com/DOSEV5)**|**[Mods HD](https://github.com/mods-hd)**|
|
||||
|
||||
## preview
|
||||
Images coming soon<br>
|
||||
You can already see some images at our [documentation!](https://docs.openticket.dj-dj.be)
|
||||
*Do you also want to be in this list? Don't wait & sponsor us now! 😄*
|
||||
|
||||
## 🛠️ Contributors
|
||||
### Official Team
|
||||
|Role |User (discord name)|
|
||||
|-------------------|-------------------|
|
||||
|🖥️ Lead Developer |djj123dj |
|
||||
|👥 Support Team |sankedev |
|
||||
|
||||
## credits
|
||||
DJdj Development Team
|
||||
|Main Developer|Developer |Support Team|Designer|
|
||||
|--------------|------------|-----------|---------|
|
||||
|djj123dj |sankedev |DJ-Lite |vuur_draak|
|
||||
### Translators
|
||||
|Language |Maintainer (discord name) |Status |
|
||||
|---------------------|--------------------------|---------------|
|
||||
|🇬🇧 English |djj123dj |🟢 Up To Date |
|
||||
|🇳🇱 Dutch |djj123dj |🟢 Up To Date |
|
||||
|🇫🇷 French |sankedev & tostam |🟢 Up To Date |
|
||||
|🇷🇴 Romanian |sankedev |🟢 Up To Date |
|
||||
|🇪🇸 Spanish |redactado & josuens |🟢 Up To Date |
|
||||
|🇩🇪 German |david.3 |🟢 Up To Date |
|
||||
|🇮🇹 Italian |maurizio26 |🟢 Up To Date |
|
||||
|🇨🇿 Czech |spyeye_ |🟢 Up To Date |
|
||||
|🇦🇪 Arabic |deqressing |🟢 Up To Date |
|
||||
|🇩🇰 Danish |.the_gamer |🟢 Up To Date |
|
||||
|🇵🇹 Portuguese |quiradon |🟢 Up To Date |
|
||||
|🇷🇺 Russian |apexo & ander |🟢 Up To Date |
|
||||
|🇺🇦 Ukrainian |ander |🟢 Up To Date |
|
||||
|🇹🇷 Turkish |0x15d3 |🟢 Up To Date |
|
||||
|🇵🇱 Polish |mkevas |🟢 Up To Date |
|
||||
|🇸🇮 Slovenian |n1kkec |🔴 Outdated |
|
||||
|🇹🇭 Thai |modshd |🟢 Up To Date |
|
||||
|🇳🇴 Norwegian |noonenook |🟢 Up To Date |
|
||||
|🇬🇷 Greek |stefanos__. |🔴 Outdated |
|
||||
|🇮🇩 Indonesian |erxg |🟢 Up To Date |
|
||||
|❓ Kurdish |raze.hama |🟢 Up To Date |
|
||||
|🇭🇺 Hungarian |kornel0706 |🟢 Up To Date |
|
||||
|❓ Persian |sasanwm |🟢 Up To Date |
|
||||
|🇱🇻 Latvian |ronalds1398 |🟢 Up To Date |
|
||||
|🇪🇪 Estonian |iamnotmega |🟢 Up To Date |
|
||||
|🇯🇵 Japanese |iamnotmega |🟢 Up To Date |
|
||||
|🇰🇷 Korean |iamnotmega |🟢 Up To Date |
|
||||
|🇨🇳 Simplified Chinese |iamnotmega |🟢 Up To Date |
|
||||
|🇨🇳 Traditional Chinese|iamnotmega |🟢 Up To Date |
|
||||
|🇫🇮 Finnish |iamnotmega |🟢 Up To Date |
|
||||
|🇸🇪 Swedish |iamnotmega |🟢 Up To Date |
|
||||
|🇻🇳 Vietnamese |iamnotmega |🟢 Up To Date |
|
||||
|
||||
Translators
|
||||
|Language |Translator |
|
||||
|--------------|-------------------------|
|
||||
|Dutch |djj123dj |
|
||||
|Romanian |sankedev |
|
||||
|French |sankedev |
|
||||
|Spanish |redactado & josuens |
|
||||
|German |david.3 |
|
||||
|Italian |maurizio26 |
|
||||
|Czech |t0miiis#3022 |
|
||||
|Arabic |Sarcastic#9318 |
|
||||
|Danish |.the_gamer |
|
||||
|Portuguese |quiradon |
|
||||
|Russian |apexo |
|
||||
|Turkish |Hydra#0009 |
|
||||
|Polish |mkevas |
|
||||
|Slovenian |n1kkec |
|
||||
|Thai |modshd |
|
||||
|Norwegian |noonenook |
|
||||
|Greek |stefanos#5739 |
|
||||
|Ukrainian |anderskiy |
|
||||
## ⭐️ Star History
|
||||
Please help us grow by giving a star! It would help us a lot!
|
||||
|
||||
## links
|
||||
current version: _v3.4.1_
|
||||
</br>changelog: [click here](https://docs.openticket.dj-dj.be/other/changelog)
|
||||
</br>documentation: [click here](https://docs.openticket.dj-dj.be/quick-start)
|
||||
<a href="https://star-history.com/#DJj123dj/open-ticket&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=DJj123dj/open-ticket&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=DJj123dj/open-ticket&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=DJj123dj/open-ticket&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
© 2023 - DJdj Development | [website](https://www.dj-dj.be) | [discord](https://discord.dj-dj.be) | [terms of service](https://www.dj-dj.be/terms)
|
||||
## 📎 Links
|
||||
current version: _v3.5.8_
|
||||
</br>Changelog: [click here](https://otgithub.dj-dj.be/releases)
|
||||
</br>Documentation: [click here](https://otdocs.dj-dj.be/)
|
||||
|
||||
© 2024 - DJdj Development | [website](https://www.dj-dj.be) | [discord](https://discord.dj-dj.be) | [terms of service](https://www.dj-dj.be/terms#terms) | [privacy policy](https://www.dj-dj.be/terms#privacy)
|
||||
+33
-13
@@ -18,16 +18,26 @@ module.exports = () => {
|
||||
if (!user) return msg.channel.send({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<user>`:\n`"+config.prefix+"add <user>`")]})
|
||||
|
||||
if (!msg.guild) return
|
||||
if (!permsChecker.command(msg.author.id,msg.guild.id)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
|
||||
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
msg.channel.permissionOverwrites.create(user.id, { ViewChannel:true, AddReactions:true,AttachFiles:true, EmbedLinks:true, SendMessages:true})
|
||||
if (!permsChecker.ticket(msg.author.id,msg.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
/**@type {discord.PermissionOverwriteManager} */
|
||||
const overwrites = msg.channel.permissionOverwrites
|
||||
overwrites.create(user.id,{
|
||||
ViewChannel:true,
|
||||
AddReactions:true,
|
||||
AttachFiles:true,
|
||||
EmbedLinks:true,
|
||||
SendMessages:true,
|
||||
ReadMessageHistory:true
|
||||
},{reason:"Added user to ticket."})
|
||||
msg.channel.send({embeds:[bot.embeds.commands.addEmbed(user,msg.author)]})
|
||||
|
||||
var loguser = msg.mentions.users.first()
|
||||
@@ -37,7 +47,7 @@ module.exports = () => {
|
||||
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
|
||||
APIEvents.onTicketAdd(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
|
||||
|
||||
APIEvents.onCommand("add",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
APIEvents.onCommand("add",permsChecker.ticket(msg.author.id,msg.guild.id,ticketId),msg.author,msg.channel,msg.guild,new Date())
|
||||
})
|
||||
|
||||
if (!DISABLE.commands.slash.add) client.on("interactionCreate",async (interaction) => {
|
||||
@@ -46,18 +56,28 @@ module.exports = () => {
|
||||
const user = interaction.options.getUser("user")
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return
|
||||
}
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
interaction.channel.permissionOverwrites.create(user.id, { ViewChannel:true, AddReactions:true,AttachFiles:true, EmbedLinks:true, SendMessages:true})
|
||||
/**@type {discord.PermissionOverwriteManager} */
|
||||
const overwrites = interaction.channel.permissionOverwrites
|
||||
overwrites.create(user.id,{
|
||||
ViewChannel:true,
|
||||
AddReactions:true,
|
||||
AttachFiles:true,
|
||||
EmbedLinks:true,
|
||||
SendMessages:true,
|
||||
ReadMessageHistory:true
|
||||
},{reason:"Added user to ticket."})
|
||||
interaction.editReply({embeds:[bot.embeds.commands.addEmbed(user,interaction.user)]})
|
||||
|
||||
var loguser = user
|
||||
@@ -66,7 +86,7 @@ module.exports = () => {
|
||||
|
||||
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
|
||||
APIEvents.onTicketAdd(interaction.user,loguser,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
|
||||
APIEvents.onCommand("add",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
APIEvents.onCommand("add",permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
|
||||
})
|
||||
}
|
||||
+45
-29
@@ -14,26 +14,34 @@ module.exports = () => {
|
||||
|
||||
if (!DISABLE.commands.text.change) client.on("messageCreate", async msg => {
|
||||
if (!msg.content.startsWith(config.prefix+"change")) return
|
||||
if (!msg.channel.isTextBased()) return
|
||||
|
||||
if (!msg.guild) return
|
||||
if (!permsChecker.command(msg.author.id,msg.guild.id)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
|
||||
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(msg.author.id,msg.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
const list = []
|
||||
config.options.forEach((o) => list.push(o.id))
|
||||
config.options.forEach((o) => {
|
||||
if (o.type == "ticket") list.push(o.id)
|
||||
})
|
||||
|
||||
var newtype = msg.content.split(config.prefix+"change")[1].substring(1)
|
||||
if (!newtype) return msg.channel.send({embeds:[bot.errorLog.invalidIdChooseFromList(list,l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]})
|
||||
|
||||
const newTicket = require("../core/utils/configParser").getTicketById(newtype)
|
||||
const newTicket = require("../core/utils/configParser").getTicketById(newtype,true)
|
||||
if (!newTicket) return msg.channel.send({embeds:[bot.errorLog.invalidIdChooseFromList(list,l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]})
|
||||
|
||||
/**@type {discord.PermissionOverwriteManager} */
|
||||
const prePermsManager = msg.channel.permissionOverwrites
|
||||
const prePerms = prePermsManager.cache
|
||||
|
||||
/**@type {String} */
|
||||
var chName = msg.channel.name
|
||||
const splitted = chName.split("-")
|
||||
@@ -45,31 +53,46 @@ module.exports = () => {
|
||||
if (parent && parent.type == discord.ChannelType.GuildCategory) msg.channel.setParent(parent)
|
||||
}
|
||||
|
||||
msg.channel.setName(newTicket.channelprefix+name)
|
||||
prePermsManager.set(prePerms)
|
||||
msg.channel.setName(newTicket.channelprefix+name).catch(() => {
|
||||
msg.channel.send({embeds:[bot.errorLog.failedRenameChannel]})
|
||||
})
|
||||
|
||||
hiddendata.find((value,index) => {
|
||||
if (value.key == "type"){
|
||||
hiddendata[index] = {key:"type",value:newtype}
|
||||
}
|
||||
})
|
||||
|
||||
msg.channel.send({embeds:[bot.embeds.commands.changeEmbed(msg.author,newtype)]})
|
||||
|
||||
log("command","someone used the 'change' command",[{key:"user",value:msg.author.username}])
|
||||
log("system","ticket type changed",[{key:"user",value:msg.author.username},{key:"ticket",value:name},{key:"newtype",value:newtype}])
|
||||
APIEvents.onCommand("change",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
APIEvents.onCommand("change",permsChecker.ticket(msg.author.id,msg.guild.id,ticketId),msg.author,msg.channel,msg.guild,new Date())
|
||||
})
|
||||
|
||||
if (!DISABLE.commands.slash.change) client.on("interactionCreate",async (interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "change") return
|
||||
if (!interaction.channel.isTextBased()) return
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return
|
||||
}
|
||||
|
||||
await interaction.deferReply()
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
const list = []
|
||||
config.options.forEach((o) => list.push(o.id))
|
||||
config.options.forEach((o) => {
|
||||
if (o.type == "ticket") list.push(o.id)
|
||||
})
|
||||
|
||||
var newtype = interaction.options.getString("type",true)
|
||||
const newTicket = require("../core/utils/configParser").getTicketById(newtype,true)
|
||||
@@ -91,28 +114,21 @@ module.exports = () => {
|
||||
if (parent && parent.type == discord.ChannelType.GuildCategory) interaction.channel.setParent(parent)
|
||||
}
|
||||
|
||||
await prePermsManager.set(prePerms)
|
||||
interaction.channel.setName(newTicket.channelprefix+name)
|
||||
|
||||
var newHiddendata = hiddendata.data
|
||||
newHiddendata.find((value,index) => {
|
||||
if (value.key == "type"){
|
||||
newHiddendata[index] = {key:"type",value:newtype}
|
||||
}
|
||||
prePermsManager.set(prePerms)
|
||||
interaction.channel.setName(newTicket.channelprefix+name).catch(() => {
|
||||
interaction.channel.send({embeds:[bot.errorLog.failedRenameChannel]})
|
||||
})
|
||||
|
||||
const prevDescription = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description).description
|
||||
const newData = bot.hiddenData.writeHiddenData("ticketdata",newHiddendata)
|
||||
const newDescription = prevDescription+newData
|
||||
const newEmbed = new discord.EmbedBuilder(firstmsg.embeds[0].data)
|
||||
.setDescription(newDescription)
|
||||
|
||||
firstmsg.edit({embeds:[newEmbed]})
|
||||
hiddendata.find((value,index) => {
|
||||
if (value.key == "type"){
|
||||
hiddendata[index] = {key:"type",value:newtype}
|
||||
}
|
||||
})
|
||||
|
||||
interaction.editReply({embeds:[bot.embeds.commands.changeEmbed(interaction.user,newtype)]})
|
||||
|
||||
log("command","someone used the 'change' command",[{key:"user",value:interaction.user.username}])
|
||||
log("system","ticket type changed",[{key:"user",value:interaction.user.username},{key:"ticket",value:name},{key:"newtype",value:newtype}])
|
||||
APIEvents.onCommand("change",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
APIEvents.onCommand("change",permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
})
|
||||
}
|
||||
+20
-13
@@ -14,26 +14,31 @@ const DISABLE = require("../core/api/api.json").disable
|
||||
module.exports = () => {
|
||||
bot.errorLog.log("debug","COMMANDS: loaded claim.js")
|
||||
|
||||
if (!DISABLE.commands.text.claim) client.on("messageCreate",msg => {
|
||||
if (!DISABLE.commands.text.claim) client.on("messageCreate", async msg => {
|
||||
if (!msg.content.startsWith(config.prefix+"claim")) return
|
||||
var user = msg.mentions.users.first()
|
||||
|
||||
const claimingUser = user ? user : msg.author
|
||||
|
||||
if (!msg.guild) return
|
||||
if (!permsChecker.command(msg.author.id,msg.guild.id)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
|
||||
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(msg.author.id,msg.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
hiddendata.push({key:"claimedby",value:claimingUser.id})
|
||||
bot.hiddenData.writeHiddenData(msg.channel.id,hiddendata)
|
||||
storage.set("claimData",msg.channel.id,claimingUser.id)
|
||||
|
||||
await 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 newEmbed = new embed(firstmsg.embeds[0].data)
|
||||
.setFooter({text:"claimed by: "+msg.author.username,iconURL:msg.author.displayAvatarURL()})
|
||||
|
||||
@@ -42,6 +47,7 @@ module.exports = () => {
|
||||
}else{
|
||||
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]})
|
||||
}
|
||||
})
|
||||
|
||||
msg.channel.send({embeds:[bot.embeds.commands.claimEmbed(claimingUser,msg.author)]})
|
||||
|
||||
@@ -50,7 +56,7 @@ module.exports = () => {
|
||||
|
||||
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
|
||||
APIEvents.onTicketClaim(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
|
||||
APIEvents.onCommand("claim",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
APIEvents.onCommand("claim",permsChecker.ticket(msg.author.id,msg.guild.id,ticketId),msg.author,msg.channel,msg.guild,new Date())
|
||||
})
|
||||
|
||||
if (!DISABLE.commands.slash.claim) client.on("interactionCreate",async (interaction) => {
|
||||
@@ -59,22 +65,23 @@ module.exports = () => {
|
||||
const user = interaction.options.getUser("user",false) ? interaction.options.getUser("user",true) : interaction.user
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return interaction.reply({content:":x: "+l.errors.noPermsTitle,ephemeral:true})
|
||||
}
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
hiddendata.push({key:"claimedby",value:user.id})
|
||||
bot.hiddenData.writeHiddenData(interaction.channel.id,hiddendata)
|
||||
storage.set("claimData",interaction.channel.id,user.id)
|
||||
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
await 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]})
|
||||
|
||||
@@ -95,6 +102,6 @@ module.exports = () => {
|
||||
|
||||
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
|
||||
APIEvents.onTicketClaim(interaction.user,user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
|
||||
APIEvents.onCommand("claim",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
APIEvents.onCommand("claim",permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
})
|
||||
}
|
||||
+4
-4
@@ -57,13 +57,13 @@ module.exports = () => {
|
||||
|
||||
const reason = interaction.options.getString("reason") ? interaction.options.getString("reason") : false
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (hiddendata.find(h => h.key == "pendingdelete")) return interaction.editReply({embeds:[bot.errorLog.warning("Warning!","You can't close a ticket while it's being deleted!")]})
|
||||
if (hiddendata.find(h => h.key == "pendingdelete")) return interaction.reply({embeds:[bot.errorLog.warning("Warning!","You can't close a ticket while it's being deleted!")]})
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
const descriptionReason = reason ? "**"+l.messages.reason+":** "+reason : false
|
||||
interaction.editReply({embeds:[bot.embeds.commands.closeEmbed(interaction.user,descriptionReason)],components:[bot.buttons.close.closeCommandRow]})
|
||||
|
||||
+13
-11
@@ -16,15 +16,16 @@ module.exports = () => {
|
||||
if (!msg.content.startsWith(config.prefix+"delete")) return
|
||||
|
||||
if (!msg.guild) return
|
||||
if (!permsChecker.command(msg.author.id,msg.guild.id)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
|
||||
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(msg.author.id,msg.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
msg.channel.send({embeds:[bot.embeds.commands.deleteEmbed(msg.author)]})
|
||||
|
||||
var name = msg.channel.name
|
||||
@@ -39,7 +40,7 @@ module.exports = () => {
|
||||
require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"delete",false,true)
|
||||
|
||||
log("command","someone used the 'delete' command",[{key:"user",value:msg.author.username}])
|
||||
APIEvents.onCommand("delete",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
APIEvents.onCommand("delete",permsChecker.ticket(msg.author.id,msg.guild.id,ticketId),msg.author,msg.channel,msg.guild,new Date())
|
||||
|
||||
})
|
||||
|
||||
@@ -48,17 +49,18 @@ module.exports = () => {
|
||||
if (interaction.commandName != "delete") return
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return interaction.reply({embeds:[bot.errorLog.noPermsDelete(interaction.user)]})
|
||||
}
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
interaction.editReply({embeds:[bot.embeds.commands.deleteEmbed(interaction.user)]})
|
||||
|
||||
var name = interaction.channel.name
|
||||
@@ -73,6 +75,6 @@ module.exports = () => {
|
||||
require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"delete",false,true)
|
||||
|
||||
log("command","someone used the 'delete' command",[{key:"user",value:interaction.user.username}])
|
||||
APIEvents.onCommand("delete",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
APIEvents.onCommand("delete",permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
})
|
||||
}
|
||||
+3
-2
@@ -21,7 +21,8 @@ module.exports = () => {
|
||||
const header = l.helpMenu.header2
|
||||
helpEmbed.setDescription(header+"`"+prefix+msgName+" <id>` ➜ _"+l.helpMenu.msgCmd+"_\n\n`"+prefix+"rename <name>` ➜ _"+l.helpMenu.renameCmd+"_\n`"+prefix+"close [reason]` ➜ _"+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+"_\n\n`"+prefix+"change <newtype>` ➜ _"+l.helpMenu.changeCmd+"_\n`"+prefix+"claim [user]` ➜ _"+l.helpMenu.claimCmd+"_\n`"+prefix+"unclaim` ➜ _"+l.helpMenu.unclaimCmd+"_")
|
||||
helpEmbed.addFields([
|
||||
{name:"Autoclose",value:l.helpMenu.autocloseCmd+"\n`"+prefix+"autoclose enable <inactive time>`\n`"+prefix+"autoclose disable`"}
|
||||
{name:"Autoclose",value:l.helpMenu.autocloseCmd+"\n`"+prefix+"autoclose enable <inactive time>`\n`"+prefix+"autoclose disable`"},
|
||||
{name:"Stats",value:"Get statistics from the bot"+"\n`"+prefix+"stats global`\n`"+prefix+"stats ticket`\n`"+prefix+"stats user [user]`"}
|
||||
])
|
||||
|
||||
var otherprefix = prefix.endsWith(" ") ? prefix.substring(0,prefix.length-1) : prefix
|
||||
@@ -38,7 +39,7 @@ module.exports = () => {
|
||||
}
|
||||
|
||||
if (args[1]){
|
||||
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")){
|
||||
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") && !args[1].startsWith("change") && !args[1].startsWith("claim") && !args[1].startsWith("unclaim") && !args[1].startsWith("stats")){
|
||||
msg.channel.send({embeds:[helpEmbed]})
|
||||
log("command","someone used the 'help' command",[{key:"user",value:msg.author.username}])
|
||||
APIEvents.onCommand("help",true,msg.author,msg.channel,msg.guild,new Date())
|
||||
|
||||
+19
-13
@@ -18,16 +18,19 @@ module.exports = () => {
|
||||
if (!user) return msg.channel.send({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<user>`:\n`"+config.prefix+"remove <user>`")]})
|
||||
|
||||
if (!msg.guild) return
|
||||
if (!permsChecker.command(msg.author.id,msg.guild.id)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
|
||||
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
msg.channel.permissionOverwrites.delete(user.id)
|
||||
if (!permsChecker.ticket(msg.author.id,msg.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
/**@type {discord.PermissionOverwriteManager} */
|
||||
const overwrites = msg.channel.permissionOverwrites
|
||||
overwrites.delete(user.id,"Removed user from ticket.")
|
||||
msg.channel.send({embeds:[bot.embeds.commands.removeEmbed(user,msg.author)]})
|
||||
|
||||
var loguser = msg.mentions.users.first()
|
||||
@@ -37,7 +40,7 @@ module.exports = () => {
|
||||
|
||||
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
|
||||
APIEvents.onTicketRemove(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
|
||||
APIEvents.onCommand("remove",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
APIEvents.onCommand("remove",permsChecker.ticket(msg.author.id,msg.guild.id,ticketId),msg.author,msg.channel,msg.guild,new Date())
|
||||
})
|
||||
|
||||
if (!DISABLE.commands.slash.remove) client.on("interactionCreate",async (interaction) => {
|
||||
@@ -46,18 +49,21 @@ module.exports = () => {
|
||||
const user = interaction.options.getUser("user")
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return
|
||||
}
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
interaction.channel.permissionOverwrites.delete(user.id)
|
||||
/**@type {discord.PermissionOverwriteManager} */
|
||||
const overwrites = interaction.channel.permissionOverwrites
|
||||
overwrites.delete(user.id,"Removed user from ticket.")
|
||||
interaction.editReply({embeds:[bot.embeds.commands.removeEmbed(user,interaction.user)]})
|
||||
|
||||
var loguser = user
|
||||
@@ -67,6 +73,6 @@ module.exports = () => {
|
||||
|
||||
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
|
||||
APIEvents.onTicketRemove(interaction.user,loguser,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
|
||||
APIEvents.onCommand("remove",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
APIEvents.onCommand("remove",permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
})
|
||||
}
|
||||
+13
-11
@@ -16,15 +16,16 @@ module.exports = () => {
|
||||
if (!msg.content.startsWith(config.prefix+"rename")) return
|
||||
|
||||
if (!msg.guild) return
|
||||
if (!permsChecker.command(msg.author.id,msg.guild.id)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
|
||||
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(msg.author.id,msg.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
|
||||
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>`")]})
|
||||
@@ -44,7 +45,7 @@ module.exports = () => {
|
||||
|
||||
log("command","someone used the 'rename' command",[{key:"user",value:msg.author.username}])
|
||||
log("system","ticket renamed",[{key:"user",value:msg.author.username},{key:"ticket",value:name},{key:"newname",value:newname}])
|
||||
APIEvents.onCommand("rename",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
APIEvents.onCommand("rename",permsChecker.ticket(msg.author.id,msg.guild.id,ticketId),msg.author,msg.channel,msg.guild,new Date())
|
||||
})
|
||||
|
||||
if (!DISABLE.commands.slash.rename) client.on("interactionCreate",async (interaction) => {
|
||||
@@ -52,17 +53,18 @@ module.exports = () => {
|
||||
if (interaction.commandName != "rename") return
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return
|
||||
}
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
var newname = interaction.options.getString("name")
|
||||
var name = interaction.channel.name
|
||||
var prefix = ""
|
||||
@@ -81,6 +83,6 @@ module.exports = () => {
|
||||
log("command","someone used the 'rename' command",[{key:"user",value:interaction.user.username}])
|
||||
log("system","ticket renamed",[{key:"user",value:interaction.user.username},{key:"ticket",value:name},{key:"newname",value:newname}])
|
||||
|
||||
APIEvents.onCommand("rename",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
APIEvents.onCommand("rename",permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
})
|
||||
}
|
||||
+6
-6
@@ -23,7 +23,7 @@ module.exports = () => {
|
||||
|
||||
msg.channel.send({embeds:[bot.embeds.commands.reopenEmbed(msg.author)],components:[bot.buttons.close.openRowNormal]})
|
||||
|
||||
require("../core/ticketActions/ticketReopener").reopenTicket(msg.guild,msg.channel,msg.author)
|
||||
require("../core/ticketActions/ticketReopener").reopenTicket(msg.guild,msg.channel,msg.author,ticketId)
|
||||
|
||||
log("command","someone used the 'reopen' command",[{key:"user",value:msg.author.username}])
|
||||
APIEvents.onCommand("reopen",true,msg.author,msg.channel,msg.guild,new Date())
|
||||
@@ -33,17 +33,17 @@ module.exports = () => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "reopen") return
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (hiddendata.find(h => h.key == "pendingdelete")) return interaction.editReply({embeds:[bot.errorLog.warning("Warning!","You can't re-open a ticket while it's being deleted!")]})
|
||||
if (hiddendata.find(h => h.key == "pendingdelete")) return interaction.reply({embeds:[bot.errorLog.warning("Warning!","You can't re-open a ticket while it's being deleted!")]})
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
await interaction.editReply({embeds:[bot.embeds.commands.reopenEmbed(interaction.user)],components:[bot.buttons.close.openRowNormal]})
|
||||
|
||||
require("../core/ticketActions/ticketReopener").reopenTicket(interaction.guild,interaction.channel,interaction.user)
|
||||
require("../core/ticketActions/ticketReopener").reopenTicket(interaction.guild,interaction.channel,interaction.user,ticketId)
|
||||
|
||||
log("command","someone used the 'reopen' command",[{key:"user",value:interaction.user.username}])
|
||||
APIEvents.onCommand("reopen",true,interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
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 permsChecker = require("../core/utils/permisssionChecker")
|
||||
|
||||
const APIEvents = require("../core/api/modules/events")
|
||||
const DISABLE = require("../core/api/api.json").disable
|
||||
|
||||
module.exports = () => {
|
||||
bot.errorLog.log("debug","COMMANDS: loaded stats.js")
|
||||
|
||||
if (!DISABLE.commands.text.stats) client.on("messageCreate",async (msg) => {
|
||||
if (!msg.content.startsWith(config.prefix+"stats global") && !msg.content.startsWith(config.prefix+"stats ticket") && !msg.content.startsWith(config.prefix+"stats user")) return
|
||||
if (!msg.guild) return
|
||||
|
||||
/**@type {"global"|"ticket"|"user"} */
|
||||
const mode = msg.content.split(config.prefix+"stats ")[1]
|
||||
|
||||
if (mode == "global"){
|
||||
//send global stats
|
||||
msg.channel.send({embeds:[await bot.statsManager.createGlobalStatsEmbed()]})
|
||||
|
||||
}else if (mode == "user"){
|
||||
//send user stats
|
||||
const mention = msg.mentions.users.first()
|
||||
if (mention){
|
||||
//get user from mention
|
||||
if (!bot.statsManager.existStats("user","TICKETS_CREATED",mention.id)){
|
||||
msg.channel.send({embeds:[bot.errorLog.serverError(l.stats.errorUserNotFound)]})
|
||||
return
|
||||
}
|
||||
msg.channel.send({embeds:[await bot.statsManager.createUserStatsEmbed(msg.guild,mention,msg.channel.id)]})
|
||||
}else{
|
||||
//use author as user
|
||||
if (!bot.statsManager.existStats("user","TICKETS_CREATED",msg.author.id)){
|
||||
msg.channel.send({embeds:[bot.errorLog.serverError(l.stats.errorUserNotFound)]})
|
||||
return
|
||||
}
|
||||
msg.channel.send({embeds:[await bot.statsManager.createUserStatsEmbed(msg.guild,msg.author,msg.channel.id)]})
|
||||
}
|
||||
|
||||
}else if (mode == "ticket"){
|
||||
//send ticket stats
|
||||
if (!bot.statsManager.existStats("ticket","STATUS",msg.channel.id)){
|
||||
msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
return
|
||||
}
|
||||
msg.channel.send({embeds:[await bot.statsManager.createTicketStatsEmbed(msg.guild,msg.channel.id)]})
|
||||
}
|
||||
|
||||
log("command","someone used the 'stats' command",[{key:"user",value:msg.author.username},{key:"mode",value:mode}])
|
||||
APIEvents.onCommand("stats",true,msg.author,msg.channel,msg.guild,new Date())
|
||||
})
|
||||
|
||||
if (!DISABLE.commands.slash.stats) client.on("interactionCreate",async (interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return
|
||||
if (interaction.commandName != "stats") return
|
||||
if (!interaction.guild) return
|
||||
|
||||
/**@type {"global"|"ticket"|"user"} */
|
||||
const mode = interaction.options.getSubcommand(true)
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
if (mode == "global"){
|
||||
//send global stats
|
||||
interaction.editReply({embeds:[await bot.statsManager.createGlobalStatsEmbed()]})
|
||||
|
||||
}else if (mode == "user"){
|
||||
//send user stats
|
||||
const mention = interaction.options.getUser("user",false)
|
||||
if (mention){
|
||||
//get user from mention
|
||||
if (!bot.statsManager.existStats("user","TICKETS_CREATED",mention.id)){
|
||||
interaction.editReply({embeds:[bot.errorLog.serverError(l.stats.errorUserNotFound)]})
|
||||
return
|
||||
}
|
||||
interaction.editReply({embeds:[await bot.statsManager.createUserStatsEmbed(interaction.guild,mention,interaction.channel.id)]})
|
||||
}else{
|
||||
//use author as user
|
||||
if (!bot.statsManager.existStats("user","TICKETS_CREATED",interaction.user.id)){
|
||||
interaction.editReply({embeds:[bot.errorLog.serverError(l.stats.errorUserNotFound)]})
|
||||
return
|
||||
}
|
||||
interaction.editReply({embeds:[await bot.statsManager.createUserStatsEmbed(interaction.guild,interaction.user,interaction.channel.id)]})
|
||||
}
|
||||
|
||||
}else if (mode == "ticket"){
|
||||
//send ticket stats
|
||||
if (!bot.statsManager.existStats("ticket","STATUS",interaction.channel.id)){
|
||||
interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
return
|
||||
}
|
||||
interaction.editReply({embeds:[await bot.statsManager.createTicketStatsEmbed(interaction.guild,interaction.channel.id)]})
|
||||
}
|
||||
|
||||
log("command","someone used the 'stats' command",[{key:"user",value:interaction.user.username},{key:"mode",value:mode}])
|
||||
APIEvents.onCommand("stats",true,interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
})
|
||||
}
|
||||
+4
-4
@@ -23,7 +23,7 @@ module.exports = () => {
|
||||
if (msg.content.startsWith(config.prefix+"msg"||config.prefix+"message")){
|
||||
|
||||
if (!msg.guild) return
|
||||
if (!permsChecker.command(msg.author.id,msg.guild.id)){
|
||||
if (!permsChecker.global(msg.author.id,msg.guild.id)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
@@ -39,7 +39,7 @@ module.exports = () => {
|
||||
msg.channel.send({embeds:[embed],components:componentRows})
|
||||
|
||||
log("command","someone used the 'message' command",[{key:"user",value:msg.author.username},{key:"id",value:id}])
|
||||
APIEvents.onCommand("message",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
APIEvents.onCommand("message",permsChecker.global(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
}
|
||||
})
|
||||
|
||||
@@ -48,7 +48,7 @@ module.exports = () => {
|
||||
if (interaction.commandName != "message") return
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
if (!permsChecker.global(interaction.user.id,interaction.guild.id)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return
|
||||
}
|
||||
@@ -64,7 +64,7 @@ module.exports = () => {
|
||||
|
||||
log("command","someone used the 'message' command",[{key:"user",value:interaction.user.username},{key:"id",value:id}])
|
||||
|
||||
APIEvents.onCommand("message",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
APIEvents.onCommand("message",permsChecker.global(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
|
||||
})
|
||||
}
|
||||
+14
-12
@@ -18,7 +18,12 @@ module.exports = () => {
|
||||
if (!msg.content.startsWith(config.prefix+"unclaim")) return
|
||||
|
||||
if (!msg.guild) return
|
||||
if (!permsChecker.command(msg.author.id,msg.guild.id)){
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
|
||||
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(msg.author.id,msg.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(msg.author)
|
||||
return
|
||||
}
|
||||
@@ -26,10 +31,6 @@ module.exports = () => {
|
||||
const unclaimuser = storage.get("claimData",msg.channel.id)
|
||||
if (!unclaimuser || unclaimuser == "false") return msg.channel.send({embeds:[bot.errorLog.serverError("This ticket isn't claimed yet!")]})
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(msg.channel.id)
|
||||
if (hiddendata.length < 1) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
hiddendata.push({key:"claimedby",value:"false"})
|
||||
bot.hiddenData.writeHiddenData(msg.channel.id,hiddendata)
|
||||
storage.set("claimData",msg.channel.id,"false")
|
||||
@@ -62,7 +63,7 @@ module.exports = () => {
|
||||
|
||||
|
||||
APIEvents.onTicketUnclaim(msg.author,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
|
||||
APIEvents.onCommand("unclaim",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
|
||||
APIEvents.onCommand("unclaim",permsChecker.ticket(msg.author.id,msg.guild.id,ticketId),msg.author,msg.channel,msg.guild,new Date())
|
||||
})
|
||||
})
|
||||
|
||||
@@ -71,7 +72,12 @@ module.exports = () => {
|
||||
if (interaction.commandName != "unclaim") return
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
interaction.reply({content:":x: "+l.errors.noPermsTitle,ephemeral:true})
|
||||
return
|
||||
@@ -82,10 +88,6 @@ module.exports = () => {
|
||||
const unclaimuser = storage.get("claimData",interaction.channel.id)
|
||||
if (!unclaimuser || unclaimuser == "false") return interaction.editReply({embeds:[bot.errorLog.serverError("This ticket isn't claimed yet!")]})
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
hiddendata.push({key:"claimedby",value:"false"})
|
||||
bot.hiddenData.writeHiddenData(interaction.channel.id,hiddendata)
|
||||
storage.set("claimData",interaction.channel.id,"false")
|
||||
@@ -117,7 +119,7 @@ module.exports = () => {
|
||||
log("system","user unclaimed from ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"unclaimed_user",value:unclaimuser}])
|
||||
|
||||
APIEvents.onTicketUnclaim(interaction.user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
|
||||
APIEvents.onCommand("unclaim",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
APIEvents.onCommand("unclaim",permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId),interaction.user,interaction.channel,interaction.guild,new Date())
|
||||
})
|
||||
})
|
||||
}
|
||||
+14
-15
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"_DOCUMENTATION":"https://otdocs.dj-dj.be",
|
||||
"_SUPPORT":"https://discord.dj-dj.be",
|
||||
|
||||
"color":"#ffffff",
|
||||
"serverId":"server id (for slash cmds)",
|
||||
"token":{
|
||||
@@ -28,10 +31,9 @@
|
||||
"answerInEphemeralOnOpen":true
|
||||
},
|
||||
|
||||
"SUPPORT":"Take look at our wiki: https://docs.openticket.dj-dj.be or join our discord server: https://discord.dj-dj.be if you need support!",
|
||||
"options":[
|
||||
{
|
||||
"id":"general",
|
||||
"id":"example-ticket",
|
||||
"name":"Question",
|
||||
"description":"Create this ticket if you have a question.",
|
||||
"icon":"🎫",
|
||||
@@ -53,7 +55,7 @@
|
||||
},
|
||||
"image":{
|
||||
"enable":false,
|
||||
"url":"https://www.dj-dj.be/wp-content/uploads/2022/09/pfp-cropped.png"
|
||||
"url":"https://www.example.com/catmemes/cat.png"
|
||||
},
|
||||
|
||||
"closedCategory":{
|
||||
@@ -74,10 +76,9 @@
|
||||
"roleId":"012345678910"
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"id":"website",
|
||||
"id":"example-website",
|
||||
"name":"Website",
|
||||
"description":"Go to our website.",
|
||||
"icon":"✅",
|
||||
@@ -85,33 +86,31 @@
|
||||
"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",
|
||||
"id":"example-role",
|
||||
"name":"Update Ping",
|
||||
"description":"Click here to get pinged for updates!",
|
||||
"icon":"📢",
|
||||
"label":"Update Ping",
|
||||
"type":"role",
|
||||
|
||||
"color":"red",
|
||||
"roles":["discord role id"],
|
||||
"mode":"add&remove|remove|add",
|
||||
"enableDmOnOpen":true
|
||||
|
||||
}
|
||||
],
|
||||
|
||||
"messages":[
|
||||
{
|
||||
"id":"1",
|
||||
"id":"example-embed",
|
||||
"name":"Choose Your Ticket",
|
||||
"description":"You can click one of the buttons below!",
|
||||
"dropdown":false,
|
||||
|
||||
"enableFooter":false,
|
||||
"footer":"Open Ticket v3.4.1 - I'm a footer!",
|
||||
"footer":"Open Ticket v3.5.8 - I'm a footer!",
|
||||
|
||||
"enableFooterImage":false,
|
||||
"footerImage":"https://www.example.com/catmemes/cat.png",
|
||||
@@ -125,7 +124,7 @@
|
||||
"enableCustomColor":false,
|
||||
"color":"#ffffff",
|
||||
|
||||
"options":["general","apply"],
|
||||
"options":["example-ticket","example-website","example-role"],
|
||||
|
||||
"other":{
|
||||
"enableTicketExplaination":true,
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ const bot = require("../../index")
|
||||
exports.client = bot.client
|
||||
exports.config = bot.config
|
||||
exports.utils = {
|
||||
log:bot.errorLog.log(),
|
||||
log:bot.errorLog.log,
|
||||
storage:bot.storage
|
||||
}
|
||||
|
||||
|
||||
+4
-2
@@ -30,7 +30,8 @@
|
||||
"rename":false,
|
||||
"claim":false,
|
||||
"unclaim":false,
|
||||
"change":false
|
||||
"change":false,
|
||||
"stats":false
|
||||
},
|
||||
"slash":{
|
||||
"help":false,
|
||||
@@ -44,7 +45,8 @@
|
||||
"rename":false,
|
||||
"claim":false,
|
||||
"unclaim":false,
|
||||
"change":false
|
||||
"change":false,
|
||||
"stats":false
|
||||
}
|
||||
},
|
||||
"checkerjs":{
|
||||
|
||||
@@ -229,7 +229,7 @@ exports.onTranscriptCreation = (messages,channel,guild,date) => {
|
||||
|
||||
}
|
||||
|
||||
/**@typedef {"help"|"message"|"close"|"delete"|"reopen"|"rename"|"add"|"remove"|"claim"|"unclaim"|"change"} OTCommandType */
|
||||
/**@typedef {"help"|"message"|"close"|"delete"|"reopen"|"rename"|"add"|"remove"|"claim"|"unclaim"|"change"|"stats"} OTCommandType */
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -3,6 +3,9 @@ const bot = require("../../index")
|
||||
const log = bot.errorLog.log
|
||||
|
||||
module.exports = () => {
|
||||
const args = process.argv
|
||||
const debugMode = args.includes("--debug")
|
||||
|
||||
const files = fs.readdirSync("./plugins")
|
||||
const api = require("./api.json")
|
||||
var totalcount = 0
|
||||
@@ -18,15 +21,18 @@ module.exports = () => {
|
||||
}catch(err){
|
||||
/**@type {Error} */
|
||||
const theError = err
|
||||
if (api.enableAPIdebug){
|
||||
if (api.enableAPIdebug || debugMode) {
|
||||
console.error(theError)
|
||||
}
|
||||
|
||||
try {
|
||||
const data = fs.readFileSync("./apiDebug.txt")
|
||||
const data = fs.readFileSync("./openticketdebug.txt")
|
||||
const newData = data ? data.toString() : ""
|
||||
fs.writeFileSync("./apiDebug.txt",newData+"ERROR: "+theError.name+": "+theError.message+"\n"+theError.stack+"\n\n")
|
||||
fs.writeFileSync("./openticketdebug.txt", newData + "\nPLUGIN "+file+" ERROR: " + theError.name + ": " + theError.message + "\n" + theError.stack + "\n\n")
|
||||
} catch {
|
||||
fs.writeFileSync("./apiDebug.txt","ERROR: "+theError.name+": "+theError.message+"\n"+theError.stack+"\n\n")
|
||||
}
|
||||
fs.writeFileSync("./openticketdebug.txt", "\nPLUGIN "+file+" ERROR: " + theError.name + ": " + theError.message + "\n" + theError.stack + "\n\n")
|
||||
}
|
||||
|
||||
failcount++
|
||||
totalcount++
|
||||
}
|
||||
|
||||
+62
-27
@@ -29,23 +29,23 @@ exports.checker = async () => {
|
||||
/**@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)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this user id is invalid")
|
||||
}
|
||||
}else if (mode == "channelid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this channel id is invalid")
|
||||
}
|
||||
}else if (mode == "roleid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this role id is invalid")
|
||||
}
|
||||
}else if (mode == "serverid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this server id is invalid")
|
||||
}
|
||||
}else if (mode == "categoryid"){
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+"' | this category id is invalid")
|
||||
}
|
||||
}
|
||||
@@ -90,25 +90,25 @@ exports.checker = async () => {
|
||||
}
|
||||
if (mode == "userid"){
|
||||
arrayValue.forEach((value,index) => {
|
||||
if (value.length < 16 || value.length > 20 || !/^\d+$/.test(value)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\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)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\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)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\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)){
|
||||
if (value.length < 16 || value.length > 40 || !/^\d+$/.test(value)){
|
||||
createError("'"+path+":"+index+"' | this server id is invalid")
|
||||
}
|
||||
})
|
||||
@@ -402,11 +402,11 @@ exports.checker = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------|
|
||||
//--------------------------|
|
||||
//checker => START HERE |
|
||||
//--------------------------|
|
||||
//--------------------------|
|
||||
//////////////////////////////////////////
|
||||
//////////////////////////////////////////
|
||||
/////////!!! CHECKER.JS START !!!/////////
|
||||
//////////////////////////////////////////
|
||||
//////////////////////////////////////////
|
||||
|
||||
var configArray = ["color","serverId","token","adminRoles","prefix","languageFile","status","system","options","messages"]
|
||||
configArray.forEach((item) => {
|
||||
@@ -416,25 +416,59 @@ exports.checker = async () => {
|
||||
})
|
||||
|
||||
checkHexColor(config.color,"main_color")
|
||||
checkDiscord("serverid",config.serverId,"server_id")
|
||||
checkDiscord("serverid",config.serverId,"serverId")
|
||||
|
||||
if (!require("./api/api.json").disable.checkerjs.token && !config.token.fromENV) checkToken(config.token.value)
|
||||
|
||||
checkType(config.adminRoles,"array","/main_adminroles")
|
||||
checkDiscordArray("roleid",config.adminRoles,"main_adminroles")
|
||||
checkString(config.prefix,1,15,"prefix","prefix")
|
||||
//languagefile
|
||||
checkType(config.languageFile,"string","languagefile")
|
||||
const lf = config.languageFile
|
||||
checkType(config.adminRoles,"array","/adminRoles")
|
||||
checkDiscordArray("roleid",config.adminRoles,"adminRoles")
|
||||
checkString(config.prefix,1,40,"prefix","prefix")
|
||||
|
||||
if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish") && !lf.startsWith("portuguese") && !lf.startsWith("french") && !lf.startsWith("italian") && !lf.startsWith("czech") && !lf.startsWith("danish") && !lf.startsWith("russian") && !lf.startsWith("turkish") && !lf.startsWith("polish") && !lf.startsWith("slovenian") && !lf.startsWith("thai") && !lf.startsWith("norwegian") && !lf.startsWith("greek") && !lf.startsWith("ukrainian")){
|
||||
createError("'languagefile' | invalid language, more info in the wiki")
|
||||
//languagefile
|
||||
checkType(config.languageFile,"string","languageFile")
|
||||
const languageList = [
|
||||
"custom",
|
||||
"english",
|
||||
"dutch",
|
||||
"romanian",
|
||||
"german",
|
||||
"arabic",
|
||||
"spanish",
|
||||
"portuguese",
|
||||
"french",
|
||||
"italian",
|
||||
"czech",
|
||||
"danish",
|
||||
"russian",
|
||||
"turkish",
|
||||
"polish",
|
||||
"slovenian",
|
||||
"thai",
|
||||
"norwegian",
|
||||
"greek",
|
||||
"ukrainian",
|
||||
"hungarian",
|
||||
"indonesian",
|
||||
"kurdish",
|
||||
"persian",
|
||||
"latvian",
|
||||
"estonian",
|
||||
"japanese",
|
||||
"korean",
|
||||
"simplifiedchinese",
|
||||
"traditionalchinese",
|
||||
"finnish",
|
||||
"swedish",
|
||||
"vietnamese"
|
||||
]
|
||||
if (!languageList.some((l) => config.languageFile.startsWith(l))){
|
||||
createError("'languageFile' | invalid language, more info in the wiki")
|
||||
}
|
||||
|
||||
//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"){
|
||||
if (config.status.type != "PLAYING" && config.status.type != "LISTENING" && config.status.type != "WATCHING" && config.status.type != "CUSTOM"){
|
||||
createError("'status/type' | not a valid status type! (LISTENING,WATCHING,PLAYING)")
|
||||
}
|
||||
if (config.status.text.length < 1){
|
||||
@@ -483,7 +517,6 @@ exports.checker = async () => {
|
||||
//the end
|
||||
if (errorList.length > 0 || warnList.length > 0){
|
||||
console.log("REPORT:\n===========================")
|
||||
}
|
||||
warnList.forEach((w) => {
|
||||
const splitw = w.split("'")
|
||||
if (splitw.length > 1){
|
||||
@@ -507,10 +540,12 @@ exports.checker = async () => {
|
||||
if (isWarn){
|
||||
console.log("\n=> "+chalk.bgYellow("if you ignore warns, some things may work differently than expected!"))
|
||||
}
|
||||
console.log(chalk.bold.green("\nDOCUMENTATION => https://otdocs.dj-dj.be\nSUPPORT => https://discord.dj-dj.be\n"))
|
||||
process.exit(0)
|
||||
}else if (isWarn == true && isError == false){
|
||||
}else if (isWarn){
|
||||
console.log("===========================")
|
||||
console.log("=> "+chalk.bgYellow("if you ignore warns, some things may work differently than expected!"))
|
||||
console.log(chalk.bold.green("\nDOCUMENTATION => https://otdocs.dj-dj.be\nSUPPORT => https://discord.dj-dj.be\n"))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
const fs = require("fs")
|
||||
const location = "./storage/stats.json"
|
||||
|
||||
|
||||
/**@returns {[{category:String, key:String, value:String}]}*/
|
||||
function getData(){
|
||||
if (fs.existsSync(location)){
|
||||
return JSON.parse(fs.readFileSync(location).toString())
|
||||
}else{
|
||||
fs.writeFileSync(location,"[]")
|
||||
return []
|
||||
}
|
||||
}
|
||||
/**@param {[{category:String, key:String, value:String}]} data*/
|
||||
function setData(data){
|
||||
fs.writeFileSync(location,JSON.stringify(data,null,"\t"))
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {String} category
|
||||
* @param {String} key
|
||||
* @param {String|Boolean|Number} value
|
||||
* @returns {Boolean} exists?
|
||||
*/
|
||||
exports.set = (category,key,value) => {
|
||||
const currentData = getData()
|
||||
const exists = currentData.find((d) => (d.category == category) && (d.key == key)) ? true : false
|
||||
var newData = []
|
||||
if (exists){
|
||||
currentData.forEach((d,i) => {
|
||||
if (d.category == category && d.key == key){
|
||||
newData.push({category,key,value})
|
||||
}else{
|
||||
newData.push(d)
|
||||
}
|
||||
})
|
||||
}else{
|
||||
currentData.push({category,key,value})
|
||||
newData = currentData
|
||||
}
|
||||
|
||||
setData(newData)
|
||||
return exists
|
||||
}
|
||||
/**
|
||||
* @param {String} category
|
||||
* @param {String} key
|
||||
* @returns {String|Boolean|Number|undefined}
|
||||
*/
|
||||
exports.get = (category,key) => {
|
||||
const currentData = getData()
|
||||
const result = currentData.find((d) => (d.category == category) && (d.key == key))
|
||||
return (result) ? result.value : undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {String} category
|
||||
* @returns {[{key:String,value:String|Boolean|Number}]|false}
|
||||
*/
|
||||
exports.getCategory = (category) => {
|
||||
const currentData = getData()
|
||||
const result = currentData.filter((v) => v.category == category)
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {String} category
|
||||
* @param {String} key
|
||||
* @returns {Boolean} exists?
|
||||
*/
|
||||
exports.delete = (category,key) => {
|
||||
const currentData = getData()
|
||||
const exists = currentData.find((d) => (d.category == category) && (d.key == key)) ? true : false
|
||||
var newData = []
|
||||
if (exists){
|
||||
currentData.forEach((d,i) => {
|
||||
if (!(d.category == category && d.key == key)){
|
||||
newData.push(d)
|
||||
}
|
||||
})
|
||||
}else{
|
||||
newData = currentData
|
||||
}
|
||||
|
||||
setData(newData)
|
||||
return exists
|
||||
}
|
||||
@@ -1,43 +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
|
||||
}
|
||||
|
||||
this.set("category","key","value")
|
||||
this.get("category","key",)
|
||||
this.delete("category","key")
|
||||
@@ -9,11 +9,15 @@ ALL DATABASE FILES NEED TO EXPORT THE FOLLOWING FUNCTIONS:
|
||||
*/
|
||||
|
||||
try {
|
||||
var db = require("./dynamicfiles/database")
|
||||
var main = require("./databases/main")
|
||||
var stats = require("./databases/stats")
|
||||
}catch(err){
|
||||
console.log(err)
|
||||
console.log("I couldn't find the database file! (location: ./core/dynamicdatabase/storage.js:2)")
|
||||
console.log("Unable to find the database handlers!")
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
module.exports = db
|
||||
module.exports = {
|
||||
main,
|
||||
stats
|
||||
}
|
||||
+13
-8
@@ -14,7 +14,7 @@ const c = discord.Colors
|
||||
exports.noPermsMessage = (user) => {
|
||||
return new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.noPermsTitle)
|
||||
.setTitle("❌ "+l.errors.noPermsTitle)
|
||||
.setDescription(l.errors.noPermsDescription)
|
||||
.setFooter({iconURL:user.displayAvatarURL(),text:user.username})
|
||||
}
|
||||
@@ -23,7 +23,7 @@ exports.noPermsMessage = (user) => {
|
||||
exports.noPermsDelete = (user) => {
|
||||
return new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.noPermsTitle)
|
||||
.setTitle("❌ "+l.errors.noPermsTitle)
|
||||
.setDescription(l.errors.noPermsDelete)
|
||||
.setFooter({iconURL:user.displayAvatarURL(),text:user.username})
|
||||
}
|
||||
@@ -32,7 +32,7 @@ exports.noPermsDelete = (user) => {
|
||||
exports.invalidArgsMessage = (message) => {
|
||||
var x = new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.missingArgsTitle)
|
||||
.setTitle("❌ "+l.errors.missingArgsTitle)
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
@@ -42,7 +42,7 @@ exports.invalidArgsMessage = (message) => {
|
||||
exports.serverError = (message) => {
|
||||
var x = new embed()
|
||||
.setColor(c.Orange)
|
||||
.setTitle(":warning: "+l.errors.boterror)
|
||||
.setTitle("⚠️ "+l.errors.boterror)
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
@@ -53,14 +53,19 @@ exports.invalidIdChooseFromList = (list,message) => {
|
||||
const beforemsg = message ? message+"\n\n" : ""
|
||||
var x = new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.chooseFromListTitle)
|
||||
.setTitle("❌ "+l.errors.chooseFromListTitle)
|
||||
.setDescription(beforemsg+l.errors.chooseFromListDescription+"\n`"+list.join("`\n`")+"`")
|
||||
return x
|
||||
}
|
||||
|
||||
exports.failedRenameChannel = new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle("❌ Failed to rename channel")
|
||||
.setDescription("Discord channels can only be renamed twice every 10 minutes! Open Ticket can't do anything about this error!")
|
||||
|
||||
exports.notInATicket = new embed()
|
||||
.setColor(c.Red)
|
||||
.setTitle(":x: "+l.errors.notInTicketTitle)
|
||||
.setTitle("❌ "+l.errors.notInTicketTitle)
|
||||
.setDescription(l.errors.notInTicketDescription)
|
||||
|
||||
|
||||
@@ -68,7 +73,7 @@ exports.notInATicket = new embed()
|
||||
exports.success = (title,message) => {
|
||||
var x = new embed()
|
||||
.setColor(config.color)
|
||||
.setTitle(":white_check_mark: "+title)
|
||||
.setTitle("✅ "+title)
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
@@ -78,7 +83,7 @@ exports.success = (title,message) => {
|
||||
exports.warning = (title,message) => {
|
||||
var x = new embed()
|
||||
.setColor(c.Orange)
|
||||
.setTitle(":warning: "+title)
|
||||
.setTitle("⚠️ "+title)
|
||||
.setDescription(message)
|
||||
|
||||
return x
|
||||
|
||||
@@ -21,6 +21,7 @@ exports.firstmsgRowNormal = new arb()
|
||||
.setDisabled(false)
|
||||
.setStyle(bs.Success)
|
||||
.setLabel("Claim Ticket")
|
||||
.setEmoji("📌")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
@@ -46,6 +47,7 @@ exports.firstmsgRowDisabled = new arb()
|
||||
.setDisabled(false)
|
||||
.setStyle(bs.Success)
|
||||
.setLabel("Claim Ticket")
|
||||
.setEmoji("📌")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
@@ -71,6 +73,7 @@ exports.firstmsgRowNormalNoClaim = new arb()
|
||||
.setDisabled(true)
|
||||
.setStyle(bs.Secondary)
|
||||
.setLabel("Claim Ticket")
|
||||
.setEmoji("📌")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
@@ -96,6 +99,7 @@ exports.firstmsgRowDisabledNoClaim = new arb()
|
||||
.setDisabled(true)
|
||||
.setStyle(bs.Secondary)
|
||||
.setLabel("Claim Ticket")
|
||||
.setEmoji("📌")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
|
||||
@@ -26,15 +26,16 @@ module.exports = () => {
|
||||
}catch{}
|
||||
|
||||
if (!interaction.guild) return
|
||||
if (!permsChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return
|
||||
}
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permsChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(interaction.user)
|
||||
return
|
||||
}
|
||||
|
||||
hiddendata.push({key:"claimedby",value:interaction.user.id})
|
||||
bot.hiddenData.writeHiddenData(interaction.channel.id,hiddendata)
|
||||
storage.set("claimData",interaction.channel.id,interaction.user.id)
|
||||
|
||||
@@ -31,12 +31,16 @@ module.exports = () => {
|
||||
|
||||
const firstcomponents = interaction.message.components
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (config.system.closeMode == "adminonly"){
|
||||
if (!permissionChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
if (!permissionChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
if (!permissionChecker.sendUserNoPerms(interaction.user)){
|
||||
permissionChecker.sendChannelNoPerms(interaction.channel,interaction.user)
|
||||
}
|
||||
interaction.message.edit({components:[firstcomponents]})
|
||||
interaction.message.edit({components:firstcomponents})
|
||||
closeTicketButtonChecker = false
|
||||
return
|
||||
}
|
||||
|
||||
@@ -56,12 +56,16 @@ module.exports = () => {
|
||||
|
||||
const firstcomponents = interaction.message.components
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (config.system.closeMode == "adminonly"){
|
||||
if (!permissionChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
if (!permissionChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
if (!permissionChecker.sendUserNoPerms(interaction.user)){
|
||||
permissionChecker.sendChannelNoPerms(interaction.channel,interaction.user)
|
||||
}
|
||||
interaction.message.edit({components:[firstcomponents]})
|
||||
interaction.message.edit({components:firstcomponents})
|
||||
closeTicketButtonChecker = false
|
||||
return interaction.deferUpdate()
|
||||
}
|
||||
|
||||
@@ -29,7 +29,11 @@ module.exports = () => {
|
||||
|
||||
const firstcomponents = bot.buttons.close.openRowNormal
|
||||
|
||||
if (!permissionChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permissionChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
if (!permissionChecker.sendUserNoDelete(interaction.user)){
|
||||
permissionChecker.sendChannelNoDelete(interaction.channel,interaction.user)
|
||||
}
|
||||
@@ -69,7 +73,11 @@ module.exports = () => {
|
||||
|
||||
const firstcomponents = bot.buttons.close.closeCommandRow
|
||||
|
||||
if (!permissionChecker.command(interaction.user.id,interaction.guild.id)){
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (!permissionChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
if (!permissionChecker.sendUserNoDelete(interaction.user)){
|
||||
permissionChecker.sendChannelNoDelete(interaction.channel,interaction.user)
|
||||
}
|
||||
|
||||
@@ -21,8 +21,21 @@ module.exports = () => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "OTreopenTicket") return
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(interaction.channel.id)
|
||||
if (hiddendata.length < 1) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
|
||||
if (config.system.closeMode == "adminonly"){
|
||||
if (!permissionChecker.ticket(interaction.user.id,interaction.guild.id,ticketId)){
|
||||
if (!permissionChecker.sendUserNoPerms(interaction.user)){
|
||||
permissionChecker.sendChannelNoPerms(interaction.channel,interaction.user)
|
||||
}
|
||||
return interaction.deferUpdate()
|
||||
}
|
||||
}
|
||||
|
||||
await interaction.deferUpdate()
|
||||
interaction.message.edit({embeds:[bot.embeds.commands.reopenEmbed(interaction.user)],components:[bot.buttons.close.openRowNormal]})
|
||||
require("../../../ticketActions/ticketReopener").reopenTicket(interaction.guild,interaction.channel,interaction.user)
|
||||
require("../../../ticketActions/ticketReopener").reopenTicket(interaction.guild,interaction.channel,interaction.user,ticketId)
|
||||
})
|
||||
}
|
||||
@@ -34,8 +34,8 @@ module.exports = async (invisible) => {
|
||||
if (!invisible){
|
||||
setInterval(() => {
|
||||
if (process.stdout && process.stdout.cursorTo) process.stdout.cursorTo(0)
|
||||
process.stdout.write("[status] there are "+chalk.blue(readystats+" out of 13")+" commands ready! (this can take up to 40 seconds)")
|
||||
if (readystats >= 13){
|
||||
process.stdout.write("[status] there are "+chalk.blue(readystats+" out of 14")+" commands ready! (this can take up to 40 seconds)")
|
||||
if (readystats >= 14){
|
||||
console.log(chalk.green("\nready!"))
|
||||
console.log(chalk.blue("you can now start the bot with "+chalk.bgBlue("'npm start'")+"!"))
|
||||
process.exit(1)
|
||||
@@ -268,4 +268,38 @@ module.exports = async (invisible) => {
|
||||
readystats++
|
||||
})
|
||||
|
||||
//stats
|
||||
client.application.commands.create({
|
||||
name:"stats",
|
||||
description:"See bot statistics!",
|
||||
defaultPermission:true,
|
||||
type:act.ChatInput,
|
||||
options:[
|
||||
{
|
||||
type:acot.Subcommand,
|
||||
name:"global",
|
||||
description:"See the global bot stats!"
|
||||
},
|
||||
{
|
||||
type:acot.Subcommand,
|
||||
name:"ticket",
|
||||
description:"See the stats of a ticket (use inside of ticket)!"
|
||||
},
|
||||
{
|
||||
type:acot.Subcommand,
|
||||
name:"user",
|
||||
description:"See the stats from a user or yourself!",
|
||||
options:[
|
||||
{
|
||||
type:acot.User,
|
||||
name:"user",
|
||||
required:false,
|
||||
description:"See the stats from a specific user!"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},sid).then(() => {
|
||||
readystats++
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,383 @@
|
||||
const { EmbedBuilder, Guild, TextChannel, Message, User } = 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 permissionChecker = require("./utils/permisssionChecker")
|
||||
|
||||
/**@typedef {"TICKETS_CREATED"|"TICKETS_CLOSED"|"TICKETS_DELETED"|"TICKETS_REOPENED"|"TICKETS_AUTOCLOSED"|"TRANSCRIPTS_CREATED"|"TIME_SINCE_UPDATE"|"LAST_VERSION"} OTGlobalStatsType */
|
||||
/**@typedef {"CREATED_AT"|"CREATED_BY"|"STATUS"} OTTicketStatsType */
|
||||
/**@typedef {"TICKETS_CREATED"|"TICKETS_CLOSED"|"TICKETS_DELETED"|"TICKETS_REOPENED"} OTUserStatsType */
|
||||
/**
|
||||
* @callback OTStatsCallback
|
||||
* @param {Boolean|Number|String|undefined} current
|
||||
* @returns {Boolean|Number|String|undefined}
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @param {OTGlobalStatsType} type
|
||||
* @param {OTStatsCallback} callback
|
||||
*/
|
||||
const updateGlobalStats = (type,callback) => {
|
||||
const currentstat = bot.statsStorage.get("global",type)
|
||||
const newstat = callback(currentstat)
|
||||
if (["string","number","boolean"].includes(typeof newstat)){
|
||||
bot.statsStorage.set("global",type,newstat)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {OTTicketStatsType} type
|
||||
* @param {String} id
|
||||
* @param {OTStatsCallback} callback
|
||||
*/
|
||||
const updateTicketStats = (type,id,callback) => {
|
||||
const currentstat = bot.statsStorage.get("ticket"+id,type)
|
||||
const newstat = callback(currentstat)
|
||||
if (["string","number","boolean"].includes(typeof newstat)){
|
||||
bot.statsStorage.set("ticket"+id,type,newstat)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {OTUserStatsType} type
|
||||
* @param {String} id
|
||||
* @param {OTStatsCallback} callback
|
||||
*/
|
||||
const updateUserStats = (type,id,callback) => {
|
||||
const currentstat = bot.statsStorage.get("user"+id,type)
|
||||
const newstat = callback(currentstat)
|
||||
if (["string","number","boolean"].includes(typeof newstat)){
|
||||
bot.statsStorage.set("user"+id,type,newstat)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {"global"|"ticket"|"user"} scope
|
||||
* @param {OTGlobalStatsType|OTTicketStatsType|OTUserStatsType} type
|
||||
* @param {String} [id]
|
||||
*/
|
||||
const removeStats = (scope,type,id) => {
|
||||
const newScope = (scope == "global") ? scope : scope+id
|
||||
bot.statsStorage.delete(newScope,type)
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {"global"|"ticket"|"user"} scope
|
||||
* @param {OTGlobalStatsType|OTTicketStatsType|OTUserStatsType} type
|
||||
* @param {String} [id]
|
||||
*/
|
||||
const existStats = (scope,type,id) => {
|
||||
const newScope = (scope == "global") ? scope : scope+id
|
||||
return (typeof bot.statsStorage.get(newScope,type) == "undefined") ? false : true
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {"global"|"ticket"|"user"} scope
|
||||
* @param {OTGlobalStatsType|OTTicketStatsType|OTUserStatsType} type
|
||||
* @param {String} [id]
|
||||
*/
|
||||
const getStats = (scope,type,id) => {
|
||||
const newScope = (scope == "global") ? scope : scope+id
|
||||
return bot.statsStorage.get(newScope,type)
|
||||
}
|
||||
|
||||
const startupStatsManager = () => {
|
||||
//UPDATE LAST UPDATE DATE
|
||||
if (!existStats("global","TIME_SINCE_UPDATE")){
|
||||
updateGlobalStats("TIME_SINCE_UPDATE",(current) => {
|
||||
return new Date().getTime()
|
||||
})
|
||||
updateGlobalStats("LAST_VERSION",(current) => {
|
||||
return (require("../package.json")).version
|
||||
})
|
||||
}
|
||||
if ((require("../package.json")).version != getStats("global","LAST_VERSION")){
|
||||
updateGlobalStats("TIME_SINCE_UPDATE",(current) => {
|
||||
return new Date().getTime()
|
||||
})
|
||||
updateGlobalStats("LAST_VERSION",(current) => {
|
||||
return (require("../package.json")).version
|
||||
})
|
||||
}
|
||||
|
||||
//UPDATE THE OTHER STATS
|
||||
if (!existStats("global","TICKETS_CREATED")){
|
||||
updateGlobalStats("TICKETS_CREATED",(current) => {
|
||||
return 0
|
||||
})
|
||||
}
|
||||
if (!existStats("global","TICKETS_CLOSED")){
|
||||
updateGlobalStats("TICKETS_CLOSED",(current) => {
|
||||
return 0
|
||||
})
|
||||
}
|
||||
if (!existStats("global","TICKETS_DELETED")){
|
||||
updateGlobalStats("TICKETS_DELETED",(current) => {
|
||||
return 0
|
||||
})
|
||||
}
|
||||
if (!existStats("global","TICKETS_AUTOCLOSED")){
|
||||
updateGlobalStats("TICKETS_AUTOCLOSED",(current) => {
|
||||
return 0
|
||||
})
|
||||
}
|
||||
if (!existStats("global","TICKETS_REOPENED")){
|
||||
updateGlobalStats("TICKETS_REOPENED",(current) => {
|
||||
return 0
|
||||
})
|
||||
}if (!existStats("global","TRANSCRIPTS_CREATED")){
|
||||
updateGlobalStats("TRANSCRIPTS_CREATED",(current) => {
|
||||
return 0
|
||||
})
|
||||
}
|
||||
|
||||
//HANDLE MEMBER LEAVE (clear the database)
|
||||
client.on("guildMemberRemove",(member) => {
|
||||
if (existStats("user","TICKETS_CREATED",member.id)){
|
||||
removeStats("user","TICKETS_CREATED",member.id)
|
||||
}
|
||||
if (existStats("user","TICKETS_CLOSED",member.id)){
|
||||
removeStats("user","TICKETS_CLOSED",member.id)
|
||||
}
|
||||
if (existStats("user","TICKETS_DELETED",member.id)){
|
||||
removeStats("user","TICKETS_DELETED",member.id)
|
||||
}
|
||||
if (existStats("user","TICKETS_REOPENED",member.id)){
|
||||
removeStats("user","TICKETS_REOPENED",member.id)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<{startDate:Number, updateDate:Number, version:String, ticketsCreated:Number, ticketsClosed:Number, ticketsDeleted:Number, ticketsReopened:Number, ticketsAutoclosed:Number, transcriptsCreated:Number}>}
|
||||
*/
|
||||
const getGlobalStats = async () => {
|
||||
//live data
|
||||
const startDate = new Date().getTime() - client.uptime
|
||||
const version = (require("../package.json")).version
|
||||
|
||||
//saved data
|
||||
const ticketsCreated = getStats("global","TICKETS_CREATED")
|
||||
const ticketsClosed = getStats("global","TICKETS_CLOSED")
|
||||
const ticketsDeleted = getStats("global","TICKETS_DELETED")
|
||||
const ticketsReopened = getStats("global","TICKETS_REOPENED")
|
||||
const ticketsAutoclosed = getStats("global","TICKETS_AUTOCLOSED")
|
||||
const transcriptsCreated = getStats("global","TRANSCRIPTS_CREATED")
|
||||
const timeSinceUpdate = getStats("global","TIME_SINCE_UPDATE")
|
||||
|
||||
return {
|
||||
startDate,
|
||||
updateDate: (typeof timeSinceUpdate == "undefined") ? new Date().getTime() : timeSinceUpdate,
|
||||
version,
|
||||
|
||||
ticketsCreated: (typeof ticketsCreated == "undefined") ? 0 : ticketsCreated,
|
||||
ticketsClosed: (typeof ticketsClosed == "undefined") ? 0 : ticketsClosed,
|
||||
ticketsDeleted: (typeof ticketsDeleted == "undefined") ? 0 : ticketsDeleted,
|
||||
ticketsReopened: (typeof ticketsReopened == "undefined") ? 0 : ticketsReopened,
|
||||
ticketsAutoclosed: (typeof ticketsAutoclosed == "undefined") ? 0 : ticketsAutoclosed,
|
||||
transcriptsCreated: (typeof transcriptsCreated == "undefined") ? 0 : transcriptsCreated,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.TextChannel} channel
|
||||
* @param {Number} limit
|
||||
* @returns {Promise<Message[]>}
|
||||
*/
|
||||
const getmessages = async (channel,limit) => {
|
||||
const final = []
|
||||
var lastId = ""
|
||||
|
||||
while (true) {
|
||||
const options = {limit:100}
|
||||
if (lastId) options.before = lastId
|
||||
|
||||
const messages = await channel.messages.fetch(options)
|
||||
messages.forEach(msg => {final.push(msg)})
|
||||
lastId = messages.last().id
|
||||
|
||||
if (messages.size != 100 || final >= limit) {
|
||||
break
|
||||
}
|
||||
}
|
||||
return final
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Guild} guild
|
||||
* @param {String} channelid
|
||||
* @returns {Promise<{createdAt:Number, createdBy:String, messageAmount:Number, participants:String[], ticketName:String, status:"open"|"closed"|"reopened"|"autoclosed"}>}
|
||||
*/
|
||||
const getTicketStats = async (guild,channelid) => {
|
||||
//live data
|
||||
/**@type {TextChannel|undefined} */
|
||||
const channel = guild.channels.cache.find((c) => c.id == channelid)
|
||||
const messageAmount = (channel) ? (await getmessages(channel,5000)).length : 0
|
||||
const participants = (channel) ? channel.members.map((m) => "<@"+m.user.id+">") : []
|
||||
|
||||
//saved data
|
||||
const createdAt = getStats("ticket","CREATED_AT",channelid)
|
||||
const status = getStats("ticket","STATUS",channelid)
|
||||
|
||||
const TEMPcreatedBy = getStats("ticket","CREATED_BY",channelid)
|
||||
const TEMPcreatedByUser = (TEMPcreatedBy) ? guild.members.cache.find((m) => m.id == TEMPcreatedBy) : undefined
|
||||
const createdBy = (TEMPcreatedByUser) ? "<@"+TEMPcreatedByUser.user.id+">" : "an unknown person 😄"
|
||||
|
||||
return {
|
||||
createdAt: (typeof createdAt == "undefined") ? new Date().getTime() : createdAt,
|
||||
createdBy: (typeof createdBy == "undefined") ? 0 : createdBy,
|
||||
messageAmount,
|
||||
participants:participants.slice(0,50),
|
||||
ticketName:channel.name,
|
||||
status: (typeof status == "undefined") ? "open" : status
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Guild} guild
|
||||
* @param {User} user
|
||||
* @param {String} [channelid]
|
||||
* @returns {Promise<{ticketsCreated:Number, ticketsClosed:Number, ticketsDeleted:Number, ticketsReopened:Number, role:"globaladmin"|"ticketadmin"|"member", userName:String}>}
|
||||
*/
|
||||
const getUserStats = async (guild,user,channelid) => {
|
||||
//live data
|
||||
const hiddendata = bot.hiddenData.readHiddenData(channelid)
|
||||
const ticketId = (hiddendata.length < 1) ? false : hiddendata.find(d => d.key == "type").value
|
||||
|
||||
const isGlobalAdmin = permissionChecker.global(user.id,guild.id)
|
||||
const isTicketAdmin = (ticketId) ? permissionChecker.ticket(user.id,guild.id,ticketId) : false
|
||||
const role = (isGlobalAdmin) ? "globaladmin" : ((isTicketAdmin) ? "ticketadmin" : "member")
|
||||
|
||||
//saved data
|
||||
const ticketsCreated = getStats("user","TICKETS_CREATED",user.id)
|
||||
const ticketsClosed = getStats("user","TICKETS_CLOSED",user.id)
|
||||
const ticketsDeleted = getStats("user","TICKETS_DELETED",user.id)
|
||||
const ticketsReopened = getStats("user","TICKETS_REOPENED",user.id)
|
||||
|
||||
return {
|
||||
ticketsCreated: (typeof ticketsCreated == "undefined") ? 0 : ticketsCreated,
|
||||
ticketsClosed: (typeof ticketsClosed == "undefined") ? 0 : ticketsClosed,
|
||||
ticketsDeleted: (typeof ticketsDeleted == "undefined") ? 0 : ticketsDeleted,
|
||||
ticketsReopened: (typeof ticketsReopened == "undefined") ? 0 : ticketsReopened,
|
||||
role,
|
||||
userName:user.username
|
||||
}
|
||||
}
|
||||
|
||||
const createGlobalStatsEmbed = async () => {
|
||||
const stats = await getGlobalStats()
|
||||
|
||||
const sentences = [
|
||||
`${l.stats.ticketsCreated}: \`${stats.ticketsCreated}\``,
|
||||
`${l.stats.ticketsClosed}: \`${stats.ticketsClosed}\``,
|
||||
`${l.stats.ticketsDeleted}: \`${stats.ticketsDeleted}\``,
|
||||
`${l.stats.ticketsReopened}: \`${stats.ticketsReopened}\``,
|
||||
`${l.stats.ticketsAutoclosed}: \`${stats.ticketsAutoclosed}\``,
|
||||
|
||||
`${l.stats.startupDate}: <t:${Math.round(stats.startDate/1000)}:f>`,
|
||||
`${l.stats.latestUpdate}: <t:${Math.round(stats.updateDate/1000)}:D>`
|
||||
]
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(config.color)
|
||||
.setTitle(`📊 ${l.stats.globalTitle}!`)
|
||||
.setDescription(sentences.slice(0,5).join("\n"))
|
||||
.addFields({
|
||||
name:`${l.stats.systemTitle}:`,
|
||||
value:sentences.slice(5,7).join("\n")
|
||||
})
|
||||
.setFooter({text:`${l.stats.versionTitle}: v${stats.version}`})
|
||||
return embed
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Guild} guild
|
||||
* @param {String} channelid
|
||||
*/
|
||||
const createTicketStatsEmbed = async (guild,channelid) => {
|
||||
const stats = await getTicketStats(guild,channelid)
|
||||
|
||||
if (stats.status == "open"){
|
||||
var newStatus = `🟢 \`${l.stats.switches.open}\``
|
||||
}else if (stats.status == "reopened"){
|
||||
var newStatus = `🟢 \`${l.stats.switches.reopened}\``
|
||||
}else if (stats.status == "closed"){
|
||||
var newStatus = `🔴 \`${l.stats.switches.closed}\``
|
||||
}else if (stats.status == "autoclosed"){
|
||||
var newStatus = `🔴 \`${l.stats.switches.autoclosed}\``
|
||||
}
|
||||
|
||||
const sentences = [
|
||||
`${l.stats.ticketCreatedOn}: <t:${Math.round(stats.createdAt/1000)}:f>`,
|
||||
`${l.stats.ticketCreatedBy}: ${stats.createdBy}`,
|
||||
`${l.stats.messagesSent}: \`${stats.messageAmount}\``,
|
||||
`${l.stats.status}: ${newStatus}`
|
||||
]
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(config.color)
|
||||
.setTitle(`📊 ${l.stats.ticketTitle}`.replace("{0}",`#${stats.ticketName}!`))
|
||||
.setDescription(sentences.join("\n"))
|
||||
.addFields({
|
||||
name:`${l.stats.participants}:`,
|
||||
value:stats.participants.join("\n")
|
||||
})
|
||||
return embed
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Guild} guild
|
||||
* @param {User} user
|
||||
* @param {String} channelid
|
||||
*/
|
||||
const createUserStatsEmbed = async (guild,user,channelid) => {
|
||||
const stats = await getUserStats(guild,user,channelid)
|
||||
|
||||
if (stats.role == "globaladmin"){
|
||||
var newRole = `🟢 \`${l.stats.switches.globalAdmin}\``
|
||||
}else if (stats.role == "ticketadmin"){
|
||||
var newRole = `🟡 \`${l.stats.switches.ticketAdmin}\``
|
||||
}else if (stats.role == "member"){
|
||||
var newRole = `🔴 \`${l.stats.switches.member}\``
|
||||
}
|
||||
|
||||
const sentences = [
|
||||
`${l.stats.role}: ${newRole}`,
|
||||
`${l.stats.ticketsCreated}: \`${stats.ticketsCreated}\``,
|
||||
`${l.stats.ticketsClosed}: \`${stats.ticketsClosed}\``,
|
||||
`${l.stats.ticketsDeleted}: \`${stats.ticketsDeleted}\``,
|
||||
`${l.stats.ticketsReopened}: \`${stats.ticketsReopened}\``
|
||||
]
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(config.color)
|
||||
.setTitle(`📊 ${l.stats.userTitle}`.replace("{0}",`${stats.userName}!`))
|
||||
.setDescription(sentences.join("\n"))
|
||||
return embed
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
updateGlobalStats,
|
||||
updateTicketStats,
|
||||
updateUserStats,
|
||||
|
||||
removeStats,
|
||||
existStats,
|
||||
getStats,
|
||||
|
||||
startupStatsManager,
|
||||
|
||||
getGlobalStats,
|
||||
getTicketStats,
|
||||
getUserStats,
|
||||
createGlobalStatsEmbed,
|
||||
createTicketStatsEmbed,
|
||||
createUserStatsEmbed
|
||||
}
|
||||
@@ -43,6 +43,15 @@ module.exports = () => {
|
||||
require("./ticketCloser").closeManager(clientMember,channel,prefix,"close","OTautoclose",true)
|
||||
storage.delete("autocloseTickets",channel.id)
|
||||
|
||||
//STATS
|
||||
bot.statsManager.updateGlobalStats("TICKETS_AUTOCLOSED",(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.updateTicketStats("STATUS",channel.id,(current) => {
|
||||
return "autoclosed"
|
||||
})
|
||||
|
||||
channel.send({embeds:[bot.embeds.commands.autocloseSignalEmbed(client.user,t.value)],components:[bot.buttons.close.closeCommandRow]})
|
||||
}
|
||||
|
||||
|
||||
@@ -51,9 +51,14 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
|
||||
|
||||
if (mode == "delete" || mode == "deletenotranscript"){
|
||||
//delete
|
||||
const hiddendata = bot.hiddenData.readHiddenData(channel.id)
|
||||
if (hiddendata.length < 1) return channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
|
||||
|
||||
//check perms
|
||||
if (!guild) return
|
||||
if (!permsChecker.command(user.id,guild.id)){
|
||||
if (!permsChecker.ticket(user.id,guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(user)
|
||||
return
|
||||
}
|
||||
@@ -72,24 +77,35 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
|
||||
storage.delete("autocloseTickets",channel.id)
|
||||
if (Number(storage.get("amountOfUserTickets",getuserID)) < 0) storage.set("amountOfUserTickets",getuserID,0)
|
||||
|
||||
//getID & send DM & send api event
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(channel.id)
|
||||
if (hiddendata.length < 1) return channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
|
||||
|
||||
require("../api/modules/events").onTicketDelete(user,channel,guild,new Date(),{name:channel.name,status:"deleted",ticketOptions:ticketData})
|
||||
|
||||
//STATS
|
||||
bot.statsManager.updateGlobalStats("TICKETS_DELETED",(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.updateUserStats("TICKETS_DELETED",user.id,(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.removeStats("ticket","CREATED_BY",channel.id)
|
||||
bot.statsManager.removeStats("ticket","CREATED_AT",channel.id)
|
||||
bot.statsManager.removeStats("ticket","STATUS",channel.id)
|
||||
|
||||
hiddendata.push({key:"pendingdelete",value:"true"})
|
||||
bot.hiddenData.writeHiddenData(channel.id,hiddendata)
|
||||
|
||||
}else if (mode == "close"){
|
||||
//close
|
||||
const hiddendata = bot.hiddenData.readHiddenData(channel.id)
|
||||
if (hiddendata.length < 1) return channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
|
||||
|
||||
//check perms
|
||||
if (config.system.closeMode == "adminonly"){
|
||||
if (!guild) return
|
||||
if (!permsChecker.command(user.id,guild.id)){
|
||||
if (!permsChecker.ticket(user.id,guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(user)
|
||||
return
|
||||
}
|
||||
@@ -129,16 +145,6 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
|
||||
}
|
||||
})
|
||||
|
||||
//ticketinfo error
|
||||
const ticketInfoError = bot.errorLog.serverError("Unable to detect ticket information.\n*(First message that this bot sends)*\n\n__**Possible reasons:**__\n- you unpinned the first message\n- the first message is deleted\n- it has been unpinned & repinned after another message has been pinned.\n\n__**Possible solutions:**__\n- unpin all messages in this channel & repin the first message that this bot sent.\nIf this doesn't work, just delete the ticket manually!")
|
||||
|
||||
//add ticket adminroles
|
||||
|
||||
const hiddendata = bot.hiddenData.readHiddenData(channel.id)
|
||||
if (hiddendata.length < 1) return channel.send({embeds:[bot.errorLog.notInATicket]})
|
||||
const ticketId = hiddendata.find(d => d.key == "type").value
|
||||
const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
|
||||
|
||||
if (!ticketData) return
|
||||
if (ticketData.closedCategory.enable){
|
||||
/**@type {discord.CategoryChannel} */
|
||||
@@ -184,13 +190,26 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
|
||||
|
||||
//send api event
|
||||
require("../api/modules/events").onTicketClose(user,channel,guild,new Date(),{name:channel.name,status:"closed",ticketOptions:ticketData},newReason)
|
||||
|
||||
//STATS
|
||||
bot.statsManager.updateGlobalStats("TICKETS_CLOSED",(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.updateUserStats("TICKETS_CLOSED",user.id,(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.updateTicketStats("STATUS",channel.id,(current) => {
|
||||
return "closed"
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.TextChannel} channel
|
||||
* @param {Number} limit
|
||||
* @returns
|
||||
* @returns {Promise<discord.Message[]>}
|
||||
*/
|
||||
const getmessages = async (channel,limit) => {
|
||||
const final = []
|
||||
|
||||
@@ -49,24 +49,17 @@ module.exports = () => {
|
||||
const currentTicketOptions = configParser.getTicketById(customId)
|
||||
if (currentTicketOptions == false) return interaction.reply({embeds:[bot.errorLog.serverError(l.errors.anotherOption)]})
|
||||
|
||||
if (interaction.isButton()){
|
||||
if (interaction.isButton() || interaction.isStringSelectMenu() || interaction.isChatInputCommand()){
|
||||
try{
|
||||
await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen})
|
||||
}catch{}
|
||||
}else if (interaction.isChatInputCommand()){
|
||||
try {
|
||||
await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen})
|
||||
} catch{}
|
||||
}else if (interaction.isStringSelectMenu()){
|
||||
try {
|
||||
await interaction.deferUpdate()
|
||||
} catch{}
|
||||
}
|
||||
|
||||
if (storage.get("amountOfUserTickets",interaction.member.id) == null || storage.get("amountOfUserTickets",interaction.member.id) == "false"|| Number(storage.get("amountOfUserTickets",interaction.member.id)) < config.system.maxAmountOfTickets){
|
||||
const currentUserTicketAmount = storage.get("amountOfUserTickets",interaction.member.id)
|
||||
if (config.system.maxAmountOfTickets == 0 || !currentUserTicketAmount || currentUserTicketAmount == "false" || Number(currentUserTicketAmount) < config.system.maxAmountOfTickets){
|
||||
|
||||
//update storage
|
||||
storage.set("amountOfUserTickets",interaction.member.id,Number(storage.get("amountOfUserTickets",interaction.member.id))+1)
|
||||
storage.set("amountOfUserTickets",interaction.member.id,Number(currentUserTicketAmount)+1)
|
||||
var ticketNumber = interaction.member.user.username
|
||||
|
||||
//set ticketName
|
||||
@@ -96,7 +89,7 @@ module.exports = () => {
|
||||
permissionsArray.push({
|
||||
id:interaction.member.user,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel,pfb.ReadMessageHistory]
|
||||
})
|
||||
|
||||
//add main adminroles
|
||||
@@ -108,7 +101,7 @@ module.exports = () => {
|
||||
permissionsArray.push({
|
||||
id:adminrole,
|
||||
type:"role",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel,pfb.ReadMessageHistory]
|
||||
})
|
||||
}catch{}
|
||||
})
|
||||
@@ -127,7 +120,7 @@ module.exports = () => {
|
||||
permissionsArray.push({
|
||||
id:adminrole,
|
||||
type:"role",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel,pfb.ReadMessageHistory]
|
||||
})
|
||||
}catch{}
|
||||
}
|
||||
@@ -144,7 +137,7 @@ module.exports = () => {
|
||||
permissionsArray.push({
|
||||
id:adminrole,
|
||||
type:"role",
|
||||
allow:[pfb.AddReactions,pfb.ViewChannel],
|
||||
allow:[pfb.AddReactions,pfb.ViewChannel,pfb.ReadMessageHistory],
|
||||
deny:[pfb.SendMessages,pfb.AttachFiles,pfb.EmbedLinks]
|
||||
})
|
||||
}catch{}
|
||||
@@ -214,6 +207,25 @@ module.exports = () => {
|
||||
log("system","created new ticket",[{key:"ticket",value:ticketName},{key:"user",value:interaction.user.username}])
|
||||
require("../api/modules/events").onTicketOpen(interaction.user,ticketChannel,interaction.guild,new Date(),{name:ticketName,status:"open",ticketOptions:currentTicketOptions})
|
||||
|
||||
//STATS:
|
||||
bot.statsManager.updateGlobalStats("TICKETS_CREATED",(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.updateUserStats("TICKETS_CREATED",interaction.user.id,(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.updateTicketStats("CREATED_BY",ticketChannel.id,(current) => {
|
||||
return interaction.user.id
|
||||
})
|
||||
bot.statsManager.updateTicketStats("CREATED_AT",ticketChannel.id,(current) => {
|
||||
return new Date().getTime()
|
||||
})
|
||||
bot.statsManager.updateTicketStats("STATUS",ticketChannel.id,(current) => {
|
||||
return "open"
|
||||
})
|
||||
|
||||
const channelbutton = new discord.ActionRowBuilder()
|
||||
.addComponents([
|
||||
new discord.ButtonBuilder()
|
||||
@@ -229,16 +241,16 @@ module.exports = () => {
|
||||
}
|
||||
catch{log("system","failed to send DM")}
|
||||
|
||||
if ((interaction.isButton() && config.system.answerInEphemeralOnOpen) || interaction.isChatInputCommand()){
|
||||
if (interaction.deferred){
|
||||
if (((interaction.isButton() || interaction.isStringSelectMenu()) && config.system.answerInEphemeralOnOpen) || interaction.isChatInputCommand()){
|
||||
if (interaction.deferred || interaction.replied){
|
||||
interaction.editReply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]})
|
||||
}else{
|
||||
interaction.reply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]})
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}else{
|
||||
interaction.editReply({embeds:[bot.errorLog.warning(l.errors.maxAmountTitle,l.errors.maxAmountDescription)]})
|
||||
try {
|
||||
if (config.system.dmMessages){
|
||||
interaction.member.send({embeds:[bot.errorLog.warning(l.errors.maxAmountTitle,l.errors.maxAmountDescription)]})
|
||||
|
||||
@@ -6,15 +6,26 @@ const log = bot.errorLog.log
|
||||
const l = bot.language
|
||||
const storage = bot.storage
|
||||
const pfb = discord.PermissionFlagsBits
|
||||
const permsChecker = require("../utils/permisssionChecker")
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.Guild} guild
|
||||
* @param {discord.TextBasedChannel} channel
|
||||
* @param {discord.User} user
|
||||
* @param {String} ticketId option id
|
||||
* @returns
|
||||
*/
|
||||
const reopenTicket = (guild,channel,user) => {
|
||||
const reopenTicket = (guild,channel,user,ticketId) => {
|
||||
//check perms
|
||||
if (config.system.closeMode == "adminonly"){
|
||||
if (!guild) return
|
||||
if (!permsChecker.ticket(user.id,guild.id,ticketId)){
|
||||
permsChecker.sendUserNoPerms(user)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
log("system","re-opened a ticket",[{key:"ticket",value:channel.name},{key:"user",value:user.username}])
|
||||
|
||||
var permissionsArray = []
|
||||
@@ -46,9 +57,21 @@ const reopenTicket = (guild,channel,user) => {
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
channel.permissionOverwrites.set(permissionsArray)
|
||||
|
||||
require("../api/modules/events").onTicketReopen(user,channel,guild,new Date(),{name:channel.name,status:"reopened",ticketOptions:false})
|
||||
|
||||
//STATS
|
||||
bot.statsManager.updateGlobalStats("TICKETS_REOPENED",(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.updateUserStats("TICKETS_REOPENED",user.id,(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
bot.statsManager.updateTicketStats("STATUS",channel.id,(current) => {
|
||||
return "reopened"
|
||||
})
|
||||
}
|
||||
exports.reopenTicket = reopenTicket
|
||||
@@ -95,7 +95,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
bot:{
|
||||
name:data.bot.name || "Open Ticket",
|
||||
id:Number(data.bot.id) || 0,
|
||||
pfp:data.bot.pfp || "dj-dj.be/wp-content/uploads/2022/07/profielfoto-blauw-wit.png?size=128"
|
||||
pfp:data.bot.pfp || "transcripts.dj-dj.be/favicon.png"
|
||||
},
|
||||
ticket:{
|
||||
name:channel.name,
|
||||
|
||||
@@ -10,7 +10,7 @@ const version = require("../info.json").version
|
||||
|
||||
const mentions = require("./mentions").replacementions
|
||||
|
||||
/**@typedef {{background:{enableCustomBackground:Boolean, backgroundModus:"color"|"image", backgroundData:String}, header:{enableCustomHeader:Boolean, decoColor:String, backgroundColor:String, textColor:String}, stats:{enableCustomStats:Boolean, backgroundColor:String, keyTextColor:String, valueTextColor:String, hideBackgroundColor:String, hideTextColor:String}} OTTranscriptStyle} */
|
||||
/**@typedef {{background:{enableCustomBackground:Boolean, backgroundModus:"color"|"image", backgroundData:String}, header:{enableCustomHeader:Boolean, decoColor:String, backgroundColor:String, textColor:String}, stats:{enableCustomStats:Boolean, backgroundColor:String, keyTextColor:String, valueTextColor:String, hideBackgroundColor:String, hideTextColor:String}, favicon:{enableCustomFavicon:Boolean, imageUrl:String}} OTTranscriptStyle} */
|
||||
/**@typedef {{name:String, id:String, pfp:String}} OTTranscriptBot */
|
||||
/**@typedef {{name:String, id:String, guildname:String, guildid:String, guildinvite:String|false, creatorname:String, creatorid:String, closedbyname:String, closedbyid:String, claimedname:String, claimedid:String, creatorpfp:String, closedbypfp:String, claimedpfp:String, closedtime:Number, openedtime:Number, components:{messages:1, files:1, embeds:1, reactions:1, interactions:{dropdowns:1, buttons:1, total:1}, attachments:{invites:1, images:1, gifs:1, stickers:1}}, roleColors:[{id:String,color:String}] }} OTTranscriptTicket */
|
||||
/**@typedef {{author:{name:String, id:String, color:String, pfp:String, bot:Boolean, verifiedBot:Boolean, system:Boolean}, content:String|false, timestamp:Number, type:"normal", important:Boolean, edited:Boolean, embeds:[{title:String|false, description:String|false, authorimg:String|false, authortext:String|false, footerimg:String|false, footertext:String|false, color:String, image:String|false, thumbnail:String|false, url:String|false, fields:[{name:String,value:String,inline:Boolean}]}], attachments:[{type:"FILE", name:String, fileType:String, size:String, url:String}, {type:"FILE:image", name:String, fileType:String, size:String, url:String}, {type:"URL:invite", guildId:String, guildName:String, guildSize:Number, guildOnline:Number, image:String, url:String}, {type:"URL:gif", url:String}, {type:"BUILDIN:sticker", name:String, url:String}], components:[{type:"buttons", buttons:[{type:"interaction"|"url", label:String|false, icon:String|false, color:"gray"|"green"|"red"|"blue", id:String|false, url:String|false, disabled:Boolean}]}, {type:"dropdown", placeholder:String|false, options:[{label:String|false, icon:String|false, description:String|false, id:String|false}]}, {type:"reactions", reactions:[{amount:1, emoji:String, type:"svg"|"image"|"gif"}]}], reply:{type:"reply"|"command"|false, user:{name:String, id:String, color:String, pfp:String, bot:Boolean, verifiedBot:Boolean, system:Boolean}, replyOptions:{content:String, messageId:String, channelId:String, guildId:String}, commandOptions:{interactionName:String, interactionId:String}}}} OTTranscriptMessage */
|
||||
@@ -117,7 +117,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
//custom emoji
|
||||
tempreactions.push({
|
||||
amount:count,
|
||||
emoji:(emoji.url) ? emoji.url : "",
|
||||
emoji:emoji.imageURL(),
|
||||
type:(emoji.animated) ? "gif" : "image"
|
||||
})
|
||||
}else if (emoji instanceof discord.ReactionEmoji){
|
||||
@@ -215,7 +215,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
interactionName:msg.interaction.commandName
|
||||
},
|
||||
user:{
|
||||
name:msg.interaction.user.username,
|
||||
name:msg.interaction.user.displayName,
|
||||
id:msg.interaction.user.id,
|
||||
color:replycolor,
|
||||
pfp:msg.interaction.user.displayAvatarURL(),
|
||||
@@ -227,15 +227,15 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
}else if (replytype == "reply"){
|
||||
|
||||
var replycontentRAW = messages.find((msg2) => msg2.id == msg.reference.messageId)
|
||||
var replycontent = (replycontentRAW && replycontentRAW.content) ? replycontentRAW.content.slice(0,(60-replycontentRAW.author.username.length)) : "deleted this message"
|
||||
var replycontent = (replycontentRAW && replycontentRAW.content) ? replycontentRAW.content.slice(0,(60-replycontentRAW.author.displayName.length)) : "deleted this message"
|
||||
const replycolorRAW = (replycontentRAW) ? msg.guild.members.cache.find((m) => m.id == replycontentRAW.author.id) : false
|
||||
const replycolor = (replycolorRAW) ? replycolorRAW.displayHexColor.replace("#000000","#ffffff") : "#ffffff"
|
||||
|
||||
var user = (replycontentRAW && replycontentRAW.content) ? {
|
||||
name:(replycontentRAW) ? replycontentRAW.author.username : "undefined",
|
||||
name:(replycontentRAW) ? replycontentRAW.author.displayName : "undefined",
|
||||
id:(replycontentRAW) ? replycontentRAW.author.id : "undefined",
|
||||
color:replycolor,
|
||||
pfp:(replycontentRAW) ? replycontentRAW.author.username : "",
|
||||
pfp:(replycontentRAW) ? replycontentRAW.author.displayName : "",
|
||||
bot:(replycontentRAW) ? replycontentRAW.author.bot : false,
|
||||
system:(replycontentRAW) ? replycontentRAW.author.system : false,
|
||||
verifiedBot:(replycontentRAW) ? replycontentRAW.author.flags.has(discord.UserFlags.VerifiedBot) : false,
|
||||
@@ -264,7 +264,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
const authorColor = msg.member ? msg.member.displayHexColor.replace("#000000","#ffffff") : "#ffffff"
|
||||
messagesArray.push({
|
||||
author:{
|
||||
name:msg.author.username,
|
||||
name:msg.author.displayName,
|
||||
id:msg.author.id,
|
||||
color:authorColor,
|
||||
pfp:msg.author.displayAvatarURL(),
|
||||
@@ -288,6 +288,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
const dsb = data.style.background
|
||||
const dsh = data.style.header
|
||||
const dss = data.style.stats
|
||||
const dsf = data.style.favicon
|
||||
|
||||
/**@type {OTTranscriptCompileInput} */
|
||||
const result = {
|
||||
@@ -317,7 +318,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
bot:{
|
||||
name:data.bot.name || "Open Ticket",
|
||||
id:data.bot.id || 0,
|
||||
pfp:data.bot.pfp || "dj-dj.be/wp-content/uploads/2022/07/profielfoto-blauw-wit.png?size=128"
|
||||
pfp:data.bot.pfp || "transcripts.dj-dj.be/favicon.png"
|
||||
},
|
||||
ticket:{
|
||||
name:channel.name,
|
||||
@@ -331,7 +332,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
creatorid:data.ticket.creatorid,
|
||||
creatorpfp:data.ticket.creatorpfp,
|
||||
|
||||
closedbyname:user.username,
|
||||
closedbyname:user.displayName,
|
||||
closedbyid:user.id,
|
||||
closedbypfp:user.displayAvatarURL(),
|
||||
|
||||
@@ -382,8 +383,8 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
|
||||
name:"test-server"
|
||||
},
|
||||
customFavicon:{
|
||||
enabled:false,
|
||||
image:"https://openticket.dj-dj.be"
|
||||
enabled:dsf.enableCustomFavicon,
|
||||
image:(dsf.imageUrl) ? dsf.imageUrl : "https://openticket.dj-dj.be"
|
||||
},
|
||||
additionalFlags:[]
|
||||
}
|
||||
|
||||
@@ -17,12 +17,12 @@ exports.upload = async (json) => {
|
||||
const data = encodeURIComponent(JSON.stringify(json))
|
||||
|
||||
try {
|
||||
const res = await axios.post("https://transcripts.dj-dj.be/api/upload?auth=openticketTRANSCRIPT1234&version=2",JSON.stringify(json))
|
||||
const res = await axios.post("https://apis.dj-dj.be/transcripts/upload?auth=openticketTRANSCRIPT1234&version=2",JSON.stringify(json))
|
||||
if (res.status != 200) resolve(false)
|
||||
|
||||
resolve(res.data)
|
||||
}catch(err){
|
||||
console.log("failed transcript upload!",err.response)
|
||||
console.log("Failed HTML transcript upload! Reached Ratelimit 429!")
|
||||
resolve(false)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -34,18 +34,20 @@ exports.beingprocessed = (name,id,rawprocesstime,user) => {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} name
|
||||
* @param {String} id
|
||||
* @param {String} url
|
||||
* @param {discord.User} user
|
||||
* @param {String} name channel name
|
||||
* @param {String} url transcript url
|
||||
* @param {discord.User} user transcript closer
|
||||
* @param {discord.User} creator transcript creator
|
||||
*/
|
||||
exports.tsready = (name,id,url,user) => {
|
||||
exports.tsready = (name,url,user,creator) => {
|
||||
const embed = new discord.EmbedBuilder()
|
||||
.setTitle("🧾 "+l.transcripts.title)
|
||||
.setColor(config.color)
|
||||
.setAuthor({name:user.username,iconURL:user.displayAvatarURL()})
|
||||
.setFooter({text:name})
|
||||
|
||||
if (creator) embed.setFields([{name:"Ticket Creator", value:"<@"+creator.id+">"}])
|
||||
|
||||
if (url){
|
||||
embed.setURL(url)
|
||||
embed.setDescription("\n["+l.transcripts.available+"]("+url+")\n")
|
||||
@@ -72,7 +74,7 @@ exports.tserror = (name,id,user,err) => {
|
||||
|
||||
const errDesc = (typeof err == "string") ? "\n"+err : ""
|
||||
|
||||
embed.setDescription("Something went wrong while creating the HTML transcript.\n\n[possible reasons](https://docs.openticket.dj-dj.be/the-system/transcripts/transcript-errors)"+errDesc)
|
||||
embed.setDescription("Something went wrong while creating the HTML transcript.\n\n[possible reasons](https://otdocs.dj-dj.be/docs/current/docs/system/transcripts)"+errDesc)
|
||||
|
||||
return embed
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ const checkAvailability = async () => {
|
||||
if (process.argv.some((v) => v == "--tsoffline")) return true
|
||||
const axios = require("axios").default
|
||||
try{
|
||||
const res = await axios.get("https://transcripts.dj-dj.be/api/status.json")
|
||||
const res = await axios.get("https://apis.dj-dj.be/transcripts/status.json")
|
||||
if (!res || !(res.status == 200) || !res.data) return false
|
||||
|
||||
if (res.data && res.data["v2"] == "online") return true
|
||||
@@ -35,6 +35,10 @@ const checkAvailability = async () => {
|
||||
*/
|
||||
module.exports = async (messages,guild,channel,user,reason) => {
|
||||
require("../api/modules/events").onTranscriptCreation(messages,channel,guild,new Date())
|
||||
bot.statsManager.updateGlobalStats("TRANSCRIPTS_CREATED",(current) => {
|
||||
if (typeof current != "undefined") return current+1
|
||||
return 1
|
||||
})
|
||||
const msglist = await channel.messages.fetchPinned()
|
||||
|
||||
const chName = channel.name
|
||||
@@ -55,6 +59,7 @@ module.exports = async (messages,guild,channel,user,reason) => {
|
||||
const tsb = tsconfig.style.background
|
||||
const tsh = tsconfig.style.header
|
||||
const tss = tsconfig.style.stats
|
||||
const tsf = tsconfig.style.favicon
|
||||
const JSONDATA = require("./communication/compileJsonV2").compile(guild,channel,user,messages,{
|
||||
style:{
|
||||
background:{
|
||||
@@ -75,17 +80,21 @@ module.exports = async (messages,guild,channel,user,reason) => {
|
||||
valueTextColor:tss.valueTextColor,
|
||||
hideBackgroundColor:tss.hideBackgroundColor,
|
||||
hideTextColor:tss.hideTextColor
|
||||
},
|
||||
favicon:{
|
||||
enableCustomFavicon:tsf.enableCustomFavicon,
|
||||
imageUrl:tsf.imageUrl
|
||||
}
|
||||
|
||||
},
|
||||
bot:{
|
||||
name:client.user.username,
|
||||
name:client.user.displayName,
|
||||
id:client.user.id,
|
||||
pfp:client.user.displayAvatarURL(),
|
||||
},
|
||||
ticket:{
|
||||
creatorid:ticketopener.id,
|
||||
creatorname:ticketopener.username,
|
||||
creatorname:ticketopener.displayName,
|
||||
creatorpfp:ticketopener.displayAvatarURL(),
|
||||
|
||||
openedtime:opentime.getTime(),
|
||||
@@ -104,11 +113,35 @@ module.exports = async (messages,guild,channel,user,reason) => {
|
||||
if (!tc) return
|
||||
tc.send({embeds:[errembed],files:[attachment]})
|
||||
}
|
||||
if (tsconfig.sendTranscripts.enableDM && user){
|
||||
const embed = tsembeds.tsready(chName,null,user,ticketopener)
|
||||
try {
|
||||
ticketopener.send({embeds:[embed],files:[attachment]})
|
||||
}catch{}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
const TSdata = await require("./communication/index").upload(JSONDATA)
|
||||
if (!TSdata) return false
|
||||
if (!TSdata){
|
||||
const attachment = await require("./oldTranscript").createTranscript(messages,channel)
|
||||
const errembed = tsembeds.tserror(chName,chId,user,"`HTML Transcript API: reached ratelimit`")
|
||||
|
||||
if (tsconfig.sendTranscripts.enableChannel){
|
||||
/**@type {discord.TextChannel|undefined} */
|
||||
const tc = guild.channels.cache.find((c) => c.id == tsconfig.sendTranscripts.channel)
|
||||
|
||||
if (!tc) return
|
||||
tc.send({embeds:[errembed],files:[attachment]})
|
||||
}
|
||||
if (tsconfig.sendTranscripts.enableDM && user){
|
||||
const embed = tsembeds.tsready(chName,null,user,ticketopener)
|
||||
try {
|
||||
ticketopener.send({embeds:[embed],files:[attachment]})
|
||||
}catch{}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
if (TSdata.status == "success"){
|
||||
//MAKE THIS COMPATIBLE WITH PREMIUM "customTranscriptUrl" IN FUTURE VERSIONS!!
|
||||
@@ -136,12 +169,12 @@ module.exports = async (messages,guild,channel,user,reason) => {
|
||||
//ready
|
||||
setTimeout(() => {
|
||||
if (msg){
|
||||
msg.edit({embeds:[tsembeds.tsready(chName,chId,url,user)]})
|
||||
msg.edit({embeds:[tsembeds.tsready(chName,url,user,ticketopener)]})
|
||||
}
|
||||
|
||||
if (tsconfig.sendTranscripts.enableDM){
|
||||
if (!user) return
|
||||
const embed = tsembeds.tsready(chName,chId,url,user)
|
||||
const embed = tsembeds.tsready(chName,url,user,ticketopener)
|
||||
try {
|
||||
ticketopener.send({embeds:[embed]})
|
||||
}catch{}
|
||||
@@ -158,10 +191,16 @@ module.exports = async (messages,guild,channel,user,reason) => {
|
||||
if (!tc) return
|
||||
tc.send({embeds:[errembed],files:[attachment]})
|
||||
}
|
||||
if (tsconfig.sendTranscripts.enableDM && user){
|
||||
const embed = tsembeds.tsready(chName,null,user,ticketopener)
|
||||
try {
|
||||
ticketopener.send({embeds:[embed],files:[attachment]})
|
||||
}catch{}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
const attachment = await require("./oldTranscript").createTranscript(messages,channel)
|
||||
const embed = tsembeds.tsready(chName,chId,false,user)
|
||||
const embed = tsembeds.tsready(chName,null,user,ticketopener)
|
||||
|
||||
if (tsconfig.sendTranscripts.enableChannel){
|
||||
/**@type {discord.TextChannel|undefined} */
|
||||
@@ -170,6 +209,12 @@ module.exports = async (messages,guild,channel,user,reason) => {
|
||||
if (!tc) return
|
||||
tc.send({embeds:[embed],files:[attachment]})
|
||||
}
|
||||
if (tsconfig.sendTranscripts.enableDM && user){
|
||||
const embed = tsembeds.tsready(chName,null,user,ticketopener)
|
||||
try {
|
||||
ticketopener.send({embeds:[embed],files:[attachment]})
|
||||
}catch{}
|
||||
}
|
||||
}
|
||||
}
|
||||
asyncmanager()
|
||||
|
||||
@@ -2,10 +2,13 @@ const discord = require("discord.js")
|
||||
const bot = require("../../index")
|
||||
const config = bot.config
|
||||
const l = bot.language
|
||||
|
||||
/**@returns {"DANGER"|"SUCCESS"|"PRIMARY"|"SECONDARY"} */
|
||||
const getColor = (color) => {
|
||||
const b = discord.ButtonStyle
|
||||
|
||||
/**
|
||||
* @param {String} color
|
||||
* @returns {"DANGER"|"SUCCESS"|"PRIMARY"|"SECONDARY"} */
|
||||
const getColor = (color) => {
|
||||
if (color){
|
||||
if (color.toLowerCase() == "red"){
|
||||
return b.Danger
|
||||
}else if (color.toLowerCase() == "green"){
|
||||
@@ -14,11 +17,12 @@ const getColor = (color) => {
|
||||
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"){
|
||||
}else if (color.toUpperCase() == "DANGER" || color.toUpperCase() == "SECONDARY" || color.toUpperCase() == "SUCCESS" || color.toUpperCase() == "PRIMARY"){
|
||||
return color
|
||||
}else if (color.toLowerCase() == "none" || color.toLowerCase() == "false" || color.toLowerCase() == ""){
|
||||
return b.Secondary
|
||||
}else return b.Secondary
|
||||
}else return b.Secondary
|
||||
}
|
||||
|
||||
const getOption = (id) => {
|
||||
|
||||
@@ -43,7 +43,7 @@ exports.getDropdown = (ids,placeholder) => {
|
||||
}else{
|
||||
if (option.label) selectComponent.setLabel(option.label)
|
||||
if (option.icon) selectComponent.setEmoji(option.icon)
|
||||
if (option.description) selectComponent.setDescription(option.description)
|
||||
if (option.description && option.description.length < 100) selectComponent.setDescription(option.description)
|
||||
}
|
||||
|
||||
dropdown.addOptions(selectComponent)
|
||||
|
||||
@@ -10,7 +10,7 @@ const storage = require("../../index").storage
|
||||
|
||||
exports.readHiddenData = (channelid) => {
|
||||
const content = storage.get("HIDDENDATA",channelid)
|
||||
if (!content) return {type:"",data:[],status:false}
|
||||
if (!content) return []
|
||||
|
||||
try {
|
||||
return JSON.parse(content)
|
||||
|
||||
@@ -46,7 +46,7 @@ const getLivestatus = (local) => {
|
||||
}
|
||||
}else{
|
||||
try {
|
||||
axios.get("https://livestatus.dj-dj.be/openticket.json").then((res) => {
|
||||
axios.get("https://apis.dj-dj.be/livestatus/announcements/openticket.json").then((res) => {
|
||||
const livestatus = res.data
|
||||
if (!Array.isArray(livestatus)) return resolve(false)
|
||||
if (!livestatus) return resolve(false)
|
||||
@@ -135,79 +135,3 @@ exports.run = async (pluginData) => {
|
||||
|
||||
console.log(final.join("\n\n"))
|
||||
}
|
||||
|
||||
var waitTime = new Date().getTime()
|
||||
var waitTimeEnabled = false
|
||||
|
||||
/**@param {OTLiveStatusError} options @returns {Promise<Boolean>} */
|
||||
const uploadLiveStatus = (options) => {
|
||||
return new Promise((resolve,reject) => {
|
||||
if (process.argv.some((v) => v == "--noerrorupload")) return resolve(true)
|
||||
try {
|
||||
var data = encodeURIComponent(JSON.stringify(options))
|
||||
axios.get("https://livestatus.dj-dj.be/openticket?auth=openticketLIVESTATUS1234&data="+data).then((res) => {
|
||||
if (res.status == 200) resolve(true)
|
||||
else resolve(false)
|
||||
})
|
||||
}catch{
|
||||
resolve(false)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**@param {String} err @returns {Promise<Boolean>}*/
|
||||
exports.liveStatusUploadManager = async (err) => {
|
||||
return new Promise(async (resolve) => {
|
||||
|
||||
if (process.argv.some((v) => v == "--noerrorupload")) return resolve(true)
|
||||
else{
|
||||
var tsenabled = (bot.tsconfig.sendTranscripts.enableChannel || bot.tsconfig.sendTranscripts.enableDM)
|
||||
var tsmode = bot.tsconfig.sendTranscripts.useHTMLtranscripts ? "html" : "text"
|
||||
const transcriptMode = tsenabled ? tsmode : false
|
||||
const slashMode = getSlashEnabled()
|
||||
|
||||
try {
|
||||
if (waitTimeEnabled){
|
||||
if (new Date().getTime() < waitTime){
|
||||
waitTimeEnabled = false
|
||||
return resolve(false)
|
||||
}
|
||||
}
|
||||
const result = await uploadLiveStatus({
|
||||
bot:{
|
||||
id:client.user.id,
|
||||
name:client.user.username,
|
||||
pfp:client.user.displayAvatarURL()
|
||||
},
|
||||
error:err,
|
||||
openticket:{
|
||||
config:{
|
||||
//TEMPORARY SOLUTION => AXIOS 414 ERROR!
|
||||
//messages:config.messages,
|
||||
//options:config.options,
|
||||
//transcripts:bot.tsconfig,
|
||||
//system:config.system
|
||||
},
|
||||
language:config.languageFile,
|
||||
version:"3.4.1",
|
||||
slashcmds:slashMode,
|
||||
transcripts:transcriptMode,
|
||||
plugins:fs.readdirSync("./plugins"),
|
||||
pluginload:globalPluginData
|
||||
},
|
||||
details:{
|
||||
errortime:new Date().getTime()
|
||||
//TEMPORARY SOLUTION => AXIOS 414 ERROR!
|
||||
//actions:this.actionRecorder,
|
||||
//database:fs.readFileSync("./storage/database.json").toString()
|
||||
}
|
||||
})
|
||||
if (!result){
|
||||
waitTime = new Date().getTime()+30000
|
||||
waitTimeEnabled = true
|
||||
}
|
||||
resolve(result)
|
||||
}catch{resolve(false)}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -12,12 +12,12 @@ const storage = bot.storage
|
||||
* @param {String} guildid
|
||||
* @returns {Boolean} has permissions?
|
||||
*/
|
||||
exports.command = (memberid,guildid) => {
|
||||
exports.global = (memberid,guildid) => {
|
||||
bot.actionRecorder.push({
|
||||
category:"ot.managers.permissionChecker",
|
||||
file:"./core/permissionChecker.js",
|
||||
time:new Date().getTime(),
|
||||
type:"command"
|
||||
type:"global"
|
||||
})
|
||||
const permsmember = client.guilds.cache.find(g => g.id == guildid).members.cache.find(m => m.id == memberid)
|
||||
if (config.adminRoles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("ManageGuild")){
|
||||
@@ -25,6 +25,33 @@ exports.command = (memberid,guildid) => {
|
||||
}else {return true}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} memberid
|
||||
* @param {String} guildid
|
||||
* @param {String} optionid
|
||||
* @returns {Boolean} has permissions?
|
||||
*/
|
||||
exports.ticket = (memberid,guildid,optionid) => {
|
||||
bot.actionRecorder.push({
|
||||
category:"ot.managers.permissionChecker",
|
||||
file:"./core/permissionChecker.js",
|
||||
time:new Date().getTime(),
|
||||
type:"ticket"
|
||||
})
|
||||
|
||||
const option = config.options.find((opt) => opt.id == optionid)
|
||||
const ticketadmins = option && option.adminroles ? option.adminroles : []
|
||||
const permsmember = client.guilds.cache.find(g => g.id == guildid).members.cache.find(m => m.id == memberid)
|
||||
|
||||
const isGlobalAdmin = config.adminRoles.some((item)=>{return permsmember.roles.cache.has(item)})
|
||||
const isTicketAdmin = ticketadmins.some((item)=>{return permsmember.roles.cache.has(item)})
|
||||
const hasAdministrator = permsmember.permissions.has("Administrator")
|
||||
const hasManageGuild = permsmember.permissions.has("ManageGuild")
|
||||
|
||||
return isGlobalAdmin || isTicketAdmin || hasAdministrator || hasManageGuild
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.User} user
|
||||
|
||||
@@ -17,22 +17,19 @@
|
||||
|
||||
SUGGESTING NEW FEATURES:
|
||||
=====================
|
||||
Open Ticket is a community project. This means that
|
||||
almost all feature ideas come from our community.
|
||||
Are you missing something you want in open ticket?
|
||||
Then join our Discord server and we will add it (if possible)
|
||||
|
||||
Did you know that 80% of all features in OT were ideas from our community?
|
||||
|
||||
Open Ticket is an open-source community project!
|
||||
Because of this, almost 80% of all features in OT were ideas from our community!
|
||||
Feel free to add new ideas in our discord server
|
||||
or via github issues! Translations are always welcome!
|
||||
|
||||
|
||||
INFORMATION:
|
||||
============
|
||||
Open Ticket v3.4.1 - © DJdj Development
|
||||
Open Ticket v3.5.8 - © DJdj Development
|
||||
|
||||
discord: https://discord.dj-dj.be
|
||||
website: https://www.dj-dj.be
|
||||
github: https://openticket.dj-dj.be
|
||||
github: https://otgithub.dj-dj.be
|
||||
support e-mail: support@dj-dj.be
|
||||
|
||||
Config files:
|
||||
@@ -41,7 +38,7 @@
|
||||
|
||||
Send ./openticketdebug.txt when there are errors!
|
||||
*/
|
||||
|
||||
/** discord :)*/
|
||||
const discord = require("discord.js")
|
||||
const fs = require('fs')
|
||||
const {GatewayIntentBits,Partials} = discord
|
||||
@@ -57,9 +54,10 @@ const client = new discord.Client({
|
||||
partials:[Partials.Channel,Partials.Message]
|
||||
})
|
||||
exports.client = client
|
||||
client.setMaxListeners(50)
|
||||
client.setMaxListeners(120)
|
||||
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","created client")
|
||||
|
||||
//LOAD CONFIG
|
||||
var tempconfig = require("./config.json")
|
||||
/**@type {Boolean} */
|
||||
var isDevConfig = false
|
||||
@@ -75,31 +73,34 @@ if (process.argv.some((v) => v == "--devconfig")){
|
||||
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded flags")
|
||||
|
||||
exports.developerConfig = isDevConfig
|
||||
|
||||
const config = tempconfig
|
||||
exports.config = config
|
||||
|
||||
const tsconfig = isDevConfig ? require("./devtsconfig.json") : require("./transcriptconfig.json")
|
||||
exports.tsconfig = tsconfig
|
||||
|
||||
//LOAD LANGUAGE
|
||||
const language = require("./core/languageManager").language
|
||||
exports.language = language
|
||||
|
||||
//LOAD FLAGS
|
||||
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded language")
|
||||
|
||||
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded config")
|
||||
exports.storage = require('./core/dynamicdatabase/storage')
|
||||
exports.storage = require('./core/dynamicdatabase/storage').main
|
||||
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded storage")
|
||||
|
||||
exports.statsStorage = require('./core/dynamicdatabase/storage').stats
|
||||
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded stats storage")
|
||||
|
||||
exports.errorLog = require("./core/errorLogSystem")
|
||||
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","LOADED LOGGING SYSTEM")
|
||||
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","switching to new logs")
|
||||
this.errorLog.log("debug","loaded new logs")
|
||||
|
||||
//LOAD SYSTEM LIBRARYS
|
||||
exports.actionRecorder = require("./core/utils/liveStatus").actionRecorder
|
||||
|
||||
exports.hiddenData = require("./core/utils/hiddendata")
|
||||
this.errorLog.log("debug","loaded hiddendataTM")
|
||||
|
||||
exports.embeds = {
|
||||
commands:require("./core/interactionHandlers/embeds/commands")
|
||||
}
|
||||
@@ -110,6 +111,10 @@ exports.buttons = {
|
||||
}
|
||||
this.errorLog.log("debug","loaded buttons & embeds")
|
||||
|
||||
exports.statsManager = require("./core/statsManager")
|
||||
this.statsManager.startupStatsManager()
|
||||
|
||||
//START CLIENT LOGIN PROCESS
|
||||
client.on('ready',async () => {
|
||||
this.errorLog.log("debug","client logged in")
|
||||
this.actionRecorder.push({
|
||||
@@ -118,17 +123,19 @@ client.on('ready',async () => {
|
||||
time:new Date().getTime(),
|
||||
type:"client.loggedin.success"
|
||||
})
|
||||
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
|
||||
const getTypeEnum = (type) => {
|
||||
if (type.toLowerCase() == "playing") return discord.ActivityType.Playing
|
||||
else if (type.toLowerCase() == "listening") return discord.ActivityType.Listening
|
||||
else if (type.toLowerCase() == "watching") return discord.ActivityType.Watching
|
||||
else if (type.toLowerCase() == "custom") return discord.ActivityType.Custom
|
||||
else return discord.ActivityType.Listening
|
||||
}
|
||||
client.user.setActivity(text,{type:getTypeEnum(type)})
|
||||
statusSet = true
|
||||
client.user.setActivity({
|
||||
type:getTypeEnum(type),
|
||||
state:(text.toLowerCase() == "custom") ? text : undefined,
|
||||
name:text
|
||||
})
|
||||
}
|
||||
this.errorLog.log("debug","bot status loaded")
|
||||
this.actionRecorder.push({
|
||||
@@ -154,6 +161,10 @@ client.on('ready',async () => {
|
||||
|
||||
if (config.status.enabled){
|
||||
setStatus(config.status.type,config.status.text)
|
||||
//refresh status every 10 minutes
|
||||
setInterval(() => {
|
||||
setStatus(config.status.type,config.status.text)
|
||||
},(60*10*1000))
|
||||
}
|
||||
|
||||
this.actionRecorder.push({
|
||||
@@ -226,7 +237,7 @@ client.on('ready',async () => {
|
||||
}
|
||||
}
|
||||
|
||||
//load plugins
|
||||
//LOAD PLUGINS (after client login)
|
||||
this.actionRecorder.push({
|
||||
category:"ot.managers.plugins",
|
||||
file:"./core/api/pluginlauncher.js",
|
||||
@@ -242,6 +253,8 @@ client.on('ready',async () => {
|
||||
})
|
||||
this.errorLog.log("debug","loading plugins")
|
||||
})
|
||||
|
||||
//LOAD CHECKER.JS
|
||||
if (!require("./core/api/api.json").disable.checkerjs.all){
|
||||
this.actionRecorder.push({
|
||||
category:"ot.managers.main",
|
||||
@@ -260,6 +273,7 @@ if (!require("./core/api/api.json").disable.checkerjs.all){
|
||||
})
|
||||
}
|
||||
|
||||
//LOAD COMMANDS & CORE
|
||||
if (process.argv[2] && process.argv[2].startsWith("slash")){
|
||||
//do nothing
|
||||
}else{
|
||||
@@ -283,6 +297,8 @@ if (process.argv[2] && process.argv[2].startsWith("slash")){
|
||||
require("./commands/claim")()
|
||||
require("./commands/unclaim")()
|
||||
require("./commands/change")()
|
||||
require("./commands/stats")()
|
||||
|
||||
this.actionRecorder.push({
|
||||
category:"ot.managers.loader",
|
||||
file:"./index.js",
|
||||
@@ -314,6 +330,7 @@ if (process.argv[2] && process.argv[2].startsWith("slash")){
|
||||
})
|
||||
}
|
||||
|
||||
//LOAD API
|
||||
this.actionRecorder.push({
|
||||
category:"ot.managers.loader",
|
||||
file:"./index.js",
|
||||
@@ -331,6 +348,7 @@ this.actionRecorder.push({
|
||||
type:"api.success"
|
||||
})
|
||||
|
||||
//ERROR SYSTEM
|
||||
this.actionRecorder.push({
|
||||
category:"ot.managers.loader",
|
||||
file:"./index.js",
|
||||
@@ -368,11 +386,6 @@ process.on("uncaughtException",async (error,origin) => {
|
||||
errorLog(error.name+": "+error.message+" | origin: "+origin,error.stack)
|
||||
|
||||
APIEvents.onError(error.name+": "+error.message,new Date())
|
||||
|
||||
//TEMPORARY INTEGRATION FOR LIVESTATUS ERROR UPLOADER:
|
||||
try {
|
||||
await require("./core/utils/liveStatus").liveStatusUploadManager(error.name+": "+error.message+" | origin: "+origin+"\n"+error.stack)
|
||||
} catch {this.errorLog.log("info","FAILED TO AUTO-REPORT ERROR! (you can ignore this error)")}
|
||||
})
|
||||
|
||||
this.actionRecorder.push({
|
||||
@@ -382,6 +395,55 @@ this.actionRecorder.push({
|
||||
type:"debugsystem.success"
|
||||
})
|
||||
|
||||
const token = config.token.fromENV ? process.env.TOKEN : config.token.value
|
||||
client.login(token)
|
||||
//PARSE .env FILE FROM DOTENV LIB
|
||||
//npm i dotenv
|
||||
//https://github.com/motdotla/dotenv
|
||||
/**@param {Buffer} src */
|
||||
const loadFromDotEnv = (src) => {
|
||||
const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg
|
||||
|
||||
const obj = {}
|
||||
|
||||
// Convert buffer to string
|
||||
let lines = src.toString()
|
||||
|
||||
// Convert line breaks to same format
|
||||
lines = lines.replace(/\r\n?/mg, '\n')
|
||||
|
||||
let match
|
||||
while ((match = LINE.exec(lines)) != null) {
|
||||
const key = match[1]
|
||||
|
||||
// Default undefined or null to empty string
|
||||
let value = (match[2] || '')
|
||||
|
||||
// Remove whitespace
|
||||
value = value.trim()
|
||||
|
||||
// Check if double quoted
|
||||
const maybeQuote = value[0]
|
||||
|
||||
// Remove surrounding quotes
|
||||
value = value.replace(/^(['"`])([\s\S]*)\1$/mg, '$2')
|
||||
|
||||
// Expand newlines if double quoted
|
||||
if (maybeQuote === '"') {
|
||||
value = value.replace(/\\n/g, '\n')
|
||||
value = value.replace(/\\r/g, '\r')
|
||||
}
|
||||
|
||||
// Add to object
|
||||
obj[key] = value
|
||||
}
|
||||
process.env.TOKEN = obj.TOKEN
|
||||
}
|
||||
|
||||
//LOGIN SYSTEM
|
||||
if (config.token.fromENV){
|
||||
loadFromDotEnv(fs.readFileSync(".env"))
|
||||
client.login(process.env.TOKEN)
|
||||
}else{
|
||||
client.login(config.token.value)
|
||||
}
|
||||
|
||||
this.errorLog.log("debug","login with token")
|
||||
+86
-52
@@ -1,43 +1,43 @@
|
||||
{
|
||||
"_CREDITS":"ChilledBroke#9986 & M4#5882",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"deqressing",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors": {
|
||||
"missingArgsTitle": "قيمة غير صالحة!",
|
||||
"missingArgsDescription": "قيمة مفقودة",
|
||||
"noPermsTitle": "ليس لديك برمشنات !",
|
||||
"noPermsDescription": "أنت بحاجة الى برمشن `ADMINISTRATOR` او أن تكون في قائمة المسموح بهم!",
|
||||
"noPermsDelete": "فقط الإداريين يمكنهم حذف التكت!",
|
||||
"chooseFromListTitle": "Invalid ID",
|
||||
"noPermsDelete": "فقط الإداريين يمكنهم حذف التيكت!",
|
||||
"chooseFromListTitle": "الايدي غير صحيح!",
|
||||
"chooseFromListDescription": "قم بأختيار أحد من الأيديات من الأسفل:",
|
||||
"boterror": "خلل في البوت !",
|
||||
"notInTicketTitle": "انت لست في تكت!",
|
||||
"notInTicketDescription": "هذا الأمر لا يعمل خارج التكت!",
|
||||
"ticketDoesntExist": "هذا التكت لم يعد فعال!",
|
||||
"notInTicketDescription": "هذا الأمر لا يعمل خارج التيكت!",
|
||||
"ticketDoesntExist": "هذا التيكت لم يعد فعال!",
|
||||
"roleDoesntExist": "خطاً ,لم تعد الرتبة موجوده!",
|
||||
"anotherOption": "هذا الخيار ليس التكت و لكنه شيء أخر!",
|
||||
"anotherOption": "هذا الخيار ليس التيكت و لكنه شيء أخر!",
|
||||
"maxAmountTitle": "خطأ , تم الوصول الى الحد الأقصى!",
|
||||
"maxAmountDescription": "لقد وصلت الى الحد الأقصى لعدد التكتات المسموحة بها!\nSo لا يمكنك فتح واحدة أخرى!",
|
||||
"maxAmountDescription": "لقد وصلت الى الحد الأقصى لعدد التيكتات المسموحة بها!\nSo لا يمكنك فتح واحدة أخرى!",
|
||||
"somethingWentWrong": "**هناك خطاً!**\nأعد المحاولة لاحقاً!"
|
||||
},
|
||||
"commands": {
|
||||
"userAddedTitle": "تم أضافة {0} من المستخدمين في التكت!",
|
||||
"userRemovedTitle": "تم أزالة {0} من المستخدمين من التكت!",
|
||||
"renameTitle": "تم تغيير أسم التكت الى {0}!",
|
||||
"closeTitle": "تم أغلاق التكت!",
|
||||
"deleteTitle": " جاري حذف التكت...",
|
||||
"reopenTitle": "إعادة فتح التكت!",
|
||||
"userAddedTitle": "تم أضافة {0} من المستخدمين في التيكت!",
|
||||
"userRemovedTitle": "تم أزالة {0} من المستخدمين من التيكت!",
|
||||
"renameTitle": "تم تغيير أسم التيكت الى {0}!",
|
||||
"closeTitle": "تم أغلاق التيكت!",
|
||||
"deleteTitle": " جاري حذف التيكت...",
|
||||
"reopenTitle": "إعادة فتح التيكت!",
|
||||
|
||||
"claimTitle":"This ticket is now claimed to {0}",
|
||||
"unclaimTitle":"This ticket isn't claimed anymore!",
|
||||
"changeTitle":"Changed ticket type to {0}!",
|
||||
"claimTitle":"تم تعيين التيكت الى {0}",
|
||||
"unclaimTitle":"هذا التيكت لم يتم تعيينه لاحد",
|
||||
"changeTitle":"!تم تغيير نوع التيكت الى {0}",
|
||||
|
||||
"statsTitle":"Here are the stats for {0}!",
|
||||
"autocloseTitle":"This ticket will be closed automatically after {0}!",
|
||||
"autocloseRejectTitle":"This ticket will no longer be closed automatically!",
|
||||
"autocloseWarn":"This only affects inactive tickets!",
|
||||
"statsTitle":"ها هي احصائيات {0}",
|
||||
"autocloseTitle":"سيتم اغلاق التيكت تلقائيا في {0}",
|
||||
"autocloseRejectTitle":"تم الغاء اغلاق التيكت تلقائيا",
|
||||
"autocloseWarn":"هذا يؤثر فقط على التذاكر الغير نشطة",
|
||||
|
||||
"goToTicket":"go to ticket",
|
||||
"goToTicket":"الذهاب الى التيكت",
|
||||
"ticketWarning": "هذا الأمبد موجود بالفعل في الرسالة بالأسفل!",
|
||||
"maxTicketWarning": "**تحذير:** _يمكنك فقط فتح {0} تكت في الوقت!_"
|
||||
},
|
||||
@@ -47,55 +47,89 @@
|
||||
"header2": "**قم بكتابة أمر `/new` او `/ticket` لفتح تكت!**\n\n",
|
||||
|
||||
"msgCmd": "أنشاء أيمبد مع الأزرار. (الأداريين فقط)",
|
||||
"renameCmd": "إعادة تسمية التكت. (بدون مسافات)",
|
||||
"closeCmd": "أغلاق التكت.",
|
||||
"deleteCmd": "حذف التكت.",
|
||||
"addCmd": "إضافة مستخدم الى التكت.",
|
||||
"removeCmd": "إزالة مستخدم من التكت.",
|
||||
"renameCmd": "إعادة تسمية التيكت. (بدون مسافات)",
|
||||
"closeCmd": "أغلاق التيكت.",
|
||||
"deleteCmd": "حذف التيكت.",
|
||||
"addCmd": "إضافة مستخدم الى التيكت.",
|
||||
"removeCmd": "إزالة مستخدم من التيكت.",
|
||||
"reopenCmd": "إعادة فتح تكت بعد إغلاقة.",
|
||||
"changeCmd":"Change ticket type.",
|
||||
"claimCmd":"Claim a ticket.",
|
||||
"unclaimCmd":"Unclaim a ticket.",
|
||||
"statsCmd":"View ticket stats.",
|
||||
"autocloseCmd":"Set timer to automatically close ticket"
|
||||
"changeCmd":"تغيير نوع التيكت.",
|
||||
"claimCmd":"تعيينك لتيكت معين.",
|
||||
"unclaimCmd":"الغاء التغيين لتيكت معين",
|
||||
"statsCmd":"اضهار احصائيات التيكت",
|
||||
"autocloseCmd":"قم بضبط مؤقت لاغلاق التيكت تلقائياً"
|
||||
},
|
||||
"buttons": {
|
||||
"close": "إغلاق التكت",
|
||||
"delete": "حذف التكت",
|
||||
"reopen": "إعادة فتح التكت",
|
||||
"closeWithReason":"close with reason"
|
||||
"close": "إغلاق التيكت",
|
||||
"delete": "حذف التيكت",
|
||||
"reopen": "إعادة فتح التيكت",
|
||||
"closeWithReason":"اغلاق مع سبب"
|
||||
},
|
||||
"messages": {
|
||||
"closedDescription": "فقط الأداريين يمكنهم التحدث في هذا التكت الأن!\n\n*أضغط على الزر بالأسفل لحذف التكت او إعادة فتحة مجدداً!*",
|
||||
"closedDescription": "فقط الأداريين يمكنهم التحدث في هذا التيكت الأن!\n\n*أضغط على الزر بالأسفل لحذف التيكت او إعادة فتحة مجدداً!*",
|
||||
"createdTitle": "تم إنشاء تكت!",
|
||||
"createdDescription": "تم أنشاء تكت , قم بأنتظار الدعم في الطريق!",
|
||||
|
||||
"newTicketDmTitle": "تكت جديد!",
|
||||
"closedTicketDmTitle": "تم إغلاق التكت!",
|
||||
"deletedTicketDmTitle": "تم حذف التكت!",
|
||||
"closedTicketDmTitle": "تم إغلاق التيكت!",
|
||||
"deletedTicketDmTitle": "تم حذف التيكت!",
|
||||
"closedTicketDmDescription": "تم أغلاق تذكرتك من قبل إداري",
|
||||
"deletedTicketDmDescription": "تم حذف تذكرتك من قبل إداري!",
|
||||
"reopenTicketDmTitle": "تم إعادة فتح تذكرتك!",
|
||||
"reopenTicketDmDescription": "تم إعادة فتح التكت!",
|
||||
"reopenTicketDmDescription": "تم إعادة فتح التيكت!",
|
||||
|
||||
"chooseCategory": "أختر الكتقاجوري:",
|
||||
"gettingdeleted": "يتم حذف التكت...",
|
||||
"gettingdeleted": "يتم حذف التيكت...",
|
||||
|
||||
"none": "لا يوجد",
|
||||
"reason": "سبب",
|
||||
"createdat":"created at",
|
||||
"openedby":"opened by",
|
||||
"deletedby":"deleted by",
|
||||
"closedby":"closed by",
|
||||
"createdat":"تم الانشاء في",
|
||||
"openedby":"تم الانشاء من قبل",
|
||||
"deletedby":"تم الحذف من قبل",
|
||||
"closedby":"تم الاغلاق من قبل",
|
||||
|
||||
"modalreason":"What is the reason for closing this ticket?",
|
||||
"chooseATicket": "Choose a ticket"
|
||||
"modalreason":"ماهو سببك لاغلاق التيكت؟",
|
||||
"chooseATicket": "اختار تيكت معين"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Transcript",
|
||||
"processed":"This transcript is being processed",
|
||||
"wait":"Please wait!",
|
||||
"estimated":"Estimated time",
|
||||
"available":"The transcript is available here"
|
||||
"title":"سجل",
|
||||
"processed":"يتم معالجة هذا السجل...",
|
||||
"wait":"فضلا انتظر",
|
||||
"estimated":"الوقت المتوقع",
|
||||
"available":"تم انشاء السجل وهو متاح هنا"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"احصائيات العامه",
|
||||
"ticketTitle":"احصائيات التيكت ل {0}",
|
||||
"userTitle":"احصائيات المستخدم {0}",
|
||||
"systemTitle":"احصائيات السيستم",
|
||||
"versionTitle":"نسخة البوت",
|
||||
|
||||
"ticketsCreated":"التيكتس التي تمت انشاؤه",
|
||||
"ticketsClosed":"التيكتس التي تمت اغلاقه",
|
||||
"ticketsDeleted":"التيكتس التي تمت حذفه",
|
||||
"ticketsReopened":"التيكتس التي تمت العادة فتحه",
|
||||
"ticketsAutoclosed":"التيكتس التي تمت اغلاقه تلقائيا",
|
||||
"transcriptsCreated":"السجلات التي تمت انشاؤه",
|
||||
"startupDate":"تم تشغيل البوت في",
|
||||
"latestUpdate":"اخر التحديثات",
|
||||
"ticketCreatedOn":"تم انشاءالتيكت في",
|
||||
"ticketCreatedBy":"تم انشاء التيكت من قبل",
|
||||
"messagesSent":"جميع الرسائل",
|
||||
"status":"الحالة",
|
||||
"participants":"المشاركون",
|
||||
"role":"الرانك",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"ادمن عام",
|
||||
"ticketAdmin":"ادمن تيكت",
|
||||
"member":"عضو",
|
||||
"open":"مفتوح",
|
||||
"reopened":"اعادة فتحه",
|
||||
"closed":"مغلق",
|
||||
"autoclosed":"مغلق تلقائياً"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"هذا المستخدم لم يتم العثور عليه في قاعدة بياناتنا!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"Stragar",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Грешни Аргументи!",
|
||||
"missingArgsDescription":"Липсват Аргументи",
|
||||
"noPermsTitle":"Нямате позволение!",
|
||||
"noPermsDescription":"Трябва ви `ADMINISTRATOR` правомощия или да бъде в списъка с роли!",
|
||||
"noPermsDelete":"Само админ може да изтрива тикети!",
|
||||
"chooseFromListTitle":"Грешно ID",
|
||||
"chooseFromListDescription":"Choose one of the id's below:",
|
||||
"boterror":"Грешка на Бота!",
|
||||
"notInTicketTitle":"Не сте в билет!",
|
||||
"notInTicketDescription":"Тази команда не работи извън тикета!",
|
||||
"ticketDoesntExist":"Този тикет е изтрит!",
|
||||
"roleDoesntExist":"Тази роля вече не съществува!",
|
||||
"anotherOption":"Тази опция не е тикет, а друг вид!",
|
||||
"maxAmountTitle":"Достигнахте максимален лимит!",
|
||||
"maxAmountDescription":"Вече имате прекалено много брой тикети!\nНе може да създадете нов!",
|
||||
"somethingWentWrong":"**Нещо се обърка!**\nОпитай отново след малко!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Добавен {0} в тикета!",
|
||||
"userRemovedTitle":"Премахнат {0} от тикета!",
|
||||
"renameTitle":"Името е сменено на {0}!",
|
||||
"closeTitle":"Затворете тикета",
|
||||
"deleteTitle":"Изтрийте този тикет...",
|
||||
"reopenTitle":"Отоворете тикета отново!",
|
||||
|
||||
"claimTitle":"Този тикет е взет от {0}",
|
||||
"unclaimTitle":"Този тикет не може да бъде взет вече!",
|
||||
"changeTitle":"Changed ticket type to {0}!",
|
||||
|
||||
"statsTitle":"Статистика за {0}!",
|
||||
"autocloseTitle":"Този тикет ще се затвори автоматично след {0}!",
|
||||
"autocloseRejectTitle":"Този тикет вече няма да се затваря автоматично!",
|
||||
"autocloseWarn":"Това засяга само неактивни тикети!",
|
||||
|
||||
"goToTicket":"отидете на тикет",
|
||||
"ticketWarning":"Текста е добавен по-долу!",
|
||||
"maxTicketWarning":"**Предопреждение:** _Ти можеш да създадеш {0} тикети(s) време!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Налични команди:",
|
||||
"header1":"**Отидете на {0}, за да създадете тикет!**\n\n",
|
||||
"header2":"**Изпълнете командата `/new` или `/ticket`, за да създадете тикет!**\n\n",
|
||||
|
||||
"msgCmd":"Създаване на вградено съобщение с бутони. (само за администратори)",
|
||||
"renameCmd":"Преименувайте билет. (без интервали)",
|
||||
"closeCmd":"Затвори билет.",
|
||||
"deleteCmd":"Изтрий билет.",
|
||||
"addCmd":"Добави потребител към билета.",
|
||||
"removeCmd":"Премахни потребител от билета.",
|
||||
"reopenCmd":"Повторно отваряне на билет след като е затворен.",
|
||||
"changeCmd":"Промени типа на билета.",
|
||||
"claimCmd":"Претендирай за билет.",
|
||||
"unclaimCmd":"Откажи претенцията за билет.",
|
||||
"statsCmd":"Преглед на статистиката на билета.",
|
||||
"autocloseCmd":"Задай таймер за автоматично затваряне на билета"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Затвори билет",
|
||||
"delete":"Изтрий билет",
|
||||
"reopen":"Повторно отвори билет",
|
||||
"closeWithReason":"затвори с причина"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Само администраторите могат да говорят в този билет сега!\n\n*Кликнете върху бутона по-долу, за да изтриете или повторно отворите този билет!*",
|
||||
"createdTitle":"Създаден билет!",
|
||||
"createdDescription":"Вашият билет е създаден, можете да го забележите по пинг!",
|
||||
|
||||
"newTicketDmTitle":"Нов билет!",
|
||||
"closedTicketDmTitle":"Билетът е затворен!",
|
||||
"deletedTicketDmTitle":"Билетът е изтрит!",
|
||||
"closedTicketDmDescription":"Вашият билет е затворен!",
|
||||
"deletedTicketDmDescription":"Вашият билет е изтрит!",
|
||||
"reopenTicketDmTitle":"Билетът е повторно отворен!",
|
||||
"reopenTicketDmDescription":"Вашият билет е повторно отворен!",
|
||||
|
||||
"chooseCategory":"изберете категория:",
|
||||
"gettingdeleted":"Билетът се изтрива...",
|
||||
|
||||
"none":"няма",
|
||||
"reason":"причина",
|
||||
"createdat":"създаден на",
|
||||
"openedby":"отворен от",
|
||||
"deletedby":"изтрит от",
|
||||
"closedby":"затворен от",
|
||||
|
||||
"modalreason":"Каква е причината за затваряне на този билет?",
|
||||
"chooseATicket": "Изберете билет"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Транскрипт",
|
||||
"processed":"Този транскрипт се обработва",
|
||||
"wait":"Моля, изчакайте!",
|
||||
"estimated":"Приблизително време",
|
||||
"available":"Транскриптът е достъпен тук"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Глобална статистика",
|
||||
"ticketTitle":"Статистика на билета за {0}",
|
||||
"userTitle":"Статистика на потребителя за {0}",
|
||||
"systemTitle":"Системна статистика",
|
||||
"versionTitle":"Версия на бота",
|
||||
|
||||
"ticketsCreated":"Създадени билети",
|
||||
"ticketsClosed":"Затворени билети",
|
||||
"ticketsDeleted":"Изтрити билети",
|
||||
"ticketsReopened":"Повторно отворени билети",
|
||||
"ticketsAutoclosed":"Автоматично затворени билети",
|
||||
"transcriptsCreated":"Създадени транскрипти",
|
||||
"startupDate":"Дата на стартиране",
|
||||
"latestUpdate":"Последно обновление",
|
||||
"ticketCreatedOn":"Билет създаден на",
|
||||
"ticketCreatedBy":"Билет създаден от",
|
||||
"messagesSent":"Изпратени съобщения",
|
||||
"status":"Статус",
|
||||
"participants":"Участници",
|
||||
"role":"Роля",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Глобален администратор",
|
||||
"ticketAdmin":"Администратор на билет",
|
||||
"member":"Член",
|
||||
"open":"Отворен",
|
||||
"reopened":"Повторно отворен",
|
||||
"closed":"Затворен",
|
||||
"autoclosed":"Автоматично затворен"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Този потребител не може да бъде намерен в базата данни за статистика!"
|
||||
}
|
||||
}
|
||||
+35
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"DJdj Development",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Invalid Arguments!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Please wait!",
|
||||
"estimated":"Estimated time",
|
||||
"available":"The transcript is available here"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Global Stats",
|
||||
"ticketTitle":"Ticket Stats for {0}",
|
||||
"userTitle":"User Stats for {0}",
|
||||
"systemTitle":"System Stats",
|
||||
"versionTitle":"Bot Version",
|
||||
|
||||
"ticketsCreated":"Tickets Created",
|
||||
"ticketsClosed":"Tickets Closed",
|
||||
"ticketsDeleted":"Tickets Deleted",
|
||||
"ticketsReopened":"Tickets Reopened",
|
||||
"ticketsAutoclosed":"Tickets Autoclosed",
|
||||
"transcriptsCreated":"Transcripts Created",
|
||||
"startupDate":"Startup Date",
|
||||
"latestUpdate":"Latest Update",
|
||||
"ticketCreatedOn":"Ticket Created On",
|
||||
"ticketCreatedBy":"Ticket Created By",
|
||||
"messagesSent":"Messages Sent",
|
||||
"status":"Status",
|
||||
"participants":"Participants",
|
||||
"role":"Role",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Member",
|
||||
"open":"Open",
|
||||
"reopened":"Reopened",
|
||||
"closed":"Closed",
|
||||
"autoclosed":"Autoclosed"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"This user can't be found in the stats database!"
|
||||
}
|
||||
}
|
||||
+92
-58
@@ -1,58 +1,58 @@
|
||||
{
|
||||
"_CREDITS":"t0miiis#3022",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"spyeye_",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Neplatny Argument!",
|
||||
"missingArgsTitle":"Neplatný Argument!",
|
||||
"missingArgsDescription":"Chybí Argument",
|
||||
"noPermsTitle":"Nemáš práva!",
|
||||
"noPermsDescription":"Potřebujes `ADMINISTRATOR`roli nebo byt v listině povolenych roli!",
|
||||
"noPermsDelete":"Pouze Admini muůřou mazat ticket!",
|
||||
"chooseFromListTitle":"Neplatný ID",
|
||||
"noPermsTitle":"K tomuto nemáš práva!",
|
||||
"noPermsDescription":"Potřebuješ `ADMINISTRATOR` roli nebo být na seznamu povolených rolí!",
|
||||
"noPermsDelete":"Pouze Admin může vymazat ticket!",
|
||||
"chooseFromListTitle":"Neplatné ID",
|
||||
"chooseFromListDescription":"Vyber si jedno z ID níže:",
|
||||
"boterror":"Bot Chyba!",
|
||||
"boterror":"Chyba Bota!",
|
||||
"notInTicketTitle":"Nejsi v ticketu!",
|
||||
"notInTicketDescription":"Tenhle příkaz nefunguje mimo ticket!",
|
||||
"ticketDoesntExist":"Tenhle ticket už neexistuje !",
|
||||
"roleDoesntExist":"Tenhle role už neexistuje!",
|
||||
"anotherOption":"This option is not a ticket but another type!",
|
||||
"maxAmountTitle":"Max počet byl dosáhnut!",
|
||||
"maxAmountDescription":"Dosáhl jsi max počet povolených ticketu!\nSo nemůžeš si vytvořit nový!",
|
||||
"somethingWentWrong":"**Něco se pokazilo!**\nProsím zkus to jindy!"
|
||||
"notInTicketDescription":"Tento příkaz nefunguje mimo ticket!",
|
||||
"ticketDoesntExist":"Tento ticket už neexistuje!",
|
||||
"roleDoesntExist":"Tato role už neexistuje!",
|
||||
"anotherOption":"Tato možnost není ticket, ale jiná!",
|
||||
"maxAmountTitle":"Byl dosáhnut maximální počet",
|
||||
"maxAmountDescription":"Dosáhl jsi maximální počet povolených ticketů!\nTakže si nemůžeš vytvořit nový.",
|
||||
"somethingWentWrong":"**Něco se pokazilo!**\nProsíme zkuste to později!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Přidat {0} do tohohle ticketu!",
|
||||
"userRemovedTitle":"Odstranit {0} z tohohle ticketu!",
|
||||
"renameTitle":"Změnit jmeno na {0}!",
|
||||
"closeTitle":"Zavři tenhle ticket!",
|
||||
"deleteTitle":"Mažu ticket...",
|
||||
"reopenTitle":"Znovu otevíram ticket",
|
||||
"userAddedTitle":"Přidat {0} do tohoto ticketu.",
|
||||
"userRemovedTitle":"Odstranit {0} z tohoto ticketu.",
|
||||
"renameTitle":"Změnit jméno na {0}!",
|
||||
"closeTitle":"Uzavřít tento ticket!",
|
||||
"deleteTitle":"Probíhá vymazání ticketu...",
|
||||
"reopenTitle":"Ticket byl znovu otevřen",
|
||||
|
||||
"claimTitle":"Ticket nyní převzal {0}",
|
||||
"unclaimTitle":"Ticket už není převzaný",
|
||||
"changeTitle":"Změněn typ ticketu {0}!",
|
||||
"unclaimTitle":"Ticket není nadále převzaný",
|
||||
"changeTitle":"Typ ticketu byl změněn {0}!",
|
||||
|
||||
"statsTitle":"Tady je info o ticketu {0}!",
|
||||
"autocloseTitle":"Tento ticketu bude automaticky uzavřen za {0}!",
|
||||
"autocloseRejectTitle":"Tento ticketu už nebude automaticky uzavřen!",
|
||||
"autocloseWarn":"Toto zavře pouze neaktivní tickety!",
|
||||
"statsTitle":"Zde jsou informace o ticketu {0}!",
|
||||
"autocloseTitle":"Tento ticket bude automaticky uzavřen za {0}!",
|
||||
"autocloseRejectTitle":"Tento ticket již nebude automaticky uzavřen!",
|
||||
"autocloseWarn":"Tato možnost uzavře pouze neaktivní tickety!",
|
||||
|
||||
"goToTicket":"běž do ticketu",
|
||||
"ticketWarning":"The embed is in the message below!",
|
||||
"maxTicketWarning":"**Warning:** _Můžeš vytvořit pouze {0} v tuhle chvíli!_"
|
||||
"goToTicket":"Jít do ticketu",
|
||||
"ticketWarning":"Embed se náchází pod touto zprávou.",
|
||||
"maxTicketWarning":"**Warning:** _V tuto chvíli můžeš vytvořit pouze {0} ticketů_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Dostupné příkazy:",
|
||||
"header1":"**Běž do {0} pro vytvoření ticketi!**\n\n",
|
||||
"header2":"**Použíj příkaz `/nový` nebo `/ticket` pro vytvoření ticketu**\n\n",
|
||||
"title":"Zde jsou všechny dostupné příkazy:",
|
||||
"header1":"**Pro vytvoření ticketu bež do {0} **\n\n",
|
||||
"header2":"**Použij příkaz `/new` nebo `/ticket` pro vytvoření nového ticketu**\n\n",
|
||||
|
||||
"msgCmd":"Vytvoř embed s tlačíky. (admins only)",
|
||||
"renameCmd":"Přejmenovat ticket. (no spaces)",
|
||||
"msgCmd":"Vytvoř embed s tlačíky. (Pouze Admin)",
|
||||
"renameCmd":"Přejmenovat ticket. (Bez mezer)",
|
||||
"closeCmd":"Zavřít ticket.",
|
||||
"deleteCmd":"Odstranit ticket.",
|
||||
"addCmd":"Pridat uživatele do ticketu.",
|
||||
"addCmd":"Přidat uživatele do ticketu.",
|
||||
"removeCmd":"Odebrat uživatele z ticketu.",
|
||||
"reopenCmd":"Re-Open a ticket after it was closed.",
|
||||
"reopenCmd":"Znovu otevře ticket, který byl uzavřen.",
|
||||
"changeCmd":"Změnit typ ticketu.",
|
||||
"claimCmd":"Převzi ticket.",
|
||||
"unclaimCmd":"Uvolnit ticket.",
|
||||
@@ -60,42 +60,76 @@
|
||||
"autocloseCmd":"Nastavit automatické uzavření ticketu"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Zavřit ticket",
|
||||
"close":"Uzavřít ticket",
|
||||
"delete":"Vymazat ticket",
|
||||
"reopen":"Znovu otevřít ticket",
|
||||
"closeWithReason":"zavřít s důvodem"
|
||||
"closeWithReason":"Zavřít s důvodem"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Pouze admini muzou zde psát ted!\n\n*Klikni na tlačítko níže pro smazání nebo pro znovu otevření tohohle ticketu!*",
|
||||
"closedDescription":"Zde mohou psát pouze Admin uživatelé\n\n*Klikni na tlačítko níže pro smazání nebo pro znovu otevření tohoto ticketu!*",
|
||||
"createdTitle":"Ticket otevřen!",
|
||||
"createdDescription":"Tvůj ticket je vytvořem, můžeš si ho všimnout pomocí pingu!",
|
||||
"createdDescription":"Tvůj ticket je vytvořen, můžeš si ho všimnout pomocí pingu!",
|
||||
|
||||
"newTicketDmTitle":"Nový ticket!",
|
||||
"closedTicketDmTitle":"Ticket Zavřený!",
|
||||
"deletedTicketDmTitle":"Ticket Odstranen!",
|
||||
"closedTicketDmDescription":"Tvuj ticket je uzavřen!",
|
||||
"deletedTicketDmDescription":"Tvuj ticket byl smazan!",
|
||||
"closedTicketDmTitle":"Ticket byl Uzavřen!",
|
||||
"deletedTicketDmTitle":"Ticket byl Odstraněn!",
|
||||
"closedTicketDmDescription":"Tvůj ticket je uzavřen!",
|
||||
"deletedTicketDmDescription":"Tvůj ticket byl vymazán!",
|
||||
"reopenTicketDmTitle":"Ticket je znovu otevřený!",
|
||||
"reopenTicketDmDescription":"Tvuj ticket byl znovu ovetřený!",
|
||||
"reopenTicketDmDescription":"Tvůj ticket byl znovu otevřený!",
|
||||
|
||||
"chooseCategory":"Vyber si kategorii:",
|
||||
"gettingdeleted":"Ticket bude vymazan...",
|
||||
"gettingdeleted":"Ticket bude vymazán...",
|
||||
|
||||
"none":"žádný",
|
||||
"reason":"důvod",
|
||||
"createdat":"otevřeno v",
|
||||
"openedby":"otevřel",
|
||||
"deletedby":"smazano uzivatelem",
|
||||
"closedby":"zavreno uzivatelem",
|
||||
"none":"Žádný",
|
||||
"reason":"Důvod",
|
||||
"createdat":"Otevřeno v",
|
||||
"openedby":"Otevřel",
|
||||
"deletedby":"Vymázáno uživatelem",
|
||||
"closedby":"Uzavřeno uživatelem",
|
||||
|
||||
"modalreason":"Jakž byl důvod k zavření toho ticketu?",
|
||||
"chooseATicket": "Vyber ticket"
|
||||
"modalreason":"Zde napiš důvod uzavření tohoto ticketu.",
|
||||
"chooseATicket": "Vyber si ticket"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Přepis",
|
||||
"processed":"Tento přepis se zpracoval",
|
||||
"title":"Záznam",
|
||||
"processed":"Tento záznam byl zpracován",
|
||||
"wait":"Prosím počkej!",
|
||||
"estimated":"Odhadovaný čas",
|
||||
"available":"Záloha je uložena zde!"
|
||||
"available":"Záloha je uložena zde."
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Globální statistiky",
|
||||
"ticketTitle":"Ticket statistiky pro {0}",
|
||||
"userTitle":"Uživatelské statistiky pro {0}",
|
||||
"systemTitle":"Systémové statistiky",
|
||||
"versionTitle":"Verze bota",
|
||||
|
||||
"ticketsCreated":"Ticketů vytvořeno:",
|
||||
"ticketsClosed":"Tickety zavřeno:",
|
||||
"ticketsDeleted":"Ticketu smazáno:",
|
||||
"ticketsReopened":"Ticketů znovuotevřených:",
|
||||
"ticketsAutoclosed":"Ticketů automaticky zavřeno:",
|
||||
"transcriptsCreated":"Záloh ticketů vytvořeno:",
|
||||
"startupDate":"Datum zapnutí",
|
||||
"latestUpdate":"Poslední aktualizace",
|
||||
"ticketCreatedOn":"Ticket založen na",
|
||||
"ticketCreatedBy":"Ticket vytvořil",
|
||||
"messagesSent":"Zpráva poslána",
|
||||
"status":"Status",
|
||||
"participants":"Účastníci",
|
||||
"role":"Role",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Globální Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Člen",
|
||||
"open":"Otevřený",
|
||||
"reopened":"Znovuotevřený",
|
||||
"closed":"Zavřený",
|
||||
"autoclosed":"Automaticky zavřený"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Tento uživatel nebyl nalezen v databázi statistik!"
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"the_gamer#5095",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":".the_gamer",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors": {
|
||||
"missingArgsTitle": "Ugyldigt Argument!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait": "Vent venligst!",
|
||||
"estimated": "Estimeret tid",
|
||||
"available": "Transcriptet er tilgængelig her"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Globale Statestikker",
|
||||
"ticketTitle":"Ticket Statestikker tilhørende: {0}",
|
||||
"userTitle":"Bruger Statestikker tilhørende: {0}",
|
||||
"systemTitle":"System Statestikker",
|
||||
"versionTitle":"Bot Version",
|
||||
|
||||
"ticketsCreated":"Tickets Oprettet",
|
||||
"ticketsClosed":"Tickets Lukket",
|
||||
"ticketsDeleted":"Tickets Slettet",
|
||||
"ticketsReopened":"Tickets Genåbnet",
|
||||
"ticketsAutoclosed":"Tickets Autolukket",
|
||||
"transcriptsCreated":"Transcripts Oprettet",
|
||||
"startupDate":"Startup Dato",
|
||||
"latestUpdate":"Seneste Opdatering",
|
||||
"ticketCreatedOn":"Ticket Oprettet Den",
|
||||
"ticketCreatedBy":"Ticket Oprettet Af",
|
||||
"messagesSent":"Beskeder sendt",
|
||||
"status":"Status",
|
||||
"participants":"Deltagere",
|
||||
"role":"Rolle",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Medlem",
|
||||
"open":"Åben",
|
||||
"reopened":"Genåbnet",
|
||||
"closed":"Lukket",
|
||||
"autoclosed":"Autolukket"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Denne bruger kan ikke findes i statestik databasen!"
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"DJj123dj#1706",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"djj123dj",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Onjuiste parameters!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Gelieve te wachten!",
|
||||
"estimated":"Geschatte tijd",
|
||||
"available":"Het transcript is hier beschikbaar"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Globale Stats",
|
||||
"ticketTitle":"Ticket Stats voor {0}",
|
||||
"userTitle":"User Stats voor {0}",
|
||||
"systemTitle":"Systeem Stats",
|
||||
"versionTitle":"Bot Versie",
|
||||
|
||||
"ticketsCreated":"Tickets Gemaakt",
|
||||
"ticketsClosed":"Tickets Gesloten",
|
||||
"ticketsDeleted":"Tickets Verwijderd",
|
||||
"ticketsReopened":"Tickets Heropend",
|
||||
"ticketsAutoclosed":"Tickets Auto-gesloten",
|
||||
"transcriptsCreated":"Transcripts Gemaakt",
|
||||
"startupDate":"Opstart Datum",
|
||||
"latestUpdate":"Laatste Update",
|
||||
"ticketCreatedOn":"Ticket Gemaakt Op",
|
||||
"ticketCreatedBy":"Ticket Gemaakt Door",
|
||||
"messagesSent":"Berichten Verzonden",
|
||||
"status":"Status",
|
||||
"participants":"Deelnemers",
|
||||
"role":"Rol",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Globale Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Member",
|
||||
"open":"Open",
|
||||
"reopened":"Heropend",
|
||||
"closed":"Gesloten",
|
||||
"autoclosed":"Auto-gesloten"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Deze user kan niet in de database gevonden worden!"
|
||||
}
|
||||
}
|
||||
+35
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"DJdj Development",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Invalid Arguments!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Please wait!",
|
||||
"estimated":"Estimated time",
|
||||
"available":"The transcript is available here"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Global Stats",
|
||||
"ticketTitle":"Ticket Stats for {0}",
|
||||
"userTitle":"User Stats for {0}",
|
||||
"systemTitle":"System Stats",
|
||||
"versionTitle":"Bot Version",
|
||||
|
||||
"ticketsCreated":"Tickets Created",
|
||||
"ticketsClosed":"Tickets Closed",
|
||||
"ticketsDeleted":"Tickets Deleted",
|
||||
"ticketsReopened":"Tickets Reopened",
|
||||
"ticketsAutoclosed":"Tickets Autoclosed",
|
||||
"transcriptsCreated":"Transcripts Created",
|
||||
"startupDate":"Startup Date",
|
||||
"latestUpdate":"Latest Update",
|
||||
"ticketCreatedOn":"Ticket Created On",
|
||||
"ticketCreatedBy":"Ticket Created By",
|
||||
"messagesSent":"Messages Sent",
|
||||
"status":"Status",
|
||||
"participants":"Participants",
|
||||
"role":"Role",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Member",
|
||||
"open":"Open",
|
||||
"reopened":"Reopened",
|
||||
"closed":"Closed",
|
||||
"autoclosed":"Autoclosed"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"This user can't be found in the stats database!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"iamnotmega",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Puuduvad argumendid!",
|
||||
"missingArgsDescription":"Puuduv argument",
|
||||
"noPermsTitle":"Õiguseid pole!",
|
||||
"noPermsDescription":"Teil peab olema ADMINISTRAATORI luba või olema lubatud rollide loendis!",
|
||||
"noPermsDelete":"Ainult administraatorid saavad piletit kustutada!",
|
||||
"chooseFromListTitle":"Vigane ID",
|
||||
"chooseFromListDescription":"Valige allolevast id-st:",
|
||||
"boterror":"Boti viga!",
|
||||
"notInTicketTitle":"Te ei ole piletil!",
|
||||
"notInTicketDescription":"See käsk ei tööta pileti väliste käskudena!",
|
||||
"ticketDoesntExist":"See pilet ei eksisteeri enam!",
|
||||
"roleDoesntExist":"See roll ei eksisteeri enam!",
|
||||
"anotherOption":"See valik pole pilet, vaid teist tüüpi!",
|
||||
"maxAmountTitle":"Maksimaalne arv saavutatud!",
|
||||
"maxAmountDescription":"Olete saavutanud maksimaalse lubatud piletite arvu!\nSeetõttu ei saa te uut luua!",
|
||||
"somethingWentWrong":"**Midagi läks valesti!**\nPalun proovige hiljem uuesti!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Lisatud {0} sellele piletile!",
|
||||
"userRemovedTitle":"Eemaldatud {0} sellest piletist!",
|
||||
"renameTitle":"Muudetud nimi {0}-ks!",
|
||||
"closeTitle":"See pilet on suletud!",
|
||||
"deleteTitle":"See pilet kustutatakse...",
|
||||
"reopenTitle":"See pilet on taas avatud!",
|
||||
|
||||
"claimTitle":"See pilet on määratud {0}-le",
|
||||
"unclaimTitle":"See pilet ei ole enam määratud!",
|
||||
"changeTitle":"Piletitüüp muudetud {0}-ks!",
|
||||
|
||||
"statsTitle":"Siin on statistika {0} jaoks!",
|
||||
"autocloseTitle":"See pilet suletakse automaatselt pärast {0}!",
|
||||
"autocloseRejectTitle":"See pilet ei suletakse enam automaatselt!",
|
||||
"autocloseWarn":"See mõjutab ainult mitteaktiivseid pileteid!",
|
||||
|
||||
"goToTicket":"mine piletile",
|
||||
"ticketWarning":"Manus on allolevas sõnumis!",
|
||||
"maxTicketWarning":"**Hoiatus:** _Saate luua ainult {0} pilet(it) korraga!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Saadaval olevad käsud:",
|
||||
"header1":"**Mine {0} juurde, et luua pilet!**\n\n",
|
||||
"header2":"**Käivitage käsk `/new` või `/ticket`, et luua pilet!**\n\n",
|
||||
|
||||
"msgCmd":"Kuvab manust koos nuppudega. (ainult administraatorid)",
|
||||
"renameCmd":"Piletile nime andmine. (ilma tühikuteta)",
|
||||
"closeCmd":"Pilet sulgeda.",
|
||||
"deleteCmd":"Pilet kustutada.",
|
||||
"addCmd":"Lisage kasutaja piletile.",
|
||||
"removeCmd":"Eemaldage kasutaja piletist.",
|
||||
"reopenCmd":"Avage pilet pärast selle sulgemist uuesti.",
|
||||
"changeCmd":"Muuta piletitüüpi.",
|
||||
"claimCmd":"Pilet määrata.",
|
||||
"unclaimCmd":"Pilet määramata jätta.",
|
||||
"statsCmd":"Kuva pileti statistika.",
|
||||
"autocloseCmd":"Määrake taimer, et pilet automaatselt sulgeda"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Sulge pilet",
|
||||
"delete":"Kustuta pilet",
|
||||
"reopen":"Ava pilet uuesti",
|
||||
"closeWithReason":"sulge põhjusega"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Ainult administraatorid saavad selles piletis rääkida!\n\n*Klõpsake alloleval nupul, et see pilet kustutada või uuesti avada!*",
|
||||
"createdTitle":"Pilet loodud!",
|
||||
"createdDescription":"Teie pilet on loodud, tuvastate selle pingi järgi!",
|
||||
|
||||
"newTicketDmTitle":"Uus pilet!",
|
||||
"closedTicketDmTitle":"Pilet suletud!",
|
||||
"deletedTicketDmTitle":"Pilet kustutatud!",
|
||||
"closedTicketDmDescription":"Teie pilet on suletud!",
|
||||
"deletedTicketDmDescription":"Teie pilet on kustutatud!",
|
||||
"reopenTicketDmTitle":"Pilet uuesti avatud!",
|
||||
"reopenTicketDmDescription":"Teie pilet on uuesti avatud!",
|
||||
|
||||
"chooseCategory":"vali kategooria:",
|
||||
"gettingdeleted":"Pilet kustutatakse...",
|
||||
|
||||
"none":"puudub",
|
||||
"reason":"põhjus",
|
||||
"createdat":"loodud",
|
||||
"openedby":"avanud",
|
||||
"deletedby":"kustutanud",
|
||||
"closedby":"sulgenud",
|
||||
|
||||
"modalreason":"Mis on selle pileti sulgemise põhjus?",
|
||||
"chooseATicket":"Valige pilet"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Protokoll",
|
||||
"processed":"See protokoll on töötlemisel",
|
||||
"wait":"Palun oodake!",
|
||||
"estimated":"Eeldatav aeg",
|
||||
"available":"Protokoll on saadaval siin"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Üldine statistika",
|
||||
"ticketTitle":"Piletistatistika {0} jaoks",
|
||||
"userTitle":"Kasutajastatistika {0} jaoks",
|
||||
"systemTitle":"Süsteemi statistika",
|
||||
"versionTitle":"Boti versioon",
|
||||
|
||||
"ticketsCreated":"Loodud piletid",
|
||||
"ticketsClosed":"Suletud piletid",
|
||||
"ticketsDeleted":"Kustutatud piletid",
|
||||
"ticketsReopened":"Uuesti avatud piletid",
|
||||
"ticketsAutoclosed":"Automaatselt suletud piletid",
|
||||
"transcriptsCreated":"Loodud protokollid",
|
||||
"startupDate":"Käivituskuupäev",
|
||||
"latestUpdate":"Viimane värskendus",
|
||||
"ticketCreatedOn":"Pilet loodud",
|
||||
"ticketCreatedBy":"Pilet loodud kasutaja poolt",
|
||||
"messagesSent":"Saadetud sõnumid",
|
||||
"status":"Olek",
|
||||
"participants":"Osalejad",
|
||||
"role":"Roll",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Globaalne administraator",
|
||||
"ticketAdmin":"Pileti administraator",
|
||||
"member":"Liige",
|
||||
"open":"Avatud",
|
||||
"reopened":"Uuesti avatud",
|
||||
"closed":"Suletud",
|
||||
"autoclosed":"Automaatselt suletud"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Seda kasutajat ei leitud statistika andmebaasist!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"iamnotmega",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Virheelliset argumentit!",
|
||||
"missingArgsDescription":"Puuttuva argumentti",
|
||||
"noPermsTitle":"Ei oikeuksia!",
|
||||
"noPermsDescription":"Tarvitset `ADMINISTRATOR`-oikeudet tai olla sallittujen roolien listalla!",
|
||||
"noPermsDelete":"Vain ylläpitäjät voivat poistaa lipun!",
|
||||
"chooseFromListTitle":"Virheellinen tunniste",
|
||||
"chooseFromListDescription":"Valitse yksi alla olevista tunnisteista:",
|
||||
"boterror":"Botti virhe!",
|
||||
"notInTicketTitle":"Et ole lipussa!",
|
||||
"notInTicketDescription":"Tämä komento ei toimi lipun ulkopuolella!",
|
||||
"ticketDoesntExist":"Tätä lippua ei ole enää olemassa!",
|
||||
"roleDoesntExist":"Tätä roolia ei ole enää olemassa!",
|
||||
"anotherOption":"Tämä vaihtoehto ei ole lippu vaan toinen tyyppi!",
|
||||
"maxAmountTitle":"Maksimimäärä saavutettu!",
|
||||
"maxAmountDescription":"Olet saavuttanut sallittujen lippujen maksimimäärän!\nEt voi luoda uutta!",
|
||||
"somethingWentWrong":"**Jotain meni pieleen!**\nYritä uudelleen myöhemmin!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Lisätty {0} tähän lippuun!",
|
||||
"userRemovedTitle":"Poistettu {0} tästä lipusta!",
|
||||
"renameTitle":"Nimetty uudelleen {0}!",
|
||||
"closeTitle":"Suljettu tämä lippu!",
|
||||
"deleteTitle":"Poistetaan tätä lippua...",
|
||||
"reopenTitle":"Avattu tämä lippu uudelleen!",
|
||||
|
||||
"claimTitle":"Tämä lippu on varattu {0}:lle",
|
||||
"unclaimTitle":"Tämä lippu ei ole enää varattu!",
|
||||
"changeTitle":"Vaihdettu lipun tyyppi {0}:ksi!",
|
||||
|
||||
"statsTitle":"Tässä ovat tilastot {0}:lle!",
|
||||
"autocloseTitle":"Tämä lippu sulkeutuu automaattisesti {0} jälkeen!",
|
||||
"autocloseRejectTitle":"Tämä lippu ei sulkeudu enää automaattisesti!",
|
||||
"autocloseWarn":"Tämä vaikuttaa vain passiivisiin lipputilanteisiin!",
|
||||
|
||||
"goToTicket":"siirry lippuun",
|
||||
"ticketWarning":"Upotus on alla olevassa viestissä!",
|
||||
"maxTicketWarning":"**Varoitus:** _Voit luoda kerralla vain {0} lippua!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Saatavilla olevat komennot:",
|
||||
"header1":"**Siirry {0}:ään luodaksesi lipun!**\n\n",
|
||||
"header2":"**Aja komento `/new` tai `/ticket` luodaksesi lipun!**\n\n",
|
||||
|
||||
"msgCmd":"Luo upotus painikkeilla. (vain ylläpitäjille)",
|
||||
"renameCmd":"Nimeä lippu uudelleen. (ilman välilyöntejä)",
|
||||
"closeCmd":"Sulje lippu.",
|
||||
"deleteCmd":"Poista lippu.",
|
||||
"addCmd":"Lisää käyttäjä lippuun.",
|
||||
"removeCmd":"Poista käyttäjä lipusta.",
|
||||
"reopenCmd":"Avaa lippu uudelleen sen sulkeutumisen jälkeen.",
|
||||
"changeCmd":"Vaihda lipun tyyppi.",
|
||||
"claimCmd":"Varaa lippu.",
|
||||
"unclaimCmd":"Poista varaaminen lippusta.",
|
||||
"statsCmd":"Näytä lipun tilastot.",
|
||||
"autocloseCmd":"Aseta ajastin sulkeaksesi lipun automaattisesti"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Sulje lippu",
|
||||
"delete":"Poista lippu",
|
||||
"reopen":"Avaa lippu uudelleen",
|
||||
"closeWithReason":"sulje syyn kanssa"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Vain ylläpitäjät voivat puhua tässä lipussa nyt!\n\n*Napsauta alla olevaa painiketta poistaaksesi tai avataksesi tämän lipun!*",
|
||||
"createdTitle":"Lippu luotu!",
|
||||
"createdDescription":"Lippusi on luotu, voit tunnistaa sen pingillä!",
|
||||
|
||||
"newTicketDmTitle":"Uusi lippu!",
|
||||
"closedTicketDmTitle":"Lippu suljettu!",
|
||||
"deletedTicketDmTitle":"Lippu poistettu!",
|
||||
"closedTicketDmDescription":"Lippusi on suljettu!",
|
||||
"deletedTicketDmDescription":"Lippusi on poistettu!",
|
||||
"reopenTicketDmTitle":"Lippu avattu uudelleen!",
|
||||
"reopenTicketDmDescription":"Lippusi on avattu uudelleen!",
|
||||
|
||||
"chooseCategory":"valitse kategoria:",
|
||||
"gettingdeleted":"Lippu poistetaan...",
|
||||
|
||||
"none":"ei mikään",
|
||||
"reason":"syy",
|
||||
"createdat":"luotu",
|
||||
"openedby":"avasi",
|
||||
"deletedby":"poistanut",
|
||||
"closedby":"sulkenut",
|
||||
|
||||
"modalreason":"Mikä on syy tämän lipun sulkemiseen?",
|
||||
"chooseATicket": "Valitse lippu"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Pöytäkirja",
|
||||
"processed":"Tämä pöytäkirja käsitellään",
|
||||
"wait":"Odota hetki!",
|
||||
"estimated":"Arvioitu aika",
|
||||
"available":"Pöytäkirja on saatavilla täällä"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Maailmanlaajuiset tilastot",
|
||||
"ticketTitle":"Lipputilastot {0}:lle",
|
||||
"userTitle":"Käyttäjätilastot {0}:lle",
|
||||
"systemTitle":"Järjestelmätilastot",
|
||||
"versionTitle":"Bottiversio",
|
||||
|
||||
"ticketsCreated":"Luodut liput",
|
||||
"ticketsClosed":"Suljetut liput",
|
||||
"ticketsDeleted":"Poistetut liput",
|
||||
"ticketsReopened":"Uudelleen avatut liput",
|
||||
"ticketsAutoclosed":"Automaattisesti suljetut liput",
|
||||
"transcriptsCreated":"Luodut pöytäkirjat",
|
||||
"startupDate":"Käynnistyspäivämäärä",
|
||||
"latestUpdate":"Viimeisin päivitys",
|
||||
"ticketCreatedOn":"Lippu luotu",
|
||||
"ticketCreatedBy":"Lippu luonut",
|
||||
"messagesSent":"Lähetetyt viestit",
|
||||
"status":"Tila",
|
||||
"participants":"Osallistujat",
|
||||
"role":"Rooli",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Globaali ylläpitäjä",
|
||||
"ticketAdmin":"Lippuadmin",
|
||||
"member":"Jäsen",
|
||||
"open":"Auki",
|
||||
"reopened":"Uudelleen avattu",
|
||||
"closed":"Suljettu",
|
||||
"autoclosed":"Automaattisesti suljettu"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Tätä käyttäjää ei löydy tilastotietokannasta!"
|
||||
}
|
||||
}
|
||||
+83
-49
@@ -1,35 +1,35 @@
|
||||
{
|
||||
"_CREDITS":"Sanke#6086",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"tostam",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Arguments invalides !",
|
||||
"missingArgsDescription":"Argument manquant",
|
||||
"noPermsTitle":"Pas de permissions!",
|
||||
"missingArgsDescription":"Argument manquant !",
|
||||
"noPermsTitle":"Tu n'as pas les permissions requises !",
|
||||
"noPermsDescription":"Vous avez besoin de la permission `ADMINISTRATOR` ou être dans la liste des rôles autorisés !",
|
||||
"noPermsDelete":"Seuls les administrateurs peuvent supprimer un ticket!",
|
||||
"chooseFromListTitle":"Invalid ID",
|
||||
"noPermsDelete":"Seuls les staffs peuvent supprimer un ticket !",
|
||||
"chooseFromListTitle":"ID invalide !",
|
||||
"chooseFromListDescription":"Choisissez l'un des identifiants ci-dessous:",
|
||||
"boterror":"Bot Error!",
|
||||
"boterror":"Erreur du bot !",
|
||||
"notInTicketTitle":"Vous n'êtes pas dans un ticket !",
|
||||
"notInTicketDescription":"Cette commande ne fonctionne pas en dehors des tickets !",
|
||||
"ticketDoesntExist":"Ce ticket n'existe plus!",
|
||||
"roleDoesntExist":"Ce rôle n'existe plus!",
|
||||
"ticketDoesntExist":"Ce ticket n'existe pas !",
|
||||
"roleDoesntExist":"Ce rôle n'existe pas !",
|
||||
"anotherOption":"Cette option n'est pas un ticket mais un autre type !",
|
||||
"maxAmountTitle":"Montant maximum atteint!",
|
||||
"maxAmountTitle":"Montant maximum de ticket atteint !",
|
||||
"maxAmountDescription":"Vous avez atteint le nombre maximum de tickets autorisés !\nVous ne pouvez donc pas en créer un nouveau !",
|
||||
"somethingWentWrong":"**Quelque chose s'est mal passé !**\nVeuillez réessayer une autre fois !"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"{0} a été ajouté à ce ticket !",
|
||||
"userRemovedTitle":"Supprimé {0} de ce ticket!",
|
||||
"renameTitle":"Changement du nom en {0}!",
|
||||
"closeTitle":"Fermé ce ticket!",
|
||||
"userRemovedTitle":"{0} a été supprimé de ce ticket !",
|
||||
"renameTitle":"Changement de nom du ticket en {0} !",
|
||||
"closeTitle":"Ticket fermé",
|
||||
"deleteTitle":"Suppression de ce ticket...",
|
||||
"reopenTitle":"A rouvert ce ticket!",
|
||||
"reopenTitle":"Ticket réouvert",
|
||||
|
||||
"claimTitle":"Ce ticket est maintenant réclamé à {0}",
|
||||
"unclaimTitle":"Ce ticket n'est pas réclamé!",
|
||||
"claimTitle":"Ce ticket est maintenant réclamé par {0}",
|
||||
"unclaimTitle":"Ce ticket n'est plus réclamé !",
|
||||
"changeTitle":"Modification du type de ticket en {0} !",
|
||||
|
||||
"statsTitle":"Voici les statistiques pour {0} !",
|
||||
@@ -39,63 +39,97 @@
|
||||
|
||||
"goToTicket":"Aller au ticket",
|
||||
"ticketWarning":"L'intégration est dans le message ci-dessous !",
|
||||
"maxTicketWarning":"**Attention :** _Vous ne pouvez créer que {0} ticket(s) à la fois !_"
|
||||
"maxTicketWarning":"**Attention :** _Vous ne pouvez créer seulement {0} ticket(s) à la fois !_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Commandes disponibles :",
|
||||
"header1":"**Allez à {0} pour créer un ticket !**\n\n",
|
||||
"title":"Commandes disponibles :",
|
||||
"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":"Faire apparaître 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":"Rouvrir un ticket après sa clôture.",
|
||||
"changeCmd":"Changer le type de ticket.",
|
||||
"claimCmd":"Réclamer un billet",
|
||||
"unclaimCmd":"Annuler la réclamation d'un ticket.",
|
||||
"statsCmd":"Afficher les statistiques des tickets.",
|
||||
"msgCmd":"Faire apparaître une intégration avec des boutons (administrateurs uniquement)",
|
||||
"renameCmd":"Renommer un ticket (sans espaces)",
|
||||
"closeCmd":"Fermer un ticket",
|
||||
"deleteCmd":"Supprimer un ticket",
|
||||
"addCmd":"Ajouter un utilisateur au ticket",
|
||||
"removeCmd":"Supprimer un utilisateur du ticket",
|
||||
"reopenCmd":"Réouvrir un ticket après sa clôture",
|
||||
"changeCmd":"Changer le type de ticket",
|
||||
"claimCmd":"Réclamer un ticket",
|
||||
"unclaimCmd":"Annuler la réclamation d'un ticket",
|
||||
"statsCmd":"Afficher les statistiques des tickets",
|
||||
"autocloseCmd":"Définir une minuterie pour fermer automatiquement le ticket"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Fermer le ticket",
|
||||
"delete":"Supprimer le billet",
|
||||
"reopen":"Billet de réouverture",
|
||||
"closeWithReason":"fermer avec une raison"
|
||||
"delete":"Supprimer le ticket",
|
||||
"reopen":"Réouvrir le ticket",
|
||||
"closeWithReason":"Fermer avec une raison"
|
||||
},
|
||||
"messages":{
|
||||
"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éé !",
|
||||
"closedDescription":"Seuls les administrateurs peuvent parler dans ce ticket maintenant !\n\n*Cliquez sur le bouton ci-dessous pour supprimer ou réouvrir ce ticket !*",
|
||||
"createdTitle":"Ticket créé !",
|
||||
"createdDescription":"Votre ticket est créé, vous pouvez le détecter par un ping !",
|
||||
|
||||
"newTicketDmTitle":"Nouveau billet!",
|
||||
"closedTicketDmTitle":"Billet fermé!",
|
||||
"deletedTicketDmTitle":"Billet supprimé !",
|
||||
"closedTicketDmDescription":"Votre billet est fermé !",
|
||||
"deletedTicketDmDescription":"Votre billet est supprimé !",
|
||||
"reopenTicketDmTitle":"Billet rouvert!",
|
||||
"reopenTicketDmDescription":"Votre billet est rouvert !",
|
||||
"newTicketDmTitle":"Nouveau ticket !",
|
||||
"closedTicketDmTitle":"Ticket fermé !",
|
||||
"deletedTicketDmTitle":"Ticket supprimé !",
|
||||
"closedTicketDmDescription":"Votre ticket est fermé !",
|
||||
"deletedTicketDmDescription":"Votre ticket est supprimé !",
|
||||
"reopenTicketDmTitle":"Ticket réouvert !",
|
||||
"reopenTicketDmDescription":"Votre ticket est réouvert !",
|
||||
|
||||
"chooseCategory":"choisissez une catégorie:",
|
||||
"chooseCategory":"Choisissez une catégorie:",
|
||||
"gettingdeleted":"Le ticket est en cours de suppression...",
|
||||
|
||||
"none":"rien",
|
||||
"reason":"raison",
|
||||
"none":"Rien",
|
||||
"reason":"Raison",
|
||||
"createdat":"Créé à",
|
||||
"openedby":"Ouvert par",
|
||||
"deletedby":"supprimé par",
|
||||
"closedby":"fermé par",
|
||||
"deletedby":"Supprimé par",
|
||||
"closedby":"Fermé par",
|
||||
|
||||
"modalreason":"Qu’elle est la raison pour fermer ce ticket?",
|
||||
"modalreason":"Qu'elle est la raison pour fermer ce ticket ?",
|
||||
"chooseATicket": "Choisir un ticket"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Transcript",
|
||||
"processed":"Cette transcript est en cours de traitement",
|
||||
"wait":"S'il vous plait, attendez...",
|
||||
"estimated":"Temps estime:",
|
||||
"estimated":"Temps estimé:",
|
||||
"available":"La transcript est disponible ici"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Statistiques du serveur",
|
||||
"ticketTitle":"Statistiques des tickets pour {0}",
|
||||
"userTitle":"Statistiques des utilisateurs pour {0}",
|
||||
"systemTitle":"Statistiques du système",
|
||||
"versionTitle":"Version du bot",
|
||||
|
||||
"ticketsCreated":"Tickets créés",
|
||||
"ticketsClosed":"Tickets fermés",
|
||||
"ticketsDeleted":"Tickets supprimés",
|
||||
"ticketsReopened":"Tickets réouverts",
|
||||
"ticketsAutoclosed":"Tickets fermés automatiquement",
|
||||
"transcriptsCreated":"Transcriptions créées",
|
||||
"startupDate":"Date de démarrage du bot",
|
||||
"latestUpdate":"Dernière mise à jour",
|
||||
"ticketCreatedOn":"Ticket créé le",
|
||||
"ticketCreatedBy":"Ticket créé par",
|
||||
"messagesSent":"Messages envoyés",
|
||||
"status":"Status",
|
||||
"participants":"Participants",
|
||||
"role":"Role",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Administrateur global",
|
||||
"ticketAdmin":"Administrateur des tickets",
|
||||
"member":"Membre",
|
||||
"open":"Ouvrir",
|
||||
"reopened":"Réouvert",
|
||||
"closed":"Fermé",
|
||||
"autoclosed":"Fermé automatiquement"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Cet utilisateur est introuvable dans la base de données de statistiques !"
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"david.#8276 ",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"david.3",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Ungültiges Argument!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Bitte warten!",
|
||||
"estimated":"Verbleibende Zeit",
|
||||
"available":"Das Transcript ist hier verfügbar"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Global Stats",
|
||||
"ticketTitle":"Ticket Stats für {0}",
|
||||
"userTitle":"NutzerStats für {0}",
|
||||
"systemTitle":"System Stats",
|
||||
"versionTitle":"Bot Version",
|
||||
|
||||
"ticketsCreated":"Tickets erstellt",
|
||||
"ticketsClosed":"Tickets geschlossen",
|
||||
"ticketsDeleted":"Tickets gelöscht",
|
||||
"ticketsReopened":"Tickets wiedergeöffnet",
|
||||
"ticketsAutoclosed":"Tickets Autogeschlossen",
|
||||
"transcriptsCreated":"Transcripts erstellt",
|
||||
"startupDate":"Start Datum",
|
||||
"latestUpdate":"Letztes Update",
|
||||
"ticketCreatedOn":"Ticket erstellt am",
|
||||
"ticketCreatedBy":"Ticket erstellt von",
|
||||
"messagesSent":"Nachrichten gesendet",
|
||||
"status":"Status",
|
||||
"participants":"Teilnehmer",
|
||||
"role":"Rolle",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Nutzer",
|
||||
"open":"Öffnen",
|
||||
"reopened":"Wiedergeöffnet",
|
||||
"closed":"Geschlossen",
|
||||
"autoclosed":"Autogeschlossen"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Der Nutzer wurde in der Statistik-Datenbank nicht gefunden!"
|
||||
}
|
||||
}
|
||||
+35
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"ꙅoᴎɒᎸɘƚꙅ#3744",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Invalid Arguments!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Παρακαλώ περιμένετε!",
|
||||
"estimated":"Ώρα αναμονής",
|
||||
"available":"Το αντίγραφο είναι ανοιχτώ εδώ!"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Global Stats",
|
||||
"ticketTitle":"Ticket Stats for {0}",
|
||||
"userTitle":"User Stats for {0}",
|
||||
"systemTitle":"System Stats",
|
||||
"versionTitle":"Bot Version",
|
||||
|
||||
"ticketsCreated":"Tickets Created",
|
||||
"ticketsClosed":"Tickets Closed",
|
||||
"ticketsDeleted":"Tickets Deleted",
|
||||
"ticketsReopened":"Tickets Reopened",
|
||||
"ticketsAutoclosed":"Tickets Autoclosed",
|
||||
"transcriptsCreated":"Transcripts Created",
|
||||
"startupDate":"Startup Date",
|
||||
"latestUpdate":"Latest Update",
|
||||
"ticketCreatedOn":"Ticket Created On",
|
||||
"ticketCreatedBy":"Ticket Created By",
|
||||
"messagesSent":"Messages Sent",
|
||||
"status":"Status",
|
||||
"participants":"Participants",
|
||||
"role":"Role",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Member",
|
||||
"open":"Open",
|
||||
"reopened":"Reopened",
|
||||
"closed":"Closed",
|
||||
"autoclosed":"Autoclosed"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"This user can't be found in the stats database!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"kornel0706",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Hibás paraméter!",
|
||||
"missingArgsDescription":"Hiányzó paraméter",
|
||||
"noPermsTitle":"Nincs jogosultságod!",
|
||||
"noPermsDescription":"Rendszergazda jogosultság szükséges!",
|
||||
"noPermsDelete":"Csak adminok törölhetnek hibajegyet!",
|
||||
"chooseFromListTitle":"Hibás ID",
|
||||
"chooseFromListDescription":"Válassz az alábbi ID_k közül:",
|
||||
"boterror":"Bot hiba",
|
||||
"notInTicketTitle":"Nem vagy hibajegyben!",
|
||||
"notInTicketDescription":"Ez a parancs nem működik, csak hibajegyekben!",
|
||||
"ticketDoesntExist":"Ez a hibajegy már nem létezik!",
|
||||
"roleDoesntExist":"Ez a rang már nem létezik!",
|
||||
"anotherOption":"Ez a választási lehetőség nem hibajegy!",
|
||||
"maxAmountTitle":"Maximum limit elérve!",
|
||||
"maxAmountDescription":"Elérted a maximum hibajegyek számát!\nEzért nem tudsz létrehozni mégegyet!",
|
||||
"somethingWentWrong":"**Hiba történt!**\nKérlek próbáld újra később!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"{0} hozzáadva a hibajegyhez!",
|
||||
"userRemovedTitle":"{0} eltávolítva a hibajegyből!",
|
||||
"renameTitle":"Név megváltoztatva: {0}!",
|
||||
"closeTitle":"Hibajegy lezárva!",
|
||||
"deleteTitle":"Hibajegy törlése...",
|
||||
"reopenTitle":"Hibajegy újranyitva!",
|
||||
|
||||
"claimTitle":"Ezt a hibajegyet {0} birtokolja",
|
||||
"unclaimTitle":"A hibajegy többé nincsen birtokolva!",
|
||||
"changeTitle":"A hibajegy típusa a következővé lett módosítva: {0}!",
|
||||
|
||||
"statsTitle":"Itt vannak {0} statisztikái!",
|
||||
"autocloseTitle":"A hibajegy ennyi idő múlva autómatikusan törölve lesz: {0}!",
|
||||
"autocloseRejectTitle":"A hibajegy többé nem lesz lezárva autómatikusan!",
|
||||
"autocloseWarn":"Ez csak az inaktív hibajegyekre van hatással!",
|
||||
|
||||
"goToTicket":"A hibajegyhez",
|
||||
"ticketWarning":"A beágyazás az üzenet alatt található!",
|
||||
"maxTicketWarning":"**Figyelem** Összesen csak {0} hibajegyed lehet egyszerre!"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Elérhető parancsok:",
|
||||
"header1":"**Go to {0} to create a ticket!**\n\n",
|
||||
"header2":"**Run the command `/new` or `/ticket` to create a ticket!**\n\n",
|
||||
|
||||
"msgCmd":"Embed küldése gombokkal. (csak adminok)",
|
||||
"renameCmd":"Ticket átnevezése. (szóköz nélkül)",
|
||||
"closeCmd":"Ticket bezárása.",
|
||||
"deleteCmd":"Ticket törlése.",
|
||||
"addCmd":"Felhasználó hozzáadása a tickethez.",
|
||||
"removeCmd":"Felhasználó elvétele a tickettől.",
|
||||
"reopenCmd":"Ticket újranyitása miután már be lett zárva.",
|
||||
"changeCmd":"Ticket típusának megváltoztatása.",
|
||||
"claimCmd":"Ticket igénylése.",
|
||||
"unclaimCmd":"Ticket igénylésének törlése.",
|
||||
"statsCmd":"Ticket statisztikák megtekintése.",
|
||||
"autocloseCmd":"Ticketek automatikus bezárási idejének beállítása"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Bezárás",
|
||||
"delete":"Törlés",
|
||||
"reopen":"Újranyitás",
|
||||
"closeWithReason":"Bezárás indokkal"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Csak a rendszergazdák beszélhetnek ebben a jegyben!\n\n*Kattintson az alábbi gombra a jegy törléséhez vagy újbóli megnyitásához!*",
|
||||
"createdTitle":"Hibajegy létrehozva!",
|
||||
"createdDescription":"A hibajegyed el lett készítve, a lentebbi gombbal odatalálsz!",
|
||||
|
||||
"newTicketDmTitle":"Új hibajegy!",
|
||||
"closedTicketDmTitle":"Hibajegy bezárva!",
|
||||
"deletedTicketDmTitle":"Hibajegy törölve!",
|
||||
"closedTicketDmDescription":"A hibajegyed be van zárva!",
|
||||
"deletedTicketDmDescription":"A hibajegyed törölve van!",
|
||||
"reopenTicketDmTitle":"A hibajegy újranyitva!",
|
||||
"reopenTicketDmDescription":"A hibajegyed újra lett nyitva!",
|
||||
|
||||
"chooseCategory":"Válassz egy kategóriát::",
|
||||
"gettingdeleted":"A hibajegy törlés alatt...",
|
||||
|
||||
"none":"nincs megadva",
|
||||
"reason":"indok",
|
||||
"createdat":"létrehozva",
|
||||
"openedby":"létrehozta",
|
||||
"deletedby":"törölte",
|
||||
"closedby":"bezárta",
|
||||
|
||||
"modalreason":"Milyen indokkal zárod le a hibajegyet?",
|
||||
"chooseATicket": "**Válassz egy hibajegyet**\n"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Jegyzőkönyv",
|
||||
"processed":"A jegyzőkönyv feldolgozás alatt",
|
||||
"wait":"Kérlek várj!",
|
||||
"estimated":"Becsült idő",
|
||||
"available":"A jegyzőkönyv elérhető itt"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Globális statisztikák",
|
||||
"ticketTitle":"{0} hibajegy statisztikái",
|
||||
"userTitle":"{0} felhasználó statisztikái",
|
||||
"systemTitle":"Rendszer statisztikák",
|
||||
"versionTitle":"Bot verzió",
|
||||
|
||||
"ticketsCreated":"Hibajegyek létrehozva",
|
||||
"ticketsClosed":"Hibajegyek bezárva",
|
||||
"ticketsDeleted":"Hibajegyek törölve",
|
||||
"ticketsReopened":"Hibajegyek újranyitva",
|
||||
"ticketsAutoclosed":"Hibajegyek automata lezárása",
|
||||
"transcriptsCreated":"Jegyzőkönyvek létrehozva",
|
||||
"startupDate":"Üzembe helyezés ideje",
|
||||
"latestUpdate":"Utolsó frissítés",
|
||||
"ticketCreatedOn":"Hibajegy létrehozva",
|
||||
"ticketCreatedBy":"Hibajegyet létrehozta",
|
||||
"messagesSent":"Üzenetek elküldve",
|
||||
"status":"Státusz",
|
||||
"participants":"Résztvevők",
|
||||
"role":"Rang",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Globális rendszergazda",
|
||||
"ticketAdmin":"Jegyadminisztrátor",
|
||||
"member":"Tag",
|
||||
"open":"Megnyitás",
|
||||
"reopened":"Újra megnyitva",
|
||||
"closed":"Zárva",
|
||||
"autoclosed":"Autoclosed"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Ez a felhasználó nem található a statisztikai adatbázisban!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"erxg",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Argumen tidak valid!",
|
||||
"missingArgsDescription":"Argumen hilang",
|
||||
"noPermsTitle":"Tidak ada akses!",
|
||||
"noPermsDescription":"Anda memerlukan akses `ADMINISTRATOR` atau berada di dalam peran yang diizinkan!",
|
||||
"noPermsDelete":"Hanya admin yang dapat menghapus tiket!",
|
||||
"chooseFromListTitle":"ID Tidak Valid",
|
||||
"chooseFromListDescription":"Silahkan pilih salah satu id di bawah:",
|
||||
"boterror":"Bot Error!",
|
||||
"notInTicketTitle":"Anda tidak berada di dalam sebuah tiket!",
|
||||
"notInTicketDescription":"Perintah ini tidak bekerja di luar tiket!",
|
||||
"ticketDoesntExist":"Tiket ini sudah tidak ada lagi!",
|
||||
"roleDoesntExist":"Peran ini sudah tidak ada lagi!",
|
||||
"anotherOption":"Opsi ini bukan tiket, melainkan tipe lain!",
|
||||
"maxAmountTitle":"Batas maksimum tercapai!",
|
||||
"maxAmountDescription":"Kamu telah meraih batas maksimum tiket yang diperbolehkan!\nJadi kamu tidak bisa membuat tiket baru!",
|
||||
"somethingWentWrong":"Ada yang salah! Silakan coba lagi nanti!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Menambah {0} ke tiket ini!",
|
||||
"userRemovedTitle":"Mengeluarkan {0} dari tiket ini!",
|
||||
"renameTitle":"Mengganti nama menjadi {0}!",
|
||||
"closeTitle":"Menutup tiket ini!",
|
||||
"deleteTitle":"Menghapus tiket ini...",
|
||||
"reopenTitle":"Membuka ulang tiket ini!",
|
||||
|
||||
"claimTitle":"Tiket ini diklaim oleh {0}",
|
||||
"unclaimTitle":"Tiket ini tidak diklaim lagi!",
|
||||
"changeTitle":"Mengganti tipe tiket menjadi {0}!",
|
||||
|
||||
"statsTitle":"Ini adalah status untuk {0}!",
|
||||
"autocloseTitle":"Tiket ini akan tutup otomatis setelah {0}!",
|
||||
"autocloseRejectTitle":"Tiket ini tidak akan tertutup secara otomatis lagi!",
|
||||
"autocloseWarn":"Ini hanya mempengaruhi tiket yang tidak aktif!",
|
||||
|
||||
"goToTicket":"Pergi ke tiket",
|
||||
"ticketWarning":"Sematan tersebut tersedia dalam pesan di bawah ini!",
|
||||
"maxTicketWarning":"**Peringatan:** _Anda hanya bisa membuat {0} tiket dalam satu waktu!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Perintah yang tersedia:",
|
||||
"header1":"**Pergi ke {0} untuk membuat tiket!**\n\n",
|
||||
"header2":"**Jalankan perintah `/new` atau `/ticket` untuk membuat tiket!**\n\n",
|
||||
|
||||
"msgCmd":"Munculkan sematan dengan tombol. (hanya admin)",
|
||||
"renameCmd":"Ganti nama tiket. (tanpa spasi)",
|
||||
"closeCmd":"Tutup tiket.",
|
||||
"deleteCmd":"Hapus tiket.",
|
||||
"addCmd":"Tambahkan pengguna ke dalam tiket.",
|
||||
"removeCmd":"Keluarkan pengguna dari tiket.",
|
||||
"reopenCmd":"Buka ulang tiket setelah ditutup.",
|
||||
"changeCmd":"Ganti tipe tiket.",
|
||||
"claimCmd":"Klaim tiket.",
|
||||
"unclaimCmd":"Batalkan klaim tiket.",
|
||||
"statsCmd":"Lihat status tiket.",
|
||||
"autocloseCmd":"Atur timer untuk menutup tiket secara otomatis"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Tutup tiket",
|
||||
"delete":"Hapus tiket",
|
||||
"reopen":"Buka ulang tiket",
|
||||
"closeWithReason":"Tutup dengan alasan"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Hanya admin yang dapat berbincang di tiket ini sekarang!\n\n*Tekan tombol di bawah untuk menghapus atau membuka ulang tiket ini!*",
|
||||
"createdTitle":"Tiket dibuat!",
|
||||
"createdDescription":"Tiket anda dibuat, anda dapat mengetahui dengan ping!",
|
||||
|
||||
"newTicketDmTitle":"Tiket baru!",
|
||||
"closedTicketDmTitle":"Tiket ditutup!",
|
||||
"deletedTicketDmTitle":"TIket dihapus!",
|
||||
"closedTicketDmDescription":"Tiket anda ditutup!",
|
||||
"deletedTicketDmDescription":"Tiket anda dihapus!",
|
||||
"reopenTicketDmTitle":"Tiket dibuka kembali!",
|
||||
"reopenTicketDmDescription":"Tiket anda dibuka kembali!",
|
||||
|
||||
"chooseCategory":"Pilih kategori:",
|
||||
"gettingdeleted":"Tiket sedang dihapus...",
|
||||
|
||||
"none":"tidak ada",
|
||||
"reason":"Alasan",
|
||||
"createdat":"dibuat di",
|
||||
"openedby":"dibuka oleh",
|
||||
"deletedby":"dihapus oleh",
|
||||
"closedby":"ditutup oleh",
|
||||
|
||||
"modalreason":"Apa alasan penutupan tiket ini?",
|
||||
"chooseATicket": "Pilih tiket"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Transcript",
|
||||
"processed":"Transkrip sedang diproses",
|
||||
"wait":"Mohon tunggu!",
|
||||
"estimated":"Estimasi waktu",
|
||||
"available":"Transkrip tersedia di sini"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Statistik Global",
|
||||
"ticketTitle":"Status Tiket Untuk {0}",
|
||||
"userTitle":"Status Pengguna Untuk {0}",
|
||||
"systemTitle":"Status Sistem",
|
||||
"versionTitle":"Versi Robot",
|
||||
|
||||
"ticketsCreated":"Tiket Dibuat",
|
||||
"ticketsClosed":"Tiket Ditutup",
|
||||
"ticketsDeleted":"Tiket Dihapus",
|
||||
"ticketsReopened":"Tiket Dibuka Kembali",
|
||||
"ticketsAutoclosed":"Tiket Ditutup Otomatis",
|
||||
"transcriptsCreated":"Transkrip Dibuat",
|
||||
"startupDate":"Tanggal Mulai",
|
||||
"latestUpdate":"Pembaruan Terbaru",
|
||||
"ticketCreatedOn":"Tiket Dibuat Pada",
|
||||
"ticketCreatedBy":"Tiket Dibuat Oleh",
|
||||
"messagesSent":"Pesan Terkirim",
|
||||
"status":"Status",
|
||||
"participants":"Partisipan",
|
||||
"role":"Peran",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Admin Global",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Anggota",
|
||||
"open":"Buka",
|
||||
"reopened":"Dibuka kembali",
|
||||
"closed":"Ditutup",
|
||||
"autoclosed":"Ditutup Otomatis"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Pengguna ini tidak dapat ditemukan dalam basis data statistik!"
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"Maurizio#0268",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"maurizio26",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Argomenti non validi!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Perfavore attendi!",
|
||||
"estimated":"Tempo estimato",
|
||||
"available":"La trascrizione è disponibile qui"
|
||||
},
|
||||
"stats": {
|
||||
"globalTitle": "Statistiche Globali",
|
||||
"ticketTitle": "Statistiche Ticket per {0}",
|
||||
"userTitle": "Statistiche Utenti per {0}",
|
||||
"systemTitle": "Sistema Statistiche",
|
||||
"versionTitle": "Versione Bot",
|
||||
|
||||
"ticketsCreated": "Tickets Creato",
|
||||
"ticketsClosed": "Tickets Chiuso",
|
||||
"ticketsDeleted": "Tickets Eliminato",
|
||||
"ticketsReopened": "Tickets Riaperto",
|
||||
"ticketsAutoclosed": "Tickets Chiuso Automaticamente",
|
||||
"transcriptsCreated": "Transcrizione Creata",
|
||||
"startupDate": "Data Inizio",
|
||||
"latestUpdate": "Ultimo Update",
|
||||
"ticketCreatedOn": "Ticket Creato Su",
|
||||
"ticketCreatedBy": "Ticket Creato Da",
|
||||
"messagesSent": "Messaggi Inviati",
|
||||
"status": "Stato",
|
||||
"participants": "Partecipanti",
|
||||
"role": "Ruolo",
|
||||
|
||||
"switches": {
|
||||
"globalAdmin": "Amministratore Globale",
|
||||
"ticketAdmin": "Amministratore Ticket",
|
||||
"member": "Membro",
|
||||
"open": "Aperto",
|
||||
"reopened": "Riaperto",
|
||||
"closed": "Chiuso",
|
||||
"autoclosed": "Chiuso Automaticamente"
|
||||
},
|
||||
|
||||
"errorUserNotFound": "Questo utente non può essere trovato nel database delle statistiche!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS": "iamnotmega",
|
||||
"_INFO": "This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors": {
|
||||
"missingArgsTitle": "매개 변수가 누락되었습니다!",
|
||||
"missingArgsDescription": "필수 매개 변수가 누락되었습니다",
|
||||
"noPermsTitle": "권한이 없습니다!",
|
||||
"noPermsDescription": "관리자 권한이 필요하거나 허용된 역할 목록에 있어야 합니다!",
|
||||
"noPermsDelete": "티켓 삭제 권한이 없습니다!",
|
||||
"chooseFromListTitle": "잘못된 ID",
|
||||
"chooseFromListDescription": "아래 목록에서 ID를 선택하세요:",
|
||||
"boterror": "봇 오류!",
|
||||
"notInTicketTitle": "티켓 내에서만 사용 가능합니다!",
|
||||
"notInTicketDescription": "이 명령어는 티켓 외부에서는 작동하지 않습니다!",
|
||||
"ticketDoesntExist": "이 티켓은 더 이상 존재하지 않습니다!",
|
||||
"roleDoesntExist": "이 역할은 존재하지 않습니다!",
|
||||
"anotherOption": "이 옵션은 티켓이 아닌 다른 유형입니다!",
|
||||
"maxAmountTitle": "최대 수량 도달!",
|
||||
"maxAmountDescription": "허용된 최대 티켓 수에 도달했습니다!\n새 티켓을 만들 수 없습니다!",
|
||||
"somethingWentWrong": "**문제가 발생했습니다!**\n나중에 다시 시도해 주세요!"
|
||||
},
|
||||
"commands": {
|
||||
"userAddedTitle": "{0}님을 이 티켓에 추가했습니다!",
|
||||
"userRemovedTitle": "{0}님을 이 티켓에서 제거했습니다!",
|
||||
"renameTitle": "이름을 {0}(으)로 변경했습니다!",
|
||||
"closeTitle": "이 티켓을 닫았습니다!",
|
||||
"deleteTitle": "이 티켓을 삭제 중입니다...",
|
||||
"reopenTitle": "이 티켓을 다시 열었습니다!",
|
||||
|
||||
"claimTitle": "이 티켓은 {0}님에게 할당되었습니다",
|
||||
"unclaimTitle": "이 티켓은 더 이상 할당되지 않았습니다!",
|
||||
"changeTitle": "티켓 유형을 {0}(으)로 변경했습니다!",
|
||||
|
||||
"statsTitle": "다음은 {0}의 통계입니다!",
|
||||
"autocloseTitle": "이 티켓은 {0} 후에 자동으로 닫힙니다!",
|
||||
"autocloseRejectTitle": "이 티켓은 더 이상 자동으로 닫히지 않습니다!",
|
||||
"autocloseWarn": "이 설정은 비활성 티켓에만 영향을 미칩니다!",
|
||||
|
||||
"goToTicket": "티켓으로 이동",
|
||||
"ticketWarning": "임베드는 아래 메시지에 있습니다!",
|
||||
"maxTicketWarning": "**경고:** _한 번에 {0}개의 티켓만 만들 수 있습니다!_"
|
||||
},
|
||||
"helpMenu": {
|
||||
"title": "사용 가능한 명령어:",
|
||||
"header1": "**티켓을 만들려면 {0}(으)로 이동하세요!**\n\n",
|
||||
"header2": "**티켓을 만들려면 `/new` 또는 `/ticket` 명령어를 실행하세요!**\n\n",
|
||||
|
||||
"msgCmd": "버튼이 있는 임베드 메시지를 생성합니다. (관리자 전용)",
|
||||
"renameCmd": "티켓 이름을 변경합니다. (공백 없음)",
|
||||
"closeCmd": "티켓을 닫습니다.",
|
||||
"deleteCmd": "티켓을 삭제합니다.",
|
||||
"addCmd": "사용자를 티켓에 추가합니다.",
|
||||
"removeCmd": "사용자를 티켓에서 제거합니다.",
|
||||
"reopenCmd": "닫은 후 티켓을 다시 엽니다.",
|
||||
"changeCmd": "티켓 유형을 변경합니다.",
|
||||
"claimCmd": "티켓을 할당합니다.",
|
||||
"unclaimCmd": "티켓 할당을 취소합니다.",
|
||||
"statsCmd": "티켓 통계를 확인합니다.",
|
||||
"autocloseCmd": "티켓을 자동으로 닫는"
|
||||
},
|
||||
"buttons": {
|
||||
"close": "티켓 닫기",
|
||||
"delete": "티켓 삭제",
|
||||
"reopen": "티켓 다시 열기",
|
||||
"closeWithReason": "이유를 밝혀 닫기"
|
||||
},
|
||||
"messages": {
|
||||
"closedDescription": "지금은 관리자만이 이 티켓에서 말할 수 있습니다!\n\n*아래 버튼을 클릭하여 이 티켓을 삭제하거나 다시 열 수 있습니다!*",
|
||||
"createdTitle": "티켓이 생성되었습니다!",
|
||||
"createdDescription": "티켓이 생성되었습니다. 피드백을 통해 확인할 수 있습니다!",
|
||||
|
||||
"newTicketDmTitle": "새로운 티켓!",
|
||||
"closedTicketDmTitle": "티켓이 닫혔습니다!",
|
||||
"deletedTicketDmTitle": "티켓이 삭제되었습니다!",
|
||||
"closedTicketDmDescription": "티켓이 닫혔습니다!",
|
||||
"deletedTicketDmDescription": "티켓이 삭제되었습니다!",
|
||||
"reopenTicketDmTitle": "티켓이 다시 열렸습니다!",
|
||||
"reopenTicketDmDescription": "티켓이 다시 열렸습니다!",
|
||||
|
||||
"chooseCategory": "카테고리 선택:",
|
||||
"gettingdeleted": "티켓이 삭제 중입니다...",
|
||||
|
||||
"none": "없음",
|
||||
"reason": "이유",
|
||||
"createdat": "생성 시각",
|
||||
"openedby": "생성자",
|
||||
"deletedby": "삭제자",
|
||||
"closedby": "닫은 사람",
|
||||
|
||||
"modalreason": "이 티켓을 닫는 이유는 무엇인가요?",
|
||||
"chooseATicket": "티켓을 선택하세요"
|
||||
},
|
||||
"transcripts": {
|
||||
"title": "전문 기록",
|
||||
"processed": "이 전문은 처리 중입니다",
|
||||
"wait": "잠시 기다려 주세요!",
|
||||
"estimated": "예상 시간",
|
||||
"available": "여기서 전문을 확인할 수 있습니다"
|
||||
},
|
||||
"stats": {
|
||||
"globalTitle": "전역 통계",
|
||||
"ticketTitle": "{0}의 티켓 통계",
|
||||
"userTitle": "{0}의 사용자 통계",
|
||||
"systemTitle": "시스템 통계",
|
||||
"versionTitle": "봇 버전",
|
||||
|
||||
"ticketsCreated": "생성된 티켓",
|
||||
"ticketsClosed": "닫힌 티켓",
|
||||
"ticketsDeleted": "삭제된 티켓",
|
||||
"ticketsReopened": "다시 열린 티켓",
|
||||
"ticketsAutoclosed": "자동 닫힌 티켓",
|
||||
"transcriptsCreated": "생성된 전문",
|
||||
"startupDate": "시작 일자",
|
||||
"latestUpdate": "최신 업데이트",
|
||||
"ticketCreatedOn": "티켓 생성 일자",
|
||||
"ticketCreatedBy": "티켓 생성자",
|
||||
"messagesSent": "전송된 메시지",
|
||||
"status": "상태",
|
||||
"participants": "참여자",
|
||||
"role": "역할",
|
||||
|
||||
"switches": {
|
||||
"globalAdmin": "글로벌 관리자",
|
||||
"ticketAdmin": "티켓 관리자",
|
||||
"member": "회원",
|
||||
"open": "열림",
|
||||
"reopened": "다시 열림",
|
||||
"closed": "닫힘",
|
||||
"autoclosed": "자동 닫힘"
|
||||
},
|
||||
|
||||
"errorUserNotFound": "이 사용자는 통계 데이터베이스에서 찾을 수 없습니다!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS": "iamnotmega",
|
||||
"_INFO": "This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors": {
|
||||
"missingArgsTitle": "매개 변수가 누락되었습니다!",
|
||||
"missingArgsDescription": "필수 매개 변수가 누락되었습니다",
|
||||
"noPermsTitle": "권한이 없습니다!",
|
||||
"noPermsDescription": "관리자 권한이 필요하거나 허용된 역할 목록에 있어야 합니다!",
|
||||
"noPermsDelete": "티켓 삭제 권한이 없습니다!",
|
||||
"chooseFromListTitle": "잘못된 ID",
|
||||
"chooseFromListDescription": "아래 목록에서 ID를 선택하세요:",
|
||||
"boterror": "봇 오류!",
|
||||
"notInTicketTitle": "티켓 내에서만 사용 가능합니다!",
|
||||
"notInTicketDescription": "이 명령어는 티켓 외부에서는 작동하지 않습니다!",
|
||||
"ticketDoesntExist": "이 티켓은 더 이상 존재하지 않습니다!",
|
||||
"roleDoesntExist": "이 역할은 존재하지 않습니다!",
|
||||
"anotherOption": "이 옵션은 티켓이 아닌 다른 유형입니다!",
|
||||
"maxAmountTitle": "최대 수량 도달!",
|
||||
"maxAmountDescription": "허용된 최대 티켓 수에 도달했습니다!\n새 티켓을 만들 수 없습니다!",
|
||||
"somethingWentWrong": "**문제가 발생했습니다!**\n나중에 다시 시도해 주세요!"
|
||||
},
|
||||
"commands": {
|
||||
"userAddedTitle": "{0}님을 이 티켓에 추가했습니다!",
|
||||
"userRemovedTitle": "{0}님을 이 티켓에서 제거했습니다!",
|
||||
"renameTitle": "이름을 {0}(으)로 변경했습니다!",
|
||||
"closeTitle": "이 티켓을 닫았습니다!",
|
||||
"deleteTitle": "이 티켓을 삭제 중입니다...",
|
||||
"reopenTitle": "이 티켓을 다시 열었습니다!",
|
||||
|
||||
"claimTitle": "이 티켓은 {0}님에게 할당되었습니다",
|
||||
"unclaimTitle": "이 티켓은 더 이상 할당되지 않았습니다!",
|
||||
"changeTitle": "티켓 유형을 {0}(으)로 변경했습니다!",
|
||||
|
||||
"statsTitle": "다음은 {0}의 통계입니다!",
|
||||
"autocloseTitle": "이 티켓은 {0} 후에 자동으로 닫힙니다!",
|
||||
"autocloseRejectTitle": "이 티켓은 더 이상 자동으로 닫히지 않습니다!",
|
||||
"autocloseWarn": "이 설정은 비활성 티켓에만 영향을 미칩니다!",
|
||||
|
||||
"goToTicket": "티켓으로 이동",
|
||||
"ticketWarning": "임베드는 아래 메시지에 있습니다!",
|
||||
"maxTicketWarning": "**경고:** _한 번에 {0}개의 티켓만 만들 수 있습니다!_"
|
||||
},
|
||||
"helpMenu": {
|
||||
"title": "사용 가능한 명령어:",
|
||||
"header1": "**티켓을 만들려면 {0}(으)로 이동하세요!**\n\n",
|
||||
"header2": "**티켓을 만들려면 `/new` 또는 `/ticket` 명령어를 실행하세요!**\n\n",
|
||||
|
||||
"msgCmd": "버튼이 있는 임베드 메시지를 생성합니다. (관리자 전용)",
|
||||
"renameCmd": "티켓 이름을 변경합니다. (공백 없음)",
|
||||
"closeCmd": "티켓을 닫습니다.",
|
||||
"deleteCmd": "티켓을 삭제합니다.",
|
||||
"addCmd": "사용자를 티켓에 추가합니다.",
|
||||
"removeCmd": "사용자를 티켓에서 제거합니다.",
|
||||
"reopenCmd": "닫은 후 티켓을 다시 엽니다.",
|
||||
"changeCmd": "티켓 유형을 변경합니다.",
|
||||
"claimCmd": "티켓을 할당합니다.",
|
||||
"unclaimCmd": "티켓 할당을 취소합니다.",
|
||||
"statsCmd": "티켓 통계를 확인합니다.",
|
||||
"autocloseCmd": "티켓을 자동으로 닫는"
|
||||
},
|
||||
"buttons": {
|
||||
"close": "티켓 닫기",
|
||||
"delete": "티켓 삭제",
|
||||
"reopen": "티켓 다시 열기",
|
||||
"closeWithReason": "이유를 밝혀 닫기"
|
||||
},
|
||||
"messages": {
|
||||
"closedDescription": "지금은 관리자만이 이 티켓에서 말할 수 있습니다!\n\n*아래 버튼을 클릭하여 이 티켓을 삭제하거나 다시 열 수 있습니다!*",
|
||||
"createdTitle": "티켓이 생성되었습니다!",
|
||||
"createdDescription": "티켓이 생성되었습니다. 피드백을 통해 확인할 수 있습니다!",
|
||||
|
||||
"newTicketDmTitle": "새로운 티켓!",
|
||||
"closedTicketDmTitle": "티켓이 닫혔습니다!",
|
||||
"deletedTicketDmTitle": "티켓이 삭제되었습니다!",
|
||||
"closedTicketDmDescription": "티켓이 닫혔습니다!",
|
||||
"deletedTicketDmDescription": "티켓이 삭제되었습니다!",
|
||||
"reopenTicketDmTitle": "티켓이 다시 열렸습니다!",
|
||||
"reopenTicketDmDescription": "티켓이 다시 열렸습니다!",
|
||||
|
||||
"chooseCategory": "카테고리 선택:",
|
||||
"gettingdeleted": "티켓이 삭제 중입니다...",
|
||||
|
||||
"none": "없음",
|
||||
"reason": "이유",
|
||||
"createdat": "생성 시각",
|
||||
"openedby": "생성자",
|
||||
"deletedby": "삭제자",
|
||||
"closedby": "닫은 사람",
|
||||
|
||||
"modalreason": "이 티켓을 닫는 이유는 무엇인가요?",
|
||||
"chooseATicket": "티켓을 선택하세요"
|
||||
},
|
||||
"transcripts": {
|
||||
"title": "전문 기록",
|
||||
"processed": "이 전문은 처리 중입니다",
|
||||
"wait": "잠시 기다려 주세요!",
|
||||
"estimated": "예상 시간",
|
||||
"available": "여기서 전문을 확인할 수 있습니다"
|
||||
},
|
||||
"stats": {
|
||||
"globalTitle": "전역 통계",
|
||||
"ticketTitle": "{0}의 티켓 통계",
|
||||
"userTitle": "{0}의 사용자 통계",
|
||||
"systemTitle": "시스템 통계",
|
||||
"versionTitle": "봇 버전",
|
||||
|
||||
"ticketsCreated": "생성된 티켓",
|
||||
"ticketsClosed": "닫힌 티켓",
|
||||
"ticketsDeleted": "삭제된 티켓",
|
||||
"ticketsReopened": "다시 열린 티켓",
|
||||
"ticketsAutoclosed": "자동 닫힌 티켓",
|
||||
"transcriptsCreated": "생성된 전문",
|
||||
"startupDate": "시작 일자",
|
||||
"latestUpdate": "최신 업데이트",
|
||||
"ticketCreatedOn": "티켓 생성 일자",
|
||||
"ticketCreatedBy": "티켓 생성자",
|
||||
"messagesSent": "전송된 메시지",
|
||||
"status": "상태",
|
||||
"participants": "참여자",
|
||||
"role": "역할",
|
||||
|
||||
"switches": {
|
||||
"globalAdmin": "글로벌 관리자",
|
||||
"ticketAdmin": "티켓 관리자",
|
||||
"member": "회원",
|
||||
"open": "열림",
|
||||
"reopened": "다시 열림",
|
||||
"closed": "닫힘",
|
||||
"autoclosed": "자동 닫힘"
|
||||
},
|
||||
|
||||
"errorUserNotFound": "이 사용자는 통계 데이터베이스에서 찾을 수 없습니다!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"raze.hama",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"ئهوهی ههڵتبژاردوه نادروسته",
|
||||
"missingArgsDescription":"ئهوهی ههڵتبژاردوه ناردوسته",
|
||||
"noPermsTitle":"هیچ مۆڵەتێک نییە!",
|
||||
"noPermsDescription":"پێویستت بە مۆڵەتی ئهدمین سترهیتهر هەیە یان دهبێت لە لیستی ڕۆڵە ڕێگەپێدراوەکاندا بیت!",
|
||||
"noPermsDelete":"تەنها ئەدمینەکان دەتوانن بلیت بسڕنەوە!",
|
||||
"chooseFromListTitle":"ناسنامەی نادروست",
|
||||
"chooseFromListDescription":"یەکێک لەم ناسنامانهی خوارەوە هەڵبژێرە:",
|
||||
"boterror":"هەڵەی بۆت!",
|
||||
"notInTicketTitle":"تۆ لەناو بلیتدا نیت!",
|
||||
"notInTicketDescription":"ئەم فەرمانە لە دەرەوەی بلیت کارناکات!",
|
||||
"ticketDoesntExist":"ئەم بلیتە ئیتر بوونی نییە!",
|
||||
"roleDoesntExist":"ئیتر ئەم ڕۆڵە بوونی نییە!",
|
||||
"anotherOption":"ئەم بژاردەیە بلیت نیە بەڵکو جۆرێکی ترە !",
|
||||
"maxAmountTitle":"تۆگهشتی به زۆرترین",
|
||||
"maxAmountDescription":"گەیشتووی بە زۆرترین ژمارەی بلیت کە ڕێگەپێدراوە\nبۆیە ناتوانیت نوێ دروست بکەیت",
|
||||
"somethingWentWrong":"**شتێک بە هەڵەدا چووە **\n تکایە جارێکی تر هەوڵبدەرەوە"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"زیادكرا {0} بۆ ئهم بلیته",
|
||||
"userRemovedTitle":"لابرا{0} لهم بلیته ",
|
||||
"renameTitle":"ناوەکەی گۆڕی بۆ... {0}!",
|
||||
"closeTitle":"ئەم بلیتەی داخست!",
|
||||
"deleteTitle":"سڕینەوەی ئەم بلیتە...",
|
||||
"reopenTitle":"ئەم بلیتە دووبارە کردەوە!",
|
||||
|
||||
"claimTitle":"ئەم بلیتە بانگەشەی ئەوە دەکرێت کە... {0}",
|
||||
"unclaimTitle":"ئیتر ئەم بلیتە داوای ناکرێت!",
|
||||
"changeTitle":"جۆری بلیت گۆڕی بۆ... {0}!",
|
||||
|
||||
"statsTitle":"لێرەدا ئامارەکان بۆ... {0}!",
|
||||
"autocloseTitle":"ئەم بلیتە بە شێوەیەکی ئۆتۆماتیکی دادەخرێت دوای...{0}!",
|
||||
"autocloseRejectTitle":"ئەم بلیتە چیتر بە شێوەیەکی ئۆتۆماتیکی داناخرێت!",
|
||||
"autocloseWarn":"ئەمەش تەنها کاریگەری لەسەر بلیتی ناچالاک هەیە!",
|
||||
|
||||
"goToTicket":"بڕۆ بۆ بلیت",
|
||||
"ticketWarning":"جێگیرکردنەکە لە نامەکەی خوارەوەدایە!",
|
||||
"maxTicketWarning":"**ئاگاداری:** _تەنها دەتوانیت لە یەک کاتدا {0} بلیت(ەکان) دروست بکەیت!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"فەرمانە بەردەستەکان:",
|
||||
"header1":"**Go to {0} to create a ticket!**\n\n",
|
||||
"header2":"**فەرمانەکە جێبەجێ بکە `/new` or `/ticket` بۆ دروستکردنی بلیت!**\n\n",
|
||||
|
||||
"msgCmd":"(تەنها ئەدمینەکان)",
|
||||
"renameCmd":"ناوی بلیتهكه بگۆره",
|
||||
"closeCmd":"بلیتێک دابخە.",
|
||||
"deleteCmd":"بلیتێک بسڕەوە.",
|
||||
"addCmd":"بەکارهێنەرێک زیاد بکە بۆ بلیتەکە.",
|
||||
"removeCmd":"بەکارهێنەرێک لە بلیتەکە دەربهێنە.",
|
||||
"reopenCmd":"دووبارە بلیتێک بکەرەوە دوای داخستنی.",
|
||||
"changeCmd":"گۆڕینی جۆری بلیت.",
|
||||
"claimCmd":"داوای بلیتێک بکە.",
|
||||
"unclaimCmd":"داوای بلیتێک وەربگرە.",
|
||||
"statsCmd":"بینینی ئاماری بلیتەکان.",
|
||||
"autocloseCmd":"تایمەر دابنێ بۆ ئەوەی بلیتەکە بە شێوەیەکی ئۆتۆماتیکی دابخات"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"داخستنی بلیت",
|
||||
"delete":"سڕینەوەی بلیت",
|
||||
"reopen":"دوباره بلیتهكه بكهرهوه",
|
||||
"closeWithReason":"هۆكارێك بنوسه بۆ داخستنی بلیتهكه"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"ئێستا تەنها ئەدمینەکان دەتوانن لەم بلیتەدا قسە بکەن!\n\n*بۆ سڕینەوە یان دووبارە کردنەوەی ئەم بلیتە کلیک لەسەر دوگمەی خوارەوە بکە!*",
|
||||
"createdTitle":"بلیت دروستکراوە!",
|
||||
"createdDescription":"بلیتەکەت دروست کراوە، دەتوانیت بە پینگێک دەستنیشان بکەیت!",
|
||||
|
||||
"newTicketDmTitle":"بلیتی نوێ!",
|
||||
"closedTicketDmTitle":"بلیت داخراوە!",
|
||||
"deletedTicketDmTitle":"بلیت سڕاوەتەوە!",
|
||||
"closedTicketDmDescription":"بلیتەکەت داخراوە!",
|
||||
"deletedTicketDmDescription":"بلیتەکەت سڕاوەتەوە!",
|
||||
"reopenTicketDmTitle":"بلیت دووبارە کرایەوە!",
|
||||
"reopenTicketDmDescription":"بلیتەکەت دەکرێتەوە!",
|
||||
|
||||
"chooseCategory":"پۆلێک هەڵبژێرە:",
|
||||
"gettingdeleted":"بلیتەکە خەریکە دەسڕدرێتەوە...",
|
||||
|
||||
"none":"هیچ",
|
||||
"reason":"هۆكار",
|
||||
"createdat":"دروستکراوە لە",
|
||||
"openedby":"لەلایەن...",
|
||||
"deletedby":"سڕاوەتەوە لەلایەن",
|
||||
"closedby":"داخراوە لەلایەن",
|
||||
|
||||
"modalreason":"هۆکاری داخستنی ئەم بلیتە چییە؟",
|
||||
"chooseATicket": "بلیتێک هەڵبژێرە"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"گواستنهوه",
|
||||
"processed":"ئەم گواستنهوهیه خەریکە پرۆسێس دەکرێت",
|
||||
"wait":"تكایه چاوهڕێبه!",
|
||||
"estimated":"کاتی مەزەندەکراو",
|
||||
"available":" گواستنهوهكه لێرەدا بەردەستە"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"ئاماری جیهانی",
|
||||
"ticketTitle":"ئاماری بلیت بۆ {0}",
|
||||
"userTitle":"ئاماری بەکارهێنەر بۆ {0}",
|
||||
"systemTitle":"ئاماری سیستەم",
|
||||
"versionTitle":"وەشانی بۆت",
|
||||
|
||||
"ticketsCreated":"بلیتەکان دروستکراون",
|
||||
"ticketsClosed":"بلیتەکان داخراون",
|
||||
"ticketsDeleted":"بلیتەکان سڕاونەتەوە",
|
||||
"ticketsReopened":"بلیتەکان کرایەوە",
|
||||
"ticketsAutoclosed":"بلیتەکان بە شێوەیەکی ئۆتۆماتیکی داخراون",
|
||||
"transcriptsCreated":"گواستنهوه دروستکراون",
|
||||
"startupDate":"بەرواری دەستپێکردن",
|
||||
"latestUpdate":"نوێترین نوێکردنەوە",
|
||||
"ticketCreatedOn":"بلیت دروستکراوە لەسەر",
|
||||
"ticketCreatedBy":"بلیت دروستکراوە لەلایەن...",
|
||||
"messagesSent":"پەیامەکان نێردراوە",
|
||||
"status":"دۆخ",
|
||||
"participants":"بەشداربووان",
|
||||
"role":"ئەرک",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"بەڕێوەبەری جیهانی",
|
||||
"ticketAdmin":"ئەدمینی بلیتەکان",
|
||||
"member":"ئەندام",
|
||||
"open":"کردنەوە",
|
||||
"reopened":"دووبارە کرایەوە",
|
||||
"closed":"داخراوە",
|
||||
"autoclosed":"ئۆتۆماتیکی داخراوە"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"ئەم بەکارهێنەرە لە بنکەدراوەی ئامارەکاندا نادۆزرێتەوە!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"Ronalds1398",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Nepareizi argumenti!",
|
||||
"missingArgsDescription":"Trūkst argumentu!",
|
||||
"noPermsTitle":"Nav atļauju!",
|
||||
"noPermsDescription":"Jums ir nepieciešama `ADMINISTRATOR` atļauja vai jābūt atļautajām lomām!",
|
||||
"noPermsDelete":"Tikai administratori var izdzēst biļetes!",
|
||||
"chooseFromListTitle":"Nederīgs ID",
|
||||
"chooseFromListDescription":"Izvēlieties vienu no zemāk esošajiem ID:",
|
||||
"boterror":"Bota kļūda!",
|
||||
"notInTicketTitle":"Jūs neesat biļetē!",
|
||||
"notInTicketDescription":"Šī komanda nedarbojas ārpus biļetēm!",
|
||||
"ticketDoesntExist":"Šāda biļete vairs nepastāv!",
|
||||
"roleDoesntExist":"Šāda loma vairs nepastāv!",
|
||||
"anotherOption":"Tas nav biļete, bet citas veida!",
|
||||
"maxAmountTitle":"Sasniegta maksimālā summa!",
|
||||
"maxAmountDescription":"Jūs esat sasniedzis maksimālo atļauto biļešu skaitu!\nTāpēc jūs nevarat izveidot jaunu!",
|
||||
"somethingWentWrong":"**Kaut kas nogāja greizi!**\nLūdzu, mēģiniet vēlreiz!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Pievienots {0} šai biļetei!",
|
||||
"userRemovedTitle":"Noņemts {0} no šīs biļetes!",
|
||||
"renameTitle":"Pārdēvēts uz {0}!",
|
||||
"closeTitle":"Biļete aizvērta!",
|
||||
"deleteTitle":"Dzēšam biļeti",
|
||||
"reopenTitle":"Atkārtoti atveram biļeti!",
|
||||
|
||||
"claimTitle":"Šo biļeti ņēma {0}",
|
||||
"unclaimTitle":"Šī biļete nav piešķirta nevienam!",
|
||||
"changeTitle":"Biļetes veids mainīts uz {0}!",
|
||||
|
||||
"statsTitle":"Šeit ir statistika par {0}!",
|
||||
"autocloseTitle":"Šī biļete tiks automātiski aizvērta pēc {0}!",
|
||||
"autocloseRejectTitle":"Šī biļete vairs netiks automātiski aizvērta!",
|
||||
"autocloseWarn":"Tas attiecas tikai uz neaktīvām biļetēm!",
|
||||
|
||||
"goToTicket":"doties uz biļeti",
|
||||
"ticketWarning":"Iegults ir zemāk esošajā ziņā!",
|
||||
"maxTicketWarning":"**Brīdinājums:** _Jūs varat izveidot tikai tik daudz biļetes vienlaikus: {0}!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Pieejamie komandu:",
|
||||
"header1":"**Dodieties uz {0}, lai izveidotu biļeti!**\n\n",
|
||||
"header2":"**Izpildiet komandu `/new` vai `/ticket`, lai izveidotu biļeti!**\n\n",
|
||||
|
||||
"msgCmd":"Izveidojiet iegultni ar pogām. (tikai administratoriem)",
|
||||
"renameCmd":"Pārdēvējiet biļeti. (bez atstarpēm)",
|
||||
"closeCmd":"Aizveriet biļeti.",
|
||||
"deleteCmd":"Dzēst biļeti.",
|
||||
"addCmd":"Pievienojiet lietotāju biļetei.",
|
||||
"removeCmd":"Noņemt lietotāju no biļetes.",
|
||||
"reopenCmd":"Atveriet atkārtoti aizvērtu biļeti.",
|
||||
"changeCmd":"Mainiet biļetes veidu.",
|
||||
"claimCmd":"Paņemiet biļeti.",
|
||||
"unclaimCmd":"Atsakieties no biļetes.",
|
||||
"statsCmd":"Apskatiet biļetes statistiku.",
|
||||
"autocloseCmd":"Iestatiet taimeri, lai automātiski aizvērtu biļeti"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Aizveriet biļeti",
|
||||
"delete":"Dzēst biļeti",
|
||||
"reopen":"Atveriet biļeti",
|
||||
"closeWithReason":"Aizveriet ar iemeslu"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Pašlaik šajā biļetē var runāt tikai administratori!\n\n*Nospiediet zemāk esošo pogu, lai dzēstu vai atkārtoti atveriet šo biļeti!*",
|
||||
"createdTitle":"Biļete izveidota!",
|
||||
"createdDescription":"Jūsu biļete ir izveidota, to varat atpazīt, izmantojot pingu!",
|
||||
|
||||
"newTicketDmTitle":"Jauna biļete!",
|
||||
"closedTicketDmTitle":"Biļete aizvērta!",
|
||||
"deletedTicketDmTitle":"Biļete dzēsta!",
|
||||
"closedTicketDmDescription":"Jūsu biļete ir aizvērta!",
|
||||
"deletedTicketDmDescription":"Jūsu biļete ir dzēsta!",
|
||||
"reopenTicketDmTitle":"Biļete atkārtoti atvērta!",
|
||||
"reopenTicketDmDescription":"Jūsu biļete ir atkārtoti atvērta!",
|
||||
|
||||
"chooseCategory":"izvēlieties kategoriju:",
|
||||
"gettingdeleted":"Biļete tiek dzēsta...",
|
||||
|
||||
"none":"nav",
|
||||
"reason":"iemērs",
|
||||
"createdat":"izveidots",
|
||||
"openedby":"atvēris",
|
||||
"deletedby":"dzēsts",
|
||||
"closedby":"aizvērts",
|
||||
|
||||
"modalreason":"Kāds ir šīs biļetes aizvēršanas iemesls?",
|
||||
"chooseATicket": "Izvēlieties biļeti"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Transkripcija",
|
||||
"processed":"Šī transkripcija tiek apstrādāta",
|
||||
"wait":"Lūdzu, uzgaidiet!",
|
||||
"estimated":"Apmēramais laiks",
|
||||
"available":"Transkripcija pieejama šeit"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Globālā statistika",
|
||||
"ticketTitle":"Biļetes statistika priekš {0}",
|
||||
"userTitle":"Lietotāja statistika priekš {0}",
|
||||
"systemTitle":"Sistēmas statistika",
|
||||
"versionTitle":"Bota versija",
|
||||
|
||||
"ticketsCreated":"Biļetes izveidotas",
|
||||
"ticketsClosed":"Biļetes aizvērtas",
|
||||
"ticketsDeleted":"Biļetes dzēstas",
|
||||
"ticketsReopened":"Biļetes atkārtoti atvērtas",
|
||||
"ticketsAutoclosed":"Biļetes automātiski aizvērtas",
|
||||
"transcriptsCreated":"Transkripcijas izveidotas",
|
||||
"startupDate":"Palaišanas datums",
|
||||
"latestUpdate":"Pēdējā atjaunināšana",
|
||||
"ticketCreatedOn":"Biļete izveidota",
|
||||
"ticketCreatedBy":"Biļete izveidota",
|
||||
"messagesSent":"Ziņojumi nosūtīti",
|
||||
"status":"Statuss",
|
||||
"participants":"Dalībnieki",
|
||||
"role":"Loma",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Globālais Administrātors",
|
||||
"ticketAdmin":"Biļešu Administrātors",
|
||||
"member":"Dalībnieks",
|
||||
"open":"Atvērts",
|
||||
"reopened":"Atkārtoti atvērts",
|
||||
"closed":"Aizvērts",
|
||||
"autoclosed":"Automātiski aizvērts"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Lietotājs nav atrasts mūsu datubāzē!"
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"NoOneNook#0266",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"noonenook",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Ugyldige argumenter!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Vennligst vent!",
|
||||
"estimated":"Beregnet tid",
|
||||
"available":"Loggfil er tilgjengelig over denne meldingen!"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Globale Stats",
|
||||
"ticketTitle":"Ticket Stats for {0}",
|
||||
"userTitle":"Bruker Stats for {0}",
|
||||
"systemTitle":"System Stats",
|
||||
"versionTitle":"Bot Versjon",
|
||||
|
||||
"ticketsCreated":"Tickets Laget",
|
||||
"ticketsClosed":"Tickets Lukket",
|
||||
"ticketsDeleted":"Tickets Slettet",
|
||||
"ticketsReopened":"Tickets Gjenåpnet",
|
||||
"ticketsAutoclosed":"Tickets Auto-lukket",
|
||||
"transcriptsCreated":"Transcripts Opprettet",
|
||||
"startupDate":"Start Dato",
|
||||
"latestUpdate":"Siste Oppdatering",
|
||||
"ticketCreatedOn":"Ticket Laget den",
|
||||
"ticketCreatedBy":"Ticket Laget av",
|
||||
"messagesSent":"Meldinger sendt",
|
||||
"status":"Status",
|
||||
"participants":"Deltakere",
|
||||
"role":"Rolle",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Medlem",
|
||||
"open":"Åpen",
|
||||
"reopened":"Gjenåpnet",
|
||||
"closed":"Lukket",
|
||||
"autoclosed":"Auto-Lukket"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Denne brukeren kan ikke bli funnet i statistikkdatabasen!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"sasanwm",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"آرگومانهای گم شده!",
|
||||
"missingArgsDescription":"آرگومان گم شده",
|
||||
"noPermsTitle":"شما دسترسی نداری!",
|
||||
"noPermsDescription":"شما نیاز به دسترسی `ADMINISTRATOR` دارید یا باید در لیست رولهای مجاز باشید!",
|
||||
"noPermsDelete":"فقط ادمین ها میتونند یک تیکت رو حذف کنند!",
|
||||
"chooseFromListTitle":"ایدی نامعتبر",
|
||||
"chooseFromListDescription":"یکی از ایدیهای زیر رو انتخاب کن:",
|
||||
"boterror":"خطای ربات!",
|
||||
"notInTicketTitle":"شما در یک تیکت نیستید!",
|
||||
"notInTicketDescription":"این کامند خارج از تیکتها کار نمیکند!",
|
||||
"ticketDoesntExist":"این تیکت دیگه وجود نداره!",
|
||||
"roleDoesntExist":"این رول دیگه وجود نداره!",
|
||||
"anotherOption":"این گزینه یک تیکت نیست بلکه نوع دیگه ای هست!",
|
||||
"maxAmountTitle":"حداکثر مقدار رسیده هست!",
|
||||
"maxAmountDescription":"شما به حداکثر تعداد تیکتهای مجاز رسیدید!\nبنابراین نمیتونید یکی دیگه ایجاد کنید!",
|
||||
"somethingWentWrong":"**مشکلی پیش اومد!**\nدوباره تلاش کن!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"{0} به این تیکت اضافه شد!",
|
||||
"userRemovedTitle":"{0} از این تیکت حذف شد!",
|
||||
"renameTitle":"اسم به {0} تغییر یافت!",
|
||||
"closeTitle":"این تیکت بسته شد!",
|
||||
"deleteTitle":"حذف این تیکت...",
|
||||
"reopenTitle":"این تیکت دوباره باز شد!",
|
||||
|
||||
"claimTitle":"این تیکت به {0} اختصاص یافته است",
|
||||
"unclaimTitle":"این تیکت دیگه به اختصاص یک یوزر نمیباشد!",
|
||||
"changeTitle":"نوع تیکت به {0} تغییر یافت!",
|
||||
|
||||
"statsTitle":"آمار اینجا {0} هست!",
|
||||
"autocloseTitle":"این تیکت به طور خودکار بعد از {0} بسته خواهد شد!",
|
||||
"autocloseRejectTitle":"این تیکت دیگه به طور خودکار بسته نخواهد شد!",
|
||||
"autocloseWarn":"این فقط بر روی تیکتهای غیرفعال تأثیر میزاره!",
|
||||
|
||||
"goToTicket":"رفتن به تیکت",
|
||||
"ticketWarning":"امبد در پیام زیر هست!",
|
||||
"maxTicketWarning":"**هشدار:** _شما فقط میتوانید {0} تیکت رو در همان زمان ایجاد کنید!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"کامند های موجود:",
|
||||
"header1":"**به {0} براید تا یک تیکت ایجاد کنید!**\n\n",
|
||||
"header2":"**کامند `/new` یا `/ticket` رو اجرو کن تا یک تیکت ایجاد کنید!**\n\n",
|
||||
|
||||
"msgCmd":"فرستادن یک امبد با دکمه ها (فقط ادمین ها)",
|
||||
"renameCmd":"اسم یک تیکت رو تغییر دهید. (بدون فاصله)",
|
||||
"closeCmd":"بستن یک تیکت.",
|
||||
"deleteCmd":"حذف یک تیکت.",
|
||||
"addCmd":"اضافه کردن یک یوزر به تیکت.",
|
||||
"removeCmd":"حذف کردن یک یوزر از تیکت.",
|
||||
"reopenCmd":"باز کردن یک تیکت پس از بسته شدن.",
|
||||
"changeCmd":"تغییر دادن نوع تیکت.",
|
||||
"claimCmd":"به اختیار گرفتن یک تیکت.",
|
||||
"unclaimCmd":"خارج کردن یک تیکت از اختیار خود.",
|
||||
"statsCmd":"مشاهده کردن امار یک تیکت.",
|
||||
"autocloseCmd":"تنظیم زمان بندی برای بسته شدن خودکار تیکت. "
|
||||
},
|
||||
"buttons":{
|
||||
"close":"بستن تیکت",
|
||||
"delete":"حذف تیکت",
|
||||
"reopen":"بازکردن مجدد تیکت",
|
||||
"closeWithReason":"بستن با دلیل"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"فقط ادمینها میتواننند در این تیکت صحبت کنند!\n\n*برای حذف یا بازکردن این تیکت، روی دکمه زیر کلیک کن!*",
|
||||
"createdTitle":"تیکت ایجاد شد!",
|
||||
"createdDescription":"تیکت شما ایجاد شده، توی تیکت منشن شدی!",
|
||||
|
||||
"newTicketDmTitle":"تیکت جدید!",
|
||||
"closedTicketDmTitle":"تیکت بسته شد!",
|
||||
"deletedTicketDmTitle":"تیکت حذف شد!",
|
||||
"closedTicketDmDescription":"تیکت شما بسته شده هست!",
|
||||
"deletedTicketDmDescription":"تیکت شما حذف شده هست!",
|
||||
"reopenTicketDmTitle":"تیکت دوباره باز شد!",
|
||||
"reopenTicketDmDescription":"تیکت شما دوباره باز شده هست!",
|
||||
|
||||
"chooseCategory":"یک دسته بندی رو انتخاب کن:",
|
||||
"gettingdeleted":"تیکت در حال حذف شدن هست...",
|
||||
|
||||
"none":"هیچ",
|
||||
"reason":"دلیل",
|
||||
"createdat":"ایجاد شده در",
|
||||
"openedby":"باز شده توسط",
|
||||
"deletedby":"حذف شده توسط",
|
||||
"closedby":"بسته شده توسط",
|
||||
|
||||
"modalreason":"دلیل بستن این تیکت چیه؟",
|
||||
"chooseATicket": "یک تیکت رو انتخاب کن"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"گزارش",
|
||||
"processed":"این گزارش در حال پردازش هست",
|
||||
"wait":"لطفاً صبر کن!",
|
||||
"estimated":"زمان تقریبی",
|
||||
"available":"گزارش در دسترس هست در اینجا"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"آمار گلوبال",
|
||||
"ticketTitle":"آمار تیکت برای {0}",
|
||||
"userTitle":"آمار یوزر برای {0}",
|
||||
"systemTitle":"آمار سیستم",
|
||||
"versionTitle":"ورژن ربات",
|
||||
|
||||
"ticketsCreated":"تیکتهای ایجاد شده",
|
||||
"ticketsClosed":"تیکتهای بسته شده",
|
||||
"ticketsDeleted":"تیکتهای حذف شده",
|
||||
"ticketsReopened":"تیکتهای دوباره باز شده",
|
||||
"ticketsAutoclosed":"تیکتهای به طور خودکار بسته شده",
|
||||
"transcriptsCreated":"گزارشهای ایجاد شده",
|
||||
"startupDate":"تاریخ راهاندازی",
|
||||
"latestUpdate":"آخرین بروزرسانی",
|
||||
"ticketCreatedOn":"تیکت ایجاد شده در",
|
||||
"ticketCreatedBy":"تیکت ایجاد شده توسط",
|
||||
"messagesSent":"پیامهای ارسال شده",
|
||||
"status":"وضعیت",
|
||||
"participants":"مشارکتکنندگان",
|
||||
"role":"رول",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"ادمین گلوبال",
|
||||
"ticketAdmin":"ادمین تیکت",
|
||||
"member":"ممبر",
|
||||
"open":"باز",
|
||||
"reopened":"دوباره باز شده",
|
||||
"closed":"بسته شده",
|
||||
"autoclosed":"بسته شده به طور خودکار"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"این یوزر در دیتابیس آمار پیدا نمیشه!"
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"MKevas#8311",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"mkevas",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Nieprawidłowe argumenty!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Proszę czekać!",
|
||||
"estimated":"Szacowany czas",
|
||||
"available":"Transkrypcja jest dostępna tutaj"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Globalne Statystyki",
|
||||
"ticketTitle":"Statystyki biletów dla {0}",
|
||||
"userTitle":"Statystyki użytkowników dla {0}",
|
||||
"systemTitle":"Statystyki systemu",
|
||||
"versionTitle":"Wersja bota",
|
||||
|
||||
"ticketsCreated":"Bilety stworzone",
|
||||
"ticketsClosed":"Bilety zamknięte",
|
||||
"ticketsDeleted":"Bilety skasowane",
|
||||
"ticketsReopened":"Bilety otwarte ponownie",
|
||||
"ticketsAutoclosed":"Bilety automatycznie zamknięte",
|
||||
"transcriptsCreated":"Utworzono transkrypcje",
|
||||
"startupDate":"Data uruchomienia",
|
||||
"latestUpdate":"Najnowsza aktualizacja",
|
||||
"ticketCreatedOn":"Bilet został utworzony dnia",
|
||||
"ticketCreatedBy":"Bilet stworzony przez",
|
||||
"messagesSent":"Wiadomość wysłana",
|
||||
"status":"Status",
|
||||
"participants":"Uczestnicy",
|
||||
"role":"Rola",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Globalny administrator",
|
||||
"ticketAdmin":"Admin biletowy",
|
||||
"member":"Użytkownik",
|
||||
"open":"Otwarte",
|
||||
"reopened":"Otwarte ponownie",
|
||||
"closed":"Zamknięte",
|
||||
"autoclosed":"Automatycznie zamknięte"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Tego użytkownika nie można znaleźć w bazie statystyk!"
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"QuirAddon#9778",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"quiradon",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Argumentos inválidos!",
|
||||
@@ -85,8 +85,8 @@
|
||||
"reason":"motivo",
|
||||
"createdat":"Criado por:",
|
||||
"openedby":"Aberto por:",
|
||||
"deletedby":"deletado por",
|
||||
"closedby":"fechado por",
|
||||
"deletedby":"Deletado por",
|
||||
"closedby":"Fechado por",
|
||||
|
||||
"modalreason":"Qual o motivo de fechar o ticket?",
|
||||
"chooseATicket": "Fechar Ticket"
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Por favor espere!",
|
||||
"estimated":"Tempo estimado",
|
||||
"available":"A Transcrição está disponível aqui"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Status Global",
|
||||
"ticketTitle":"Ticket Status para {0}",
|
||||
"userTitle":"Status do Membro para {0}",
|
||||
"systemTitle":"Sistema de Status",
|
||||
"versionTitle":"Versão do bot",
|
||||
|
||||
"ticketsCreated":"Tickets Criados",
|
||||
"ticketsClosed":"Tickets Fechados",
|
||||
"ticketsDeleted":"Tickets Deletados",
|
||||
"ticketsReopened":"Tickets Re-abertos",
|
||||
"ticketsAutoclosed":"Tickets Auto-Fechados",
|
||||
"transcriptsCreated":"Transcrição Criada",
|
||||
"startupDate":"Data de Inicio",
|
||||
"latestUpdate":"Última Atualização",
|
||||
"ticketCreatedOn":"Ticket Criado em",
|
||||
"ticketCreatedBy":"Ticket Criado por",
|
||||
"messagesSent":"Mensagem Enviada",
|
||||
"status":"Status",
|
||||
"participants":"Participantes",
|
||||
"role":"Cargo",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Membro",
|
||||
"open":"Abrir",
|
||||
"reopened":"Re-aberto",
|
||||
"closed":"Fechado",
|
||||
"autoclosed":"Auto-Fechado"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Este usuário não pode ser encontrado no banco de dados!"
|
||||
}
|
||||
}
|
||||
|
||||
+35
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"Sanke#6086",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Argumente Invalide",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Te rugam sa astepti!",
|
||||
"estimated":"Timp estimat",
|
||||
"available":"Transcriptul este disponibil aici"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Statistici Globale",
|
||||
"ticketTitle":"Statistici Ticket pentru {0}",
|
||||
"userTitle":"Statistici utilizator pentru {0}",
|
||||
"systemTitle":"Statistici Sistem",
|
||||
"versionTitle":"Versiune Bot",
|
||||
|
||||
"ticketsCreated":"Tickete Create",
|
||||
"ticketsClosed":"Tickets Inchise",
|
||||
"ticketsDeleted":"Tickete Sterse",
|
||||
"ticketsReopened":"Tickete Redeschise",
|
||||
"ticketsAutoclosed":"Tickets Inchise automat",
|
||||
"transcriptsCreated":"Transcript-uri create",
|
||||
"startupDate":"Data startup",
|
||||
"latestUpdate":"Update recent",
|
||||
"ticketCreatedOn":"Ticket creat pe data",
|
||||
"ticketCreatedBy":"Ticket Creat de",
|
||||
"messagesSent":"Mesaje trimise",
|
||||
"status":"Status",
|
||||
"participants":"Participanti",
|
||||
"role":"Rol",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Admin Global",
|
||||
"ticketAdmin":"Admin Ticket",
|
||||
"member":"Membru",
|
||||
"open":"Deschis",
|
||||
"reopened":"Redeschis",
|
||||
"closed":"Inchis",
|
||||
"autoclosed":"Inchis automat"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Acest utilizator nu poate fi gasit in database-ul nostru!"
|
||||
}
|
||||
}
|
||||
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"Apexo#0723",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"apexo & ander",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Неверные аргументы!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Пожайлуста подождите!",
|
||||
"estimated":"Оценочное время",
|
||||
"available":"Транскрипт здесь доступен"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Общая статистика",
|
||||
"ticketTitle":"Статистика тикета для {0}",
|
||||
"userTitle":"Статистика пользователя для {0}",
|
||||
"systemTitle":"Системная статистика",
|
||||
"versionTitle":"Версия бота",
|
||||
|
||||
"ticketsCreated":"Тикет создан",
|
||||
"ticketsClosed":"Тикет закрыт",
|
||||
"ticketsDeleted":"Тикет удален",
|
||||
"ticketsReopened":"Тикет переоткрыт",
|
||||
"ticketsAutoclosed":"Тикет автоматически закрыт",
|
||||
"transcriptsCreated":"Транскрипт создан",
|
||||
"startupDate":"Дата запуска",
|
||||
"latestUpdate":"Последнее обновление",
|
||||
"ticketCreatedOn":"Тикет создан",
|
||||
"ticketCreatedBy":"Тикет создан",
|
||||
"messagesSent":"Сообщение отправлено",
|
||||
"status":"Статус",
|
||||
"participants":"Участники",
|
||||
"role":"Роль",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Главная",
|
||||
"ticketAdmin":"Тикет",
|
||||
"member":"Участник",
|
||||
"open":"Открыть",
|
||||
"reopened":"Переоткрытый",
|
||||
"closed":"Закрыт",
|
||||
"autoclosed":"Автоматически закрыт"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Участник не найден в базе данных статистики!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"iamnotmega",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"缺少参数!",
|
||||
"missingArgsDescription":"缺少参数",
|
||||
"noPermsTitle":"没有权限!",
|
||||
"noPermsDescription":"您需要管理员权限或必须在允许的角色列表中!",
|
||||
"noPermsDelete":"只有管理员可以删除票据!",
|
||||
"chooseFromListTitle":"无效的ID",
|
||||
"chooseFromListDescription":"请选择以下ID之一:",
|
||||
"boterror":"机器人错误!",
|
||||
"notInTicketTitle":"你不在票据中!",
|
||||
"notInTicketDescription":"此命令不适用于票据外!",
|
||||
"ticketDoesntExist":"此票据已不存在!",
|
||||
"roleDoesntExist":"此角色已不存在!",
|
||||
"anotherOption":"此选项不是票据,而是其他类型!",
|
||||
"maxAmountTitle":"达到最大数量!",
|
||||
"maxAmountDescription":"您已达到允许的最大票据数量!\n因此您不能创建新的票据!",
|
||||
"somethingWentWrong":"**出了点问题!**\n请稍后再试!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"已将{0}添加到此票据中!",
|
||||
"userRemovedTitle":"已将{0}从此票据中移除!",
|
||||
"renameTitle":"已将名称更改为{0}!",
|
||||
"closeTitle":"此票据已关闭!",
|
||||
"deleteTitle":"正在删除此票据...",
|
||||
"reopenTitle":"此票据已重新打开!",
|
||||
|
||||
"claimTitle":"此票据已分配给{0}",
|
||||
"unclaimTitle":"此票据不再被分配!",
|
||||
"changeTitle":"票据类型更改为{0}!",
|
||||
|
||||
"statsTitle":"以下是{0}的统计信息!",
|
||||
"autocloseTitle":"此票据将在{0}后自动关闭!",
|
||||
"autocloseRejectTitle":"此票据将不再自动关闭!",
|
||||
"autocloseWarn":"这只影响不活跃的票据!",
|
||||
|
||||
"goToTicket":"前往票据",
|
||||
"ticketWarning":"嵌入信息在下方消息中!",
|
||||
"maxTicketWarning":"**警告:** _您一次只能创建{0}个票据!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"可用命令:",
|
||||
"header1":"**前往{0}以创建票据!**\n\n",
|
||||
"header2":"**运行命令`/new`或`/ticket`以创建票据!**\n\n",
|
||||
|
||||
"msgCmd":"生成带有按钮的嵌入消息。(仅限管理员)",
|
||||
"renameCmd":"重命名票据。(无空格)",
|
||||
"closeCmd":"关闭票据。",
|
||||
"deleteCmd":"删除票据。",
|
||||
"addCmd":"将用户添加到票据。",
|
||||
"removeCmd":"将用户从票据中移除。",
|
||||
"reopenCmd":"关闭后重新打开票据。",
|
||||
"changeCmd":"更改票据类型。",
|
||||
"claimCmd":"分配票据。",
|
||||
"unclaimCmd":"取消分配票据。",
|
||||
"statsCmd":"查看票据统计信息。",
|
||||
"autocloseCmd":"设置计时器以自动关闭票据"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"关闭票据",
|
||||
"delete":"删除票据",
|
||||
"reopen":"重新打开票据",
|
||||
"closeWithReason":"有理由地关闭"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"现在只有管理员可以在此票据中讲话!\n\n*点击下方按钮以删除或重新打开此票据!*",
|
||||
"createdTitle":"票据已创建!",
|
||||
"createdDescription":"您的票据已创建,您可以通过提醒来检测到它!",
|
||||
|
||||
"newTicketDmTitle":"新票据!",
|
||||
"closedTicketDmTitle":"票据已关闭!",
|
||||
"deletedTicketDmTitle":"票据已删除!",
|
||||
"closedTicketDmDescription":"您的票据已关闭!",
|
||||
"deletedTicketDmDescription":"您的票据已删除!",
|
||||
"reopenTicketDmTitle":"票据已重新打开!",
|
||||
"reopenTicketDmDescription":"您的票据已重新打开!",
|
||||
|
||||
"chooseCategory":"选择一个类别:",
|
||||
"gettingdeleted":"票据正在删除...",
|
||||
|
||||
"none":"无",
|
||||
"reason":"原因",
|
||||
"createdat":"创建于",
|
||||
"openedby":"打开者",
|
||||
"deletedby":"删除者",
|
||||
"closedby":"关闭者",
|
||||
|
||||
"modalreason":"关闭此票据的原因是什么?",
|
||||
"chooseATicket":"选择一个票据"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"记录",
|
||||
"processed":"此记录正在处理",
|
||||
"wait":"请稍候!",
|
||||
"estimated":"预计时间",
|
||||
"available":"记录在此处可用"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"全局统计",
|
||||
"ticketTitle":"{0}的票据统计",
|
||||
"userTitle":"{0}的用户统计",
|
||||
"systemTitle":"系统统计",
|
||||
"versionTitle":"机器人版本",
|
||||
|
||||
"ticketsCreated":"创建的票据",
|
||||
"ticketsClosed":"关闭的票据",
|
||||
"ticketsDeleted":"删除的票据",
|
||||
"ticketsReopened":"重新打开的票据",
|
||||
"ticketsAutoclosed":"自动关闭的票据",
|
||||
"transcriptsCreated":"创建的记录",
|
||||
"startupDate":"启动日期",
|
||||
"latestUpdate":"最新更新",
|
||||
"ticketCreatedOn":"票据创建于",
|
||||
"ticketCreatedBy":"票据创建者",
|
||||
"messagesSent":"发送的消息",
|
||||
"status":"状态",
|
||||
"participants":"参与者",
|
||||
"role":"角色",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"全局管理员",
|
||||
"ticketAdmin":"票据管理员",
|
||||
"member":"成员",
|
||||
"open":"打开",
|
||||
"reopened":"重新打开",
|
||||
"closed":"关闭",
|
||||
"autoclosed":"自动关闭"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"在统计数据库中找不到该用户!"
|
||||
}
|
||||
}
|
||||
@@ -12,9 +12,11 @@
|
||||
"it":"italian",
|
||||
"ru":"russian",
|
||||
"tr": "Türkçe",
|
||||
"ar": "Arabic",
|
||||
"th": "Thailand",
|
||||
|
||||
"MISSING":"arabic,portuguese",
|
||||
"NOTAVAILABLE":"arabic,portuguese,czech"
|
||||
"MISSING":"portuguese",
|
||||
"NOTAVAILABLE":"portuguese,czech"
|
||||
},
|
||||
"data":{
|
||||
"help":{
|
||||
@@ -29,7 +31,9 @@
|
||||
"es-ES":"Una lista de los comandos disponibles.",
|
||||
"it":"Una lista di tutti i comandi disponibili.",
|
||||
"ru":"Список доступных команд",
|
||||
"tr": "Kullanılabilir komutların listesi."
|
||||
"tr": "Kullanılabilir komutların listesi.",
|
||||
"ar": "قائمة للكوماندات المتاحة",
|
||||
"th": "List คำสั่งที่สามารถใช้งานได้"
|
||||
},
|
||||
"message":{
|
||||
"en-GB":"Spawn an embed with buttons.",
|
||||
@@ -43,7 +47,9 @@
|
||||
"es-ES":"Genera un embed con botones.",
|
||||
"it":"Genera un embed con un pulsante.",
|
||||
"ru":"Создать embed с кнопками",
|
||||
"tr": "Butonlar ile bir yerleştirme oluşturun."
|
||||
"tr": "Butonlar ile bir yerleştirme oluşturun.",
|
||||
"ar": "أنشاء أيمبد مع الأزرار.",
|
||||
"th": "เรียก Embed และปุ่มต่างๆ"
|
||||
},
|
||||
"close":{
|
||||
"en-GB":"Close a ticket.",
|
||||
@@ -57,7 +63,9 @@
|
||||
"es-ES":"Cierra un ticket.",
|
||||
"it":"Chiudi un ticket.",
|
||||
"ru":"Закрыть тикет",
|
||||
"tr": "Bileti kapat."
|
||||
"tr": "Bileti kapat.",
|
||||
"ar": "اغلاق تيكت.",
|
||||
"th": "ปิดห้องติดต่อ"
|
||||
},
|
||||
"delete":{
|
||||
"en-GB":"Delete a ticket.",
|
||||
@@ -71,7 +79,9 @@
|
||||
"es-ES":"Elimina un ticket.",
|
||||
"it":"Elimina un ticket.",
|
||||
"ru":"Удалить тикет",
|
||||
"tr": "Bileti sil."
|
||||
"tr": "Bileti sil.",
|
||||
"ar": "حذف تيكت.",
|
||||
"th": "ลบห้องติดต่อ"
|
||||
},
|
||||
"reopen":{
|
||||
"en-GB":"Re-Open a ticket.",
|
||||
@@ -85,7 +95,9 @@
|
||||
"es-ES":"Re-abre un ticket.",
|
||||
"it":"Ri-Apri un ticket.",
|
||||
"ru":"Открыть заново тикет",
|
||||
"tr": "Bileti yeniden aç."
|
||||
"tr": "Bileti yeniden aç.",
|
||||
"ar": "اعادة فتح تيكت.",
|
||||
"th": "เปิดห้องติดต่อใหม่อีกครั้ง"
|
||||
},
|
||||
"add":{
|
||||
"en-GB":"Add another user to a ticket.",
|
||||
@@ -99,7 +111,9 @@
|
||||
"es-ES":"Agrega otro usuario al ticket.",
|
||||
"it":"Aggiungi un membro al ticket",
|
||||
"ru":"Добавить другого пользователя в тикет",
|
||||
"tr": "Bilete başka bir kullanıcı ekle."
|
||||
"tr": "Bilete başka bir kullanıcı ekle.",
|
||||
"ar": "اضافة مستخدم اخر الى تيكت معين.",
|
||||
"th": "เพิ่มผู้ใช้เข้ามาในห้องติดต่อ"
|
||||
},
|
||||
"remove":{
|
||||
"en-GB":"Remove a user from a ticket.",
|
||||
@@ -113,7 +127,9 @@
|
||||
"es-ES":"Elimina otro usuario del ticket.",
|
||||
"it":"Rimuovi un membro dal ticket",
|
||||
"ru":"Удалить пользователя из тикета",
|
||||
"tr": "Kullanıcıyı bir biletten kaldır."
|
||||
"tr": "Kullanıcıyı bir biletten kaldır.",
|
||||
"ar": "ازالة مستخدم من تيكت معين.",
|
||||
"th": "ลบผู้ใช้ออกจากห้องติดต่อ"
|
||||
},
|
||||
"newticket":{
|
||||
"en-GB":"Create a ticket",
|
||||
@@ -127,7 +143,9 @@
|
||||
"es-ES":"Crear un ticket.",
|
||||
"it":"Crea un ticket",
|
||||
"ru":"Создать тикет",
|
||||
"tr": "Bilet oluştur"
|
||||
"tr": "Bilet oluştur",
|
||||
"ar": "انشاء تيكت.",
|
||||
"th": "สร้างห้องติดต่อใหม่"
|
||||
},
|
||||
"rename":{
|
||||
"en-GB":"Rename a ticket channel.",
|
||||
@@ -141,7 +159,9 @@
|
||||
"es-ES":"Renombrar un canal de ticket.",
|
||||
"it":"Rinomina il canale di un ticket.",
|
||||
"ru":"Переименовать канал тикета",
|
||||
"tr": "Bilet kanalını yeniden adlandır."
|
||||
"tr": "Bilet kanalını yeniden adlandır.",
|
||||
"ar": "اعادة تسمية التيكت.",
|
||||
"th": "แก้ไชชื่อห้องติดต่อ"
|
||||
},
|
||||
"claim":{
|
||||
"en-GB":"Claim a ticket.",
|
||||
@@ -155,7 +175,9 @@
|
||||
"es-ES":" ",
|
||||
"it":" ",
|
||||
"ru":"Взять тикет",
|
||||
"tr":"Bilet talep et."
|
||||
"tr":"Bilet talep et.",
|
||||
"ar": "تعيين التيكت",
|
||||
"th": "รับเรื่อง"
|
||||
},
|
||||
"unclaim":{
|
||||
"en-GB":"Un-claim a ticket.",
|
||||
@@ -169,7 +191,9 @@
|
||||
"es-ES":" ",
|
||||
"it":" ",
|
||||
"ru":"Снять тикет",
|
||||
"tr":"Bileti iptal et."
|
||||
"tr":"Bileti iptal et.",
|
||||
"ar": "ازالة التعيين من شخص الى التيكت",
|
||||
"th": "ยกเลิกการรับเรื่อง"
|
||||
},
|
||||
"category":{
|
||||
"en-GB":"Change ticket type.",
|
||||
@@ -183,7 +207,9 @@
|
||||
"es-ES":" ",
|
||||
"it":" ",
|
||||
"ru":"Изменить тип тикета",
|
||||
"tr":"Bilet türünü değiştir."
|
||||
"tr":"Bilet türünü değiştir.",
|
||||
"ar": "تغيير نوع التيكت",
|
||||
"th": "เปลี่ยนประเภทห้องติดต่อ"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"n1kkec#5341",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"n1kkec",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Napačen argument!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait": "Počakajte!",
|
||||
"estimated": "Predvideni čas",
|
||||
"available": "Prepis je na voljo tukaj"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Global Stats",
|
||||
"ticketTitle":"Ticket Stats for {0}",
|
||||
"userTitle":"User Stats for {0}",
|
||||
"systemTitle":"System Stats",
|
||||
"versionTitle":"Bot Version",
|
||||
|
||||
"ticketsCreated":"Tickets Created",
|
||||
"ticketsClosed":"Tickets Closed",
|
||||
"ticketsDeleted":"Tickets Deleted",
|
||||
"ticketsReopened":"Tickets Reopened",
|
||||
"ticketsAutoclosed":"Tickets Autoclosed",
|
||||
"transcriptsCreated":"Transcripts Created",
|
||||
"startupDate":"Startup Date",
|
||||
"latestUpdate":"Latest Update",
|
||||
"ticketCreatedOn":"Ticket Created On",
|
||||
"ticketCreatedBy":"Ticket Created By",
|
||||
"messagesSent":"Messages Sent",
|
||||
"status":"Status",
|
||||
"participants":"Participants",
|
||||
"role":"Role",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global Admin",
|
||||
"ticketAdmin":"Ticket Admin",
|
||||
"member":"Member",
|
||||
"open":"Open",
|
||||
"reopened":"Reopened",
|
||||
"closed":"Closed",
|
||||
"autoclosed":"Autoclosed"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"This user can't be found in the stats database!"
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"Redactado#1673 & josuens14#5267",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"redactado & josuens",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"¡Argumentos inválidos!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"¡Por favor, espere!",
|
||||
"estimated":"Tiempo estimado",
|
||||
"available":"La transcripción estará disponible aquí"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Estadísticas Globales",
|
||||
"ticketTitle":"Estadísitcas para el ticket {0}",
|
||||
"userTitle":"Estadísticas para el usuario {0}",
|
||||
"systemTitle":"Estadísticas del sistema",
|
||||
"versionTitle":"Versión del bot",
|
||||
|
||||
"ticketsCreated":"Tickets Creados",
|
||||
"ticketsClosed":"Tickets Cerrados",
|
||||
"ticketsDeleted":"Tickets Eliminados",
|
||||
"ticketsReopened":"Tickets Reabiertos",
|
||||
"ticketsAutoclosed":"Tickets Cerrados automáticamente",
|
||||
"transcriptsCreated":"Transcripciones Creadas",
|
||||
"startupDate":"Fecha de Inicio",
|
||||
"latestUpdate":"Última Actualización",
|
||||
"ticketCreatedOn":"Ticket creado el",
|
||||
"ticketCreatedBy":"Ticket creado por",
|
||||
"messagesSent":"Mensajes enviados",
|
||||
"status":"Estado",
|
||||
"participants":"Participantes",
|
||||
"role":"Rol",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Admin Global",
|
||||
"ticketAdmin":"Admin del Ticket",
|
||||
"member":"Miembro",
|
||||
"open":"Abierto",
|
||||
"reopened":"Reabierto",
|
||||
"closed":"Cerrado",
|
||||
"autoclosed":"Cerrado automáticamente"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"¡Este usuario no pudo ser encontrado en la base de datos de estadísitcas!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"iamnotmega",
|
||||
"_INFO":"Denna fil är en översättning för öppen biljett 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Ogiltiga argument!",
|
||||
"missingArgsDescription":"Saknat argument",
|
||||
"noPermsTitle":"Inga behörigheter!",
|
||||
"noPermsDescription":"Du behöver behörigheten `ADMINISTRATOR` eller vara i listan över tillåtna roller!",
|
||||
"noPermsDelete":"Endast administratörer kan ta bort en biljett!",
|
||||
"chooseFromListTitle":"Ogiltigt ID",
|
||||
"chooseFromListDescription":"Välj ett av ID:n nedan:",
|
||||
"boterror":"Botfel!",
|
||||
"notInTicketTitle":"Du är inte i en biljett!",
|
||||
"notInTicketDescription":"Detta kommando fungerar inte utanför biljetter!",
|
||||
"ticketDoesntExist":"Denna biljett finns inte längre!",
|
||||
"roleDoesntExist":"Denna roll finns inte längre!",
|
||||
"anotherOption":"Detta alternativ är inte en biljett utan en annan typ!",
|
||||
"maxAmountTitle":"Maximalt antal uppnått!",
|
||||
"maxAmountDescription":"Du har nått det maximala antalet tillåtna biljetter!\nDu kan inte skapa en ny!",
|
||||
"somethingWentWrong":"**Något gick fel!**\nFörsök igen senare!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Lade till {0} i denna biljett!",
|
||||
"userRemovedTitle":"Tog bort {0} från denna biljett!",
|
||||
"renameTitle":"Bytte namn till {0}!",
|
||||
"closeTitle":"Stängde denna biljett!",
|
||||
"deleteTitle":"Tar bort denna biljett...",
|
||||
"reopenTitle":"Öppnade denna biljett igen!",
|
||||
|
||||
"claimTitle":"Denna biljett är anspråkad av {0}",
|
||||
"unclaimTitle":"Denna biljett är inte längre anspråkad!",
|
||||
"changeTitle":"Bytte biljetttyp till {0}!",
|
||||
|
||||
"statsTitle":"Här är statistiken för {0}!",
|
||||
"autocloseTitle":"Denna biljett kommer att stängas automatiskt efter {0}!",
|
||||
"autocloseRejectTitle":"Denna biljett kommer inte längre att stängas automatiskt!",
|
||||
"autocloseWarn":"Detta påverkar endast inaktiva biljetter!",
|
||||
|
||||
"goToTicket":"gå till biljett",
|
||||
"ticketWarning":"Inbäddningen finns i meddelandet nedan!",
|
||||
"maxTicketWarning":"**Varning:** _Du kan endast skapa {0} biljett(er) åt gången!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Tillgängliga kommandon:",
|
||||
"header1":"**Gå till {0} för att skapa en biljett!**\n\n",
|
||||
"header2":"**Kör kommandot `/new` eller `/ticket` för att skapa en biljett!**\n\n",
|
||||
|
||||
"msgCmd":"Skapa en inbäddning med knappar. (endast administratörer)",
|
||||
"renameCmd":"Byt namn på en biljett. (inga mellanslag)",
|
||||
"closeCmd":"Stäng en biljett.",
|
||||
"deleteCmd":"Ta bort en biljett.",
|
||||
"addCmd":"Lägg till en användare i biljetten.",
|
||||
"removeCmd":"Ta bort en användare från biljetten.",
|
||||
"reopenCmd":"Öppna en biljett igen efter att den har stängts.",
|
||||
"changeCmd":"Byt biljetttyp.",
|
||||
"claimCmd":"Anspråka en biljett.",
|
||||
"unclaimCmd":"Avslå en biljett.",
|
||||
"statsCmd":"Visa biljettstatistik.",
|
||||
"autocloseCmd":"Ställ in timer för att automatiskt stänga biljett"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Stäng biljett",
|
||||
"delete":"Ta bort biljett",
|
||||
"reopen":"Öppna biljett igen",
|
||||
"closeWithReason":"stäng med anledning"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Endast administratörer kan prata i denna biljett nu!\n\n*Klicka på knappen nedan för att ta bort eller öppna den här biljetten!*",
|
||||
"createdTitle":"Biljett skapad!",
|
||||
"createdDescription":"Din biljett är skapad, du kan upptäcka den genom en ping!",
|
||||
|
||||
"newTicketDmTitle":"Ny biljett!",
|
||||
"closedTicketDmTitle":"Biljett stängd!",
|
||||
"deletedTicketDmTitle":"Biljett borttagen!",
|
||||
"closedTicketDmDescription":"Din biljett är stängd!",
|
||||
"deletedTicketDmDescription":"Din biljett är borttagen!",
|
||||
"reopenTicketDmTitle":"Biljett öppnad igen!",
|
||||
"reopenTicketDmDescription":"Din biljett är öppnad igen!",
|
||||
|
||||
"chooseCategory":"välj en kategori:",
|
||||
"gettingdeleted":"Biljett håller på att tas bort...",
|
||||
|
||||
"none":"ingen",
|
||||
"reason":"anledning",
|
||||
"createdat":"skapad den",
|
||||
"openedby":"öppnad av",
|
||||
"deletedby":"borttagen av",
|
||||
"closedby":"stängd av",
|
||||
|
||||
"modalreason":"Vad är anledningen till att stänga den här biljetten?",
|
||||
"chooseATicket": "Välj en biljett"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Transkript",
|
||||
"processed":"Detta transkript bearbetas",
|
||||
"wait":"Var god vänta!",
|
||||
"estimated":"Beräknad tid",
|
||||
"available":"Transkriptet är tillgängligt här"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Globala statistik",
|
||||
"ticketTitle":"Biljettstatistik för {0}",
|
||||
"userTitle":"Användarstatistik för {0}",
|
||||
"systemTitle":"Systemstatistik",
|
||||
"versionTitle":"Botversion",
|
||||
|
||||
"ticketsCreated":"Biljetter skapade",
|
||||
"ticketsClosed":"Biljetter stängda",
|
||||
"ticketsDeleted":"Biljetter borttagna",
|
||||
"ticketsReopened":"Biljetter öppnade igen",
|
||||
"ticketsAutoclosed":"Biljetter automatiskt stängda",
|
||||
"transcriptsCreated":"Transkript skapade",
|
||||
"startupDate":"Uppstartsdag",
|
||||
"latestUpdate":"Senaste uppdatering",
|
||||
"ticketCreatedOn":"Biljett skapad den",
|
||||
"ticketCreatedBy":"Biljett skapad av",
|
||||
"messagesSent":"Meddelanden skickade",
|
||||
"status":"Status",
|
||||
"participants":"Deltagare",
|
||||
"role":"Roll",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Global admin",
|
||||
"ticketAdmin":"Biljettadministratör",
|
||||
"member":"Medlem",
|
||||
"open":"Öppen",
|
||||
"reopened":"Återöppnad",
|
||||
"closed":"Stängd",
|
||||
"autoclosed":"Automatiskt stängd"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Den här användaren hittades inte i statistikdatabasen!"
|
||||
}
|
||||
}
|
||||
+95
-61
@@ -1,85 +1,85 @@
|
||||
{
|
||||
"_CREDITS":"Mods HD#0661",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"modshd",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"อาร์กิวเมนต์ไม่ถูกต้อง!",
|
||||
"missingArgsTitle":"อาร์กิวเมนต์ไม่ถูกต้อง",
|
||||
"missingArgsDescription":"ขาดอาร์กิวเมนต์",
|
||||
"noPermsTitle":"ไม่มีสิทธิ์!",
|
||||
"noPermsDescription":"คุณต้องมีสิทธิ์ `ADMINISTRATOR` หรืออยู่ในรายการบทบาทที่ได้รับอนุญาต!",
|
||||
"noPermsDelete":"เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถลบตั๋วได้!",
|
||||
"noPermsTitle":"คุณไม่มีสิทธิ์ในการใช้งาน",
|
||||
"noPermsDescription":"คุณต้องมีสิทธิ์ `ADMINISTRATOR` หรืออยู่ในรายการบทบาทที่ได้รับอนุญาตเพื่อใช้งาน",
|
||||
"noPermsDelete":"เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถลบห้องติดต่อได้",
|
||||
"chooseFromListTitle":"ID ไม่ถูกต้อง",
|
||||
"chooseFromListDescription":"เลือกหนึ่งใน ID ด้านล่าง:",
|
||||
"boterror":"ข้อผิดพลาดของบอท!",
|
||||
"notInTicketTitle":"คุณไม่ได้อยู่ในตั๋ว!",
|
||||
"notInTicketDescription":"คำสั่งนี้ไม่ทำงานนอกตั๋ว!",
|
||||
"ticketDoesntExist":"ตั๋วนี้ไม่มีอีกแล้ว!",
|
||||
"roleDoesntExist":"บทบาทนี้ไม่มีอีกแล้ว!",
|
||||
"anotherOption":"ตัวเลือกนี้ไม่ใช่ตั๋ว แต่เป็นประเภทอื่น!",
|
||||
"maxAmountTitle":"ถึงจำนวนสูงสุดแล้ว!",
|
||||
"maxAmountDescription":"คุณได้ถึงจำนวนสูงสุดของตั๋วที่อนุญาต!\nดังนั้นคุณไม่สามารถสร้างใหม่ได้!",
|
||||
"somethingWentWrong":"**มีบางอย่างผิดพลาด!**\nกรุณาลองอีกครั้งในภายหลัง!"
|
||||
"boterror":"ข้อผิดพลาดของบอท",
|
||||
"notInTicketTitle":"คุณไม่ได้อยู่ในห้องติดต่อ",
|
||||
"notInTicketDescription":"คำสั่งนี้ไม่สามารถทำงานนอกห้องติดต่อ",
|
||||
"ticketDoesntExist":"ห้องติดต่อนี้ไม่มีอีกต่อไป",
|
||||
"roleDoesntExist":"บทบาทนี้ไม่มีอีกต่อไป",
|
||||
"anotherOption":"ตัวเลือกนี้ไม่ใช่ห้องติดต่อ แต่เป็นประเภทอื่น",
|
||||
"maxAmountTitle":"ถึงจำนวนสูงสุดแล้ว",
|
||||
"maxAmountDescription":"คุณได้ถึงจำนวนสูงสุดของห้องติดต่อที่อนุญาต\nดังนั้นคุณไม่สามารถสร้างใหม่ได้ในขณะนี้",
|
||||
"somethingWentWrong":"**มีบางอย่างผิดพลาด**\nกรุณาลองอีกครั้งในภายหลัง"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"เพิ่ม {0} ในตั๋วนี้!",
|
||||
"userRemovedTitle":"ลบ {0} ออกจากตั๋วนี้!",
|
||||
"renameTitle":"เปลี่ยนชื่อเป็น {0}!",
|
||||
"closeTitle":"ปิดตั๋วนี้!",
|
||||
"deleteTitle":"กำลังลบตั๋วนี้...",
|
||||
"reopenTitle":"เปิดตั๋วนี้อีกครั้ง!",
|
||||
"userAddedTitle":"เพิ่ม {0} ในห้องติดต่อนี้",
|
||||
"userRemovedTitle":"ลบ {0} ออกจากห้องติดต่อนี้",
|
||||
"renameTitle":"เปลี่ยนชื่อเป็น {0}",
|
||||
"closeTitle":"ปิดห้องติดต่อนี้",
|
||||
"deleteTitle":"กำลังลบห้องติดต่อนี้...",
|
||||
"reopenTitle":"เปิดห้องติดต่อนี้อีกครั้ง",
|
||||
|
||||
"claimTitle":"ตั๋วนี้ถูกเรียกขึ้นโดย {0}",
|
||||
"unclaimTitle":"ตั๋วนี้ไม่ได้ถูกเรียกขึ้นแล้ว!",
|
||||
"changeTitle":"เปลี่ยนประเภทตั๋วเป็น {0}!",
|
||||
"claimTitle":"ห้องติดต่อนี้ถูกรับเรื่องโดย {0}",
|
||||
"unclaimTitle":"ห้องติดต่อนี้ไม่ได้ถูกรับเรื่องอีกแล้ว",
|
||||
"changeTitle":"เปลี่ยนประเภทห้องติดต่อเป็น {0}",
|
||||
|
||||
"statsTitle":"นี่คือสถิติสำหรับ {0}!",
|
||||
"autocloseTitle":"ตั๋วนี้จะถูกปิดอัตโนมัติหลังจาก {0}!",
|
||||
"autocloseRejectTitle":"ตั๋วนี้จะไม่ถูกปิดอัตโนมัติอีกต่อไป!",
|
||||
"autocloseWarn":"ส่วนนี้มีผลกับตั๋วที่ไม่ได้ใช้งาน!",
|
||||
"statsTitle":"นี่คือสถิติสำหรับ {0}",
|
||||
"autocloseTitle":"ห้องติดต่อนี้จะถูกปิดอัตโนมัติหลังจาก {0}",
|
||||
"autocloseRejectTitle":"ห้องติดต่อนี้จะไม่ถูกปิดอัตโนมัติอีกต่อไป",
|
||||
"autocloseWarn":"ส่วนนี้มีผลกับห้องติดต่อที่ไม่ได้ใช้งาน",
|
||||
|
||||
"goToTicket":"ไปที่ตั๋ว",
|
||||
"ticketWarning":"Embed อยู่ในข้อความด้านล่าง!",
|
||||
"maxTicketWarning":"**คำเตือน:** _คุณสามารถสร้างได้ {0} ตั๋วในครั้งเดียว!_"
|
||||
"goToTicket":"ไปที่ห้องติดต่อ",
|
||||
"ticketWarning":"Embed อยู่ในข้อความด้านล่าง",
|
||||
"maxTicketWarning":"**คำเตือน:** _คุณสามารถสร้างห้องติดต่อได้แค่ {0} ห้องติดต่อคน_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"คำสั่งที่ใช้ได้:",
|
||||
"header1":"**ไปที่ {0} เพื่อสร้างตั๋ว!**\n\n",
|
||||
"header2":"**ใช้คำสั่ง `/new` หรือ `/ticket` เพื่อสร้างตั๋ว!**\n\n",
|
||||
"header1":"**ไปที่ {0} เพื่อสร้างห้องติดต่อ**\n\n",
|
||||
"header2":"**ใช้คำสั่ง `/new` หรือ `/ticket` เพื่อสร้างห้องติดต่อ**\n\n",
|
||||
|
||||
"msgCmd":"สร้าง embed พร้อมปุ่ม (เฉพาะผู้ดูแลระบบ)",
|
||||
"renameCmd":"เปลี่ยนชื่อตั๋ว (ไม่มีช่องว่าง)",
|
||||
"closeCmd":"ปิดตั๋ว",
|
||||
"deleteCmd":"ลบตั๋ว",
|
||||
"addCmd":"เพิ่มผู้ใช้ในตั๋ว",
|
||||
"removeCmd":"ลบผู้ใช้ออกจากตั๋ว",
|
||||
"reopenCmd":"เปิดตั๋วอีกครั้งหลังจากถูกปิด",
|
||||
"changeCmd":"เปลี่ยนประเภทตั๋ว",
|
||||
"claimCmd":"เรียกขึ้นตั๋ว",
|
||||
"unclaimCmd":"ยกเลิกการเรียกขึ้นตั๋ว",
|
||||
"statsCmd":"ดูสถิติตั๋ว",
|
||||
"autocloseCmd":"ตั้งค่าการปิดตั๋วอัตโนมัติ"
|
||||
"renameCmd":"เปลี่ยนชื่อห้องติดต่อ (ไม่มีช่องว่าง)",
|
||||
"closeCmd":"ปิดห้องติดต่อ",
|
||||
"deleteCmd":"ลบห้องติดต่อ",
|
||||
"addCmd":"เพิ่มผู้ใช้ในห้องติดต่อ",
|
||||
"removeCmd":"ลบผู้ใช้ออกจากห้องติดต่อ",
|
||||
"reopenCmd":"เปิดห้องติดต่ออีกครั้งหลังจากถูกปิด",
|
||||
"changeCmd":"เปลี่ยนประเภทห้องติดต่อ",
|
||||
"claimCmd":"รับเรื่องห้องติดต่อ",
|
||||
"unclaimCmd":"ยกเลิกการรับเรื่องห้องติดต่อ",
|
||||
"statsCmd":"ดูสถิติห้องติดต่อ",
|
||||
"autocloseCmd":"ตั้งค่าการปิดห้องติดต่ออัตโนมัติ"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"ปิดตั๋ว",
|
||||
"delete":"ลบตั๋ว",
|
||||
"reopen":"เปิดตั๋วอีกครั้ง",
|
||||
"close":"ปิดห้องติดต่อ",
|
||||
"delete":"ลบห้องติดต่อ",
|
||||
"reopen":"เปิดห้องติดต่ออีกครั้ง",
|
||||
"closeWithReason":"ปิดด้วยเหตุผล"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถพูดคุยในตั๋วนี้ได้!\n\n*คลิกที่ปุ่มด้านล่างเพื่อลบหรือเปิดตั๋วนี้อีกครั้ง!*",
|
||||
"createdTitle":"สร้างตั๋วแล้ว!",
|
||||
"createdDescription":"ตั๋วของคุณถูกสร้างแล้ว คุณสามารถตรวจสอบได้จากการแจ้งเตือน!",
|
||||
"closedDescription":"เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถพูดคุยในห้องติดต่อนี้ได้\n\n*คลิกที่ปุ่มด้านล่างเพื่อลบหรือเปิดห้องติดต่อนี้อีกครั้ง*",
|
||||
"createdTitle":"สร้างห้องติดต่อแล้ว",
|
||||
"createdDescription":"ห้องติดต่อของคุณถูกสร้างแล้ว คุณสามารถตรวจสอบได้จากการแจ้งเตือน",
|
||||
|
||||
"newTicketDmTitle":"ตั๋วใหม่!",
|
||||
"closedTicketDmTitle":"ปิดตั๋ว!",
|
||||
"deletedTicketDmTitle":"ลบตั๋ว!",
|
||||
"closedTicketDmDescription":"ตั๋วของคุณถูกปิด!",
|
||||
"deletedTicketDmDescription":"ตั๋วของคุณถูกลบ!",
|
||||
"reopenTicketDmTitle":"เปิดตั๋วอีกครั้ง!",
|
||||
"reopenTicketDmDescription":"ตั๋วของคุณถูกเปิดอีกครั้ง!",
|
||||
"newTicketDmTitle":"ห้องติดต่อใหม่",
|
||||
"closedTicketDmTitle":"ปิดห้องติดต่อ",
|
||||
"deletedTicketDmTitle":"ลบห้องติดต่อ",
|
||||
"closedTicketDmDescription":"ห้องติดต่อของคุณถูกปิด",
|
||||
"deletedTicketDmDescription":"ห้องติดต่อของคุณถูกลบ",
|
||||
"reopenTicketDmTitle":"เปิดห้องติดต่ออีกครั้ง",
|
||||
"reopenTicketDmDescription":"ห้องติดต่อของคุณถูกเปิดอีกครั้ง",
|
||||
|
||||
"chooseCategory":"เลือกหมวดหมู่:",
|
||||
"gettingdeleted":"กำลังลบตั๋ว...",
|
||||
"gettingdeleted":"กำลังลบห้องติดต่อ...",
|
||||
|
||||
"none":"ไม่มี",
|
||||
"reason":"เหตุผล",
|
||||
@@ -88,14 +88,48 @@
|
||||
"deletedby":"ถูกลบโดย",
|
||||
"closedby":"ถูกปิดโดย",
|
||||
|
||||
"modalreason":"เหตุผลในการปิดตั๋วนี้คืออะไร?",
|
||||
"chooseATicket": "เลือกตั๋ว"
|
||||
"modalreason":"เหตุผลในการปิดห้องติดต่อนี้คืออะไร?",
|
||||
"chooseATicket": "เลือกห้องติดต่อ"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"บันทึกการสนทนา",
|
||||
"processed":"บันทึกการสนทนากำลังดำเนินการ",
|
||||
"wait":"กรุณารอ!",
|
||||
"wait":"กรุณารอ...",
|
||||
"estimated":"เวลาโดยประมาณ",
|
||||
"available":"บันทึกการสนทนาสามารถใช้งานได้ที่นี่"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"สถิติทั้งหมด",
|
||||
"ticketTitle":"สถิติห้องติดต่อสำหรับ {0}",
|
||||
"userTitle":"สถิติผู้ใช้สำหรับ {0}",
|
||||
"systemTitle":"สถานะระบบ",
|
||||
"versionTitle":"เวอร์ชั่นของบอท",
|
||||
|
||||
"ticketsCreated":"ห้องติดต่อที่สร้าง",
|
||||
"ticketsClosed":"ห้องติดต่อที่ปิด",
|
||||
"ticketsDeleted":"ห้องติดต่อที่ลบ:",
|
||||
"ticketsReopened":"ห้องติดต่อที่เปิดใหม่",
|
||||
"ticketsAutoclosed":"ห้องติดต่อที่ปิดโดยอัตโนมัติ",
|
||||
"transcriptsCreated":"ทรานสคริปต์ที่สร้าง",
|
||||
"startupDate":"วันที่เริ่มต้น",
|
||||
"latestUpdate":"การอัปเดตล่าสุด",
|
||||
"ticketCreatedOn":"ห้องติดต่อที่สร้างเมื่อ",
|
||||
"ticketCreatedBy":"ห้องติดต่อที่สร้างโดย",
|
||||
"messagesSent":"ข้อความที่ส่ง",
|
||||
"status":"สถานะ",
|
||||
"participants":"ผู้มีส่วนร่วม",
|
||||
"role":"บทบาท",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"ผู้ดูแลทั้งหมด",
|
||||
"ticketAdmin":"ผู้ดูแลห้องติดต่อ",
|
||||
"member":"ผู้ใช้",
|
||||
"open":"เปิด",
|
||||
"reopened":"เปิดใหม่",
|
||||
"closed":"ปิด",
|
||||
"autoclosed":"ปิดโดยอัตโนมัติ"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"ไม่พบผู้ใช้ในฐานข้อมูลสถิติ"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"iamnotmega",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"缺少參數!",
|
||||
"missingArgsDescription":"缺少參數",
|
||||
"noPermsTitle":"沒有權限!",
|
||||
"noPermsDescription":"您需要管理員權限或必須在允許的角色列表中!",
|
||||
"noPermsDelete":"只有管理員可以刪除票據!",
|
||||
"chooseFromListTitle":"無效的ID",
|
||||
"chooseFromListDescription":"請選擇以下ID之一:",
|
||||
"boterror":"機器人錯誤!",
|
||||
"notInTicketTitle":"你不在票據中!",
|
||||
"notInTicketDescription":"此命令不適用於票據外!",
|
||||
"ticketDoesntExist":"此票據已不存在!",
|
||||
"roleDoesntExist":"此角色已不存在!",
|
||||
"anotherOption":"此選項不是票據,而是其他類型!",
|
||||
"maxAmountTitle":"達到最大數量!",
|
||||
"maxAmountDescription":"您已達到允許的最大票據數量!\n因此您不能創建新的票據!",
|
||||
"somethingWentWrong":"**出了點問題!**\n請稍後再試!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"已將{0}添加到此票據中!",
|
||||
"userRemovedTitle":"已將{0}從此票據中移除!",
|
||||
"renameTitle":"已將名稱更改為{0}!",
|
||||
"closeTitle":"此票據已關閉!",
|
||||
"deleteTitle":"正在刪除此票據...",
|
||||
"reopenTitle":"此票據已重新打開!",
|
||||
|
||||
"claimTitle":"此票據已分配給{0}",
|
||||
"unclaimTitle":"此票據不再被分配!",
|
||||
"changeTitle":"票據類型更改為{0}!",
|
||||
|
||||
"statsTitle":"以下是{0}的統計信息!",
|
||||
"autocloseTitle":"此票據將在{0}後自動關閉!",
|
||||
"autocloseRejectTitle":"此票據將不再自動關閉!",
|
||||
"autocloseWarn":"這只影響不活躍的票據!",
|
||||
|
||||
"goToTicket":"前往票據",
|
||||
"ticketWarning":"嵌入信息在下方消息中!",
|
||||
"maxTicketWarning":"**警告:** _您一次只能創建{0}個票據!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"可用命令:",
|
||||
"header1":"**前往{0}以創建票據!**\n\n",
|
||||
"header2":"**運行命令`/new`或`/ticket`以創建票據!**\n\n",
|
||||
|
||||
"msgCmd":"生成帶有按鈕的嵌入消息。(僅限管理員)",
|
||||
"renameCmd":"重命名票據。(無空格)",
|
||||
"closeCmd":"關閉票據。",
|
||||
"deleteCmd":"刪除票據。",
|
||||
"addCmd":"將用戶添加到票據。",
|
||||
"removeCmd":"將用戶從票據中移除。",
|
||||
"reopenCmd":"關閉後重新打開票據。",
|
||||
"changeCmd":"更改票據類型。",
|
||||
"claimCmd":"分配票據。",
|
||||
"unclaimCmd":"取消分配票據。",
|
||||
"statsCmd":"查看票據統計信息。",
|
||||
"autocloseCmd":"設置計時器以自動關閉票據"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"關閉票據",
|
||||
"delete":"刪除票據",
|
||||
"reopen":"重新打開票據",
|
||||
"closeWithReason":"有理由地關閉"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"現在只有管理員可以在此票據中講話!\n\n*點擊下方按鈕以刪除或重新打開此票據!*",
|
||||
"createdTitle":"票據已創建!",
|
||||
"createdDescription":"您的票據已創建,您可以通過提醒來檢測到它!",
|
||||
|
||||
"newTicketDmTitle":"新票據!",
|
||||
"closedTicketDmTitle":"票據已關閉!",
|
||||
"deletedTicketDmTitle":"票據已刪除!",
|
||||
"closedTicketDmDescription":"您的票據已關閉!",
|
||||
"deletedTicketDmDescription":"您的票據已刪除!",
|
||||
"reopenTicketDmTitle":"票據已重新打開!",
|
||||
"reopenTicketDmDescription":"您的票據已重新打開!",
|
||||
|
||||
"chooseCategory":"選擇一個類別:",
|
||||
"gettingdeleted":"票據正在刪除...",
|
||||
|
||||
"none":"無",
|
||||
"reason":"原因",
|
||||
"createdat":"創建於",
|
||||
"openedby":"打開者",
|
||||
"deletedby":"刪除者",
|
||||
"closedby":"關閉者",
|
||||
|
||||
"modalreason":"關閉此票據的原因是什麼?",
|
||||
"chooseATicket":"選擇一個票據"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"記錄",
|
||||
"processed":"此記錄正在處理",
|
||||
"wait":"請稍候!",
|
||||
"estimated":"預計時間",
|
||||
"available":"記錄在此處可用"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"全局統計",
|
||||
"ticketTitle":"{0}的票據統計",
|
||||
"userTitle":"{0}的用戶統計",
|
||||
"systemTitle":"系統統計",
|
||||
"versionTitle":"機器人版本",
|
||||
|
||||
"ticketsCreated":"創建的票據",
|
||||
"ticketsClosed":"關閉的票據",
|
||||
"ticketsDeleted":"刪除的票據",
|
||||
"ticketsReopened":"重新打開的票據",
|
||||
"ticketsAutoclosed":"自動關閉的票據",
|
||||
"transcriptsCreated":"創建的記錄",
|
||||
"startupDate":"啟動日期",
|
||||
"latestUpdate":"最新更新",
|
||||
"ticketCreatedOn":"票據創建於",
|
||||
"ticketCreatedBy":"票據創建者",
|
||||
"messagesSent":"發送的消息",
|
||||
"status":"狀態",
|
||||
"participants":"參與者",
|
||||
"role":"角色",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"全局管理員",
|
||||
"ticketAdmin":"票據管理員",
|
||||
"member":"成員",
|
||||
"open":"打開",
|
||||
"reopened":"重新打開",
|
||||
"closed":"關閉",
|
||||
"autoclosed":"自動關閉"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"在統計數據庫中找不到該用戶!"
|
||||
}
|
||||
}
|
||||
+66
-32
@@ -1,45 +1,45 @@
|
||||
{
|
||||
"_CREDITS":"Hydrâelčhâvø#1575",
|
||||
"_INFO":"This file is a translation for open ticket 3.4.1",
|
||||
"_CREDITS":"0x15d3",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Geçersiz argümanlar!",
|
||||
"missingArgsDescription":"Eksik argüman!",
|
||||
"noPermsTitle":"Bunun için yetkin yok!",
|
||||
"noPermsDescription":"Bunu yapmak için 'ADMİNİSTRAR'rolüne ihtiyacınız var, veya izin verilen roller listesinde olun!",
|
||||
"noPermsDescription":"Bunu yapmak için 'ADMINISTRATOR' rolüne ihtiyacınız var, veya izin verilen roller listesinde olun!",
|
||||
"noPermsDelete":"Sadece adminler bileti silebilir!",
|
||||
"chooseFromListTitle":"Geçersiz Kimlik",
|
||||
"chooseFromListTitle":"Geçersiz kimlik",
|
||||
"chooseFromListDescription":"Aşağıdaki kimliklerden birini seçin:",
|
||||
"boterror":"Bot Hatası!",
|
||||
"boterror":"Bot hatası!",
|
||||
"notInTicketTitle":"Bir biletin yok!",
|
||||
"notInTicketDescription":"Bu komut bilet dışında kullanılamaz!",
|
||||
"ticketDoesntExist":"Bu bilet artık yok!",
|
||||
"roleDoesntExist":"Bu rol artık yok!",
|
||||
"anotherOption":"Bu seçenek bir bilet değil, başka bir türdür!",
|
||||
"maxAmountTitle":"Ulaşabileceğin maksimum tutara ulaştın!",
|
||||
"maxAmountDescription":"İzin verilen maksimum bilet sayısına ulaştınız!\nHhayır yeni bir tane oluşturamazsın!",
|
||||
"maxAmountDescription":"İzin verilen maksimum bilet sayısına ulaştınız!\nHayır yeni bir tane oluşturamazsın!",
|
||||
"somethingWentWrong":"**Bir şeyler ters gitti!**\n lütfen başka bir zaman tekrar deneyin!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Bilete {0} adlı kullanıcı eklendi!",
|
||||
"userRemovedTitle":"Biletten {0} adlı kullanıcı çıkarıldı !",
|
||||
"userAddedTitle":"{0} adlı kullanıcı bilete eklendi!",
|
||||
"userRemovedTitle":"{0} adlı kullanıcı biletten çıkarıldı !",
|
||||
"renameTitle":"Bilet ismi {0} olarak değştirildi!",
|
||||
"closeTitle":"Bilet Kapatıldı!",
|
||||
"closeTitle":"Bilet kapatıldı!",
|
||||
"deleteTitle":"Bilet siliniyor...",
|
||||
"reopenTitle":"Bilet Yeniden Açıldı!",
|
||||
"reopenTitle":"Bilet yeniden açıldı!",
|
||||
|
||||
"claimTitle":"Bu bilet artık talep edildi. {0}",
|
||||
"unclaimTitle":"Tu bilet artık talep edilmiyor!",
|
||||
"changeTitle":"Bu bilet türü {0} olarak değiştirildi!",
|
||||
"claimTitle":"Bu bilet {0} tarafından talep edildi.",
|
||||
"unclaimTitle":"Bu bilet artık talep edilmiyor!",
|
||||
"changeTitle":"Bu biletin türü {0} olarak değiştirildi!",
|
||||
|
||||
"statsTitle":"Here are the stats for {0}!",
|
||||
"autocloseTitle":"This ticket will be closed automatically after {0}!",
|
||||
"autocloseRejectTitle":"This ticket will no longer be closed automatically!",
|
||||
"autocloseWarn":"This only affects inactive tickets!",
|
||||
"statsTitle":"{0} için istatistikler!",
|
||||
"autocloseTitle":"Bu bilet {0} sonra otomatik olarak kapatılacaktır!",
|
||||
"autocloseRejectTitle":"Bu bilet artık otomatik olarak kapatılmayacaktır!",
|
||||
"autocloseWarn":"Bu sadece aktif olmayan biletleri etkiler!",
|
||||
|
||||
"goToTicket":"go to ticket",
|
||||
"goToTicket":"Bilete git",
|
||||
"ticketWarning":"Gömme aşağıdaki mesajda yer almaktadır!",
|
||||
"maxTicketWarning":"**Uyarı:** _You can only create {0} ticket(s) at a time!_"
|
||||
"maxTicketWarning":"**Uyarı:** _Bir seferde yalnızca {0} bilet oluşturabilirsiniz!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Kullanılabilir Komutlar:",
|
||||
@@ -48,16 +48,16 @@
|
||||
|
||||
"msgCmd":"Gömülü bilet mesajı gönderir. (sadece yöneticiler)",
|
||||
"renameCmd":"Bilet adını değiştirir. (boşluk olmadan)",
|
||||
"closeCmd":"Bileti kapatır.",
|
||||
"deleteCmd":"Bileti siler.",
|
||||
"addCmd":"Bilete kullanıcı ekler.",
|
||||
"removeCmd":"Biletten kullanıcı çıkarır.",
|
||||
"reopenCmd":"Bilet kapandıktan sonra tekrar açar.",
|
||||
"changeCmd":"Change ticket type.",
|
||||
"claimCmd":"Claim a ticket.",
|
||||
"unclaimCmd":"Unclaim a ticket.",
|
||||
"statsCmd":"View ticket stats.",
|
||||
"autocloseCmd":"Set timer to automatically close ticket"
|
||||
"closeCmd":"Bileti kapatır",
|
||||
"deleteCmd":"Bileti siler",
|
||||
"addCmd":"Bilete kullanıcı ekler",
|
||||
"removeCmd":"Biletten kullanıcı çıkarır",
|
||||
"reopenCmd":"Bilet kapandıktan sonra tekrar açar",
|
||||
"changeCmd":"Bilet türünü değiştir",
|
||||
"claimCmd":"Bir bileti talep et",
|
||||
"unclaimCmd":"Bir bileti talep etmeyi bırak",
|
||||
"statsCmd":"Bilet istatistiklerini görüntüle",
|
||||
"autocloseCmd":"Bileti otomatik olarak kapatacak zamanlayıcıyı ayarla"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Bileti Kapat",
|
||||
@@ -68,7 +68,7 @@
|
||||
"messages":{
|
||||
"closedDescription":"Bu bilette artık sadece yöneticiler konuşabilir!\n\n* Bu bileti silmek veya yeniden açmak için aşağıdaki butona tıklayın!*",
|
||||
"createdTitle":"Talep Oluşturuldu!",
|
||||
"createdDescription":"Your ticket is created, you can detect it by a ping!",
|
||||
"createdDescription":"Biletiniz oluşturuldu, bir bildirimle tespit edebilirsiniz!",
|
||||
|
||||
"newTicketDmTitle":"Yeni Bilet!",
|
||||
"closedTicketDmTitle":"Bilet Kapatıldı!",
|
||||
@@ -83,8 +83,8 @@
|
||||
|
||||
"none":"yok",
|
||||
"reason":"sebep",
|
||||
"createdat":"created at",
|
||||
"openedby":"opened by",
|
||||
"createdat":"oluşturulma tarihi",
|
||||
"openedby":"açan kişi",
|
||||
"deletedby":"Silen kişi",
|
||||
"closedby":"Kapatan kişi",
|
||||
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Lütfen Bekleyiniz!",
|
||||
"estimated":"Tahmini Süre",
|
||||
"available":"Transkript burada mevcuttur"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Sunucu İstatistikleri",
|
||||
"ticketTitle":"{0} için Bilet İstatistikleri",
|
||||
"userTitle":"{0} için Kullanıcı İstatistikleri",
|
||||
"systemTitle":"Sistem İstatistikleri",
|
||||
"versionTitle":"Bot Sürümü",
|
||||
|
||||
"ticketsCreated": "Oluşturulan Biletler",
|
||||
"ticketsClosed": "Kapatılan Biletler",
|
||||
"ticketsDeleted": "Silinen Biletler",
|
||||
"ticketsReopened": "Yeniden Açılan Biletler",
|
||||
"ticketsAutoclosed": "Otomatik Kapatılan Biletler",
|
||||
"transcriptsCreated": "Oluşturulan Transkriptler",
|
||||
"startupDate": "Başlangıç Tarihi",
|
||||
"latestUpdate": "Son Güncelleme",
|
||||
"ticketCreatedOn": "Bilet Oluşturulma Tarihi",
|
||||
"ticketCreatedBy": "Bileti Oluşturan",
|
||||
"messagesSent": "Gönderilen Mesajlar",
|
||||
"status": "Durum",
|
||||
"participants": "Katılımcılar",
|
||||
"role": "Rol",
|
||||
|
||||
"switches": {
|
||||
"globalAdmin": "Küresel Yönetici",
|
||||
"ticketAdmin": "Bilet Yönetici",
|
||||
"member": "Üye",
|
||||
"open": "Açık",
|
||||
"reopened": "Yeniden Açıldı",
|
||||
"closed": "Kapalı",
|
||||
"autoclosed": "Otomatik Kapalı"
|
||||
},
|
||||
|
||||
"errorUserNotFound": "Bu kullanıcı istatistikler veritabanında bulunamıyor!"
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"_CREDITS":"Anderskiy#4093",
|
||||
"_INFO":"Цей файл є перекладом для open ticket 3.4.1",
|
||||
"_CREDITS":"ander",
|
||||
"_INFO":"Цей файл є перекладом для open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Невірні аргументи!",
|
||||
@@ -97,5 +97,39 @@
|
||||
"wait":"Будь-ласка почекайте!",
|
||||
"estimated":"Розрахунковий час",
|
||||
"available":"Транскрипція доступна тут"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Загальна статистика",
|
||||
"ticketTitle":"Статистика тікету для {0}",
|
||||
"userTitle":"Статистика корстувача для {0}",
|
||||
"systemTitle":"Системна статистика",
|
||||
"versionTitle":"Версія бота",
|
||||
|
||||
"ticketsCreated":"Тікет створен",
|
||||
"ticketsClosed":"Тікет закрито",
|
||||
"ticketsDeleted":"Тікет видалено",
|
||||
"ticketsReopened":"Тікет перевідкритий",
|
||||
"ticketsAutoclosed":"Тікет автоматично закритий",
|
||||
"transcriptsCreated":"Транскрипт створено",
|
||||
"startupDate":"Дата запуску",
|
||||
"latestUpdate":"Останнє оновлення",
|
||||
"ticketCreatedOn":"Тікет створено",
|
||||
"ticketCreatedBy":"Тікет створено",
|
||||
"messagesSent":"Повідомлення відправлено",
|
||||
"status":"Стан",
|
||||
"participants":"Учасники",
|
||||
"role":"Роль",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Головна",
|
||||
"ticketAdmin":"Тікет",
|
||||
"member":"Учасник",
|
||||
"open":"Відкрити",
|
||||
"reopened":"Перевідкритий",
|
||||
"closed":"Закритий",
|
||||
"autoclosed":"Автоматично закритий"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Учасник не знайдений у базі даних статистики!"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_CREDITS":"iamnotmega",
|
||||
"_INFO":"This file is a translation for open ticket 3.5.8",
|
||||
|
||||
"errors":{
|
||||
"missingArgsTitle":"Đối số không hợp lệ!",
|
||||
"missingArgsDescription":"Thiếu đối số",
|
||||
"noPermsTitle":"Không có quyền!",
|
||||
"noPermsDescription":"Bạn cần quyền `ADMINISTRATOR` hoặc nằm trong danh sách vai trò được cho phép!",
|
||||
"noPermsDelete":"Chỉ có quản trị viên mới có thể xóa một phiếu hỗ trợ!",
|
||||
"chooseFromListTitle":"ID không hợp lệ",
|
||||
"chooseFromListDescription":"Chọn một trong các ID dưới đây:",
|
||||
"boterror":"Lỗi Bot!",
|
||||
"notInTicketTitle":"Bạn không ở trong một phiếu hỗ trợ!",
|
||||
"notInTicketDescription":"Lệnh này không hoạt động ngoài các phiếu hỗ trợ!",
|
||||
"ticketDoesntExist":"Phiếu hỗ trợ này không còn tồn tại nữa!",
|
||||
"roleDoesntExist":"Vai trò này không còn tồn tại nữa!",
|
||||
"anotherOption":"Lựa chọn này không phải là một phiếu hỗ trợ mà là một loại khác!",
|
||||
"maxAmountTitle":"Đã đạt tối đa!",
|
||||
"maxAmountDescription":"Bạn đã đạt số lượng phiếu hỗ trợ tối đa cho phép!\nBạn không thể tạo mới!",
|
||||
"somethingWentWrong":"**Đã xảy ra lỗi!**\nVui lòng thử lại sau!"
|
||||
},
|
||||
"commands":{
|
||||
"userAddedTitle":"Đã thêm {0} vào phiếu hỗ trợ này!",
|
||||
"userRemovedTitle":"Đã xóa {0} khỏi phiếu hỗ trợ này!",
|
||||
"renameTitle":"Đổi tên thành {0}!",
|
||||
"closeTitle":"Đóng phiếu hỗ trợ này!",
|
||||
"deleteTitle":"Đang xóa phiếu hỗ trợ này...",
|
||||
"reopenTitle":"Mở lại phiếu hỗ trợ này!",
|
||||
|
||||
"claimTitle":"Phiếu hỗ trợ này đã được chuyển cho {0}",
|
||||
"unclaimTitle":"Phiếu hỗ trợ này không còn được chuyển nhượng!",
|
||||
"changeTitle":"Đổi loại phiếu thành {0}!",
|
||||
|
||||
"statsTitle":"Đây là thống kê cho {0}!",
|
||||
"autocloseTitle":"Phiếu hỗ trợ này sẽ tự động đóng sau {0}!",
|
||||
"autocloseRejectTitle":"Phiếu hỗ trợ này sẽ không tự động đóng nữa!",
|
||||
"autocloseWarn":"Chỉ ảnh hưởng đến các phiếu hỗ trợ không hoạt động!",
|
||||
|
||||
"goToTicket":"đi đến phiếu hỗ trợ",
|
||||
"ticketWarning":"Thông báo nhúng ở dưới!",
|
||||
"maxTicketWarning":"**Cảnh báo:** _Bạn chỉ có thể tạo {0} phiếu hỗ trợ một lúc!_"
|
||||
},
|
||||
"helpMenu":{
|
||||
"title":"Các lệnh có sẵn:",
|
||||
"header1":"**Đi tới {0} để tạo phiếu hỗ trợ!**\n\n",
|
||||
"header2":"**Chạy lệnh `/new` hoặc `/ticket` để tạo phiếu hỗ trợ!**\n\n",
|
||||
|
||||
"msgCmd":"Tạo nhúng với các nút. (chỉ dành cho quản trị viên)",
|
||||
"renameCmd":"Đổi tên phiếu hỗ trợ. (không có khoảng trống)",
|
||||
"closeCmd":"Đóng phiếu hỗ trợ.",
|
||||
"deleteCmd":"Xóa phiếu hỗ trợ.",
|
||||
"addCmd":"Thêm người dùng vào phiếu hỗ trợ.",
|
||||
"removeCmd":"Xóa người dùng khỏi phiếu hỗ trợ.",
|
||||
"reopenCmd":"Mở lại phiếu hỗ trợ sau khi đã đóng.",
|
||||
"changeCmd":"Thay đổi loại phiếu.",
|
||||
"claimCmd":"Chuyển nhượng phiếu hỗ trợ.",
|
||||
"unclaimCmd":"Hủy chuyển nhượng phiếu hỗ trợ.",
|
||||
"statsCmd":"Xem thống kê phiếu hỗ trợ.",
|
||||
"autocloseCmd":"Đặt bộ hẹn để tự động đóng phiếu hỗ trợ"
|
||||
},
|
||||
"buttons":{
|
||||
"close":"Đóng phiếu hỗ trợ",
|
||||
"delete":"Xóa phiếu hỗ trợ",
|
||||
"reopen":"Mở lại phiếu hỗ trợ",
|
||||
"closeWithReason":"đóng với lý do"
|
||||
},
|
||||
"messages":{
|
||||
"closedDescription":"Chỉ có quản trị viên mới có thể nói chuyện trong phiếu hỗ trợ này ngay bây giờ!\n\n*Nhấp vào nút bên dưới để xóa hoặc mở lại phiếu hỗ trợ này!*",
|
||||
"createdTitle":"Phiếu hỗ trợ đã được tạo!",
|
||||
"createdDescription":"Phiếu hỗ trợ của bạn đã được tạo, bạn có thể nhận ra nó bằng cách ping!",
|
||||
|
||||
"newTicketDmTitle":"Phiếu hỗ trợ mới!",
|
||||
"closedTicketDmTitle":"Phiếu hỗ trợ đã được đóng!",
|
||||
"deletedTicketDmTitle":"Phiếu hỗ trợ đã được xóa!",
|
||||
"closedTicketDmDescription":"Phiếu hỗ trợ của bạn đã bị đóng!",
|
||||
"deletedTicketDmDescription":"Phiếu hỗ trợ của bạn đã bị xóa!",
|
||||
"reopenTicketDmTitle":"Phiếu hỗ trợ đã được mở lại!",
|
||||
"reopenTicketDmDescription":"Phiếu hỗ trợ của bạn đã được mở lại!",
|
||||
|
||||
"chooseCategory":"chọn một danh mục:",
|
||||
"gettingdeleted":"Phiếu hỗ trợ đang bị xóa...",
|
||||
|
||||
"none":"không",
|
||||
"reason":"lý do",
|
||||
"createdat":"được tạo lúc",
|
||||
"openedby":"mở bởi",
|
||||
"deletedby":"xóa bởi",
|
||||
"closedby":"đóng bởi",
|
||||
|
||||
"modalreason":"Lý do đóng phiếu hỗ trợ này là gì?",
|
||||
"chooseATicket": "Chọn một phiếu hỗ trợ"
|
||||
},
|
||||
"transcripts":{
|
||||
"title":"Biên bản",
|
||||
"processed":"Biên bản này đang được xử lý",
|
||||
"wait":"Vui lòng đợi!",
|
||||
"estimated":"Thời gian ước tính",
|
||||
"available":"Biên bản này có sẵn tại đây"
|
||||
},
|
||||
"stats":{
|
||||
"globalTitle":"Thống kê toàn cầu",
|
||||
"ticketTitle":"Thống kê phiếu hỗ trợ cho {0}",
|
||||
"userTitle":"Thống kê người dùng cho {0}",
|
||||
"systemTitle":"Thống kê hệ thống",
|
||||
"versionTitle":"Phiên bản Bot",
|
||||
|
||||
"ticketsCreated":"Phiếu hỗ trợ đã được tạo",
|
||||
"ticketsClosed":"Phiếu hỗ trợ đã được đóng",
|
||||
"ticketsDeleted":"Phiếu hỗ trợ đã được xóa",
|
||||
"ticketsReopened":"Phiếu hỗ trợ đã được mở lại",
|
||||
"ticketsAutoclosed":"Phiếu hỗ trợ đã tự động đóng",
|
||||
"transcriptsCreated":"Biên bản đã được tạo",
|
||||
"startupDate":"Ngày khởi động",
|
||||
"latestUpdate":"Cập nhật mới nhất",
|
||||
"ticketCreatedOn":"Phiếu hỗ trợ đã được tạo vào",
|
||||
"ticketCreatedBy":"Phiếu hỗ trợ đã được tạo bởi",
|
||||
"messagesSent":"Tin nhắn đã được gửi",
|
||||
"status":"Trạng thái",
|
||||
"participants":"Người tham gia",
|
||||
"role":"Vai trò",
|
||||
|
||||
"switches":{
|
||||
"globalAdmin":"Quản trị viên toàn cầu",
|
||||
"ticketAdmin":"Quản trị viên phiếu hỗ trợ",
|
||||
"member":"Thành viên",
|
||||
"open":"Mở",
|
||||
"reopened":"Đã mở lại",
|
||||
"closed":"Đã đóng",
|
||||
"autoclosed":"Đã tự động đóng"
|
||||
},
|
||||
|
||||
"errorUserNotFound":"Người dùng này không thể được tìm thấy trong cơ sở dữ liệu thống kê!"
|
||||
}
|
||||
}
|
||||
+10
-10
@@ -1,28 +1,28 @@
|
||||
{
|
||||
"name": "open-ticket",
|
||||
"version": "3.4.1",
|
||||
"description": "This is an open-source discord ticket bot, you can configure it and it comes with cool features like a transcript.",
|
||||
"author": "DJdj Development",
|
||||
"version": "3.5.8",
|
||||
"description": "The most advanced open-source discord ticket bot with HTML transcripts and plugins! It uses discord.js v14 & no database required!",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"start": "node index.js",
|
||||
"test": "node index.js --devconfig",
|
||||
"test": "node index.js --devconfig --noerrorupload",
|
||||
"slashEnable": "node index.js slash enable",
|
||||
"slashDisable": "node index.js slash disable",
|
||||
"cleardata": "node ./core/dynamicdatabase/cleardata.js"
|
||||
"slashDisable": "node index.js slash disable"
|
||||
},
|
||||
"author": "DJdj Development",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"axios": "^0.27.2",
|
||||
"axios": "^1.6.2",
|
||||
"chalk": "^5.0.1",
|
||||
"discord.js": "^14.11.0"
|
||||
"discord.js": "^14.15.3"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/DJj123dj/open-ticket.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/DJj123dj/open-ticket/issues"
|
||||
"url": "https://github.com/DJj123dj/open-ticket/issues",
|
||||
"email": "support@dj-dj.be"
|
||||
},
|
||||
"homepage": "https://github.com/DJj123dj/open-ticket#readme"
|
||||
"homepage": "https://openticket.dj-dj.be"
|
||||
}
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
"valueTextColor":"#ffffff",
|
||||
"hideBackgroundColor":"#40444a",
|
||||
"hideTextColor":"#ffffff"
|
||||
},
|
||||
"favicon":{
|
||||
"enableCustomFavicon":false,
|
||||
"imageUrl":"https://transcripts.dj-dj.be/favicon.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user