v3.3 push 7 (added autoclose)

This commit is contained in:
DJj123dj
2023-03-19 12:29:24 +01:00
parent 1159af9fa9
commit 4dced819a3
21 changed files with 179 additions and 41 deletions
+2 -2
View File
@@ -44,7 +44,7 @@ module.exports = () => {
} }
}) })
require("../core/ticketActions/ticketCloser").NEWcloseTicket(msg.member,msg.channel,prefix,"close",reason,true) require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"close",reason,true)
log("command","someone used the 'close' command",[{key:"user",value:msg.author.tag}]) log("command","someone used the 'close' command",[{key:"user",value:msg.author.tag}])
APIEvents.onCommand("close",true,msg.author,msg.channel,msg.guild,new Date()) APIEvents.onCommand("close",true,msg.author,msg.channel,msg.guild,new Date())
@@ -84,7 +84,7 @@ module.exports = () => {
} }
}) })
require("../core/ticketActions/ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"close",false,true) require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"close",false,true)
log("command","someone used the 'close' command",[{key:"user",value:interaction.user.tag}]) log("command","someone used the 'close' command",[{key:"user",value:interaction.user.tag}])
APIEvents.onCommand("close",true,interaction.user,interaction.channel,interaction.guild,new Date()) APIEvents.onCommand("close",true,interaction.user,interaction.channel,interaction.guild,new Date())
+2 -2
View File
@@ -38,7 +38,7 @@ module.exports = () => {
} }
}) })
require("../core/ticketActions/ticketCloser").NEWcloseTicket(msg.member,msg.channel,prefix,"delete",false,true) require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"delete",false,true)
log("command","someone used the 'delete' command",[{key:"user",value:msg.author.tag}]) log("command","someone used the 'delete' command",[{key:"user",value:msg.author.tag}])
APIEvents.onCommand("delete",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) APIEvents.onCommand("delete",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
@@ -76,7 +76,7 @@ module.exports = () => {
} }
}) })
require("../core/ticketActions/ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"delete",false,true) require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"delete",false,true)
log("command","someone used the 'delete' command",[{key:"user",value:interaction.user.tag}]) log("command","someone used the 'delete' command",[{key:"user",value:interaction.user.tag}])
APIEvents.onCommand("delete",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date()) APIEvents.onCommand("delete",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
+17 -4
View File
@@ -38,9 +38,16 @@ module.exports = () => {
storage.set("claimData",interaction.channel.id,"false") storage.set("claimData",interaction.channel.id,"false")
const newEmbed = new embed(firstmsg.embeds[0].data) const newEmbed = new embed(firstmsg.embeds[0].data)
.setFooter(null)
.setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data)) .setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data))
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
if (ticketData && ticketData.autoclose.enable){
const footerText = l.commands.autocloseTitle.replace("{0}",ticketData.autoclose.inactiveHours+"h")
newEmbed.setFooter({text:footerText})
}else{
newEmbed.setFooter(null)
}
if (!firstmsg.components[0].components[1].disabled){ if (!firstmsg.components[0].components[1].disabled){
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]}) firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]})
@@ -53,7 +60,7 @@ module.exports = () => {
log("command","someone used the 'unclaim' command",[{key:"user",value:msg.author.tag}]) log("command","someone used the 'unclaim' command",[{key:"user",value:msg.author.tag}])
log("system","user unclaimed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"unclaimed_user",value:unclaimuser}]) log("system","user unclaimed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"unclaimed_user",value:unclaimuser}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketUnclaim(msg.author,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData}) APIEvents.onTicketUnclaim(msg.author,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("unclaim",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date()) APIEvents.onCommand("unclaim",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
}) })
@@ -87,9 +94,16 @@ module.exports = () => {
storage.set("claimData",interaction.channel.id,"false") storage.set("claimData",interaction.channel.id,"false")
const newEmbed = new embed(firstmsg.embeds[0].data) const newEmbed = new embed(firstmsg.embeds[0].data)
.setFooter(null)
.setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data)) .setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data))
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
if (ticketData && ticketData.autoclose.enable){
const footerText = l.commands.autocloseTitle.replace("{0}",ticketData.autoclose.inactiveHours+"h")
newEmbed.setFooter({text:footerText})
}else{
newEmbed.setFooter(null)
}
if (!firstmsg.components[0].components[1].disabled){ if (!firstmsg.components[0].components[1].disabled){
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]}) firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal],embeds:[newEmbed]})
@@ -102,7 +116,6 @@ module.exports = () => {
log("command","someone used the 'unclaim' command",[{key:"user",value:interaction.user.tag}]) log("command","someone used the 'unclaim' command",[{key:"user",value:interaction.user.tag}])
log("system","user unclaimed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"unclaimed_user",value:unclaimuser}]) log("system","user unclaimed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"unclaimed_user",value:unclaimuser}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketUnclaim(interaction.user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData}) APIEvents.onTicketUnclaim(interaction.user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("unclaim",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date()) APIEvents.onCommand("unclaim",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
}) })
+5
View File
@@ -58,6 +58,11 @@
"closedCategory":{ "closedCategory":{
"enable":false, "enable":false,
"id":"category id" "id":"category id"
},
"autoclose":{
"enable":false,
"inactiveHours":24
} }
}, },
+8
View File
@@ -261,6 +261,14 @@ exports.checker = async () => {
createError("'"+path+"/closedCategory' | there is no closedCategory object!") createError("'"+path+"/closedCategory' | there is no closedCategory object!")
} }
//autoclose
if (option.autoclose){
checkType(option.autoclose.enable,"boolean",path/"/autoclose/enable")
checkType(option.autoclose.inactiveHours,"number",path/"/autoclose/id")
}else{
createError("'"+path+"/autoclose' | there is no autoclose object!")
}
}else if (type == "website"){ }else if (type == "website"){
//url //url
checkType(option.url,"string",path+"/url") checkType(option.url,"string",path+"/url")
@@ -47,6 +47,17 @@ exports.get = (category,key) => {
const result = tempresult ? tempresult.value : false const result = tempresult ? tempresult.value : false
return result return result
} }
/**
* @param {String} category
* @returns {[{key:String,value:String}]|false}
*/
exports.getCategory = (category) => {
const currentData = getData()
const result = currentData.filter((v) => v.category == category)
return result
}
/** /**
* @param {String} category * @param {String} category
* @param {String} key * @param {String} key
+10
View File
@@ -1,3 +1,13 @@
/**
==================================================================
ALL DATABASE FILES NEED TO EXPORT THE FOLLOWING FUNCTIONS:
- get(category:String,key:String) => String (value)
- set(category:String,key:String,value:String) => Boolean (success)
- delete(category:String,key:String) => Boolean (success)
- getCategory(category:String) => Array[{key:String,value:String}] (key,value)
==================================================================
*/
try { try {
var db = require("./dynamicfiles/database") var db = require("./dynamicfiles/database")
}catch(err){ }catch(err){
@@ -53,6 +53,21 @@ exports.closeEmbed = (closer,description) => {
return embd return embd
} }
/**
*
* @param {discord.User} closer
* @param {Number} time
* @returns {discord.EmbedBuilder}
*/
exports.autocloseSignalEmbed = (closer,time) => {
const embd = new embed()
.setTitle("⏰ This ticket got closed by Autoclose!")
.setColor(mc)
.setFooter({text:closer.tag,iconURL:closer.displayAvatarURL()})
.setDescription("This ticket has been inactive for `"+time+"h`!")
return embd
}
/** /**
* *
* @param {discord.User} deleter * @param {discord.User} deleter
@@ -43,7 +43,6 @@ module.exports = () => {
} }
if (interaction.message.pinned && interaction.message.author.id == client.user.id){ if (interaction.message.pinned && interaction.message.author.id == client.user.id){
const claimdata = storage.get("claimData",interaction.channel.id) const claimdata = storage.get("claimData",interaction.channel.id)
console.log(claimdata)
if (claimdata && claimdata != "false"){ if (claimdata && claimdata != "false"){
interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim]}) interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim]})
}else{ }else{
@@ -67,7 +66,7 @@ module.exports = () => {
}) })
interaction.channel.send({embeds:[bot.embeds.commands.closeEmbed(interaction.user)],components:[bot.buttons.close.closeCommandRow]}) interaction.channel.send({embeds:[bot.embeds.commands.closeEmbed(interaction.user)],components:[bot.buttons.close.closeCommandRow]})
await require("../../../ticketActions/ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"close",false,true) await require("../../../ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"close",false,true)
closeTicketButtonChecker = false closeTicketButtonChecker = false
}) })
} }
@@ -93,7 +93,7 @@ module.exports = () => {
}) })
//interaction.channel.send({embeds:[bot.embeds.commands.closeEmbed(interaction.user)],components:[bot.buttons.close.closeCommandRow]}) //interaction.channel.send({embeds:[bot.embeds.commands.closeEmbed(interaction.user)],components:[bot.buttons.close.closeCommandRow]})
await require("../../../ticketActions/ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"close",reason,true) await require("../../../ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"close",reason,true)
closeTicketButtonChecker = false closeTicketButtonChecker = false
}) })
} }
@@ -52,7 +52,7 @@ module.exports = () => {
await interaction.message.edit({components:[bot.buttons.close.openRowDisabled]}) await interaction.message.edit({components:[bot.buttons.close.openRowDisabled]})
await interaction.channel.send({embeds:[bot.embeds.commands.deleteEmbed(interaction.user)]}) await interaction.channel.send({embeds:[bot.embeds.commands.deleteEmbed(interaction.user)]})
await require("../../../ticketActions/ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"delete",false,true) await require("../../../ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"delete",false,true)
deleteTicketButtonChecker = false deleteTicketButtonChecker = false
}) })
@@ -92,7 +92,7 @@ module.exports = () => {
await interaction.message.edit({components:[bot.buttons.close.closeCommandRowDisabled]}) await interaction.message.edit({components:[bot.buttons.close.closeCommandRowDisabled]})
await interaction.channel.send({embeds:[bot.embeds.commands.deleteEmbed(interaction.user)]}) await interaction.channel.send({embeds:[bot.embeds.commands.deleteEmbed(interaction.user)]})
await require("../../../ticketActions/ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"delete",false,true) await require("../../../ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"delete",false,true)
deleteTicketButtonChecker1 = false deleteTicketButtonChecker1 = false
}) })
@@ -33,7 +33,17 @@ module.exports = () => {
try { try {
interaction.deferUpdate() interaction.deferUpdate()
} catch{} } catch{}
if (interaction.message.pinned && interaction.message.author.id == client.user.id){
const claimdata = storage.get("claimData",interaction.channel.id)
if (claimdata && claimdata != "false"){
interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim]})
}else{
interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal]})
}
}else{
interaction.message.edit({components:[bot.buttons.close.openRowNormal]}) interaction.message.edit({components:[bot.buttons.close.openRowNormal]})
}
}) })
//DELETE //DELETE
@@ -54,7 +64,17 @@ module.exports = () => {
try { try {
interaction.deferUpdate() interaction.deferUpdate()
} catch{} } catch{}
if (interaction.message.pinned && interaction.message.author.id == client.user.id){
const claimdata = storage.get("claimData",interaction.channel.id)
if (claimdata && claimdata != "false"){
interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim]})
}else{
interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowNormal]})
}
}else{
interaction.message.edit({components:[bot.buttons.close.openRowNormal]}) interaction.message.edit({components:[bot.buttons.close.openRowNormal]})
}
}) })
//DELETE NO TRANSCRIPT //DELETE NO TRANSCRIPT
+48
View File
@@ -0,0 +1,48 @@
const discord = require('discord.js')
const bot = require('../../index')
const client = bot.client
const config = bot.config
const log = bot.errorLog.log
const l = bot.language
const storage = bot.storage
module.exports = () => {
setInterval(async () => {
const tickets = storage.getCategory("autocloseTickets")
if (!tickets) return
tickets.forEach(async (t) => {
if (t.value == "false" || t.value == 0 || typeof t.value != "number") return
const channel = await client.channels.fetch(t.key,{cache:true})
if (!channel || !channel.isTextBased()) return
const message = (await channel.messages.fetch({limit:10})).first()
if (!message) return
const secondsSLM = Math.round((new Date().getTime() - message.createdTimestamp)/1000)
const hoursSLM = secondsSLM/3600
if (hoursSLM > t.value){
/**@type {discord.Guild|false} */
const guild = client.guilds.cache.find((g) => g.id == channel.guild.id)
if (!guild) return
const clientMember = guild.members.cache.find((m) => m.id == client.user.id)
if (!clientMember) return
var name = channel.name
var prefix = ""
const tickets = config.options
tickets.forEach((ticket) => {
if (name.startsWith(ticket.channelprefix)){
prefix = ticket.channelprefix
}
})
require("./ticketCloser").closeManager(clientMember,channel,prefix,"close","OTautoclose",true)
storage.delete("autocloseTickets",channel.id)
channel.send({embeds:[bot.embeds.commands.autocloseSignalEmbed(client.user,t.value)],components:[bot.buttons.close.closeCommandRow]})
}
})
},2000)
}
+3 -1
View File
@@ -18,7 +18,7 @@ const pendingDelete = []
* @param {Boolean} nomessage * @param {Boolean} nomessage
* @param {String} reason only when closing, not when deleting! * @param {String} reason only when closing, not when deleting!
*/ */
exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) => { exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
const guild = channel.guild const guild = channel.guild
const user = member.user const user = member.user
const chalk = await (await import("chalk")).default const chalk = await (await import("chalk")).default
@@ -69,6 +69,8 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) =>
if (!isDatabaseError) storage.set("amountOfUserTickets",getuserID,Number(storage.get("amountOfUserTickets",getuserID)) - 1) if (!isDatabaseError) storage.set("amountOfUserTickets",getuserID,Number(storage.get("amountOfUserTickets",getuserID)) - 1)
storage.delete("userFromChannel",channel.id) storage.delete("userFromChannel",channel.id)
storage.delete("claimData",channel.id) storage.delete("claimData",channel.id)
storage.delete("autocloseTickets",channel.id)
if (Number(storage.get("amountOfUserTickets",getuserID)) < 0) storage.set("amountOfUserTickets",getuserID,0)
//getID & send DM & send api event //getID & send DM & send api event
await channel.messages.fetchPinned().then(async msglist => { await channel.messages.fetchPinned().then(async msglist => {
+9 -3
View File
@@ -53,13 +53,13 @@ module.exports = () => {
if (interaction.isButton()){ if (interaction.isButton()){
try { try {
if (config.system.answerInEphemeralOnOpen) interaction.deferReply({ephemeral:true}) if (config.system.answerInEphemeralOnOpen) await interaction.deferReply({ephemeral:true})
} catch{} } catch{}
}else if (interaction.isChatInputCommand()){ }else if (interaction.isChatInputCommand()){
interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen}) await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen})
}else if (interaction.isStringSelectMenu()){ }else if (interaction.isStringSelectMenu()){
try { try {
interaction.deferUpdate() await interaction.deferUpdate()
} catch{} } catch{}
} }
@@ -163,6 +163,7 @@ module.exports = () => {
}).then((ticketChannel) => { }).then((ticketChannel) => {
storage.set("userFromChannel",ticketChannel.id,interaction.member.id) storage.set("userFromChannel",ticketChannel.id,interaction.member.id)
if (currentTicketOptions.autoclose.enable) storage.set("autocloseTickets",ticketChannel.id,currentTicketOptions.autoclose.inactiveHours)
const hiddendata = bot.hiddenData.writeHiddenData("ticketdata",[{key:"type",value:currentTicketOptions.id},{key:"openerid",value:interaction.user.id},{key:"createdms",value:new Date().getTime()}]) const hiddendata = bot.hiddenData.writeHiddenData("ticketdata",[{key:"type",value:currentTicketOptions.id},{key:"openerid",value:interaction.user.id},{key:"createdms",value:new Date().getTime()}])
@@ -171,6 +172,11 @@ module.exports = () => {
.setColor(config.color) .setColor(config.color)
.setTitle(currentTicketOptions.name) .setTitle(currentTicketOptions.name)
//.setFooter({text:"Ticket Type: "+currentTicketOptions.id}) //.setFooter({text:"Ticket Type: "+currentTicketOptions.id})
if (currentTicketOptions.autoclose.enable){
const footerText = l.commands.autocloseTitle.replace("{0}",currentTicketOptions.autoclose.inactiveHours+"h")
ticketEmbed.setFooter({text:footerText})
}
if (currentTicketOptions.ticketmessage.length > 0){ if (currentTicketOptions.ticketmessage.length > 0){
ticketEmbed.setDescription(currentTicketOptions.ticketmessage+hiddendata) ticketEmbed.setDescription(currentTicketOptions.ticketmessage+hiddendata)
}else{ }else{
+3 -3
View File
@@ -30,11 +30,11 @@ exports.createTranscript = async (messagecollection,channel,backup) => {
if (msg.content){ if (msg.content){
var content = msg.content var content = msg.content
}else if (msg.embeds.length > 0 && msg.attachments.length > 0){ }else if (msg.embeds.length > 0 && msg.attachments.length > 0){
var content = "*this message only has embeds & files**" var content = "*this message only has embeds & files*"
}else if (msg.embeds.length > 0){ }else if (msg.embeds.length > 0){
var content = "*this message only has embeds**" var content = "*this message only has embeds*"
}else if (msg.attachments.length > 0){ }else if (msg.attachments.length > 0){
var content = "*this message only has files**" var content = "*this message only has files*"
}else{ }else{
var content = "*empty message*" var content = "*empty message*"
} }
+2 -2
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}, image:{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}, autoclose:{enable:Boolean,inactiveHours:Number} }} 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 */
@@ -19,7 +19,7 @@ const l = bot.language
/**@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 //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 */ /**@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}, autoclose:{enable:Boolean,inactiveHours:Number}}} OTAllOptions */
//StringOptions //StringOptions
/**@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"|"adminroles"|"channelprefix"|"category"|"message"|"enableDmOnOpen"|"ticketmessage"|"thumbnail"|"image"|"closedCategory"} OTTicketStringOptions */
+1
View File
@@ -300,6 +300,7 @@ if (process.argv[2] && process.argv[2].startsWith("slash")){
//core //core
require('./core/ticketActions/ticketOpener')() require('./core/ticketActions/ticketOpener')()
require("./core/reactionRoles")() require("./core/reactionRoles")()
require("./core/ticketActions/ticketAutoclose")()
this.errorLog.log("debug","LOADING INTERACTION HANDLERS") this.errorLog.log("debug","LOADING INTERACTION HANDLERS")
//InteractionHandlers //InteractionHandlers
+1 -1
View File
@@ -25,7 +25,7 @@
"deleteTitle":"Deleting this ticket...", "deleteTitle":"Deleting this ticket...",
"reopenTitle":"Re-Opened this ticket!", "reopenTitle":"Re-Opened this ticket!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"This ticket is claimed to {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"This ticket isn't claimed anymore!",
"changeTitle":"Changed ticket type to {0}!", "changeTitle":"Changed ticket type to {0}!",
+1 -1
View File
@@ -25,7 +25,7 @@
"deleteTitle":"Deleting this ticket...", "deleteTitle":"Deleting this ticket...",
"reopenTitle":"Re-Opened this ticket!", "reopenTitle":"Re-Opened this ticket!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"This ticket is claimed to {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"This ticket isn't claimed anymore!",
"changeTitle":"Changed ticket type to {0}!", "changeTitle":"Changed ticket type to {0}!",
+15 -15
View File
@@ -25,16 +25,16 @@
"deleteTitle":"Suppression de ce ticket...", "deleteTitle":"Suppression de ce ticket...",
"reopenTitle":"A rouvert ce ticket!", "reopenTitle":"A rouvert ce ticket!",
"claimTitle":"This ticket is now claimed to {0}", "claimTitle":"Ce ticket est maintenant réclamé à {0}",
"unclaimTitle":"This ticket isn't claimed anymore!", "unclaimTitle":"Ce ticket n'est pas réclamé!",
"changeTitle":"Changed ticket type to {0}!", "changeTitle":"Modification du type de ticket en {0}!",
"statsTitle":"Here are the stats for {0}!", "statsTitle":"Voici les statistiques pour {0}!",
"autocloseTitle":"This ticket will be closed automatically after {0}!", "autocloseTitle":"Ce ticket sera automatiquement clôturé après {0}!",
"autocloseRejectTitle":"This ticket will no longer be closed automatically!", "autocloseRejectTitle":"Ce ticket ne sera plus clôturé automatiquement!",
"autocloseWarn":"This only affects inactive tickets!", "autocloseWarn":"Cela n'affecte que les tickets inactifs!",
"goToTicket":"go to ticket", "goToTicket":"Aller au ticket",
"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 !_"
}, },
@@ -50,11 +50,11 @@
"addCmd":"Ajouter un utilisateur au ticket.", "addCmd":"Ajouter un utilisateur au ticket.",
"removeCmd":"Supprimer un utilisateur du ticket.", "removeCmd":"Supprimer un utilisateur du ticket.",
"reopenCmd":"Rouvrir un ticket après sa clôture.", "reopenCmd":"Rouvrir un ticket après sa clôture.",
"changeCmd":"Change ticket type.", "changeCmd":"Changer le type de ticket.",
"claimCmd":"Claim a ticket.", "claimCmd":"Réclamer un billet",
"unclaimCmd":"Unclaim a ticket.", "unclaimCmd":"Annuler la réclamation d'un ticket.",
"statsCmd":"View ticket stats.", "statsCmd":"Afficher les statistiques des tickets.",
"autocloseCmd":"Set timer to automatically close ticket" "autocloseCmd":"Définir une minuterie pour fermer automatiquement le ticket"
}, },
"buttons":{ "buttons":{
"close":"Fermer le ticket", "close":"Fermer le ticket",
@@ -80,8 +80,8 @@
"none":"rien", "none":"rien",
"reason":"raison", "reason":"raison",
"createdat":"created at", "createdat":"Créé à",
"openedby":"opened by", "openedby":"Ouvert par",
"deletedby":"supprimé par", "deletedby":"supprimé par",
"closedby":"fermé par", "closedby":"fermé par",