Compare commits

...
38 Commits
Author SHA1 Message Date
Jasper d0bcf26b93 Open Ticket v3.2.2
new update :)
2023-02-24 21:58:40 +01:00
DJj123dj 65f82171d3 v3.2.2 push 4 2023-02-24 21:48:59 +01:00
DJj123dj 6e730f058d github files moved to new directory 2023-02-24 15:13:33 +01:00
DJj123dj 4702c633ec v3.2.2 push 2 2023-02-24 15:02:53 +01:00
DJj123dj dc14a39c4e v3.2.2 push 1 2023-02-24 14:49:36 +01:00
Jasper 05c97909d4 Merge pull request #49 from DJj123dj/translation
Translation
2023-02-13 21:18:59 +01:00
Jasper b3c4c2f6e8 Merge pull request #47 from Apexo01/main
Added russian language
2023-02-13 21:01:19 +01:00
Jasper e0e678bee0 Merge pull request #48 from DJj123dj/main
test
2023-02-13 20:59:04 +01:00
Jasper 1b01b1703f Merge branch 'dev' into main 2023-02-13 20:57:43 +01:00
Jasper 26539360c6 Merge pull request #46 from quiradon/patch-2
Update portuguese.json
2023-02-13 20:54:30 +01:00
Apexo 627c461f64 Update README.md 2023-02-13 22:30:18 +03:00
Apexo 2e40dc0468 Added russian language 2023-02-13 22:18:07 +03:00
Jasper fa57b9a93f Update checker.js 2023-02-12 15:09:27 +01:00
QuiraDon 930452155b Update portuguese.json
some fixes on what was missing.
2023-02-09 02:20:09 -03:00
DJj123dj e70f22162d Merge branch 'dev' of https://github.com/DJj123dj/open-ticket into dev 2023-02-08 14:27:40 +01:00
DJj123dj d5b0a0f3c6 /change bugfix 2023-02-08 14:27:39 +01:00
Jasper c43081e05d Merge pull request #45 from quiradon/patch-1 2023-02-08 07:09:44 +01:00
QuiraDon 8c4bf735f1 Update Portugueses Lang
I completed the translation into Portuguese that was missing a few things.
2023-02-07 23:33:26 -03:00
Jasper 3a20c4707b open ticket v3.2.1
Update dev branch
2023-02-07 17:03:22 +01:00
Jasper 9a7e563c57 Update dev branch 2023-02-07 17:02:02 +01:00
Jasper 72b4f43a25 Open Ticket v3.2.1
Bug fix update
2023-02-07 17:01:14 +01:00
DJj123dj 5fec028cc9 Merge branch 'dev' of https://github.com/DJj123dj/open-ticket into dev 2023-02-07 16:59:26 +01:00
DJj123dj 81300303e5 Update danish.json 2023-02-07 16:59:19 +01:00
Jasper 8a1ea1c856 Update README.md 2023-02-06 22:08:11 +01:00
Jasper 8a9d63bf8b Merge pull request #41 from Sank34/patch-2
French Translation New
2023-02-06 22:07:18 +01:00
DJj123dj 208b365276 Update czech.json 2023-02-06 21:49:42 +01:00
Andrei abb64a0575 French Translation New 2023-02-05 23:32:42 +02:00
DJj123dj c930140540 Update german.json 2023-02-05 22:17:19 +01:00
DJj123dj 294c4d3f2b Merge branch 'dev' of https://github.com/DJj123dj/open-ticket into dev 2023-02-05 16:22:47 +01:00
DJj123dj 28e7d48e7e v3.2.1 push 3 2023-02-05 16:22:44 +01:00
Jasper bad278e681 Merge pull request #40 from DJj123dj/readme-edit
Edited readme
2023-02-02 18:16:52 +01:00
Jasper 2e2542d064 added documentation below 2023-02-02 18:15:42 +01:00
Jasper 2c48da45ae readme-update step 1 2023-02-02 18:11:46 +01:00
Jasper e1232a559e Added translation from Sank34/patch-1
Romanian for v3.2.1
2023-01-28 12:18:17 +01:00
Andrei 3d58475461 Update to the new Version 2023-01-28 13:16:17 +02:00
DJj123dj f702b199da v3.2.1 TRANSLATION! 2023-01-28 11:51:10 +01:00
DJj123dj ea1604a805 v3.2.1 push 1 (fixed /change bugs) 2023-01-25 16:28:19 +01:00
DJj123dj f8bc3d9e12 bug fix: tickets couldn't close in some situations 2023-01-19 17:42:44 +01:00
40 changed files with 1056 additions and 772 deletions
+9 -7
View File
@@ -1,11 +1,11 @@
node_modules/ node_modules/
package-lock.json package-lock.json
devConfig.json devconfig.json
devConfig1.json devconfig1.json
devConfig2.json devconfig2.json
devConfig3.json devconfig3.json
devConfig4.json devconfig4.json
devConfig5.json devconfig5.json
.DS_Store .DS_Store
openticketdebug.txt openticketdebug.txt
developerChangelog.md developerChangelog.md
@@ -17,4 +17,6 @@ storage/.DS_Store
.vscode/ .vscode/
livestatus.json livestatus.json
test.js test.js
testtsconfig.json devtsconfig.json
plugins/*
!plugins/example.plugin.js
+55 -47
View File
@@ -1,58 +1,66 @@
# Open Ticket <img src="https://www.dj-dj.be/wp-content/uploads/2023/02/open-ticket-cropped.png" alt="Open Ticket" width="600px">
[![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-3.2.0-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v3.2.0) [![discord.js](https://img.shields.io/badge/discord.js-v14-CB3837.svg?style=flat-square&logo=npm)]() [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [![documentation](https://img.shields.io/badge/documentation-Click%20Here-yellow.svg?style=flat-square)](https://docs.openticket.dj-dj.be)
Open ticket is the most configurable open-source ticket bot for discord! Made with the newest technologies. Like: Slash commands, transcripts, multiple ticket types, buttons & dropdowns! [![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) [![version](https://img.shields.io/badge/version-3.2.2-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v3.2.2) [![discord.js](https://img.shields.io/badge/discord.js-v14-CB3837.svg?style=flat-square&logo=npm)]() [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [![stars](https://img.shields.io/github/stars/djj123dj/open-ticket?color=yellow&label=stars&logo=github&style=flat-square)](https://docs.openticket.dj-dj.be)
Start using it now, you can do anything!
*We love to hear suggestions for more features!* ### Open Ticket
Open Ticket is of the most customisable discord ticket bots of all time!
You have more than +100 options to customise in the config! This includes html transcripts, unlimited tickets, custom embeds & more!
We also have a great support service, we can solve every question you have about open ticket! We even provide free 24/7 hosting if you want!
<img src="logo.png" alt="Open Ticket logo" style="height: 200px; width:200px;"/> Take a look at all the features and discover the possibilities!
### [Documentation](https://docs.openticket.dj-dj.be/quick-start)
[![wiki](https://img.shields.io/badge/documentation-click%20here-blue.svg?style=flat-square)](https://www.github.com/DJj123dj/open-ticket/wiki) ## Features
### Thanks to these people:
- DJ-Lite: for doing the administration
- Sanke: for translation & new ideas
- Everyone that reported a bug
#### And our translators!
- Sanke#6086 (Romanian & French)
- Redactado#1673 (Spanish)
- t0miiis#3022 (Czech)
- josuens14 (Spanish)
- M4#5882 (Arabic)
- ChilledBroke#9986 (Arabic)
- David.#0187 (German)
- Maurizio#0268 (Italian)
- the_gamer#5095 (Danish)
## features
- **🎉 NEW! html transcripts!** - **🎉 NEW! html transcripts!**
- discord interaction buttons - 🔒 close, ❌ delete & ✅ re-open tickets
- slash & text commands - 🇬🇧 translation in 12 different languages
- close, delete & re-open tickets - 📄 very advanced customisation
- translation in 10 different languages - 🆗 buttons or 🔽 dropdowns!
- transcripts - 🆒 plugins
- add/remove users from a ticket - ∞ unlimited tickets & unlimited messages
- a lot of customisation options. - ➕➖ add/remove users from a ticket
- tickets, reaction roles & links are all possible! - /slash & text commands
- choose between buttons or dropdowns!
- discord.js v14
- everyting is configurable
- custom API + plugins
- unlimited tickets spread over multiple messages
- close with reason
- view transcripts in html
## quick start <details>
[Click here to start your adventure!](https://docs.openticket.dj-dj.be/quick-start) <summary><b>Click here for even more features!</b></summary>
- very customisable
- close tickets with reason
- also includes reaction roles!
- discord interaction buttons
- discord.js 14
</details>
## documentation ## preview
[<img src="./otWIKI.png" width="400px" href="https://docs.openticket.dj-dj.be">](https://docs.openticket.dj-dj.be) Images coming soon<br>
You can already see some images at our [documentation!](https://docs.openticket.dj-dj.be)
## information
_v3.2.0_ ## credits
DJdj Development Team
|Main Developer|Developer|Support Team|Designer|
|--------------|---------|-----------|---------|
|DJj123dj |Sanke |DJ-Lite |vuur_draak|
changelog: [click here](https://docs.openticket.dj-dj.be/other/changelog) Translators
|Language |Translator |
|--------------|-------------------------|
|Dutch |DJj123dj#1706 |
|Romanian |Sanke#6086 |
|French |Sanke#6086 |
|Spanish |Redactado#1673 & josuens14#5267|
|German |david.#8276 |
|Italian |Maurizio#0268 |
|Czech |t0miiis#3022 |
|Arabic |ChilledBroke#9986 & M4#5882|
|Danish |the_gamer#5095 |
|Portuguese |QuirAddon#9778 |
|Russian |Apexo#0723 |
© 2022 - 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.2.2_
</br>changelog: [click here](https://docs.openticket.dj-dj.be/other/changelog)
</br>documentation: [click here](https://docs.openticket.dj-dj.be/quick-start)
© 2023 - DJdj Development | [website](https://www.dj-dj.be) | [discord](https://discord.dj-dj.be) | [terms of service](https://www.dj-dj.be/terms)
+12 -11
View File
@@ -21,7 +21,7 @@ module.exports = () => {
return return
} }
msg.channel.messages.fetchPinned().then(msglist => { msg.channel.messages.fetchPinned().then(async msglist => {
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]}) if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description) const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
@@ -41,7 +41,11 @@ module.exports = () => {
const prefix = splitted.shift() const prefix = splitted.shift()
const name = (splitted.length > 0) ? splitted.join("-") : prefix const name = (splitted.length > 0) ? splitted.join("-") : prefix
if (newTicket.category){
const parent = await msg.guild.channels.fetch(newTicket.category,{cache:true})
if (parent && parent.type == discord.ChannelType.GuildCategory) msg.channel.setParent(parent)
}
msg.channel.setName(newTicket.channelprefix+name) msg.channel.setName(newTicket.channelprefix+name)
msg.channel.send({embeds:[bot.embeds.commands.changeEmbed(msg.author,newtype)]}) msg.channel.send({embeds:[bot.embeds.commands.changeEmbed(msg.author,newtype)]})
@@ -49,8 +53,6 @@ module.exports = () => {
log("system","ticket type changed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}]) log("system","ticket type changed",[{key:"user",value:msg.author.tag},{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.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
}) })
}) })
if (!DISABLE.commands.slash.change) client.on("interactionCreate",(interaction) => { if (!DISABLE.commands.slash.change) client.on("interactionCreate",(interaction) => {
@@ -64,35 +66,34 @@ module.exports = () => {
} }
//interaction.deferReply() //interaction.deferReply()
interaction.channel.messages.fetchPinned().then(msglist => { interaction.channel.messages.fetchPinned().then(async msglist => {
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.reply({embeds:[bot.errorLog.notInATicket]}) if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.reply({embeds:[bot.errorLog.notInATicket]})
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description) const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value const ticketId = hiddendata.data.find(d => d.key == "type").value
console.log("HELLO WORLD!! 1")
var newtype = interaction.options.getString("type",true) var newtype = interaction.options.getString("type",true)
if (!newtype) return interaction.reply({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]}) if (!newtype) return interaction.reply({embeds:[bot.errorLog.invalidArgsMessage(l.errors.missingArgsDescription+" `<type>`:\n`"+config.prefix+"change <type>`")]})
console.log("HELLO WORLD!! 2")
const newTicket = require("../core/utils/configParser").getTicketById(newtype,true) const newTicket = require("../core/utils/configParser").getTicketById(newtype,true)
const list = [] const list = []
config.options.forEach((o) => list.push(o.id)) config.options.forEach((o) => list.push(o.id))
if (!newTicket) return bot.errorLog.invalidIdChooseFromList(list) if (!newTicket) return bot.errorLog.invalidIdChooseFromList(list)
console.log("HELLO WORLD!! 3")
/**@type {String} */ /**@type {String} */
var chName = interaction.channel.name var chName = interaction.channel.name
const splitted = chName.split("-") const splitted = chName.split("-")
const prefix = splitted.shift() const prefix = splitted.shift()
const name = (splitted.length > 0) ? splitted.join("-") : prefix const name = (splitted.length > 0) ? splitted.join("-") : prefix
console.log("HELLO WORLD!! 4") if (newTicket.category){
const parent = await interaction.guild.channels.fetch(newTicket.category,{cache:true})
if (parent && parent.type == discord.ChannelType.GuildCategory) interaction.channel.setParent(parent)
}
interaction.channel.setName(newTicket.channelprefix+name) interaction.channel.setName(newTicket.channelprefix+name)
interaction.reply({embeds:[bot.embeds.commands.changeEmbed(interaction.user,newtype)]}) interaction.reply({embeds:[bot.embeds.commands.changeEmbed(interaction.user,newtype)]})
console.log("HELLO WORLD!! 5")
log("command","someone used the 'change' command",[{key:"user",value:interaction.user.tag}]) log("command","someone used the 'change' command",[{key:"user",value:interaction.user.tag}])
log("system","ticket type changed",[{key:"user",value:interaction.user.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}]) log("system","ticket type changed",[{key:"user",value:interaction.user.tag},{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.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
+1 -1
View File
@@ -19,7 +19,7 @@ module.exports = () => {
.setTitle("❔ "+l.helpMenu.title) .setTitle("❔ "+l.helpMenu.title)
const header = config.system.ticket_channel ? l.helpMenu.header1.replace("{0}","<#"+config.system.ticket_channel+">") : l.helpMenu.header2 const header = config.system.ticket_channel ? l.helpMenu.header1.replace("{0}","<#"+config.system.ticket_channel+">") : l.helpMenu.header2
helpEmbed.setDescription(header+"`"+prefix+msgName+" <id>` ➜ _"+l.helpMenu.msgCmd+"_\n\n`"+prefix+"rename <name>` ➜ _"+l.helpMenu.renameCmd+"_\n`"+prefix+"close` ➜ _"+l.helpMenu.closeCmd+"_\n`"+prefix+"delete` ➜ _"+l.helpMenu.deleteCmd+"_\n`"+prefix+"reopen` ➜ _"+l.helpMenu.reopenCmd+"_\n\n`"+prefix+"add <user>` ➜ _"+l.helpMenu.addCmd+"_\n`"+prefix+"remove <user>` ➜ _"+l.helpMenu.removeCmd+"_") helpEmbed.setDescription(header+"`"+prefix+msgName+" <id>` ➜ _"+l.helpMenu.msgCmd+"_\n\n`"+prefix+"rename <name>` ➜ _"+l.helpMenu.renameCmd+"_\n`"+prefix+"close` ➜ _"+l.helpMenu.closeCmd+"_\n`"+prefix+"delete` ➜ _"+l.helpMenu.deleteCmd+"_\n`"+prefix+"reopen` ➜ _"+l.helpMenu.reopenCmd+"_\n\n`"+prefix+"add <user>` ➜ _"+l.helpMenu.addCmd+"_\n`"+prefix+"remove <user>` ➜ _"+l.helpMenu.removeCmd+"_\n\n`"+prefix+"change <newtype>` ➜ _Change ticket type._")
var otherprefix = prefix.endsWith(" ") ? prefix.substring(0,prefix.length-1) : prefix var otherprefix = prefix.endsWith(" ") ? prefix.substring(0,prefix.length-1) : prefix
+10 -4
View File
@@ -18,14 +18,16 @@
"enable_DM_Messages":true, "enable_DM_Messages":true,
"has@everyoneaccess":false, "has@everyoneaccess":false,
"member_role":"member role (doesn't have access to tickets)", "member_role":"member role (this role doesn't have access to tickets)",
"closeMode":"adminonly|normal", "closeMode":"adminonly or normal (select one of the 2)",
"transcripts":"!!!! ALL SETTINGS FOR TRANSCRIPTS ARE LOCATED IN: transcriptconfig.json !!!!", "transcripts":"!!!! ALL SETTINGS FOR TRANSCRIPTS ARE LOCATED IN: transcriptconfig.json !!!!",
"showSlashcmdsInHelp":false "showSlashcmdsInHelp":false,
"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":[ "options":[
{ {
"id":"general", "id":"general",
@@ -47,6 +49,10 @@
"enable":false, "enable":false,
"url":"https://www.example.com/catmemes/cat.png" "url":"https://www.example.com/catmemes/cat.png"
}, },
"image":{
"enable":false,
"url":"https://www.dj-dj.be/wp-content/uploads/2022/09/pfp-cropped.png"
},
"closedCategory":{ "closedCategory":{
"enable":false, "enable":false,
@@ -89,7 +95,7 @@
"dropdown":false, "dropdown":false,
"enableFooter":false, "enableFooter":false,
"footer":"Open Ticket v3.2.0 - I'm a footer!", "footer":"Open Ticket v3.2.2 - I'm a footer!",
"enableThumbnail":false, "enableThumbnail":false,
"thumbnail":"https://www.example.com/catmemes/cat.png", "thumbnail":"https://www.example.com/catmemes/cat.png",
+1 -1
View File
@@ -33,5 +33,5 @@ module.exports = () => {
} }
}) })
log("info","loaded plugins",[{key:"success",value:successcount},{key:"error",value:failcount},{key:"total",value:totalcount}]) require("../startscreen").headerDataPlugins({total:totalcount,success:successcount,error:failcount})
} }
+48 -32
View File
@@ -5,7 +5,7 @@ exports.checker = async () => {
if (process.argv.some((v) => v == "--devconfig")){ if (process.argv.some((v) => v == "--devconfig")){
//console.log(chalk.blue("=> used dev config instead of normal config")) //console.log(chalk.blue("=> used dev config instead of normal config"))
try{ try{
var tempconfig = require("../devConfig.json") var tempconfig = require("../devconfig.json")
}catch(err){console.log(err);var tempconfig = require("../config.json")} }catch(err){console.log(err);var tempconfig = require("../config.json")}
}else{ }else{
var tempconfig = require("../config.json") var tempconfig = require("../config.json")
@@ -114,7 +114,7 @@ exports.checker = async () => {
}) })
} }
} }
/**@param {String} value @param {"string"|"boolean"|"number"} type */ /**@param {String} value @param {"string"|"boolean"|"number"|"array"|"object"} type */
const checkType = (value,type,path) => { const checkType = (value,type,path) => {
if (type == "boolean"){ if (type == "boolean"){
if (typeof value != "boolean"){ if (typeof value != "boolean"){
@@ -128,6 +128,14 @@ exports.checker = async () => {
if (typeof value != "string"){ if (typeof value != "string"){
createError("'"+path+"' | invalid type, this must be a string!") createError("'"+path+"' | invalid type, this must be a string!")
} }
}else if (type == "array"){
if (!Array.isArray(value)){
createError("'"+path+"' | invalid type, this must be an array!")
}
}else if (type == "object"){
if (typeof value != "object"){
createError("'"+path+"' | invalid type, this must be an object!")
}
} }
} }
@@ -197,6 +205,7 @@ exports.checker = async () => {
checkButtonColor(option.color,path+"/color") checkButtonColor(option.color,path+"/color")
//adminroles //adminroles
checkType(option.adminroles,"array",path+"/adminroles")
checkDiscordArray("roleid",option.adminroles,path+"/adminroles") checkDiscordArray("roleid",option.adminroles,path+"/adminroles")
//channelprefix //channelprefix
@@ -221,14 +230,30 @@ exports.checker = async () => {
checkType(option.ticketmessage,"string",path+"/ticketmessage") checkType(option.ticketmessage,"string",path+"/ticketmessage")
//thumbnail //thumbnail
checkType(option.thumbnail.enable,"boolean",path/"/thumbnail/enable") if (option.thumbnail){
checkType(option.thumbnail.url,"string",path/"/thumbnail/url") checkType(option.thumbnail.enable,"boolean",path+"/thumbnail/enable")
checkType(option.thumbnail.url,"string",path+"/thumbnail/url")
}else{
createError("'"+path+"/thumbnail' | there is no thumbnail object!")
}
//image
if (option.image){
checkType(option.image.enable,"boolean",path+"/image/enable")
checkType(option.image.url,"string",path+"/image/url")
}else{
createError("'"+path+"/image' | there is no image object!")
}
//closedCategory //closedCategory
checkType(option.closedCategory.enable,"boolean",path/"/closedCategory/enable") if (option.closedCategory){
checkType(option.closedCategory.id,"string",path/"/closedCategory/id") checkType(option.closedCategory.enable,"boolean",path/"/closedCategory/enable")
if (option.closedCategory.enable){ checkType(option.closedCategory.id,"string",path/"/closedCategory/id")
checkDiscord("roleid",option.closedCategory.id,path+"/closedCategory/id") if (option.closedCategory.enable){
checkDiscord("roleid",option.closedCategory.id,path+"/closedCategory/id")
}
}else{
createError("'"+path+"/closedCategory' | there is no closedCategory object!")
} }
}else if (type == "website"){ }else if (type == "website"){
@@ -380,13 +405,14 @@ exports.checker = async () => {
if (!require("./api/api.json").disable.checkerjs.token) checkToken(config.auth_token) if (!require("./api/api.json").disable.checkerjs.token) checkToken(config.auth_token)
checkType(config.main_adminroles,"array","/main_adminroles")
checkDiscordArray("roleid",config.main_adminroles,"main_adminroles") checkDiscordArray("roleid",config.main_adminroles,"main_adminroles")
checkString(config.prefix,1,15,"prefix","prefix") checkString(config.prefix,1,15,"prefix","prefix")
//languagefile //languagefile
checkType(config.languagefile,"string","languagefile") checkType(config.languagefile,"string","languagefile")
const lf = config.languagefile const lf = config.languagefile
if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish") && !lf.startsWith("portuguese") && !lf.startsWith("french") && !lf.startsWith("italian")){ 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")){
createError("'languagefile' | invalid language, more info in the wiki") createError("'languagefile' | invalid language, more info in the wiki")
} }
@@ -404,25 +430,38 @@ exports.checker = async () => {
//system: //system:
//ticket channel
if (config.system.ticket_channel){ if (config.system.ticket_channel){
if (config.system.ticket_channel.length < 16 || config.system.ticket_channel.length > 20 || !/^\d+$/.test(config.system.ticket_channel)){ if (config.system.ticket_channel.length < 16 || config.system.ticket_channel.length > 20 || !/^\d+$/.test(config.system.ticket_channel)){
createError("'system/ticket_channel' | this channel id is invalid") createError("'system/ticket_channel' | this channel id is invalid")
} }
}else createWarn("'"+path+"' | you have no ticket channel selected!") }else createWarn("'"+path+"' | you have no ticket channel selected!")
//max tickets
checkType(config.system.max_allowed_tickets,"number","system/max_allowed_tickets") checkType(config.system.max_allowed_tickets,"number","system/max_allowed_tickets")
//enableDMmessages
checkType(config.system.enable_DM_Messages,"boolean","system/enable_DM_Messages") checkType(config.system.enable_DM_Messages,"boolean","system/enable_DM_Messages")
//has@everyoneaccess
checkType(config.system["has@everyoneaccess"],"boolean","system/has@everyoneaccess") checkType(config.system["has@everyoneaccess"],"boolean","system/has@everyoneaccess")
//member_role
checkType(config.system.member_role,"string","system/member_role")
if (config.system.member_role != "" && config.system.member_role != " " && config.system.member_role != "false" && config.system.member_role != "null" && config.system.member_role != "0"){ if (config.system.member_role != "" && config.system.member_role != " " && config.system.member_role != "false" && config.system.member_role != "null" && config.system.member_role != "0"){
checkDiscord("roleid",config.system.member_role,"system/member_role") checkDiscord("roleid",config.system.member_role,"system/member_role")
}else{ }else{
createWarn("'system/member_role' | You don't have a member role, but it's recommended!") createWarn("'system/member_role' | You don't have a member role, but it's recommended!")
} }
//closemode
checkType(config.system.closeMode,"string","system/closeMode") checkType(config.system.closeMode,"string","system/closeMode")
if (!["normal","adminonly"].includes(config.system.closeMode)){ if (!["normal","adminonly"].includes(config.system.closeMode)){
createError("'system/closeMode' | the close mode must be adminonly or normal") createError("'system/closeMode' | the close mode must be adminonly or normal")
} }
checkType(config.system.showSlashcmdsInHelp,"boolean","system/showSlashcmdsInHelp") checkType(config.system.showSlashcmdsInHelp,"boolean","system/showSlashcmdsInHelp")
checkType(config.system.answerInEphemeralOnOpen,"boolean","system/answerInEphemeralOnOpen")
//options //options
@@ -436,29 +475,6 @@ exports.checker = async () => {
}) })
//discord check
/**
const discord = require("discord.js")
const {GatewayIntentBits,Partials} = discord
const client = new discord.Client({
intents:[
GatewayIntentBits.DirectMessages,
GatewayIntentBits.GuildInvites,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.Guilds,
GatewayIntentBits.MessageContent
],
partials:[Partials.Channel,Partials.Message]
})
await client.guilds.fetch()
if (!client.guilds.cache.find(g => g.id == config.server_id)){
createError("'server_id' | i'm not in a server with this id!")
}
*/
//the end //the end
if (errorList.length > 0 || warnList.length > 0){ if (errorList.length > 0 || warnList.length > 0){
console.log("REPORT:\n===========================") console.log("REPORT:\n===========================")
@@ -115,29 +115,6 @@ exports.renameEmbed = (renamer,newname) => {
.setFooter({text:unclaimer.tag,iconURL:unclaimer.displayAvatarURL()}) .setFooter({text:unclaimer.tag,iconURL:unclaimer.displayAvatarURL()})
} }
/**
*
* @param {Boolean} done
* @param {discord.TextChannel} channel
* @param {discord.User} author
* @returns {discord.EmbedBuilder}
*/
exports.sendTranscriptEmbed = (done,channel,author) => {
if (done){
return new embed()
.setTitle("📄 "+l.messages.hereIsTheTranscript)
.setColor(mc)
.setDescription("Ticket: "+channel.name)
.setFooter({text:author.tag,iconURL:author.displayAvatarURL()})
}else{
return new embed()
.setTitle("📄 "+l.messages.hereIsTheTranscript)
.setColor(mc)
.setDescription("Loading...")
.setFooter({text:author.tag,iconURL:author.displayAvatarURL()})
}
}
/** /**
* *
* @param {discord.User} changer * @param {discord.User} changer
+6 -15
View File
@@ -1,34 +1,25 @@
const index = require("../index") const index = require("../index")
if (index.developerConfig){ if (index.developerConfig){
var config = require("../devConfig.json") var config = require("../devconfig.json")
}else{var config = require("../config.json")} }else{var config = require("../config.json")}
var localLanguage = require("../language/english.json") var localLanguage = require("../language/english.json")
if (config.languagefile.startsWith("custom")) localLanguage = require("../language/custom.json") const fs = require("fs")
else if (config.languagefile.startsWith("dutch")) localLanguage = require("../language/dutch.json") const lfexists = fs.existsSync("./language/"+config.languagefile+".json")
else if (config.languagefile.startsWith("english")) localLanguage = require("../language/english.json") if (lfexists) localLanguage = require("../language/"+config.languagefile+".json")
else if (config.languagefile.startsWith("german")) localLanguage = require("../language/german.json")
else if (config.languagefile.startsWith("french")) localLanguage = require("../language/french.json")
else if (config.languagefile.startsWith("romanian")) localLanguage = require("../language/romanian.json")
else if (config.languagefile.startsWith("arabic")) localLanguage = require("../language/arabic.json")
else if (config.languagefile.startsWith("spanish")) localLanguage = require("../language/spanish.json")
else if (config.languagefile.startsWith("portuguese")) localLanguage = require("../language/portuguese.json")
else if (config.languagefile.startsWith("italian")) localLanguage = require("../language/italian.json")
else if (config.languagefile.startsWith("danish")) localLanguage = require("../language/danish.json")
const errorLog = async () => { const errorLog = async () => {
const chalk = await (await import("chalk")).default const chalk = await (await import("chalk")).default
console.log(chalk.red("Something went wrong when loading the language!")+"\nCheck the config file or create a ticket in our server!") require("./startscreen").headerDataLanguage("Something went wrong when loading the language!",true)
} }
const successLog = async (language) => { const successLog = async (language) => {
const chalk = await (await import("chalk")).default const chalk = await (await import("chalk")).default
console.log(chalk.green("loaded language "+language+"...")) require("./startscreen").headerDataLanguage("sucessfully loaded language "+language,false)
} }
if (!localLanguage){ if (!localLanguage){
+7
View File
@@ -0,0 +1,7 @@
██████╗ ██████╗ ███████╗███╗ ██╗ ████████╗██╗ ██████╗██╗ ██╗███████╗████████╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ╚══██╔══╝██║██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ ██║██║ █████╔╝ █████╗ ██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██║██║ ██╔═██╗ ██╔══╝ ██║
╚██████╔╝██║ ███████╗██║ ╚████║ ██║ ██║╚██████╗██║ ██╗███████╗ ██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝
-1
View File
@@ -8,7 +8,6 @@ const act = discord.ApplicationCommandType
const acot = discord.ApplicationCommandOptionType const acot = discord.ApplicationCommandOptionType
module.exports = async () => { module.exports = async () => {
bot.errorLog.log("info","auto-updating slash commands...")
const sid = config.server_id const sid = config.server_id
const ids = configParser.getTicketValuesArray("id") const ids = configParser.getTicketValuesArray("id")
+75
View File
@@ -0,0 +1,75 @@
const discord = require('discord.js')
const bot = require('../index')
const client = bot.client
const config = bot.config
const l = bot.language
const log = bot.errorLog.log
const logo = require("fs").readFileSync("./core/logo.txt").toString()
/**@param {import('chalk').ChalkInstance} chalk */
const showFlags = async (chalk) => {
var isFlag = false
if (process.argv.some((v) => v == "--devconfig")) console.log(chalk.blue("[FLAGS] => used dev config instead of normal config")); isFlag = true
if (process.argv.some((v) => v == "--nochecker")) console.log(chalk.blue("[FLAGS] => disabled checker.js")); isFlag = true
if (process.argv.some((v) => v == "--tsoffline")) console.log(chalk.blue("[FLAGS] => offline check for html transcripts disabled!")); isFlag = true
if (process.argv.some((v) => v == "--debug")) console.log(chalk.blue("[FLAGS] => enabled DEBUG mode")); isFlag = true
if (!isFlag) console.log(chalk.blue("no flags!"))
}
exports.run = async () => {
const chalk = await (await import("chalk")).default
console.log(chalk.hex("f8ba00")(logo))
const version = require("../package.json").version
var headertext = "v"+version+" - Support: https://discord.dj-dj.be - Language: "+config.languagefile
const spaceamount = (84-headertext.length)/2
var i = 0
while (i < spaceamount){
headertext = " "+headertext
i++
}
console.log(chalk.bold(headertext+"\n"))
console.log(chalk.bold(chalk.underline("FLAGS:")))
showFlags(chalk)
}
/**
* @param {import('chalk').ChalkInstance} chalk
* @param {{type:String,text:String,enabled:Boolean}} status
* @param {Boolean} updatingslash
* @param {Boolean} slashmode
*
*/
exports.headerDataReady = (chalk,status,updatingslash,slashmode) => {
console.log("\n"+chalk.bold(chalk.underline("STARTUP INFO:")))
if (status.enabled) console.log(chalk.hex("f8ba00")("status: ")+chalk.bold(status.type.toLowerCase())+" "+status.text)
if (slashmode){
console.log("\n\n"+chalk.red(chalk.underline("STARTING IN SLASH CMD CONFIGURATION MODE!")))
return
}
console.log(chalk.hex("f8ba00")("updating slash cmds: ")+chalk.bold(slashmode))
}
var languageMSG = ""
var languageErr = false
/**
* @param {String} message
* @param {Boolean} err
*/
exports.headerDataLanguage = async (message,err) => {
languageMSG = message
languageErr = err
}
/**
* @param {{total:Number,error:Number,success:Number}} plugins
*/
exports.headerDataPlugins = async (plugins) => {
const chalk = await (await import("chalk")).default
const lmsg = languageErr ? chalk.red(languageMSG) : languageMSG
console.log(chalk.hex("f8ba00")("language: ")+lmsg)
console.log(chalk.hex("f8ba00")("plugins loaded: ")+chalk.bold(plugins.total+" total ")+"("+plugins.success+"✅ "+plugins.error+"❌)")
console.log("\n"+chalk.bold(chalk.underline("LOGS:")))
}
+38 -2
View File
@@ -134,10 +134,21 @@ exports.NEWcloseTicket = 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 //add ticket adminroles
await channel.messages.fetchPinned().then(msglist => { await channel.messages.fetchPinned().then(msglist => {
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false if (firstmsg == undefined || firstmsg.author.id != client.user.id){
var firstmsg = msglist.find((m => m.author.id == client.user.id))
if (firstmsg == undefined || firstmsg.author.id != client.user.id){
return channel.send({embeds:[ticketInfoError]})
}
}
if (firstmsg.embeds.length < 1 || !firstmsg.embeds[0].description.includes("OTDATA")) return channel.send({embeds:[ticketInfoError]})
const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description) const hiddendata = bot.hiddenData.readHiddenData(firstmsg.embeds[0].description)
const ticketId = hiddendata.data.find(d => d.key == "type").value const ticketId = hiddendata.data.find(d => d.key == "type").value
const ticketData = require("../utils/configParser").getTicketById(ticketId,true) const ticketData = require("../utils/configParser").getTicketById(ticketId,true)
@@ -228,12 +239,37 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) =>
} }
/**
*
* @param {discord.TextChannel} channel
* @param {Number} limit
* @returns
*/
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
}
const transcriptHandler = async () => { const transcriptHandler = async () => {
if (!bot.tsconfig.sendTranscripts.enableChannel && !bot.tsconfig.sendTranscripts.enableDM) return false if (!bot.tsconfig.sendTranscripts.enableChannel && !bot.tsconfig.sendTranscripts.enableDM) return false
const APIEvents = require("../api/modules/events") const APIEvents = require("../api/modules/events")
const messages = await channel.messages.fetch({cache:true}) const messages = await getmessages(channel,5000)
await require("../transcriptSystem/manager")(messages,guild,channel,user,reason) await require("../transcriptSystem/manager")(messages,guild,channel,user,reason)
APIEvents.onTranscriptCreation(messages,channel,guild,new Date()) APIEvents.onTranscriptCreation(messages,channel,guild,new Date())
} }
+28 -16
View File
@@ -53,10 +53,10 @@ module.exports = () => {
if (interaction.isButton()){ if (interaction.isButton()){
try { try {
interaction.deferUpdate() if (config.system.answerInEphemeralOnOpen) interaction.deferReply({ephemeral:true})
} catch{} } catch{}
}else if (interaction.isChatInputCommand()){ }else if (interaction.isChatInputCommand()){
interaction.reply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)]}) interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen})
}else if (interaction.isStringSelectMenu()){ }else if (interaction.isStringSelectMenu()){
try { try {
interaction.deferUpdate() interaction.deferUpdate()
@@ -65,14 +65,6 @@ module.exports = () => {
if (storage.get("ticketStorage",interaction.member.id) == null || storage.get("ticketStorage",interaction.member.id) == "false"|| Number(storage.get("ticketStorage",interaction.member.id)) < config.system.max_allowed_tickets){ if (storage.get("ticketStorage",interaction.member.id) == null || storage.get("ticketStorage",interaction.member.id) == "false"|| Number(storage.get("ticketStorage",interaction.member.id)) < config.system.max_allowed_tickets){
try{
if (currentTicketOptions.enableDmOnOpen){
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.newTicketDmTitle,currentTicketOptions.message,":ticket:",config.main_color)]})
}
}
catch{log("system","can't send DM to member, member doesn't allow dm's")}
//update storage //update storage
storage.set("ticketStorage",interaction.member.id,Number(storage.get("ticketStorage",interaction.member.id))+1) storage.set("ticketStorage",interaction.member.id,Number(storage.get("ticketStorage",interaction.member.id))+1)
var ticketNumber = interaction.member.user.username var ticketNumber = interaction.member.user.username
@@ -156,12 +148,13 @@ module.exports = () => {
if (config.system.member_role != "" && config.system.member_role != " " && config.system.member_role != "false" && config.system.member_role != "null" && config.system.member_role != "0"){ if (config.system.member_role != "" && config.system.member_role != " " && config.system.member_role != "false" && config.system.member_role != "null" && config.system.member_role != "0"){
try { try {
const userrole = guild.roles.cache.find(r => r.id == config.system.member_role) const userrole = guild.roles.cache.find(r => r.id == config.system.member_role)
if (!userrole) return if (userrole){
permissionsArray.push({ permissionsArray.push({
id:userrole, id:userrole,
type:"role", type:"role",
deny:[pfb.ViewChannel] deny:[pfb.ViewChannel]
}) })
}
}catch{ }catch{
log("system","invalid role! At 'config.json => system/member_role") log("system","invalid role! At 'config.json => system/member_role")
} }
@@ -192,6 +185,7 @@ module.exports = () => {
} }
if (currentTicketOptions.thumbnail.enable) ticketEmbed.setThumbnail(currentTicketOptions.thumbnail.url) if (currentTicketOptions.thumbnail.enable) ticketEmbed.setThumbnail(currentTicketOptions.thumbnail.url)
if (currentTicketOptions.image.enable) ticketEmbed.setImage(currentTicketOptions.image.url)
ticketChannel.send({ ticketChannel.send({
content:"<@"+interaction.member.id+"> @here", content:"<@"+interaction.member.id+"> @here",
@@ -204,6 +198,24 @@ module.exports = () => {
log("system","created new ticket",[{key:"ticket",value:ticketName},{key:"user",value:interaction.user.tag}]) log("system","created new ticket",[{key:"ticket",value:ticketName},{key:"user",value:interaction.user.tag}])
require("../api/modules/events").onTicketOpen(interaction.user,ticketChannel,interaction.guild,new Date(),{name:ticketName,status:"open",ticketOptions:currentTicketOptions}) require("../api/modules/events").onTicketOpen(interaction.user,ticketChannel,interaction.guild,new Date(),{name:ticketName,status:"open",ticketOptions:currentTicketOptions})
const channelbutton = new discord.ActionRowBuilder()
.addComponents([
new discord.ButtonBuilder()
.setStyle(discord.ButtonStyle.Link)
.setDisabled(false)
.setEmoji("🎫")
.setLabel("go to ticket")
.setURL(ticketChannel.url)
])
try{
if (currentTicketOptions.enableDmOnOpen) interaction.member.send({embeds:[bot.errorLog.custom(l.messages.newTicketDmTitle,currentTicketOptions.message,":ticket:",config.main_color)],components:[channelbutton]})
}
catch{log("system","failed to send DM")}
if ((interaction.isButton() && config.system.answerInEphemeralOnOpen) || interaction.isChatInputCommand()) interaction.editReply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]})
}) })
}else{ }else{
try { try {
@@ -69,7 +69,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
author:{ author:{
name:msg.author.tag, name:msg.author.tag,
id:Number(msg.author.id), id:Number(msg.author.id),
color:msg.author.hexAccentColor || "#ffffff", color:msg.member.displayHexColor || "#ffffff",
pfp:msg.author.displayAvatarURL() pfp:msg.author.displayAvatarURL()
}, },
content:msg.content || "", content:msg.content || "",
@@ -1,6 +1,6 @@
{ {
"version":"1.0.0", "version":"1.0.0",
"otversion":"3.2.0", "otversion":"3.2.2",
"style":{ "style":{
"enableCustomBackground":false, "enableCustomBackground":false,
"backgroundModus":"color OR image", "backgroundModus":"color OR image",
+10 -6
View File
@@ -21,12 +21,12 @@ exports.beingprocessed = (name,id,rawprocesstime,user) => {
const processtime = "<t:"+newtime.getTime().toString().substring(0,newtime.getTime().toString().length-3)+":R>" const processtime = "<t:"+newtime.getTime().toString().substring(0,newtime.getTime().toString().length-3)+":R>"
const embed = new discord.EmbedBuilder() const embed = new discord.EmbedBuilder()
.setTitle("🧾 Transcript") .setTitle("🧾 "+l.transcripts.title)
.setColor(config.main_color) .setColor(config.main_color)
.setAuthor({name:user.tag,iconURL:user.displayAvatarURL()}) .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()})
.setFooter({text:name}) .setFooter({text:name})
.setDescription("`This transcript is being processed...`\nPlease wait!\n\nEstimated time: "+processtime) .setDescription("`"+l.transcripts.processed+"...`\n"+l.transcripts.wait+"\n\n"+l.transcripts.estimated+": "+processtime)
return embed return embed
} }
@@ -41,13 +41,17 @@ exports.beingprocessed = (name,id,rawprocesstime,user) => {
*/ */
exports.tsready = (name,id,url,user) => { exports.tsready = (name,id,url,user) => {
const embed = new discord.EmbedBuilder() const embed = new discord.EmbedBuilder()
.setTitle("🧾 Transcript") .setTitle("🧾 "+l.transcripts.title)
.setColor(config.main_color) .setColor(config.main_color)
.setAuthor({name:user.tag,iconURL:user.displayAvatarURL()}) .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()})
.setFooter({text:name}) .setFooter({text:name})
.setURL(url)
.setDescription("\nThe transcript is available [here]("+url+")\n") if (url){
embed.setURL(url)
embed.setDescription("\n["+l.transcripts.available+"]("+url+")\n")
}else{
embed.setDescription("\n"+l.transcripts.available+"\n")
}
return embed return embed
} }
@@ -61,7 +65,7 @@ exports.tsready = (name,id,url,user) => {
*/ */
exports.tserror = (name,id,user,err) => { exports.tserror = (name,id,user,err) => {
const embed = new discord.EmbedBuilder() const embed = new discord.EmbedBuilder()
.setTitle("❌ Transcript") .setTitle("❌ "+l.transcripts.title)
.setColor(discord.Colors.Red) .setColor(discord.Colors.Red)
.setAuthor({name:user.tag,iconURL:user.displayAvatarURL()}) .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()})
.setFooter({text:name}) .setFooter({text:name})
+86 -73
View File
@@ -12,6 +12,7 @@ const tsdb = require("./tsdb")
const checkAvailability = async () => { const checkAvailability = async () => {
if (process.argv.some((v) => v == "--tsoffline")) return true
const axios = require("axios").default const axios = require("axios").default
const res = await axios.get("https://transcripts.dj-dj.be/status.txt") const res = await axios.get("https://transcripts.dj-dj.be/status.txt")
if (!res || !(res.status == 200) || !res.data) return false if (!res || !(res.status == 200) || !res.data) return false
@@ -48,90 +49,102 @@ module.exports = async (messages,guild,channel,user,reason) => {
const ticketopener = client.users.cache.find(u => u.id == id) const ticketopener = client.users.cache.find(u => u.id == id)
if (tsconfig.sendTranscripts.useHTMLtranscripts){
const JSONDATA = require("./communication/compileJson").compile(guild,channel,user,messages,{ const JSONDATA = require("./communication/compileJson").compile(guild,channel,user,messages,{
style:{ style:{
titleColor:tsconfig.style.titleColor, titleColor:tsconfig.style.titleColor,
enableCustomBackground:tsconfig.style.background.enableCustomBackground, enableCustomBackground:tsconfig.style.background.enableCustomBackground,
backgroundModus:tsconfig.style.background.backgroundModus, backgroundModus:tsconfig.style.background.backgroundModus,
backgroundData:tsconfig.style.background.backgroundData backgroundData:tsconfig.style.background.backgroundData
}, },
bot:{ bot:{
name:client.user.username, name:client.user.username,
id:client.user.id, id:client.user.id,
pfp:client.user.displayAvatarURL() pfp:client.user.displayAvatarURL()
}, },
ticket:{ ticket:{
creatorid:ticketopener.id, creatorid:ticketopener.id,
creatorname:ticketopener.tag, creatorname:ticketopener.tag,
openedtime:opentime.getTime(), openedtime:opentime.getTime(),
closedtime:new Date().getTime() closedtime:new Date().getTime()
}
})
if (!await checkAvailability()){
const attachment = await require("./oldTranscript").createTranscript(messages,channel)
const errembed = tsembeds.tserror(chName,chId,user)
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]})
}
return
}
const TSdata = await require("./communication/index").upload(JSONDATA)
if (!TSdata) return false
if (TSdata.status == "success"){
const url = "https://transcripts.dj-dj.be/t/"+TSdata.time+"_"+TSdata.id+".html"
//calculate estimated time
const lastDumpTime = (new Date(TSdata.estimated.lastdump).getTime())
const dumpLoopTime = 15000
const nextDump = new Date(lastDumpTime+dumpLoopTime)
const processtime = TSdata.estimated.processtime+6000 //6sec extra time for overflow
const finaltime = new Date(nextDump.getTime()+processtime)
const duration = finaltime.getTime()-new Date().getTime()
//waiting
if (tsconfig.sendTranscripts.enableChannel){
/**@type {discord.TextChannel|undefined} */
const tc = guild.channels.cache.find((c) => c.id == tsconfig.sendTranscripts.channel)
if (!tc) return
const embed = tsembeds.beingprocessed(chName,chId,finaltime,user)
var msg = await tc.send({embeds:[embed]})
}else {var msg = false}
//ready
setTimeout(() => {
if (msg){
msg.edit({embeds:[tsembeds.tsready(chName,chId,url,user)]})
} }
})
if (tsconfig.sendTranscripts.enableDM){ if (!await checkAvailability()){
if (!user) return const attachment = await require("./oldTranscript").createTranscript(messages,channel)
const embed = tsembeds.tsready(chName,chId,url,user) const errembed = tsembeds.tserror(chName,chId,user)
try {
user.send({embeds:[embed]}) if (tsconfig.sendTranscripts.enableChannel){
}catch{} /**@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]})
} }
},duration) return
}
const TSdata = await require("./communication/index").upload(JSONDATA)
if (!TSdata) return false
if (TSdata.status == "success"){
const url = "https://transcripts.dj-dj.be/t/"+TSdata.time+"_"+TSdata.id+".html"
//calculate estimated time
const lastDumpTime = (new Date(TSdata.estimated.lastdump).getTime())
const dumpLoopTime = 15000
const nextDump = new Date(lastDumpTime+dumpLoopTime)
const processtime = TSdata.estimated.processtime+6000 //6sec extra time for overflow
const finaltime = new Date(nextDump.getTime()+processtime)
const duration = finaltime.getTime()-new Date().getTime()
//waiting
if (tsconfig.sendTranscripts.enableChannel){
/**@type {discord.TextChannel|undefined} */
const tc = guild.channels.cache.find((c) => c.id == tsconfig.sendTranscripts.channel)
if (!tc) return
const embed = tsembeds.beingprocessed(chName,chId,finaltime,user)
var msg = await tc.send({embeds:[embed]})
}else {var msg = false}
//ready
setTimeout(() => {
if (msg){
msg.edit({embeds:[tsembeds.tsready(chName,chId,url,user)]})
}
if (tsconfig.sendTranscripts.enableDM){
if (!user) return
const embed = tsembeds.tsready(chName,chId,url,user)
try {
ticketopener.send({embeds:[embed]})
}catch{}
}
},duration)
}else{
const attachment = await require("./oldTranscript").createTranscript(messages,channel)
const errembed = tsembeds.tserror(chName,chId,user,"`error type: transcript API error`")
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]})
}
}
}else{ }else{
const attachment = await require("./oldTranscript").createTranscript(messages,channel) const attachment = await require("./oldTranscript").createTranscript(messages,channel)
const errembed = tsembeds.tserror(chName,chId,user,"`error type: transcript API error`") const embed = tsembeds.tsready(chName,chId,false,user)
if (tsconfig.sendTranscripts.enableChannel){ if (tsconfig.sendTranscripts.enableChannel){
/**@type {discord.TextChannel|undefined} */ /**@type {discord.TextChannel|undefined} */
const tc = guild.channels.cache.find((c) => c.id == tsconfig.sendTranscripts.channel) const tc = guild.channels.cache.find((c) => c.id == tsconfig.sendTranscripts.channel)
if (!tc) return if (!tc) return
tc.send({embeds:[errembed],files:[attachment]}) tc.send({embeds:[embed],files:[attachment]})
} }
} }
} }
+14 -5
View File
@@ -7,15 +7,19 @@ const l = bot.language
/** /**
* *
* @param {discord.Message[]} messagecollection * @param {discord.Message[]} messagecollection
* @param {discord.TextChannel} channel
* @param {Boolean} backup
* @returns new `discord.attachmentBuilder` * @returns new `discord.attachmentBuilder`
*/ */
exports.createTranscript = async (messagecollection) => { exports.createTranscript = async (messagecollection,channel,backup) => {
try { try {
const cd = new Date() const cd = new Date()
const months = ["January","February","March","April","May","June","July","August","September","October","November","December"] const months = ["January","February","March","April","May","June","July","August","September","October","November","December"]
const dateString = cd.getDate()+" "+months[cd.getMonth()-1]+" "+cd.getFullYear()+" - "+cd.getHours()+":"+cd.getMinutes()+":"+cd.getSeconds() const dateString = cd.getDate()+" "+months[cd.getMonth()-1]+" "+cd.getFullYear()+" - "+cd.getHours()+":"+cd.getMinutes()+":"+cd.getSeconds()
const filearray = ["BACKUP TRANSCRIPT:\n"] let backuptitle = backup ? "BACKUP " : ""
let backupfilename = backup ? "backup" : ""
const filearray = [backuptitle+"TRANSCRIPT:\n"]
messagecollection.reverse() messagecollection.reverse()
@@ -23,15 +27,20 @@ exports.createTranscript = async (messagecollection) => {
const timestamp = new Date(msg.createdTimestamp) const timestamp = new Date(msg.createdTimestamp)
if (msg.content){var content = msg.content}else{var content = "*empty message*"} if (msg.content){var content = msg.content}else{var content = "*empty message*"}
const fileurls = []
const rawfiles = Array.from(msg.attachments)
rawfiles.forEach((file) => {
fileurls.push("attachment: "+file[1].url)
})
const filestring = fileurls.length > 0 ? fileurls.join("\n")+"\n" : ""
const msgstats = "files: "+msg.attachments.size+", embeds: "+msg.embeds.length const msgstats = "files: "+msg.attachments.size+", embeds: "+msg.embeds.length
filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+", "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+"|"+msg.author.tag+"] ["+msgstats+"]\n"+content+"\n") filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+", "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+"|"+msg.author.tag+"] ["+msgstats+"]\n"+content+"\n"+filestring)
}) })
if (filearray.length < 2) filearray.push("transcript is empty") if (filearray.length < 2) filearray.push("transcript is empty")
const filestring = filearray.join("\n") const filestring = filearray.join("\n")
const filebuff = Buffer.from(filestring,"utf-8") const filebuff = Buffer.from(filestring,"utf-8")
return new discord.AttachmentBuilder(filebuff,{name:"backuptranscript.txt",description:"Open Ticket transcript"}) return new discord.AttachmentBuilder(filebuff,{name:backupfilename+"transcript.txt",description:"Open Ticket transcript"})
}catch{ }catch{
return false return false
} }
+5 -4
View File
@@ -6,7 +6,7 @@ const l = bot.language
//================== //==================
//OTTicketOptions //OTTicketOptions
/**@typedef {{id: String,name: String,description: String,icon: String,label: String,type: "ticket"|"role"|"website",color: "red"|"green"|"blue"|"gray",adminroles: String[],channelprefix: String,category: String,message: String,enableDmOnOpen: Boolean,ticketmessage: String, thumbnail:{enable:Boolean,url:String}, closedCategory:{enable:Boolean,id:String}}} OTTicketOptions */ /**@typedef {{id: String,name: String,description: String,icon: String,label: String,type: "ticket"|"role"|"website",color: "red"|"green"|"blue"|"gray",adminroles: String[],channelprefix: String,category: String,message: String,enableDmOnOpen: Boolean,ticketmessage: String, thumbnail:{enable:Boolean,url:String}, image:{enable:Boolean,url:String}, closedCategory:{enable:Boolean,id:String}}} OTTicketOptions */
//OTRoleOptions //OTRoleOptions
/**@typedef {{id: String,name: String,description: String,icon: String,label: String,type: "ticket"|"role"|"website",color:"red"|"green"|"blue"|"gray"|"none",roles:String[],mode:"add&remove"|"remove"|"add",enableDmOnOpen:Boolean}} OTRoleOptions */ /**@typedef {{id: String,name: String,description: String,icon: String,label: String,type: "ticket"|"role"|"website",color:"red"|"green"|"blue"|"gray"|"none",roles:String[],mode:"add&remove"|"remove"|"add",enableDmOnOpen:Boolean}} OTRoleOptions */
@@ -18,8 +18,11 @@ const l = bot.language
//OTConfigMessage //OTConfigMessage
/**@typedef {{id: string, name: string, description: string, dropdown: boolean, enableFooter: boolean, footer: string, enableThumbnail: boolean, thumbnail: string, enableCustomColor: boolean, color: string, options: string[], other:{enableTicketExplaination: boolean, enableMaxTicketsWarning: boolean, customDropdownPlaceholder:{enable:Boolean,text:String}, customCategoryText:{enable:Boolean,text:String}, embedTitleURL:{enable:Boolean,url:String} } }} OTConfigMessage*/ /**@typedef {{id: string, name: string, description: string, dropdown: boolean, enableFooter: boolean, footer: string, enableThumbnail: boolean, thumbnail: string, enableCustomColor: boolean, color: string, options: string[], other:{enableTicketExplaination: boolean, enableMaxTicketsWarning: boolean, customDropdownPlaceholder:{enable:Boolean,text:String}, customCategoryText:{enable:Boolean,text:String}, embedTitleURL:{enable:Boolean,url:String} } }} OTConfigMessage*/
//OTAllOptions
/**@typedef {{id: String,name: String,description: String,icon: String,label: String,type: "ticket"|"role"|"website",color:"red"|"green"|"blue"|"gray"|"none",roles:String[],mode:"add&remove"|"remove"|"add",adminroles: String[],channelprefix: String,category: String,message: String,enableDmOnOpen: Boolean,ticketmessage: String, thumbnail:{enable:Boolean,url:String}, image:{enable:Boolean,url:String}, url:String, closedCategory:{enable:Boolean,id:String}}} OTAllOptions */
//StringOptions //StringOptions
/**@typedef {"id"|"name"|"description"|"icon"|"label"|"type"|"color"|"adminroles"|"channelprefix"|"category"|"message"|"enableDmOnOpen"|"ticketmessage"|"thumbnail"|"closedCategory"} OTTicketStringOptions */ /**@typedef {"id"|"name"|"description"|"icon"|"label"|"type"|"color"|"adminroles"|"channelprefix"|"category"|"message"|"enableDmOnOpen"|"ticketmessage"|"thumbnail"|"image"|"closedCategory"} OTTicketStringOptions */
/**@typedef {"id"|"name"|"description"|"icon"|"label"|"type"|"color"|"roles"|"mode"|"enableDmOnOpen"} OTRoleStringOptions */ /**@typedef {"id"|"name"|"description"|"icon"|"label"|"type"|"color"|"roles"|"mode"|"enableDmOnOpen"} OTRoleStringOptions */
/**@typedef {"id"|"name"|"description"|"icon"|"label"|"type"|"url"} OTWebsiteStringOptions */ /**@typedef {"id"|"name"|"description"|"icon"|"label"|"type"|"url"} OTWebsiteStringOptions */
@@ -168,8 +171,6 @@ this.websiteType = {}
this.messageType = {} this.messageType = {}
//OTAllOptions
/**@typedef {{id: String,name: String,description: String,icon: String,label: String,type: "ticket"|"role"|"website",color:"red"|"green"|"blue"|"gray"|"none",roles:String[],mode:"add&remove"|"remove"|"add",adminroles: String[],channelprefix: String,category: String,message: String,enableDmOnOpen: Boolean,ticketmessage: String, thumbnail:{enable:Boolean,url:String}, url:String, closedCategory:{enable:Boolean,id:String}}} OTAllOptions */
/** /**
* *
+1 -1
View File
@@ -46,7 +46,7 @@ exports.createEmbed = (id) => {
embed.setColor(config.main_color) embed.setColor(config.main_color)
} }
if (data.other.embedTitleURL.enable) embed.setURL(data.other.embedTitleURL) if (data.other.embedTitleURL.enable) embed.setURL(data.other.embedTitleURL.url)
var description = data.description var description = data.description
if (data.other.enableTicketExplaination){ if (data.other.enableTicketExplaination){
+53 -73
View File
@@ -1,13 +1,46 @@
// __________ __________ ___________ ____ ____ /**
// / ____ \ / ______ \ / | | \ | | ____ _____ ______ _ _ _______ _____ _____ _ ________ _______
// | / \ | | | | | | |_______| | \ | | / __ \| __ \| ____| \ | | |__ __|_ _/ ____| |/ / ____|__ __|
// | | | | | |____| | | | | |\ \ | | | | | | |__) | |__ | \| | | | | || | | ' /| |__ | |
// | | | | | ________/ | |______ | | \ \ | | | | | | ___/| __| | . ` | | | | || | | < | __| | |
// | | | | | | | _____| | | \ \ | | | |__| | | | |____| |\ | | | _| || |____| . \| |____ | |
// | | | | | | | | | | \ \ | | \____/|_| |______|_| \_| |_| |_____\_____|_|\_\______| |_|
// | | | | | | | |________ | | \ \| |
// | \____/ | | | | | | | \ | Hey! we are looking for you!
// \__________/ |__| \__________| |__| \___| Do you speak a language that isn't yet in our /languages directory
or do you speak one that isn't up-to-date? Open Ticket needs
translators for lots of different languages!
Feel free to join our translator team and help us improve Open Ticket!
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?
INFORMATION:
============
Open Ticket v3.2.2 - © DJdj Development
discord: https://discord.dj-dj.be
website: https://www.dj-dj.be
github: https://openticket.dj-dj.be
support e-mail: support@dj-dj.be
Config files:
./config.json
./transcriptconfig.json
Send ./openticketdebug.txt when there are errors!
*/
const discord = require("discord.js") const discord = require("discord.js")
const fs = require('fs') const fs = require('fs')
@@ -39,29 +72,13 @@ var tempconfig = require("./config.json")
var isDevConfig = false var isDevConfig = false
if (process.argv.some((v) => v == "--devconfig")){ if (process.argv.some((v) => v == "--devconfig")){
async function logFLAGS(){
const chalk = await (await import("chalk")).default
console.log(chalk.blue("[FLAGS] => used dev config instead of normal config"))
}; logFLAGS()
isDevConfig = true isDevConfig = true
try{ try{
tempconfig = require("./devConfig.json") tempconfig = require("./devconfig.json")
}catch{tempconfig = require("./config.json")} }catch{tempconfig = require("./config.json")}
}else{ }else{
tempconfig = require("./config.json") tempconfig = require("./config.json")
} }
if (process.argv.some((v) => v == "--nochecker")){
async function logFLAGS(){
const chalk = await (await import("chalk")).default
console.log(chalk.blue("[FLAGS] => disabled checker.js"))
}; logFLAGS()
}
if (process.argv.some((v) => v == "--debug")){
async function logFLAGS(){
const chalk = await (await import("chalk")).default
console.log(chalk.blue("[FLAGS] => enabled DEBUG mode"))
}; logFLAGS()
}
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded flags") if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded flags")
exports.developerConfig = isDevConfig exports.developerConfig = isDevConfig
@@ -73,7 +90,7 @@ if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded
const config = tempconfig const config = tempconfig
exports.config = config exports.config = config
const tsconfig = require("./transcriptconfig.json") const tsconfig = isDevConfig ? require("./devtsconfig.json") : require("./transcriptconfig.json")
exports.tsconfig = tsconfig exports.tsconfig = tsconfig
if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded config") if (process.argv.some((v) => v == "--debug")) console.log("[TEMP_DEBUG]","loaded config")
@@ -112,74 +129,37 @@ client.on('ready',async () => {
} }
client.user.setActivity(text,{type:getTypeEnum(type)}) client.user.setActivity(text,{type:getTypeEnum(type)})
statusSet = true statusSet = true
log("system","loaded status",[{key:"type",value:type},{key:"text",value:text}])
} }
this.errorLog.log("debug","bot status loaded") this.errorLog.log("debug","bot status loaded")
const chalk = await (await import("chalk")).default const chalk = await (await import("chalk")).default
if (!process.argv[2]){ require("./core/startscreen").run()
console.log(chalk.red("WELCOME TO OPEN TICKET!")) if (!process.argv[2] || (process.argv[2] && !process.argv[2].startsWith("slash"))){
this.errorLog.log("debug","loaded console interface") this.errorLog.log("debug","loaded console interface")
log("info","open ticket ready",[{key:"version",value:require("./package.json").version},{key:"language",value:config.languagefile}])
require("./core/utils/liveStatus")() require("./core/utils/liveStatus")()
console.log(chalk.blue("\n\nlogs:")+"\n============")
if (config.status.enabled){ if (config.status.enabled){
setStatus(config.status.type,config.status.text) setStatus(config.status.type,config.status.text)
} }
var updatingSlash = false
if (fs.existsSync("./storage/slashcmdEnabled.txt")){ if (fs.existsSync("./storage/slashcmdEnabled.txt")){
/**@type {"true"|"false"} */ /**@type {"true"|"false"} */
const data = fs.readFileSync("./storage/slashcmdEnabled.txt").toString() const data = fs.readFileSync("./storage/slashcmdEnabled.txt").toString()
if (data === "true"){require("./core/slashSystem/autoSlashUpdate")()} if (data === "true"){require("./core/slashSystem/autoSlashUpdate")(); updatingSlash = true}
}else{fs.writeFileSync("./storage/slashcmdEnabled.txt","false")} }else{fs.writeFileSync("./storage/slashcmdEnabled.txt","false")}
log("system","bot logged in!")
try {
await client.guilds.cache.find((g) => g.id == config.server_id).members.fetch()
}catch{
this.errorLog.log("info","tried to cache user information, failed!")
}
return
}
if (process.argv[2] == "d"){
if (config.status.enabled){
setStatus(config.status.type,config.status.text)
}
}
if (!process.argv[2].startsWith("slash")){
console.log(chalk.red("WELCOME TO OPEN TICKET!"))
this.errorLog.log("debug","loaded console interface")
log("info","open ticket ready",[{key:"version",value:require("./package.json").version},{key:"language",value:config.languagefile}])
require("./core/utils/liveStatus")()
console.log(chalk.blue("\n\nlogs:")+"\n============")
if (config.status.enabled){
setStatus(config.status.type,config.status.text)
}
if (fs.existsSync("./storage/slashcmdEnabled.txt")){
/**@type {"true"|"false"} */
const data = fs.readFileSync("./storage/slashcmdEnabled.txt").toString()
if (data === "true"){require("./core/slashSystem/autoSlashUpdate")()}
}else{fs.writeFileSync("./storage/slashcmdEnabled.txt","false")}
log("system","bot logged in!")
try { try {
await client.guilds.cache.find((g) => g.id == config.server_id).members.fetch() await client.guilds.cache.find((g) => g.id == config.server_id).members.fetch()
}catch{ }catch{
this.errorLog.log("info","tried to cache user information, failed!") this.errorLog.log("info","tried to cache user information, failed!")
} }
require("./core/startscreen").headerDataReady(chalk,config.status,updatingSlash,false)
}else{ }else{
console.log(chalk.red("STARTING IN ")+chalk.blue("SLASH MODE")+chalk.red("...")) require("./core/startscreen").headerDataReady(chalk,config.status,updatingSlash,true)
this.errorLog.log("debug","slashmode activated") this.errorLog.log("debug","slashmode activated")
console.log("logs:\n================")
console.log("client logged in...")
console.log("loading files...")
if (process.argv[3] == "enable"){ if (process.argv[3] == "enable"){
console.log(chalk.green("switching to slashEnable.js")) console.log(chalk.green("switching to slashEnable.js"))
require("./core/slashSystem/slashEnable")() require("./core/slashSystem/slashEnable")()
@@ -187,7 +167,7 @@ client.on('ready',async () => {
console.log(chalk.green("switching to slashDisable.js")) console.log(chalk.green("switching to slashDisable.js"))
require("./core/slashSystem/slashDisable")() require("./core/slashSystem/slashDisable")()
}else{ }else{
console.log(chalk.red("[SLASH CMD MANAGER]: unknown slash mode!")) console.log(chalk.bgRed("[SLASH CMD MANAGER]: unknown slash command action!"))
process.exit(1) process.exit(1)
} }
} }
+11 -7
View File
@@ -15,8 +15,7 @@
"anotherOption": "هذا الخيار ليس التكت و لكنه شيء أخر!", "anotherOption": "هذا الخيار ليس التكت و لكنه شيء أخر!",
"maxAmountTitle": "خطأ , تم الوصول الى الحد الأقصى!", "maxAmountTitle": "خطأ , تم الوصول الى الحد الأقصى!",
"maxAmountDescription": "لقد وصلت الى الحد الأقصى لعدد التكتات المسموحة بها!\nSo لا يمكنك فتح واحدة أخرى!", "maxAmountDescription": "لقد وصلت الى الحد الأقصى لعدد التكتات المسموحة بها!\nSo لا يمكنك فتح واحدة أخرى!",
"somethingWentWrong": "**هناك خطاً!**\nأعد المحاولة لاحقاً!", "somethingWentWrong": "**هناك خطاً!**\nأعد المحاولة لاحقاً!"
"somethingWentWrongTranscript": "هناك خطاً في محاولة طبع التكت!**\nأعد المحاولة لاحقاً!"
}, },
"commands": { "commands": {
"userAddedTitle": "تم أضافة {0} من المستخدمين في التكت!", "userAddedTitle": "تم أضافة {0} من المستخدمين في التكت!",
@@ -27,6 +26,7 @@
"reopenTitle": "إعادة فتح التكت!", "reopenTitle": "إعادة فتح التكت!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"This ticket is now claimed to {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"This ticket isn't claimed anymore!",
"changeTitle":"Changed ticket type to {0}!",
"ticketWarning": "هذا الأمبد موجود بالفعل في الرسالة بالأسفل!", "ticketWarning": "هذا الأمبد موجود بالفعل في الرسالة بالأسفل!",
"maxTicketWarning": "**تحذير:** _يمكنك فقط فتح {0} تكت في الوقت!_" "maxTicketWarning": "**تحذير:** _يمكنك فقط فتح {0} تكت في الوقت!_"
@@ -48,7 +48,6 @@
"close": "إغلاق التكت", "close": "إغلاق التكت",
"delete": "حذف التكت", "delete": "حذف التكت",
"reopen": "إعادة فتح التكت", "reopen": "إعادة فتح التكت",
"sendTranscript": "طبع التكت",
"closeWithReason":"close with reason" "closeWithReason":"close with reason"
}, },
"messages": { "messages": {
@@ -66,9 +65,7 @@
"deletedTicketDmDescription": "تم حذف تذكرتك من قبل إداري!", "deletedTicketDmDescription": "تم حذف تذكرتك من قبل إداري!",
"reopenTicketDmTitle": "تم إعادة فتح تذكرتك!", "reopenTicketDmTitle": "تم إعادة فتح تذكرتك!",
"reopenTicketDmDescription": "تم إعادة فتح التكت!", "reopenTicketDmDescription": "تم إعادة فتح التكت!",
"newTranscriptTitle": "توجد نسخة تكت جديدة هنا!",
"hereIsTheTranscript": "هذا هي النسخة:",
"chooseCategory": "أختر الكتقاجوري:", "chooseCategory": "أختر الكتقاجوري:",
"gettingdeleted": "يتم حذف التكت...", "gettingdeleted": "يتم حذف التكت...",
@@ -79,5 +76,12 @@
"closedby":"closed by", "closedby":"closed by",
"modalreason":"What is the reason for closing this ticket?", "modalreason":"What is the reason for closing this ticket?",
"chooseATicket": "Choose a ticket" "chooseATicket": "Choose a ticket"
} },
"transcripts":{
"title":"Transcript",
"processed":"This transcript is being processed",
"wait":"Please wait!",
"estimated":"Estimated time",
"available":"The transcript is available here"
}
} }
+9 -5
View File
@@ -15,8 +15,7 @@
"anotherOption":"This option is not a ticket but another type!", "anotherOption":"This option is not a ticket but another type!",
"maxAmountTitle":"Max amount reached!", "maxAmountTitle":"Max amount reached!",
"maxAmountDescription":"You reached the maximum number of tickets allowed!\nSo you can't create a new one!", "maxAmountDescription":"You reached the maximum number of tickets allowed!\nSo you can't create a new one!",
"somethingWentWrong":"**Something went wrong!**\nPlease try again another time!", "somethingWentWrong":"**Something went wrong!**\nPlease try again another time!"
"somethingWentWrongTranscript":"Something went wrong while making the transcript!**\nPlease try again another time!"
}, },
"commands":{ "commands":{
"userAddedTitle":"Added {0} to this ticket!", "userAddedTitle":"Added {0} to this ticket!",
@@ -27,6 +26,7 @@
"reopenTitle":"Re-Opened this ticket!", "reopenTitle":"Re-Opened this ticket!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"This ticket is now claimed to {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"This ticket isn't claimed anymore!",
"changeTitle":"Changed ticket type to {0}!",
"ticketWarning":"The embed is in the message below!", "ticketWarning":"The embed is in the message below!",
"maxTicketWarning":"**Warning:** _You can only create {0} ticket(s) at a time!_" "maxTicketWarning":"**Warning:** _You can only create {0} ticket(s) at a time!_"
@@ -48,7 +48,6 @@
"close":"Close Ticket", "close":"Close Ticket",
"delete":"Delete Ticket", "delete":"Delete Ticket",
"reopen":"Re-Open Ticket", "reopen":"Re-Open Ticket",
"sendTranscript":"Transcript",
"closeWithReason":"close with reason" "closeWithReason":"close with reason"
}, },
"messages":{ "messages":{
@@ -66,8 +65,6 @@
"deletedTicketDmDescription":"Your ticket is deleted!", "deletedTicketDmDescription":"Your ticket is deleted!",
"reopenTicketDmTitle":"Ticket Re-opened!", "reopenTicketDmTitle":"Ticket Re-opened!",
"reopenTicketDmDescription":"Your ticket is re-opened!", "reopenTicketDmDescription":"Your ticket is re-opened!",
"newTranscriptTitle":"A new transcript is here!",
"hereIsTheTranscript":"Here is the transcript:",
"chooseCategory":"choose a category:", "chooseCategory":"choose a category:",
"gettingdeleted":"Ticket is getting deleted...", "gettingdeleted":"Ticket is getting deleted...",
@@ -79,5 +76,12 @@
"closedby":"closed by", "closedby":"closed by",
"modalreason":"What is the reason for closing this ticket?", "modalreason":"What is the reason for closing this ticket?",
"chooseATicket": "Choose a ticket" "chooseATicket": "Choose a ticket"
},
"transcripts":{
"title":"Transcript",
"processed":"This transcript is being processed",
"wait":"Please wait!",
"estimated":"Estimated time",
"available":"The transcript is available here"
} }
} }
+64 -60
View File
@@ -1,83 +1,87 @@
{ {
"errors":{ "errors":{
"missingArgsTitle":"Neplatné argumenty", "missingArgsTitle":"Neplatny Argument!",
"missingArgsDescription":"Chybí argumenty", "missingArgsDescription":"Chybí Argument",
"noPermsTitle":"Nemáš práva!", "noPermsTitle":"Nemáš práva!",
"noPermsDescription":"Nemáš dostatečné práva na tento příkaz!\n Potřebuješ ADMINISTRATOR aby jsi mohl provést příkaz!", "noPermsDescription":"Potřebujes `ADMINISTRATOR`roli nebo byt v listině povolenych roli!",
"noPermsDelete":"Pouze admin může smazat ticket!", "noPermsDelete":"Pouze Admini muůřou mazat ticket!",
"chooseFromListTitle":"Neplatné ID", "chooseFromListTitle":"Neplatný ID",
"chooseFromListDescription":"Vyber si z těchto ID:", "chooseFromListDescription":"Vyber si jedno z ID níže:",
"boterror":"Error!", "boterror":"Bot Chyba!",
"notInTicketTitle":"Nejsi v ticketu!", "notInTicketTitle":"Nejsi v ticketu!",
"notInTicketDescription":"Tento příkaz nefunguje mimo tickety!", "notInTicketDescription":"Tenhle příkaz nefunguje mimo ticket!",
"ticketDoesntExist":"Tento ticket už bohužel neexistuje!", "ticketDoesntExist":"Tenhle ticket už neexistuje !",
"roleDoesntExist":"Tato role bohužel neexistuje!", "roleDoesntExist":"Tenhle role už neexistuje!",
"anotherOption":"Tato možnost není ticket ale něco jiného!", "anotherOption":"This option is not a ticket but another type!",
"maxAmountTitle":"Maximální počet ticketů dosažen!", "maxAmountTitle":"Max počet byl dosáhnut!",
"maxAmountDescription":"Dosáhl jsi maximálního povoleného počtu ticketů!\n Nemůžeš si vytvořit nový!", "maxAmountDescription":"Dosáhl jsi max počet povolených ticketu!\nSo nemůžeš si vytvořit nový!",
"somethingWentWrong":"**Něco je špatně**\nProsím zkus to příště znovu!", "somethingWentWrong":"**Něco se pokazilo!**\nProsím zkus to jindy!"
"somethingWentWrongTranscript":"Něco je špatně s transcriptem!**\nProsím zkus to příště znovu!"
}, },
"commands":{ "commands":{
"userAddedTitle":"{0} byl přidán do ticketu!", "userAddedTitle":"Přidat {0} do tohohle ticketu!",
"userRemovedTitle":"{0} byl odebrám z ticketu!", "userRemovedTitle":"Odstranit {0} z tohohle ticketu!",
"renameTitle":"Jméno bylo změněno!", "renameTitle":"Změnit jmeno na {0}!",
"closeTitle":"Zavři tento ticket!", "closeTitle":"Zavři tenhle ticket!",
"deleteTitle":"Smaž tento ticket!", "deleteTitle":"Mažu ticket...",
"reopenTitle":"Znovu otevři ticket!", "reopenTitle":"Znovu otevíram ticket",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"Nyní jsi převzal ticket {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"Tento ticketu už je převzatý!",
"changeTitle":"Změnil jsi typ ticketu na {0}!",
"ticketWarning":"The embed is in the message below!", "ticketWarning":"The embed is in the message below!",
"maxTicketWarning":"**Varovaní:** _Můžeš si vytvořit použe {0} ticket(s) v jednu chvíli!_" "maxTicketWarning":"**Warning:** _Můžeš vytvořit pouze {0} v tuhle chvíli!_"
}, },
"helpMenu":{ "helpMenu":{
"title":"Příkazy:", "title":"Dostupné příkazy:",
"header1":"**Běž {0} vytvořit si ticket!**\n\n", "header1":"**Běž do {0} pro vytvoření ticketi!**\n\n",
"header2":"**Použij příkaz `/new` nebo `/ticket` k vytvoření ticketu!**\n\n", "header2":"**Použíj příkaz `/nový` nebo `/ticket` pro vytvoření ticketu**\n\n",
"msgCmd":"Vytvoř možnost otevírat tickety přes tlačítko. (ADMIN)", "msgCmd":"Vytvoř embed s tlačíky. (admins only)",
"renameCmd":"Přejmenovat ticket. (Žádné mezery)", "renameCmd":"Přejmenovat ticket. (no spaces)",
"closeCmd":"Zavři ticket.", "closeCmd":"Zavřít ticket.",
"deleteCmd":"Smaž ticket.", "deleteCmd":"Odstranit ticket.",
"addCmd":"Přidej člena do ticketu.", "addCmd":"Pridat uživatele do ticketu.",
"removeCmd":"Odebere člena z ticketu.", "removeCmd":"Odebrat uživatele z ticketu.",
"reopenCmd":"Znovu otevři ticket po uzavření." "reopenCmd":"Re-Open a ticket after it was closed."
}, },
"buttons":{ "buttons":{
"close":"Zavři ticket", "close":"Zavřit ticket",
"delete":"Smaž ticket", "delete":"Vymazat ticket",
"reopen":"Znovu otevři ticket", "reopen":"Znovu otevřít ticket",
"sendTranscript":"Odešli log ticketu", "closeWithReason":"zavřít s důvodem"
"closeWithReason":"close with reason"
}, },
"messages":{ "messages":{
"reopenTitle":"Ticket znovu otevřen!", "reopenTitle":"Znovu otevřit ticket!",
"reopenDescription":"Cítím se skvěle že si můžeme zase povídat!", "reopenDescription":"Klidně napiš znova!",
"closedTitle":"Zavřený ticket!", "closedTitle":"Zavřít tenhle ticket!",
"closedDescription":"Pouze admin team zde může nyní komunikovat!\n\n*Klikni na tlačítko níže pro smazání nebo znovu otevření ticketu!*", "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!*",
"createdTitle":"Ticket vytvořen!", "createdTitle":"Ticket otevřen!",
"createdDescription":"Váš tiket je vytvořen, můžete ho zjistit pomocí pingu!", "createdDescription":"Tvůj ticket je vytvořem, můžeš si ho všimnout pomocí pingu!",
"newTicketDmTitle":"Nový ticket!", "newTicketDmTitle":"Nový ticket!",
"closedTicketDmTitle":"Ticket uzavřen!", "closedTicketDmTitle":"Ticket Zavřený!",
"deletedTicketDmTitle":"Ticket smazán!", "deletedTicketDmTitle":"Ticket Odstranen!",
"closedTicketDmDescription":"Tvůj ticket byl uzavřen!", "closedTicketDmDescription":"Tvuj ticket je uzavřen!",
"deletedTicketDmDescription":"Tvůj ticket byl smazán!", "deletedTicketDmDescription":"Tvuj ticket byl smazan!",
"reopenTicketDmTitle":"Ticket znovu otevřen!", "reopenTicketDmTitle":"Ticket je znovu otevřený!",
"reopenTicketDmDescription":"Tvůj ticket byl znovu otevřen!", "reopenTicketDmDescription":"Tvuj ticket byl znovu ovetřený!",
"newTranscriptTitle":"Nový log ticketu je zde!",
"hereIsTheTranscript":"Zde je log:",
"chooseCategory":"Vyber kategorii:", "chooseCategory":"Vyber si kategorii:",
"gettingdeleted":"Ticket bude smazán", "gettingdeleted":"Ticket bude vymazan...",
"none":"nic", "none":"žádný",
"reason":"důvod", "reason":"důvod",
"deletedby":"deleted by", "deletedby":"smazano uzivatelem",
"closedby":"closed by", "closedby":"zavreno uzivatelem",
"modalreason":"What is the reason for closing this ticket?", "modalreason":"Jakž byl důvod k zavření toho ticketu?",
"chooseATicket": "Choose a ticket" "chooseATicket": "Vyber ticket"
},
"transcripts":{
"title":"Přepis",
"processed":"Tento přepis se zpracoval",
"wait":"Prosím počkej!",
"estimated":"Odhadovaný čas",
"available":"Záloha je uložena zde!"
} }
} }
+79 -75
View File
@@ -1,83 +1,87 @@
{ {
"errors":{ "errors": {
"missingArgsTitle":"Ugyldige argumenter", "missingArgsTitle": "Ugyldigt Argument!",
"missingArgsDescription":"Manglende argumenter", "missingArgsDescription": "Manglende Argument",
"noPermsTitle":"Ingen adgang", "noPermsTitle": "Ikke tilladelse!",
"noPermsDescription":"Du har ikke adgang til denne kommando", "noPermsDescription": "Du skal have tilladelsen `ADMINISTRATOR` eller være på listen over tilladte roller!",
"noPermsDelete":"Kun administrators kan slette tickets", "noPermsDelete": "Kun administratorer kan slette en ticket!",
"chooseFromListTitle":"Ugyldig ID", "chooseFromListTitle": "Ugyldigt ID",
"chooseFromListDescription":"Vælg et ID nedenunder", "chooseFromListDescription": "Vælg et af id'erne nedenfor:",
"boterror":"Bot Fejl!", "boterror": "Bot Fejl!",
"notInTicketTitle":"Du er ikke i en ticket!", "notInTicketTitle": "Du er ikke i en ticket!",
"notInTicketDescription":"Denne kommando fungere kun i tickets!", "notInTicketDescription": "Denne kommando virker ikke udenfor tickets!",
"ticketDoesntExist":"Denne ticket eksistere ikke mere!", "ticketDoesntExist": "Denne ticket findes ikke længere!",
"roleDoesntExist":"Denne rolle eksistere ikke mere!", "roleDoesntExist": "Denne rolle eksisterer ikke længere!",
"anotherOption":"Dette er ikke en ticket, men noget andet!", "anotherOption": "Denne mulighed er ikke en ticket, men en anden type!",
"maxAmountTitle":"For mange tickets er blevet oprettet!", "maxAmountTitle": "Maks. mængde opnået!",
"maxAmountDescription":"Du har for mange tickets åbne!\nSå luk dem hvis du gerne vil oprette nye!", "maxAmountDescription": "Du har nået det maksimale antal tilladte tickets!\nSå du kan ikke oprette en ny!",
"somethingWentWrong":"**Noget gik galt**\nKontakt en udvikler!", "somethingWentWrong": "**Noget gik galt!**\nPrøv venligst igen en anden gang!"
"somethingWentWrongTranscript":"Noget gik galt med transcript!**\nKontakt en udvikler!" },
}, "commands": {
"commands":{ "userAddedTitle": "Føjede {0} til denne ticket!",
"userAddedTitle":"Tilføjer {0} til denne ticket!", "userRemovedTitle": "Fjernede {0} fra denne ticket!",
"userRemovedTitle":"Fjernet {0} fra denne ticket!", "renameTitle": "Ændrede navnet til {0}!",
"renameTitle":"Ændret navnet til{0}!", "closeTitle": "Lukket denne ticket!",
"closeTitle":"Closed this ticket!", "deleteTitle": "Sletter denne ticket...",
"deleteTitle":"Fjerner ticketen", "reopenTitle": "Genåbnede denne ticket!",
"reopenTitle":"Genåbnede denne ticket", "claimTitle": "Denne ticket er nu krævet til {0}",
"claimTitle":"Denne ticket er blevet taget af {0}", "unclaimTitle": "Der gøres ikke krav på denne ticket længere!",
"unclaimTitle":"Denne ticket er nu tilgængelig!", "changeTitle": "Ændrede ticket type til {0}!",
"ticketWarning":"Emebeddet er i beskeden nedenunder", "ticketWarning": "Embedet er i meddelelsen nedenfor!",
"maxTicketWarning":"**Fejl:** _Du kan kun oprettre {0} ticket adgangen!_" "maxTicketWarning": "**Warning:** _Du kan kun oprette {0} ticket(s) ad gangen!_"
}, },
"helpMenu":{ "helpMenu": {
"title":"Tilgængelig kommandoer:", "title": "Tilgængelige kommandoer:",
"header1":"**Gå til {0} For at oprette en ticket!**\n\n", "header1": "**Gå til {0} for at oprette en ticket!**\n\n",
"header2":"**Skriv kommandoen `/new` eller `/ticket` for at oprette en ticket!**\n\n", "header2": "**Kør kommandoen `/new` eller `/ticket` for at oprette en billet!**\n\n",
"msgCmd":"Lav en embed med knapper (admins kun)", "msgCmd": "Lav et embed med buttons. (kun administratorer)",
"renameCmd":"Ændre navnet (ingen mellemrum)", "renameCmd": "Omdøb en ticket. (Ingen Mellemrum!!)",
"closeCmd":"Luk denne ticket", "closeCmd": "Luk en ticket.",
"deleteCmd":"Fjern denne ticket", "deleteCmd": "Slet en ticket.",
"addCmd":"Tilføj en person til ticketen", "addCmd": "Tilføj en bruger til ticketen.",
"removeCmd":"Fjern en person fra ticketen", "removeCmd": "Fjern en bruger fra ticketen.",
"reopenCmd":"Genåben en ticket efter den har været lukket" "reopenCmd": "Genåbn en ticket, efter at den var lukket."
}, },
"buttons":{ "buttons": {
"close":"Luk ticket", "close": "Luk Ticket",
"delete":"Fjern ticket", "delete": "Slet Ticket",
"reopen":"Genåben ticket", "reopen": "Genåben Ticket",
"sendTranscript":"Transcript", "closeWithReason": "Luk med grundlag"
"closeWithReason":"Luk med grundlag" },
}, "messages": {
"messages":{ "reopenTitle": "Genåbnede denne ticket!",
"reopenTitle":"Genåbener denne ticket", "reopenDescription": "Snak gerne igen!",
"reopenDescription":"Du kan nu skrive igen", "closedTitle": "Lukket denne ticket!",
"closedTitle":"Lukker ticketen!", "closedDescription": "Kun administratorer kan tale i denne billet nu!\n\n*Klik på knappen nedenfor for at slette eller genåbne denne billet!",
"closedDescription":"Kun administrators kan skrive lige nu!\n\n*Klik på knappen nedenunder for at slette eller genåbne ticketen!*", "createdTitle": "Ticket Oprettet!",
"createdTitle":"Ticket oprettet!", "createdDescription": "Din ticket er oprettet, du kan registrere den ved et ping!",
"createdDescription":"Din ticket er oprettet!",
"newTicketDmTitle":"Ny Ticket!", "newTicketDmTitle": "Nt Ticket!",
"closedTicketDmTitle":"Ticket Lukket!", "closedTicketDmTitle": "Ticket Lukket!",
"deletedTicketDmTitle":"Ticket Fjernet!", "deletedTicketDmTitle": "Ticket Slettet!",
"closedTicketDmDescription":"Din ticket er blevet lukket!", "closedTicketDmDescription": "Din ticket er lukket!",
"deletedTicketDmDescription":"Din ticket er blevet fjernet!", "deletedTicketDmDescription": "Din ticket er slettet!",
"reopenTicketDmTitle":"Ticket Genåbnet!", "reopenTicketDmTitle": "Ticket Genåbnet!",
"reopenTicketDmDescription":"Din ticket er blevet genåbent!", "reopenTicketDmDescription": "Din ticket er genåbnet!",
"newTranscriptTitle":" En ny transcript er tilføjet!",
"hereIsTheTranscript":"Følgende transcript:",
"chooseCategory":"Vælg en kategori:", "chooseCategory": "vælg en kategori:",
"gettingdeleted":"Ticketen slettes..", "gettingdeleted": "Ticketen bliver slettet...",
"none":"Ingen", "none": "intet",
"reason":"Grundlag", "reason": "grundlag",
"deletedby":"Fjernet af", "deletedby": "slettet af",
"closedby":"Lukket af", "closedby": "lukket af",
"modalreason":"Hvad er grundlaget for lukkens af denne ticket?", "modalreason": "Hvad er grunden til at lukke denne ticket?",
"chooseATicket": "Vælg en ticket" "chooseATicket": "Vælg en ticket"
} },
"transcripts": {
"title": "Transcript",
"processed": "Dette transcript er under behandling",
"wait": "Vent venligst!",
"estimated": "Estimeret tid",
"available": "Transcriptet er tilgængelig her"
}
} }
+12 -8
View File
@@ -15,8 +15,7 @@
"anotherOption":"Deze optie is niet een ticket, maar een ander type!", "anotherOption":"Deze optie is niet een ticket, maar een ander type!",
"maxAmountTitle":"Maximum numer bereikt!", "maxAmountTitle":"Maximum numer bereikt!",
"maxAmountDescription":"Je hebt het maximum aantal openstaande tickets bereikt!\nDus je kan geen nieuwe meer maken!", "maxAmountDescription":"Je hebt het maximum aantal openstaande tickets bereikt!\nDus je kan geen nieuwe meer maken!",
"somethingWentWrong":"**Iets ging fout!**\nProbeer een andere keer opnieuw!", "somethingWentWrong":"**Iets ging fout!**\nProbeer een andere keer opnieuw!"
"somethingWentWrongTranscript":"Iets ging fout terwijl het transcript gemaakt werd!**\nProbeer een andere keer opnieuw!"
}, },
"commands":{ "commands":{
"userAddedTitle":"{0} is toegevoegd aan dit ticket!", "userAddedTitle":"{0} is toegevoegd aan dit ticket!",
@@ -25,8 +24,9 @@
"closeTitle":"Ticket gesloten!", "closeTitle":"Ticket gesloten!",
"deleteTitle":"Ticket aan het verwijderen...", "deleteTitle":"Ticket aan het verwijderen...",
"reopenTitle":"Ticket heropend!", "reopenTitle":"Ticket heropend!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"Dit ticket is geclaimed door {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"Dit ticket is niet meer geclaimed!",
"changeTitle":"Ticket type veranderd naar {0}!",
"ticketWarning":"De embed is in het bericht hier onder!", "ticketWarning":"De embed is in het bericht hier onder!",
"maxTicketWarning":"**Waarschuwing:** _Je kan maar {0} ticket(s) tegelijkertijd maken!_" "maxTicketWarning":"**Waarschuwing:** _Je kan maar {0} ticket(s) tegelijkertijd maken!_"
@@ -48,7 +48,6 @@
"close":"Sluit Ticket", "close":"Sluit Ticket",
"delete":"Verwijder Ticket", "delete":"Verwijder Ticket",
"reopen":"Heropen Ticket", "reopen":"Heropen Ticket",
"sendTranscript":"Transcript",
"closeWithReason":"sluit met reden" "closeWithReason":"sluit met reden"
}, },
"messages":{ "messages":{
@@ -66,9 +65,7 @@
"deletedTicketDmDescription":"Je ticket is verwijderd!", "deletedTicketDmDescription":"Je ticket is verwijderd!",
"reopenTicketDmTitle":"Ticket Heropend!", "reopenTicketDmTitle":"Ticket Heropend!",
"reopenTicketDmDescription":"Je ticket is heropend!", "reopenTicketDmDescription":"Je ticket is heropend!",
"newTranscriptTitle":"Er is een nieuw transcript!",
"hereIsTheTranscript":"Hier is het transcript:",
"chooseCategory":"kies een categorie:", "chooseCategory":"kies een categorie:",
"gettingdeleted":"Ticket wordt verwijderd...", "gettingdeleted":"Ticket wordt verwijderd...",
@@ -79,5 +76,12 @@
"closedby":"gesloten door", "closedby":"gesloten door",
"modalreason":"Wat is de reden om dit ticket te sluiten?", "modalreason":"Wat is de reden om dit ticket te sluiten?",
"chooseATicket": "Kies een ticket" "chooseATicket": "Kies een ticket"
},
"transcripts":{
"title":"Transcript",
"processed":"Dit transcript wordt verwerkt",
"wait":"Gelieve te wachten!",
"estimated":"Geschatte tijd",
"available":"Het transcript is hier beschikbaar"
} }
} }
+8 -5
View File
@@ -15,8 +15,7 @@
"anotherOption":"This option is not a ticket but another type!", "anotherOption":"This option is not a ticket but another type!",
"maxAmountTitle":"Max amount reached!", "maxAmountTitle":"Max amount reached!",
"maxAmountDescription":"You reached the maximum number of tickets allowed!\nSo you can't create a new one!", "maxAmountDescription":"You reached the maximum number of tickets allowed!\nSo you can't create a new one!",
"somethingWentWrong":"**Something went wrong!**\nPlease try again another time!", "somethingWentWrong":"**Something went wrong!**\nPlease try again another time!"
"somethingWentWrongTranscript":"Something went wrong while making the transcript!**\nPlease try again another time!"
}, },
"commands":{ "commands":{
"userAddedTitle":"Added {0} to this ticket!", "userAddedTitle":"Added {0} to this ticket!",
@@ -49,7 +48,6 @@
"close":"Close Ticket", "close":"Close Ticket",
"delete":"Delete Ticket", "delete":"Delete Ticket",
"reopen":"Re-Open Ticket", "reopen":"Re-Open Ticket",
"sendTranscript":"Transcript",
"closeWithReason":"close with reason" "closeWithReason":"close with reason"
}, },
"messages":{ "messages":{
@@ -67,8 +65,6 @@
"deletedTicketDmDescription":"Your ticket is deleted!", "deletedTicketDmDescription":"Your ticket is deleted!",
"reopenTicketDmTitle":"Ticket Re-opened!", "reopenTicketDmTitle":"Ticket Re-opened!",
"reopenTicketDmDescription":"Your ticket is re-opened!", "reopenTicketDmDescription":"Your ticket is re-opened!",
"newTranscriptTitle":"A new transcript is here!",
"hereIsTheTranscript":"Here is the transcript:",
"chooseCategory":"choose a category:", "chooseCategory":"choose a category:",
"gettingdeleted":"Ticket is getting deleted...", "gettingdeleted":"Ticket is getting deleted...",
@@ -80,5 +76,12 @@
"closedby":"closed by", "closedby":"closed by",
"modalreason":"What is the reason for closing this ticket?", "modalreason":"What is the reason for closing this ticket?",
"chooseATicket": "Choose a ticket" "chooseATicket": "Choose a ticket"
},
"transcripts":{
"title":"Transcript",
"processed":"This transcript is being processed",
"wait":"Please wait!",
"estimated":"Estimated time",
"available":"The transcript is available here"
} }
} }
+11 -7
View File
@@ -15,8 +15,7 @@
"anotherOption":"Cette option n'est pas un ticket mais un autre type!", "anotherOption":"Cette option n'est pas un ticket mais un autre type!",
"maxAmountTitle":"Montant maximum atteint!", "maxAmountTitle":"Montant maximum atteint!",
"maxAmountDescription":"Vous avez atteint le nombre maximum de tickets autorisés!\nVous ne pouvez donc pas en créer un nouveau!", "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!", "somethingWentWrong":"**Quelque chose s'est mal passé!**\nVeuillez réessayer une autre fois!"
"somethingWentWrongTranscript":"Une erreur s'est produite lors de la création de la transcription!**\nVeuillez réessayer une autre fois!"
}, },
"commands":{ "commands":{
"userAddedTitle":"{0} a été ajouté à ce ticket!", "userAddedTitle":"{0} a été ajouté à ce ticket!",
@@ -27,6 +26,7 @@
"reopenTitle":"A rouvert ce ticket!", "reopenTitle":"A rouvert ce ticket!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"This ticket is now claimed to {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"This ticket isn't claimed anymore!",
"changeTitle":"Changed ticket type to {0}!",
"ticketWarning":"L'intégration est dans le message ci-dessous!", "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 que {0} ticket(s) à la fois !_"
@@ -48,7 +48,6 @@
"close":"Fermer le ticket", "close":"Fermer le ticket",
"delete":"Supprimer le billet", "delete":"Supprimer le billet",
"reopen":"Billet de réouverture", "reopen":"Billet de réouverture",
"sendTranscript":"Transcript",
"closeWithReason":"fermer avec une raison" "closeWithReason":"fermer avec une raison"
}, },
"messages":{ "messages":{
@@ -66,9 +65,7 @@
"deletedTicketDmDescription":"Votre billet est supprimé !", "deletedTicketDmDescription":"Votre billet est supprimé !",
"reopenTicketDmTitle":"Billet rouvert!", "reopenTicketDmTitle":"Billet rouvert!",
"reopenTicketDmDescription":"Votre billet est rouvert !", "reopenTicketDmDescription":"Votre billet est rouvert !",
"newTranscriptTitle":"Une nouvelle transcription est ici!",
"hereIsTheTranscript":"Voici la transcription :",
"chooseCategory":"choisissez une catégorie:", "chooseCategory":"choisissez une catégorie:",
"gettingdeleted":"Le ticket est en cours de suppression...", "gettingdeleted":"Le ticket est en cours de suppression...",
@@ -79,5 +76,12 @@
"closedby":"fermé 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" "chooseATicket": "Choisir un ticket"
},
"transcripts":{
"title":"Transcript",
"processed":"Cette transcript est en cours de traitement",
"wait":"S'il vous plait, attendez...",
"estimated":"Temps estime:",
"available":"La transcript est disponible ici"
} }
} }
+86 -84
View File
@@ -1,85 +1,87 @@
{ {
"errors":{ "errors":{
"missingArgsTitle":"Ungültiges Argument!", "missingArgsTitle":"Ungültiges Argument!",
"missingArgsDescription":"Fehlendes Argument!", "missingArgsDescription":"Fehlendes Argument!",
"noPermsTitle":"Du hast keine Rechte!", "noPermsTitle":"Du hast keine Rechte!",
"noPermsDescription":"Sie haben nicht die richtigen Rollen, um diesen Befehl auszuführen!\nSie benötigen die `ADMINISTRATOR` Erlaubnis oder in der Liste der erlaubten Rollen sein!", "noPermsDescription":"Du benötigst die `ADMINISTRATOR` Rechte oder die erlaubte Rolle",
"chooseFromListTitle":"Ungültige ID", "noPermsDelete":"Nur Administratoren können ein Ticket löschen!",
"chooseFromListDescription":"Wählen Sie eine der folgenden ID:", "chooseFromListTitle":"Ungültige ID",
"boterror":"Bot Fehler!", "chooseFromListDescription":"Wählen Sie eine der folgenden ID's:",
"notInTicketTitle":"Du bist ein kein Ticket!", "boterror":"Bot Fehler!",
"notInTicketDescription":"Der Befehl funktioniert nicht außerhalb eines Tickets!", "notInTicketTitle":"Du bist in keinem Ticket!",
"ticketDoesntExist":"Das Ticket Exisitert nicht mehr!", "notInTicketDescription":"Der Befehl funktioniert außerhalb eines Tickets nicht!",
"roleDoesntExist":"Die Rolle Exisitiert nicht mehr!", "ticketDoesntExist":"Das Ticket exisitert nicht mehr!",
"anotherOption":"Diese Option ist kein Ticket, sondern eine andere Art!", "roleDoesntExist":"Die Rolle exisitiert nicht mehr!",
"maxAmountTitle":"Das Limit wurde erreicht!", "anotherOption":"Diese Option ist kein Ticket, sondern eine andere Art!",
"maxAmountDescription":"Sie haben die maximal zulässige Anzahl von Tickets erreicht!\nSie können also keine neue erstellen.!", "maxAmountTitle":"Das Limit wurde erreicht!",
"somethingWentWrong":"Etwas ist schief gelaufen!**\nBitte versuchen Sie es ein anderes Mal!", "maxAmountDescription":"Sie haben die maximal zulässige Anzahl von Tickets erreicht!\nSie können also keine neuen erstellen.!",
"somethingWentWrongTranscript":"Bei der Erstellung der Transcript ist etwas schief gelaufen!**\nBitte versuchen Sie es ein anderes Mal!" "somethingWentWrong":"**Etwas ist schief gelaufen!**\nBitte versuchen Sie es ein anderes Mal!"
}, },
"commands":{ "commands":{
"userAddedTitle":"User geaddet!", "userAddedTitle":"User geaddet!",
"userAddedDescription":"{0} wird zu diesem Ticket hinzugefügt!", "userRemovedTitle":"User entfernt!",
"userRemovedTitle":"User entfernt!", "renameTitle":"Der Name wurde geändert!",
"userRemovedDescription":"{0} wird aus diesem Ticket entfernt!", "closeTitle":"Dieses Ticket schließen!",
"deleteTitle":"Löschen Sie dieses Ticket!",
"renameTitle":"Der Name wurde geändert!", "reopenTitle":"Öffne dieses Ticket erneut!",
"renameWarning":"Achtung: Sie können den Kanalnamen nur 2 Mal pro Minute ändern!\n(dies ist auf die Begrenzung der Diskordrate zurückzuführen)", "claimTitle":"Das Ticket wurde beansprucht von {0}",
"unclaimTitle":"Das Ticket wrid nicht mehr beansprucht",
"closeTitle":"Dieses Ticket schließen!", "changeTitle":"Ticket Typ wurde geändert auf {0}!",
"closeDescription":"Sie können dieses Ticket schließen, indem Sie auf die Schaltfläche unten klicken!",
"deleteTitle":"Löschen Sie dieses Ticket!", "ticketWarning":"Die Einbettung befindet sich in der Nachricht unten!",
"deleteDescription":"Sie können dieses Ticket löschen, indem Sie auf die Schaltfläche unten klicken!", "maxTicketWarning":"**Warnung:** _Sie können nur {0} ticket(s) erstellen zu einer Zeit!_"
"reopenTitle":"Öffne dieses Ticket erneut!", },
"reopenDescription":"Sie können dieses Ticket erneut öffnen, indem Sie auf die Schaltfläche unten klicken!", "helpMenu":{
"title":"Hilfe Menu:",
"ticketWarning":"Die Einbettung befindet sich in der Nachricht unten!", "header1":"**Gehe zu {0} um ein Ticket zu erstellen!**\n\n",
"maxTicketWarning":"**Warnung:** _Sie können nur {0} ticket(s) erstellen zu einer Zeit!_" "header2":"**Führen Sie den Befehl `/new` oder `/ticket` um ein Ticket zu erstellen!**\n\n",
},
"helpMenu":{ "msgCmd":"Eine Einbettung mit Schaltflächen erzeugen. (nur admins)",
"title":"Hilfe Menu:", "renameCmd":"Ein Ticket umbenennen. (keine Leerzeichen)",
"header1":"**Gehe zu {0} um ein Ticket zu erstellen!**\n\n", "closeCmd":"Schließen Sie ein Ticket.",
"header2":"**Führen Sie den Befehl `/new` oder `/ticket` um ein Ticket zu erstellen!**\n\n", "deleteCmd":"Ein Ticket löschen.",
"addCmd":"Fügen Sie dem Ticket einen Benutzer hinzu.",
"msgCmd":"Eine Einbettung mit Schaltflächen erzeugen. (nur admins)", "removeCmd":"Entfernen eines Benutzers aus dem Ticket.",
"renameCmd":"Ein Ticket umbenennen. (keine Leerzeichen)", "reopenCmd":"Öffnen Sie ein Ticket erneut, nachdem es geschlossen wurde."
"closeCmd":"Schließen Sie ein Ticket.", },
"deleteCmd":"Ein Ticket löschen.", "buttons":{
"addCmd":"Fügen Sie dem Ticket einen Benutzer hinzu.", "close":"Ticket schließen",
"removeCmd":"Entfernen eines Benutzers aus dem Ticket.", "delete":"Ticket löschen",
"reopenCmd":"Öffnen Sie ein Ticket erneut, nachdem es geschlossen wurde." "reopen":"Ticket wieder öffnen",
}, "closeWithReason":"Geschlossen mit dem Grund"
"buttons":{ },
"close":"Ticket schließen", "messages":{
"delete":"Ticket löschen", "reopenTitle":"Dieses Ticket wiedereröffnet!",
"reopen":"Ticket wieder öffnen", "reopenDescription":"Sie können gerne weiterreden!",
"sendTranscript":"Transcript-Datei senden", "closedTitle":"Dieses Ticket geschlossen!",
"closeWithReason":"Geschlossen mit dem Grund" "closedDescription":"Nur Admins können jetzt in diesem Ticket sprechen!\n\n*Klicken Sie auf die Schaltfläche unten, um dieses Ticket zu löschen oder erneut zu öffnen!*",
}, "createdTitle":"Ticket erstellt!",
"messages":{ "createdDescription":"Ihr Ticket ist erstellt, Sie können es durch einen Ping erkennen!",
"reopenTitle":"Dieses Ticket wiedereröffnet!",
"reopenDescription":"Sie können gerne weiterreden!", "newTicketDmTitle":"Neues Ticket!",
"closedTitle":"Dieses Ticket geschlossen!", "closedTicketDmTitle":"Ticket schließen!",
"closedDescription":"Nur Admins können jetzt in diesem Ticket sprechen!\n\n*Klicken Sie auf die Schaltfläche unten, um dieses Ticket zu löschen oder erneut zu öffnen!*", "deletedTicketDmTitle":"Ticket löschen!",
"createdTitle":"Ticket erstellt!", "closedTicketDmDescription":"Ihr Ticket ist geschlossen!",
"createdDescription":"Ihr Ticket ist erstellt, Sie können es durch einen Ping erkennen!", "deletedTicketDmDescription":"Ihr Ticket ist gelöscht!",
"newTranscriptTitle":"Eine neue Transcript finden Sie hier!",
"newTicketDmTitle":"Neues Ticket!", "hereIsTheTranscript":"Hier ist das Transcript:",
"closedTicketDmTitle":"Ticket schließen!",
"deletedTicketDmTitle":"Ticket löschen!", "chooseCategory":"Wähle eine Kategorie:",
"closedTicketDmDescription":"Ihr Ticket ist geschlossen!", "gettingdeleted":"Ticket wird gelöscht...",
"deletedTicketDmDescription":"Ihr Ticket ist gelöscht!",
"newTranscriptTitle":"Eine neue Transcript finden Sie hier!", "none":"none",
"hereIsTheTranscript":"Hier ist das Transcript:", "reason":"Grund",
"chooseCategory":"Wähle eine Kategorie:", "deletedby":"Gelöscht von",
"closedby":"Geschlossen von",
"none":"keiner", "modalreason":"Was ist der Grund?",
"reason":"Grund", "chooseATicket": "Wähle ein passendes Thema!"
},
"deletedby":"Gelöscht von", "transcripts":{
"closedby":"Geschlossen von", "title":"Transcript",
"modalreason":"Was ist der Grund?", "processed":"Das Transcript wird erstellt",
"chooseATicket": "Wähle ein Ticket" "wait":"Bitte warten!",
} "estimated":"Verbleibende Zeit",
"available":"Das Transcript ist hier verfügbar"
}
} }
+86 -82
View File
@@ -1,83 +1,87 @@
{ {
"errors":{ "errors":{
"missingArgsTitle":"Argomenti non validi!", "missingArgsTitle":"Argomenti non validi!",
"missingArgsDescription":"Argomento mancante", "missingArgsDescription":"Argomenti mancanti",
"noPermsTitle":"Permessi mancanti!", "noPermsTitle":"Non hai i permessi sufficienti!",
"noPermsDescription":"Hai bisogno del permesso `ADMINISTRATOR` e essere nella lista dei ruoli accettati!", "noPermsDescription":"Hai bisogno del permesso `ADMINISTRATOR` o essere nella lista dei ruoli consentiti!",
"noPermsDelete":"Solo gli amministratori possono chiudere un ticket!", "noPermsDelete":"Solo gli amministratori possono eliminare i ticket!",
"chooseFromListTitle":"ID non valido", "chooseFromListTitle":"ID non valido",
"chooseFromListDescription":"Scegli uno degli ID sotto:", "chooseFromListDescription":"Scegli uno degli id sottostanti:",
"boterror":"Errore del bot!", "boterror":"Errore del bot!",
"notInTicketTitle":"Non sei in un ticket!", "notInTicketTitle":"Non sei in un ticket!",
"notInTicketDescription":"Questo comando non funziona fuori da un ticket!", "notInTicketDescription":"Questo comando non funziona al di fuori di un ticket!",
"ticketDoesntExist":"Questo ticket non esiste più!", "ticketDoesntExist":"Questo ticket non esiste!",
"roleDoesntExist":"Questo ruolo non esiste più!", "roleDoesntExist":"Questo ruolo non esiste!",
"anotherOption":"Questa opzione non è di un ticket!", "anotherOption":"Questa opzione non è un ticket ma un'altra!",
"maxAmountTitle":"Massimo numero raggiunto!", "maxAmountTitle":"Massimo ammontare raggiunto!",
"maxAmountDescription":"Hai raggiunto il massimo numero di ticket consentiti!\nNon puoi crearne altri!", "maxAmountDescription":"Hai raggiunto il massimo di ticket aperti!\nNon puoi creare altri!",
"somethingWentWrong":"**Qualcosa è andato storto!**\nPerfavore riprova un'altra volta!", "somethingWentWrong":"*Qualcosa è andato storto!*\nPerfavore riprova un'altra volta!"
"somethingWentWrongTranscript":"Qualcosa è andata storta durante la trascrizione!**\nPerfavore riprova un'altra volta!" },
}, "commands":{
"commands":{ "userAddedTitle":"Aggiunti {0} a questo ticket!",
"userAddedTitle":"Aggiunto {0} al ticket!", "userRemovedTitle":"Rimossi {0} da questo ticket!",
"userRemovedTitle":"Rimosso {0} da questo ticket!", "renameTitle":"Cambiato il nome a {0}!",
"renameTitle":"Cambia il nome in {0}!", "closeTitle":"Ticket chiuso!",
"closeTitle":"Chiudo questo ticket!", "deleteTitle":"Eliminando questo ticket...",
"deleteTitle":"Eliminando questo ticket...", "reopenTitle":"Ri-aperto questo ticket!",
"reopenTitle":"Ri-Aperto questo ticket!", "claimTitle":"Questo ticket è ora gestito da {0}",
"claimTitle":"This ticket is now claimed to {0}", "unclaimTitle":"Questo ticket non è più gestito!",
"unclaimTitle":"This ticket isn't claimed anymore!", "changeTitle":"Cambiato il tipo di ticket in {0}!",
"ticketWarning":"L'embed è nel messaggio sotto!", "ticketWarning":"L'embed è nel messaggio sotto!",
"maxTicketWarning":"**Attenzione:** _Tu puoi creare solo {0} ticket(s) per volta!_" "maxTicketWarning":"*Attenzione:* Tu puoi creare solo {0} ticket alla volta!"
}, },
"helpMenu":{ "helpMenu":{
"title":"Comandi disponibili:", "title":"Comandi disponibili:",
"header1":"**Vai a {0} per creare un ticket!**\n\n", "header1":"*Vai a {0} per creare un ticket!*\n\n",
"header2":"**Esegui il comando `/new` o `/ticket` per creare un ticket!**\n\n", "header2":"*Esegui il comando `/new` o `/ticket` per creare un ticket!*\n\n",
"msgCmd":"Crea un embed con pulsanti. (solo amministratori)", "msgCmd":"Crea un embed con bottoni. (solo amministratori)",
"renameCmd":"Rinomina un ticket. (senza spazi)", "renameCmd":"Rinomina un ticket. (senza spazi)",
"closeCmd":"Chiudi un ticket.", "closeCmd":"Chiudi un ticket.",
"deleteCmd":"Elimina un ticket.", "deleteCmd":"Elimina un ticket.",
"addCmd":"Aggiungi un membro al ticket.", "addCmd":"Aggiungi un utente al ticket.",
"removeCmd":"Rimuovi un membro dal ticket.", "removeCmd":"Rimuovi un utente da un ticket.",
"reopenCmd":"Riapri un ticket dopo averlo chiuso." "reopenCmd":"Ri-apri un ticket dopo averlo chiuso."
}, },
"buttons":{ "buttons":{
"close":"Chiudi il ticket", "close":"Chiudi",
"delete":"Elimina il ticket", "delete":"Elimini",
"reopen":"Riapri il ticket", "reopen":"Ri-apri un ticket",
"sendTranscript":"Trascrizione", "closeWithReason":"chiudi con motivo"
"closeWithReason":"chiudi con un motivo" },
}, "messages":{
"messages":{ "reopenTitle":"Ticket ri-aperto!",
"reopenTitle":"Riaperto questo ticket!", "reopenDescription":"Sentiti libero di parlare nuovamente!",
"reopenDescription":"Sentiti libero di parlare di nuovo!", "closedTitle":"Ticket chiuso!",
"closedTitle":"Chiudo questo ticket!", "closedDescription":"Solo gli amministratori possono parlare in questo ticket ora!\n\n*Clicca sul pulsante sotto per eliminare o ri-aprire questo ticket!*",
"closedDescription":"Solo gli amministratori possono parlare in questo ticket ora!\n\n*Clicca sul bottone sotto per chiudere o riaprire questo ticket!*", "createdTitle":"Ticket creato!",
"createdTitle":"Ticket creato!", "createdDescription":"Il tuo ticket è stato creato, puoi capirlo dal ping!",
"createdDescription":"Il tuo ticket è stato creato, puoi capirlo dal ping!",
"newTicketDmTitle":"Nuovo ticket!",
"newTicketDmTitle":"Nuovo ticket!", "closedTicketDmTitle":"Ticket chiuso!",
"closedTicketDmTitle":"Ticket chiuso!", "deletedTicketDmTitle":"Ticket eliminato!",
"deletedTicketDmTitle":"Ticket eliminato!", "closedTicketDmDescription":"Il tuo ticket è chiuso!",
"closedTicketDmDescription":"Il tuo ticket è chiuso!", "deletedTicketDmDescription":"Il tuo ticket è eliminato!",
"deletedTicketDmDescription":"Il tuo ticket è stato eliminato!", "reopenTicketDmTitle":"Ticket ri-aperto!",
"reopenTicketDmTitle":"Ticket riaperto!", "reopenTicketDmDescription":"Il tuo ticket è stato ri-aperto!",
"reopenTicketDmDescription":"Il tuo ticket è stato riaperto!",
"newTranscriptTitle":"Un nuova trascrizione è qui!", "chooseCategory":"scegli una categoria:",
"hereIsTheTranscript":"Qui è la trascrizione:", "gettingdeleted":"Il ticket sta per essere chiuso...",
"chooseCategory":"scegli una categoria:", "none":"nessuno",
"gettingdeleted":"Il ticket sta per essere chiuso...", "reason":"motivo",
"none":"nessuno", "deletedby":"eliminato da",
"reason":"motivo", "closedby":"chiuso da",
"modalreason":"Quale è il motivo per chiudere questo ticket?",
"deletedby":"eliminato da", "chooseATicket": "Scegli un ticket"
"closedby":"chiuso da", },
"modalreason":"Quale'è il motivo per chiudere il ticket?", "transcripts":{
"chooseATicket": "Scegli un ticket" "title":"Trascrizione",
} "processed":"Questo ticket sta per essere processato",
"wait":"Perfavore attendi!",
"estimated":"Tempo estimato",
"available":"La trascrizione è disponibile qui"
}
} }
+19 -14
View File
@@ -15,8 +15,7 @@
"anotherOption":"Esta opção não é um ticket, mas sim outro tipo!", "anotherOption":"Esta opção não é um ticket, mas sim outro tipo!",
"maxAmountTitle":"Quantidade máxima atingida!", "maxAmountTitle":"Quantidade máxima atingida!",
"maxAmountDescription":"Você atingiu o número máximo de tickets permitidos!\nEntão você não pode criar um novo!", "maxAmountDescription":"Você atingiu o número máximo de tickets permitidos!\nEntão você não pode criar um novo!",
"somethingWentWrong":"**Algo deu errado!**\nPor favor, tente novamente outra vez!", "somethingWentWrong":"**Algo deu errado!**\nPor favor, tente novamente outra vez!"
"somethingWentWrongTranscript":"Algo deu errado ao fazer a transcrição!**\nPor favor, tente novamente outra vez!"
}, },
"commands":{ "commands":{
"userAddedTitle":"Adicionado {0} a este ticket!", "userAddedTitle":"Adicionado {0} a este ticket!",
@@ -27,6 +26,7 @@
"reopenTitle":"Reabriu este ticket!", "reopenTitle":"Reabriu este ticket!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"This ticket is now claimed to {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"This ticket isn't claimed anymore!",
"changeTitle":"Changed ticket type to {0}!",
"ticketWarning":"A incorporação está na mensagem abaixo!", "ticketWarning":"A incorporação está na mensagem abaixo!",
"maxTicketWarning":"**Cuidado:** _Você só pode criar {0} ticket(s) de cada vez!!_" "maxTicketWarning":"**Cuidado:** _Você só pode criar {0} ticket(s) de cada vez!!_"
@@ -48,8 +48,7 @@
"close":"Fechar Ticket", "close":"Fechar Ticket",
"delete":"Excluir Ticket", "delete":"Excluir Ticket",
"reopen":"Reabrir Ticket", "reopen":"Reabrir Ticket",
"sendTranscript":"Transcrição", "closeWithReason":"fechado com motivo"
"closeWithReason":"close with reason"
}, },
"messages":{ "messages":{
"reopenTitle":"Reabriu este ticket!", "reopenTitle":"Reabriu este ticket!",
@@ -66,18 +65,24 @@
"deletedTicketDmDescription":"Seu bilhete foi excluído!", "deletedTicketDmDescription":"Seu bilhete foi excluído!",
"reopenTicketDmTitle":"Ticket reaberto!", "reopenTicketDmTitle":"Ticket reaberto!",
"reopenTicketDmDescription":"Seu ticket foi reaberto!", "reopenTicketDmDescription":"Seu ticket foi reaberto!",
"newTranscriptTitle":"Uma nova transcrição está aqui!",
"hereIsTheTranscript":"Aqui está a transcrição:",
"chooseCategory":"Escolha a categoria:", "chooseCategory":"Escolha a categoria:",
"gettingdeleted":"Ticket está sendo deletado...", "gettingdeleted":"Ticket está sendo deletado...",
"none":"none", "none":"vazio",
"reason":"reason", "reason":"motivo",
"deletedby":"deleted by", "deletedby":"deletado por",
"closedby":"closed by", "closedby":"fechado por",
"modalreason":"What is the reason for closing this ticket?", "modalreason":"Qual o motivo de fechar o ticket?",
"chooseATicket": "Choose a ticket"
"chooseATicket": "Fechar Ticket"
},
"transcripts":{
"title":"Transcrever",
"processed":"A Transcrição está em andamento",
"wait":"Por favor espere!",
"estimated":"Tempo estimado",
"available":"A Transcrição está disponível aqui"
} }
} }
+10 -6
View File
@@ -15,8 +15,7 @@
"anotherOption":"Aceasta optiune este altceva decat un tip de ticket!", "anotherOption":"Aceasta optiune este altceva decat un tip de ticket!",
"maxAmountTitle":"Limita atinsa!", "maxAmountTitle":"Limita atinsa!",
"maxAmountDescription":"Ai atins limita de tickets!\nAsa ca nu mai poti creea altele noi!", "maxAmountDescription":"Ai atins limita de tickets!\nAsa ca nu mai poti creea altele noi!",
"somethingWentWrong":"**Ceva nu a mers bine!**\nTe rugam sa incerci mai tarziu!", "somethingWentWrong":"**Ceva nu a mers bine!**\nTe rugam sa incerci mai tarziu!"
"somethingWentWrongTranscript":"Ceva nu aa mers bine in timpul creeari transcript-ului!**\nTe rugam sa incerci mai tarziu!"
}, },
"commands":{ "commands":{
"userAddedTitle":"{0} a fost adaugat in acest ticket!", "userAddedTitle":"{0} a fost adaugat in acest ticket!",
@@ -27,6 +26,7 @@
"reopenTitle":"Ticket Re-deschis!", "reopenTitle":"Ticket Re-deschis!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"This ticket is now claimed to {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"This ticket isn't claimed anymore!",
"changeTitle":"Changed ticket type to {0}!",
"ticketWarning":"Embed-ul se afla in mesajul de mai jos!", "ticketWarning":"Embed-ul se afla in mesajul de mai jos!",
"maxTicketWarning":"**Avertizare:** _Poti creea doar {0} tickete active!_" "maxTicketWarning":"**Avertizare:** _Poti creea doar {0} tickete active!_"
@@ -48,7 +48,6 @@
"close":"Inchide ticket-ul", "close":"Inchide ticket-ul",
"delete":"Sterge ticket-ul", "delete":"Sterge ticket-ul",
"reopen":"Re-deschide un ticket", "reopen":"Re-deschide un ticket",
"sendTranscript":"Transcript",
"closeWithReason":"Inchide cu motiv" "closeWithReason":"Inchide cu motiv"
}, },
"messages":{ "messages":{
@@ -66,8 +65,6 @@
"deletedTicketDmDescription":"Ticket-ul tau este sters!", "deletedTicketDmDescription":"Ticket-ul tau este sters!",
"reopenTicketDmTitle":"Ticket Re-deschis!", "reopenTicketDmTitle":"Ticket Re-deschis!",
"reopenTicketDmDescription":"Ticket-ul tau este re-deschis!", "reopenTicketDmDescription":"Ticket-ul tau este re-deschis!",
"newTranscriptTitle":"Un nou transcript este aici!",
"hereIsTheTranscript":"Aici este transcriptul:",
"chooseCategory":"Alege o categorie:", "chooseCategory":"Alege o categorie:",
"gettingdeleted":"Ticket-ul se sterge...", "gettingdeleted":"Ticket-ul se sterge...",
@@ -79,5 +76,12 @@
"closedby":"Inchis de", "closedby":"Inchis de",
"modalreason":"Care este motivul pentru inchiderea acestui ticket?", "modalreason":"Care este motivul pentru inchiderea acestui ticket?",
"chooseATicket": "Alege un ticket" "chooseATicket": "Alege un ticket"
},
"transcripts":{
"title":"Transcript",
"processed":"Transcript in curs de procesare...",
"wait":"Te rugam sa astepti!",
"estimated":"Timp estimat",
"available":"Transcriptul este disponibil aici"
} }
} }
+87
View File
@@ -0,0 +1,87 @@
{
"errors":{
"missingArgsTitle":"Неверные аргументы!",
"missingArgsDescription":"Отсутствует аргумент",
"noPermsTitle":"Недостаточно прав!",
"noPermsDescription":"Вы должны иметь права `ADMINISTRATOR` или быть в списке разрешённых ролей!",
"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}!",
"ticketWarning":"embed ниже сообщения!",
"maxTicketWarning":"**Предупреждение:** _Вы можете создать только {0} тикет(а/ов) в этот раз!_"
},
"helpMenu":{
"title":"Доступные команды:",
"header1":"**Перейдите в {0}, чтобы создать тикет!**\n\n",
"header2":"**Выполните команду `/new` или `/ticket` для создания тикета!**\n\n",
"msgCmd":"Создать embed с кнопками. (только админам)",
"renameCmd":"Переименовать тикет. (без пробелов)",
"closeCmd":"Закрыть тикет.",
"deleteCmd":"Удалить тикет.",
"addCmd":"Добавить пользователя в тикет.",
"removeCmd":"Удалить пользователя из тикета.",
"reopenCmd":"Открыть заново тикет после того, как он был закрыт."
},
"buttons":{
"close":"Закрыть тикет",
"delete":"Удалить тикет",
"reopen":"Открыть заново тикет",
"closeWithReason":"закрыть с причиной"
},
"messages":{
"reopenTitle":"Открыл заново этот тикет!",
"reopenDescription":"Не стесняйтесь обращаться снова!",
"closedTitle":"Закрыл этот тикет!",
"closedDescription":"Только админы теперь могут писать в этом тикете!\n\n*Нажмите на кнопку ниже, чтобы удалить или заново окрыть тикет!*",
"createdTitle":"Тикет создан!",
"createdDescription":"Ваш тикет создан, вы можете обнаружить его по пингу!",
"newTicketDmTitle":"Новый тикет!",
"closedTicketDmTitle":"Тикет закрыт!",
"deletedTicketDmTitle":"Тикет удалён!",
"closedTicketDmDescription":"Ваш тикет закрыт!",
"deletedTicketDmDescription":"Ваш тикет удалён!",
"reopenTicketDmTitle":"Тикет открыт заново!",
"reopenTicketDmDescription":"Ваш тикет открыт заново!",
"chooseCategory":"выберите категорию:",
"gettingdeleted":"Тикет будет удалён...",
"none":"отсутствует",
"reason":"причина",
"deletedby":"удалён",
"closedby":"закрыт",
"modalreason":"Какая причина закрытия этого тикета?",
"chooseATicket": "Выберите тикет"
},
"transcripts":{
"title":"Транскрипт",
"processed":"This transcript is being processed",
"wait":"Пожайлуста подождите!",
"estimated":"Оценочное время",
"available":"Транскрипт здесь доступен"
}
}
+25 -12
View File
@@ -9,6 +9,7 @@
"fr":"french", "fr":"french",
"es-ES":"spanish", "es-ES":"spanish",
"it":"italian", "it":"italian",
"ru":"russian",
"MISSING":"arabic,portuguese", "MISSING":"arabic,portuguese",
"NOTAVAILABLE":"arabic,portuguese,czech" "NOTAVAILABLE":"arabic,portuguese,czech"
@@ -23,7 +24,8 @@
"cs":"A list of the available commands", "cs":"A list of the available commands",
"fr":"Une liste des commandes.", "fr":"Une liste des commandes.",
"es-ES":"Una lista de los comandos disponibles.", "es-ES":"Una lista de los comandos disponibles.",
"it":"Una lista di tutti i comandi disponibili." "it":"Una lista di tutti i comandi disponibili.",
"ru":"Список доступных команд"
}, },
"message":{ "message":{
"en-GB":"Spawn an embed with buttons.", "en-GB":"Spawn an embed with buttons.",
@@ -34,7 +36,8 @@
"cs":"Spawn an embed with buttons.", "cs":"Spawn an embed with buttons.",
"fr":"Créer un embed avec des boutons.", "fr":"Créer un embed avec des boutons.",
"es-ES":"Genera un embed con botones.", "es-ES":"Genera un embed con botones.",
"it":"Genera un embed con un pulsante." "it":"Genera un embed con un pulsante.",
"ru":"Создать embed с кнопками"
}, },
"close":{ "close":{
"en-GB":"Close a ticket.", "en-GB":"Close a ticket.",
@@ -45,7 +48,8 @@
"cs":"Close a ticket.", "cs":"Close a ticket.",
"fr":"Fermer un ticket.", "fr":"Fermer un ticket.",
"es-ES":"Cierra un ticket.", "es-ES":"Cierra un ticket.",
"it":"Chiudi un ticket." "it":"Chiudi un ticket.",
"ru":"Закрыть тикет"
}, },
"delete":{ "delete":{
"en-GB":"Delete a ticket.", "en-GB":"Delete a ticket.",
@@ -56,7 +60,8 @@
"cs":"Delete a ticket.", "cs":"Delete a ticket.",
"fr":"Supprimer un ticket.", "fr":"Supprimer un ticket.",
"es-ES":"Elimina un ticket.", "es-ES":"Elimina un ticket.",
"it":"Elimina un ticket." "it":"Elimina un ticket.",
"ru":"Удалить тикет"
}, },
"reopen":{ "reopen":{
"en-GB":"Re-Open a ticket.", "en-GB":"Re-Open a ticket.",
@@ -67,7 +72,8 @@
"cs":"Re-Open a ticket.", "cs":"Re-Open a ticket.",
"fr":"Re-ouvrir un ticket.", "fr":"Re-ouvrir un ticket.",
"es-ES":"Re-abre un ticket.", "es-ES":"Re-abre un ticket.",
"it":"Ri-Apri un ticket." "it":"Ri-Apri un ticket.",
"ru":"Открыть заново тикет"
}, },
"add":{ "add":{
"en-GB":"Add another user to a ticket.", "en-GB":"Add another user to a ticket.",
@@ -78,7 +84,8 @@
"cs":"Add another user to a ticket.", "cs":"Add another user to a ticket.",
"fr":"Ajouter un utilisateur au ticket.", "fr":"Ajouter un utilisateur au ticket.",
"es-ES":"Agrega otro usuario al ticket.", "es-ES":"Agrega otro usuario al ticket.",
"it":"Aggiungi un membro al ticket" "it":"Aggiungi un membro al ticket",
"ru":"Добавить другого пользователя в тикет"
}, },
"remove":{ "remove":{
"en-GB":"Remove a user from a ticket.", "en-GB":"Remove a user from a ticket.",
@@ -89,7 +96,8 @@
"cs":"Remove a user from a ticket.", "cs":"Remove a user from a ticket.",
"fr":"Enlever quelqu’un du ticket.", "fr":"Enlever quelqu’un du ticket.",
"es-ES":"Elimina otro usuario del ticket.", "es-ES":"Elimina otro usuario del ticket.",
"it":"Rimuovi un membro dal ticket" "it":"Rimuovi un membro dal ticket",
"ru":"Удалить пользователя из тикета"
}, },
"newticket":{ "newticket":{
"en-GB":"Create a ticket", "en-GB":"Create a ticket",
@@ -100,7 +108,8 @@
"cs":"Create a ticket", "cs":"Create a ticket",
"fr":"Créer un ticket", "fr":"Créer un ticket",
"es-ES":"Crear un ticket.", "es-ES":"Crear un ticket.",
"it":"Crea un ticket" "it":"Crea un ticket",
"ru":"Создать тикет"
}, },
"rename":{ "rename":{
"en-GB":"Rename a ticket channel.", "en-GB":"Rename a ticket channel.",
@@ -111,7 +120,8 @@
"cs":"Rename a ticket channel", "cs":"Rename a ticket channel",
"fr":"Renommer un ticket.", "fr":"Renommer un ticket.",
"es-ES":"Renombrar un canal de ticket.", "es-ES":"Renombrar un canal de ticket.",
"it":"Rinomina il canale di un ticket." "it":"Rinomina il canale di un ticket.",
"ru":"Переименовать канал тикета"
}, },
"claim":{ "claim":{
"en-GB":"Claim a ticket.", "en-GB":"Claim a ticket.",
@@ -122,7 +132,8 @@
"cs":" ", "cs":" ",
"fr":" ", "fr":" ",
"es-ES":" ", "es-ES":" ",
"it":" " "it":" ",
"ru":"Взять тикет"
}, },
"unclaim":{ "unclaim":{
"en-GB":"Un-claim a ticket.", "en-GB":"Un-claim a ticket.",
@@ -133,7 +144,8 @@
"cs":" ", "cs":" ",
"fr":" ", "fr":" ",
"es-ES":" ", "es-ES":" ",
"it":" " "it":" ",
"ru":"Снять тикет"
}, },
"category":{ "category":{
"en-GB":"Change ticket type.", "en-GB":"Change ticket type.",
@@ -144,7 +156,8 @@
"cs":" ", "cs":" ",
"fr":" ", "fr":" ",
"es-ES":" ", "es-ES":" ",
"it":" " "it":" ",
"ru":"Изменить тип тикета"
} }
} }
} }
+86 -82
View File
@@ -1,83 +1,87 @@
{ {
"errors":{ "errors":{
"missingArgsTitle":"¡Argumentos inválidos!", "missingArgsTitle":"¡Argumentos inválidos!",
"missingArgsDescription":"Argumento faltante.", "missingArgsDescription":"Argumento faltante.",
"noPermsTitle":"¡Sin permisos!", "noPermsTitle":"¡Sin permisos!",
"noPermsDescription":"Necesitas el permiso de `ADMINISTRADOR` o estar en la lista de roles permitidos!", "noPermsDescription":"Necesitas el permiso de `ADMINISTRADOR` o estar en la lista de roles permitidos!",
"noPermsDelete":"Solo los administradores pueden eliminar un ticket.!", "noPermsDelete":"Solo los administradores pueden eliminar un ticket.!",
"chooseFromListTitle":"ID Invalida", "chooseFromListTitle":"ID Invalida",
"chooseFromListDescription":"Elije una de las ID de abajo:", "chooseFromListDescription":"Elije una de las ID de abajo:",
"boterror":"¡Error del bot!", "boterror":"¡Error del bot!",
"notInTicketTitle":"¡No te encuentras en un ticket!", "notInTicketTitle":"¡No te encuentras en un ticket!",
"notInTicketDescription":"¡Este comando no funciona fuera de los tickets!", "notInTicketDescription":"¡Este comando no funciona fuera de los tickets!",
"ticketDoesntExist":"¡Este ticket no existe!", "ticketDoesntExist":"¡Este ticket no existe!",
"roleDoesntExist":"¡Este rol no existe!", "roleDoesntExist":"¡Este rol no existe!",
"anotherOption":"¡Esta opción no es un ticket, si no otra cosa!", "anotherOption":"¡Esta opción no es un ticket, si no otra cosa!",
"maxAmountTitle":"¡Máxima cantidad alcanzada!", "maxAmountTitle":"¡Máxima cantidad alcanzada!",
"maxAmountDescription":"¡Has alcanzado la máxima cantidad de tickets permitida!\n¡Por lo que no puedes crear otro!", "maxAmountDescription":"¡Has alcanzado la máxima cantidad de tickets permitida!\n¡Por lo que no puedes crear otro!",
"somethingWentWrong":"**¡Algo salió mal!**\n¡Prueba dentro de un rato!", "somethingWentWrong":"**¡Algo salió mal!**\n¡Prueba dentro de un rato!"
"somethingWentWrongTranscript":"**¡Algo salió mal al hacer el transcript!**\n¡Prueba en otro momento!" },
}, "commands":{
"commands":{ "userAddedTitle":"Se agregó {0} al ticket!",
"userAddedTitle":"Se agregó {0} al ticket!", "userRemovedTitle":"Se eliminó {0} del ticket!",
"userRemovedTitle":"Se eliminó {0} del ticket!", "renameTitle":"Cambió el nombre a {0}!",
"renameTitle":"Cambió el nombre a {0}!", "closeTitle":"Cerró este ticket!",
"closeTitle":"Cerró este ticket!", "deleteTitle":"Eliminando este ticket...",
"deleteTitle":"Eliminando este ticket...", "reopenTitle":"Re-abrió este boleto!",
"reopenTitle":"Re-abrió este boleto!", "claimTitle":"Este ticket será atendido por {0}",
"claimTitle":"This ticket is now claimed to {0}", "unclaimTitle":"¡Este ticket ya no está reservado!",
"unclaimTitle":"This ticket isn't claimed anymore!", "changeTitle":"¡Cambiando el tipo de ticket a {0}!",
"ticketWarning":"La inserción está en el mensaje a continuación!", "ticketWarning":"La inserción está en el mensaje a continuación!",
"maxTicketWarning":"**Advertencia:** _Solo puedes crear {0} ticket(s) a la vez!_" "maxTicketWarning":"**Advertencia:** _Solo puedes crear {0} ticket(s) a la vez!_"
}, },
"helpMenu":{ "helpMenu":{
"title":"Comandos disponibles:", "title":"Comandos disponibles:",
"header1":"**¡Dirígete a {0} para crear un nuevo ticket!**\n\n", "header1":"**¡Dirígete a {0} para crear un nuevo ticket!**\n\n",
"header2":"**¡Ejecuta el comando `/new` o `/ticket` para crear un ticket!**\n\n", "header2":"**¡Ejecuta el comando `/new` o `/ticket` para crear un ticket!**\n\n",
"msgCmd":"Generar un embed con botones. (Solo admins)", "msgCmd":"Generar un embed con botones. (Solo admins)",
"renameCmd":"Renombrar un ticket. (Sin espacios)", "renameCmd":"Renombrar un ticket. (Sin espacios)",
"closeCmd":"Cerrar un ticket.", "closeCmd":"Cerrar un ticket.",
"deleteCmd":"Eliminar un ticket.", "deleteCmd":"Eliminar un ticket.",
"addCmd":"Agregar un usuario al ticket.", "addCmd":"Agregar un usuario al ticket.",
"removeCmd":"Eliminar un usuario del ticket.", "removeCmd":"Eliminar un usuario del ticket.",
"reopenCmd":"Re-Abre un ticket después de que este se vea cerrado." "reopenCmd":"Re-Abre un ticket después de que este se vea cerrado."
}, },
"buttons":{ "buttons":{
"close":"Cerrar ticket.", "close":"Cerrar ticket.",
"delete":"Eliminar ticket", "delete":"Eliminar ticket",
"reopen":"Re-Abrir ticket", "reopen":"Re-Abrir ticket",
"sendTranscript":"Obtener transcript.", "closeWithReason":"cerrar con razón"
"closeWithReason":"cerrar con razón" },
}, "messages":{
"messages":{ "reopenTitle":"¡Ticket Re-Abierto!",
"reopenTitle":"¡Ticket Re-Abierto!", "reopenDescription":"¡Siéntete libre de hablar de nuevo!",
"reopenDescription":"¡Siéntete libre de hablar de nuevo!", "closedTitle":"¡Ticket cerrado!",
"closedTitle":"¡Ticket cerrado!", "closedDescription":"¡Solo admins pueden hablar ahora en este ticket!\n\n*¡Presiona en el botón de abajo para eliminar o re-abrir el ticket!*",
"closedDescription":"¡Solo admins pueden hablar ahora en este ticket!\n\n*¡Presiona en el botón de abajo para eliminar o re-abrir el ticket!*", "createdTitle":"¡Ticket creado!",
"createdTitle":"¡Ticket creado!", "createdDescription":"¡Ticket creado, también te he mencionado en él!",
"createdDescription":"¡Ticket creado, también te he mencionado en él!",
"newTicketDmTitle":"¡Nuevo ticket!",
"newTicketDmTitle":"¡Nuevo ticket!", "closedTicketDmTitle":"¡Ticket cerrado!",
"closedTicketDmTitle":"¡Ticket cerrado!", "deletedTicketDmTitle":"¡Ticket eliminado!",
"deletedTicketDmTitle":"¡Ticket eliminado!", "closedTicketDmDescription":"¡Tu ticket fué cerrado!",
"closedTicketDmDescription":"¡Tu ticket fué cerrado!", "deletedTicketDmDescription":"¡Tu ticket fué eliminado!",
"deletedTicketDmDescription":"¡Tu ticket fué eliminado!", "reopenTicketDmTitle":"¡Ticket re-abierto!",
"reopenTicketDmTitle":"¡Ticket re-abierto!", "reopenTicketDmDescription":"¡Tu ticket se vió abierto de nuevo!",
"reopenTicketDmDescription":"¡Tu ticket se vió abierto de nuevo!",
"newTranscriptTitle":"¡Un nuevo transcript está aquí!", "chooseCategory":"Elije una categoría:",
"hereIsTheTranscript":"Aquí está el transcript:", "gettingdeleted":"El ticket se está viendo eliminado...",
"chooseCategory":"Elije una categoría:", "none":"Ninguna.",
"gettingdeleted":"El ticket se está viendo eliminado...", "reason":"Razón",
"none":"Ninguna.", "deletedby":"eliminado por",
"reason":"Razón", "closedby":"cerrado por",
"modalreason":"Cúal es la razón para cerrar este ticket?",
"deletedby":"eliminado por", "chooseATicket": "Elije un ticket"
"closedby":"cerrado por", },
"modalreason":"Cúal es la razón para cerrar este ticket?", "transcripts":{
"chooseATicket": "Elije un ticket" "title":"Transcripción",
} "processed":"La transcripción del ticket está siendo procesada...",
"wait":"¡Por favor, espere!",
"estimated":"Tiempo estimado",
"available":"La transcripción estará disponible aquí"
}
} }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "open-ticket", "name": "open-ticket",
"version": "3.2.0", "version": "3.2.2",
"description": "This is an open-source discord ticket bot, you can configure it and it comes with cool features like a transcript.", "description": "This is an open-source discord ticket bot, you can configure it and it comes with cool features like a transcript.",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
+1
View File
@@ -2,6 +2,7 @@
"sendTranscripts":{ "sendTranscripts":{
"enableChannel":false, "enableChannel":false,
"channel":"transcript channel id", "channel":"transcript channel id",
"useHTMLtranscripts":true,
"enableDM":false "enableDM":false
}, },