BREAKING: changed openticket to opendiscord in API
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import {api, openticket, utilities} from "#opendiscord"
|
||||
import {api, opendiscord, utilities} from "#opendiscord"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
/////////////////////////////////////////////
|
||||
@@ -19,7 +19,7 @@ declare module "#opendiscord-types" {
|
||||
}
|
||||
|
||||
//Let's register the example config. This way it's available for all plugins & systems.
|
||||
openticket.events.get("onConfigLoad").listen((configManager) => {
|
||||
opendiscord.events.get("onConfigLoad").listen((configManager) => {
|
||||
configManager.add(new api.ODJsonConfig("example-plugin:config","config.json","./plugins/example-plugin/"))
|
||||
/*===== What did we do? =====
|
||||
- "example-plugin:config" Is the ID of this config. You can use this id troughout the bot to access this config file. Even in other plugins.
|
||||
@@ -29,18 +29,18 @@ openticket.events.get("onConfigLoad").listen((configManager) => {
|
||||
|
||||
//Let's also log it to the console to let us know it worked!
|
||||
const ourConfig = configManager.get("example-plugin:config")
|
||||
openticket.log("The example config loaded successfully!","plugin",[
|
||||
opendiscord.log("The example config loaded successfully!","plugin",[
|
||||
{key:"var-1",value:ourConfig.data.testVariable1},
|
||||
{key:"var-2",value:ourConfig.data.testVariable2.toString()},
|
||||
{key:"var-3",value:ourConfig.data.testVariable3.toString()}
|
||||
])
|
||||
})
|
||||
|
||||
openticket.events.get("onTicketCreate").listen((creator) => {
|
||||
opendiscord.events.get("onTicketCreate").listen((creator) => {
|
||||
//This is logged before the ticket is created (after the button is pressed)
|
||||
openticket.log("Ticket is getting created...","plugin")
|
||||
opendiscord.log("Ticket is getting created...","plugin")
|
||||
})
|
||||
openticket.events.get("afterTicketCreated").listen((ticket,creator,channel) => {
|
||||
opendiscord.events.get("afterTicketCreated").listen((ticket,creator,channel) => {
|
||||
//This is logged after the ticket is created
|
||||
openticket.log("Ticket ready!","plugin")
|
||||
opendiscord.log("Ticket ready!","plugin")
|
||||
})
|
||||
@@ -1,19 +1,19 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET ADD USER SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:add-ticket-user"))
|
||||
openticket.actions.get("openticket:add-ticket-user").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:add-ticket-user"))
|
||||
opendiscord.actions.get("openticket:add-ticket-user").workers.add([
|
||||
new api.ODWorker("openticket:add-ticket-user",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason,data} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to add user to ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketUserAdd").emit([ticket,user,data,channel,reason])
|
||||
await opendiscord.events.get("onTicketUserAdd").emit([ticket,user,data,channel,reason])
|
||||
|
||||
//update ticket
|
||||
ticket.get("openticket:participants").value.push({type:"user",id:data.id})
|
||||
@@ -31,47 +31,47 @@ export const registerActions = async () => {
|
||||
ReadMessageHistory:true
|
||||
})
|
||||
}catch{
|
||||
openticket.log("Failed to add channel permission overwrites on add-ticket-user","error")
|
||||
opendiscord.log("Failed to add channel permission overwrites on add-ticket-user","error")
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket user adding!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket user adding!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value,hidden:true}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:add-message").build(source,{guild,channel,user,ticket,reason,data})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:add-message").build(source,{guild,channel,user,ticket,reason,data})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketUserAdded").emit([ticket,user,data,channel,reason])
|
||||
await opendiscord.events.get("afterTicketUserAdded").emit([ticket,user,data,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason,data} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.adding.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"add",reason,additionalData:data}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"add",reason,additionalData:data}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.adding.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"add",reason,additionalData:data}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.adding.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"add",reason,additionalData:data}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,data} = params
|
||||
|
||||
openticket.log(user.displayName+" added "+data.displayName+" to a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" added "+data.displayName+" to a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -81,7 +81,7 @@ export const registerActions = async () => {
|
||||
])
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:add-ticket-user").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:add-ticket-user").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
|
||||
+65
-65
@@ -1,19 +1,19 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET CLAIMING SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:claim-ticket"))
|
||||
openticket.actions.get("openticket:claim-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:claim-ticket"))
|
||||
opendiscord.actions.get("openticket:claim-ticket").workers.add([
|
||||
new api.ODWorker("openticket:claim-ticket",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to claim ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketClaim").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketClaim").emit([ticket,user,channel,reason])
|
||||
|
||||
//update ticket
|
||||
ticket.get("openticket:claimed").value = true
|
||||
@@ -22,8 +22,8 @@ export const registerActions = async () => {
|
||||
ticket.get("openticket:busy").value = true
|
||||
|
||||
//update stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-claimed",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:tickets-claimed",user.id,1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-claimed",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:tickets-claimed",user.id,1,"increase")
|
||||
|
||||
//update category
|
||||
const rawClaimCategory = ticket.option.get("openticket:channel-categories-claimed").value.find((c) => c.user == user.id)
|
||||
@@ -34,53 +34,53 @@ export const registerActions = async () => {
|
||||
ticket.get("openticket:category-mode").value = "claimed"
|
||||
ticket.get("openticket:category").value = claimCategory
|
||||
}catch(e){
|
||||
openticket.log("Unable to move ticket to 'claimed category'!","error",[
|
||||
opendiscord.log("Unable to move ticket to 'claimed category'!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"categoryid",value:claimCategory}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket claiming!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket claiming!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:claim-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:claim-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketClaimed").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("afterTicketClaimed").emit([ticket,user,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.claiming.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"claim",reason,additionalData:null}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"claim",reason,additionalData:null}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.claiming.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"claim",reason,additionalData:null}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.claiming.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"claim",reason,additionalData:null}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" claimed a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" claimed a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -90,7 +90,7 @@ export const registerActions = async () => {
|
||||
])
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:claim-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:claim-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
@@ -98,37 +98,37 @@ export const registerActions = async () => {
|
||||
|
||||
export const registerVerifyBars = async () => {
|
||||
//CLAIM TICKET TICKET MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:claim-ticket-ticket-message",openticket.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:claim-ticket-ticket-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:claim-ticket-ticket-message",opendiscord.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:claim-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.claim
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -136,86 +136,86 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:claim-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already claimed
|
||||
if (ticket.get("openticket:claimed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start claiming ticket
|
||||
if (params.data == "reason"){
|
||||
//claim with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:claim-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:claim-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//claim without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:claim-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:claim-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:claim-ticket-ticket-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:claim-ticket-ticket-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-ticket-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
|
||||
//CLAIM TICKET UNCLAIM MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:claim-ticket-unclaim-message",openticket.builders.messages.getSafe("openticket:verifybar-unclaim-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:claim-ticket-unclaim-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:claim-ticket-unclaim-message",opendiscord.builders.messages.getSafe("openticket:verifybar-unclaim-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:claim-ticket-unclaim-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.claim
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -223,55 +223,55 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:claim-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already claimed
|
||||
if (ticket.get("openticket:claimed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start claiming ticket
|
||||
if (params.data == "reason"){
|
||||
//claim with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:claim-ticket-reason").build("unclaim-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:claim-ticket-reason").build("unclaim-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//claim without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:claim-ticket").run("unclaim-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:claim-message").build("unclaim-message",{guild,channel,user,ticket,reason:null}))
|
||||
await opendiscord.actions.get("openticket:claim-ticket").run("unclaim-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:claim-message").build("unclaim-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:claim-ticket-unclaim-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:claim-ticket-unclaim-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-unclaim-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
|
||||
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:unclaim-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:unclaim-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
})
|
||||
])
|
||||
}
|
||||
+11
-11
@@ -1,40 +1,40 @@
|
||||
///////////////////////////////////////
|
||||
//CLEAR TICKETS SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:clear-tickets"))
|
||||
openticket.actions.get("openticket:clear-tickets").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:clear-tickets"))
|
||||
opendiscord.actions.get("openticket:clear-tickets").workers.add([
|
||||
new api.ODWorker("openticket:clear-tickets",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,filter,list} = params
|
||||
|
||||
await openticket.events.get("onTicketsClear").emit([list,user,channel,filter])
|
||||
await opendiscord.events.get("onTicketsClear").emit([list,user,channel,filter])
|
||||
const nameList: string[] = []
|
||||
for (const ticket of list){
|
||||
const ticketChannel = await openticket.tickets.getTicketChannel(ticket)
|
||||
const ticketChannel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
if (!ticketChannel) return
|
||||
nameList.push("#"+ticketChannel.name)
|
||||
await openticket.actions.get("openticket:delete-ticket").run("clear",{guild,channel:ticketChannel,user,ticket,reason:"Cleared Ticket",sendMessage:true,withoutTranscript:false})
|
||||
await opendiscord.actions.get("openticket:delete-ticket").run("clear",{guild,channel:ticketChannel,user,ticket,reason:"Cleared Ticket",sendMessage:true,withoutTranscript:false})
|
||||
}
|
||||
instance.list = nameList
|
||||
await openticket.events.get("afterTicketsCleared").emit([list,user,channel,filter])
|
||||
await opendiscord.events.get("afterTicketsCleared").emit([list,user,channel,filter])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,filter,list} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.deleting.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:clear-logs").build(source,{guild,channel,user,filter,list:instance.list ?? []}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:clear-logs").build(source,{guild,channel,user,filter,list:instance.list ?? []}))
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,user,filter,list} = params
|
||||
openticket.log(user.displayName+" cleared "+list.length+" tickets!","info",[
|
||||
opendiscord.log(user.displayName+" cleared "+list.length+" tickets!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"method",value:source},
|
||||
|
||||
+66
-66
@@ -1,19 +1,19 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET CLOSING SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:close-ticket"))
|
||||
openticket.actions.get("openticket:close-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:close-ticket"))
|
||||
opendiscord.actions.get("openticket:close-ticket").workers.add([
|
||||
new api.ODWorker("openticket:close-ticket",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to close ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketClose").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketClose").emit([ticket,user,channel,reason])
|
||||
|
||||
//update ticket
|
||||
ticket.get("openticket:closed").value = true
|
||||
@@ -24,8 +24,8 @@ export const registerActions = async () => {
|
||||
ticket.get("openticket:busy").value = true
|
||||
|
||||
//update stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-closed",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:tickets-closed",user.id,1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-closed",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:tickets-closed",user.id,1,"increase")
|
||||
|
||||
//update category
|
||||
const closeCategory = ticket.option.get("openticket:channel-category-closed").value
|
||||
@@ -35,12 +35,12 @@ export const registerActions = async () => {
|
||||
ticket.get("openticket:category-mode").value = "closed"
|
||||
ticket.get("openticket:category").value = closeCategory
|
||||
}catch(e){
|
||||
openticket.log("Unable to move ticket to 'closed category'!","error",[
|
||||
opendiscord.log("Unable to move ticket to 'closed category'!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"categoryid",value:closeCategory}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ export const registerActions = async () => {
|
||||
allow:[],
|
||||
deny:["ViewChannel","SendMessages","ReadMessageHistory"]
|
||||
}]
|
||||
const globalAdmins = openticket.configs.get("openticket:general").data.globalAdmins
|
||||
const globalAdmins = opendiscord.configs.get("openticket:general").data.globalAdmins
|
||||
const optionAdmins = ticket.option.get("openticket:admins").value
|
||||
const readonlyAdmins = ticket.option.get("openticket:admins-readonly").value
|
||||
|
||||
@@ -102,43 +102,43 @@ export const registerActions = async () => {
|
||||
channel.permissionOverwrites.set(permissions)
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket closing!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket closing!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:close-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:close-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketClosed").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("afterTicketClosed").emit([ticket,user,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.closing.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"close",reason,additionalData:null}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"close",reason,additionalData:null}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.closing.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"close",reason,additionalData:null}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.closing.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"close",reason,additionalData:null}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" closed a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" closed a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -148,7 +148,7 @@ export const registerActions = async () => {
|
||||
])
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:close-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:close-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
@@ -156,37 +156,37 @@ export const registerActions = async () => {
|
||||
|
||||
export const registerVerifyBars = async () => {
|
||||
//CLOSE TICKET TICKET MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:close-ticket-ticket-message",openticket.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:close-ticket-ticket-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:close-ticket-ticket-message",opendiscord.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:close-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.close
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -194,86 +194,86 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:close-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already closed
|
||||
if (ticket.get("openticket:closed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start closing ticket
|
||||
if (params.data == "reason"){
|
||||
//close with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:close-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:close-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//close without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:close-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:close-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:close-ticket-ticket-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:close-ticket-ticket-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-ticket-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
|
||||
//CLOSE TICKET REOPEN MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:close-ticket-reopen-message",openticket.builders.messages.getSafe("openticket:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:close-ticket-reopen-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:close-ticket-reopen-message",opendiscord.builders.messages.getSafe("openticket:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:close-ticket-reopen-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.close
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -281,55 +281,55 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:close-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already closed
|
||||
if (ticket.get("openticket:closed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start closing ticket
|
||||
if (params.data == "reason"){
|
||||
//close with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:close-ticket-reason").build("reopen-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:close-ticket-reason").build("reopen-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//close without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:close-ticket").run("reopen-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:close-message").build("reopen-message",{guild,channel,user,ticket,reason:null}))
|
||||
await opendiscord.actions.get("openticket:close-ticket").run("reopen-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:close-message").build("reopen-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:close-ticket-reopen-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:close-ticket-reopen-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-reopen-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
|
||||
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:reopen-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:reopen-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
})
|
||||
])
|
||||
}
|
||||
+30
-30
@@ -1,26 +1,26 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET CREATION SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:create-ticket"))
|
||||
openticket.actions.get("openticket:create-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:create-ticket"))
|
||||
opendiscord.actions.get("openticket:create-ticket").workers.add([
|
||||
new api.ODWorker("openticket:create-ticket",3,async (instance,params,source,cancel) => {
|
||||
const {guild,user,answers,option} = params
|
||||
|
||||
await openticket.events.get("onTicketCreate").emit([user])
|
||||
await openticket.events.get("onTicketChannelCreation").emit([option,user])
|
||||
await opendiscord.events.get("onTicketCreate").emit([user])
|
||||
await opendiscord.events.get("onTicketChannelCreation").emit([option,user])
|
||||
|
||||
//get channel properties
|
||||
const channelPrefix = option.get("openticket:channel-prefix").value
|
||||
const channelCategory = option.get("openticket:channel-category").value
|
||||
const channelBackupCategory = option.get("openticket:channel-category-backup").value
|
||||
const channelDescription = option.get("openticket:channel-description").value
|
||||
const channelSuffix = openticket.options.suffix.getSuffixFromOption(option,user)
|
||||
const channelSuffix = opendiscord.options.suffix.getSuffixFromOption(option,user)
|
||||
const channelName = channelPrefix+channelSuffix
|
||||
|
||||
//handle category
|
||||
@@ -28,10 +28,10 @@ export const registerActions = async () => {
|
||||
let categoryMode: "backup"|"normal"|null = null
|
||||
if (channelCategory != ""){
|
||||
//category enabled
|
||||
const normalCategory = await openticket.client.fetchGuildCategoryChannel(guild,channelCategory)
|
||||
const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory)
|
||||
if (!normalCategory){
|
||||
//default category was not found
|
||||
openticket.log("Ticket Creation Error: Unable to find category! #1","error",[
|
||||
opendiscord.log("Ticket Creation Error: Unable to find category! #1","error",[
|
||||
{key:"categoryid",value:channelCategory},
|
||||
{key:"backup",value:"false"}
|
||||
])
|
||||
@@ -39,10 +39,10 @@ export const registerActions = async () => {
|
||||
//default category was found
|
||||
if (normalCategory.children.cache.size >= 50 && channelBackupCategory != ""){
|
||||
//use backup category
|
||||
const backupCategory = await openticket.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
|
||||
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
|
||||
if (!backupCategory){
|
||||
//default category was not found
|
||||
openticket.log("Ticket Creation Error: Unable to find category! #2","error",[
|
||||
opendiscord.log("Ticket Creation Error: Unable to find category! #2","error",[
|
||||
{key:"categoryid",value:channelBackupCategory},
|
||||
{key:"backup",value:"true"}
|
||||
])
|
||||
@@ -65,7 +65,7 @@ export const registerActions = async () => {
|
||||
allow:[],
|
||||
deny:["ViewChannel","SendMessages","ReadMessageHistory"]
|
||||
}]
|
||||
const globalAdmins = openticket.configs.get("openticket:general").data.globalAdmins
|
||||
const globalAdmins = opendiscord.configs.get("openticket:general").data.globalAdmins
|
||||
const optionAdmins = option.get("openticket:admins").value
|
||||
const readonlyAdmins = option.get("openticket:admins-readonly").value
|
||||
|
||||
@@ -114,7 +114,7 @@ export const registerActions = async () => {
|
||||
permissionOverwrites:permissions
|
||||
})
|
||||
|
||||
await openticket.events.get("afterTicketChannelCreated").emit([option,channel,user])
|
||||
await opendiscord.events.get("afterTicketChannelCreated").emit([option,channel,user])
|
||||
|
||||
//create participants
|
||||
const participants: {type:"role"|"user",id:string}[] = []
|
||||
@@ -159,43 +159,43 @@ export const registerActions = async () => {
|
||||
])
|
||||
|
||||
//manage stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-created",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:tickets-created",user.id,1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-created",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:tickets-created",user.id,1,"increase")
|
||||
|
||||
//manage bot permissions
|
||||
await openticket.events.get("onTicketPermissionsCreated").emit([option,openticket.permissions,channel,user])
|
||||
await opendiscord.events.get("onTicketPermissionsCreated").emit([option,opendiscord.permissions,channel,user])
|
||||
await (await import("../data/framework/permissionLoader.js")).addTicketPermissions(ticket)
|
||||
await openticket.events.get("afterTicketPermissionsCreated").emit([option,openticket.permissions,channel,user])
|
||||
await opendiscord.events.get("afterTicketPermissionsCreated").emit([option,opendiscord.permissions,channel,user])
|
||||
|
||||
//export channel & ticket
|
||||
instance.channel = channel
|
||||
instance.ticket = ticket
|
||||
openticket.tickets.add(ticket)
|
||||
opendiscord.tickets.add(ticket)
|
||||
}),
|
||||
new api.ODWorker("openticket:send-ticket-message",2,async (instance,params,source,cancel) => {
|
||||
const {guild,user,answers,option} = params
|
||||
const {ticket,channel} = instance
|
||||
|
||||
if (!ticket || !channel) return openticket.log("Ticket Creation Error: Unable to send ticket message. Previous worker failed!","error")
|
||||
if (!ticket || !channel) return opendiscord.log("Ticket Creation Error: Unable to send ticket message. Previous worker failed!","error")
|
||||
|
||||
await openticket.events.get("onTicketMainMessageCreated").emit([ticket,channel,user])
|
||||
await opendiscord.events.get("onTicketMainMessageCreated").emit([ticket,channel,user])
|
||||
//check if ticket message is enabled
|
||||
if (!option.get("openticket:ticket-message-enabled").value) return
|
||||
try {
|
||||
const msg = await channel.send((await openticket.builders.messages.getSafe("openticket:ticket-message").build(source,{guild,channel,user,ticket})).message)
|
||||
const msg = await channel.send((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build(source,{guild,channel,user,ticket})).message)
|
||||
|
||||
ticket.get("openticket:ticket-message").value = msg.id
|
||||
|
||||
//manage stats
|
||||
await openticket.stats.get("openticket:ticket").setStat("openticket:messages-sent",ticket.id.value,1,"increase")
|
||||
await opendiscord.stats.get("openticket:ticket").setStat("openticket:messages-sent",ticket.id.value,1,"increase")
|
||||
|
||||
await openticket.events.get("afterTicketMainMessageCreated").emit([ticket,msg,channel,user])
|
||||
await opendiscord.events.get("afterTicketMainMessageCreated").emit([ticket,msg,channel,user])
|
||||
}catch(err){
|
||||
process.emit("uncaughtException",err)
|
||||
//something went wrong while sending the ticket message
|
||||
channel.send((await openticket.builders.messages.getSafe("openticket:error").build("other",{guild,channel,user,error:"Ticket Message: Creation Error!\n=> Ticket Is Still Created Succesfully",layout:"advanced"})).message)
|
||||
channel.send((await opendiscord.builders.messages.getSafe("openticket:error").build("other",{guild,channel,user,error:"Ticket Message: Creation Error!\n=> Ticket Is Still Created Succesfully",layout:"advanced"})).message)
|
||||
}
|
||||
await openticket.events.get("afterTicketCreated").emit([ticket,user,channel])
|
||||
await opendiscord.events.get("afterTicketCreated").emit([ticket,user,channel])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,user,answers,option} = params
|
||||
@@ -203,20 +203,20 @@ export const registerActions = async () => {
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.creation.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-created-logs").build(source,{guild,channel,user,ticket}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-created-logs").build(source,{guild,channel,user,ticket}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
if (generalConfig.data.system.messages.creation.dm) await openticket.client.sendUserDm(user,await openticket.builders.messages.getSafe("openticket:ticket-created-dm").build(source,{guild,channel,user,ticket}))
|
||||
if (generalConfig.data.system.messages.creation.dm) await opendiscord.client.sendUserDm(user,await opendiscord.builders.messages.getSafe("openticket:ticket-created-dm").build(source,{guild,channel,user,ticket}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,user,answers,option} = params
|
||||
const {ticket,channel} = instance
|
||||
|
||||
if (!ticket || !channel) return openticket.log("Ticket Creation Error: Unable to create logs. Previous worker failed!","error")
|
||||
if (!ticket || !channel) return opendiscord.log("Ticket Creation Error: Unable to create logs. Previous worker failed!","error")
|
||||
|
||||
openticket.log(user.displayName+" created a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" created a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET CREATION SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:create-ticket-permissions"))
|
||||
openticket.actions.get("openticket:create-ticket-permissions").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:create-ticket-permissions"))
|
||||
opendiscord.actions.get("openticket:create-ticket-permissions").workers.add([
|
||||
new api.ODWorker("openticket:check-blacklist",4,(instance,params,source,cancel) => {
|
||||
if (!params.option.get("openticket:allow-blacklisted-users").value && openticket.blacklist.exists(params.user.id)){
|
||||
if (!params.option.get("openticket:allow-blacklisted-users").value && opendiscord.blacklist.exists(params.user.id)){
|
||||
instance.valid = false
|
||||
instance.reason = "blacklist"
|
||||
openticket.log(params.user.displayName+" tried to create a ticket but is blacklisted!","info",[
|
||||
opendiscord.log(params.user.displayName+" tried to create a ticket but is blacklisted!","info",[
|
||||
{key:"user",value:params.user.username},
|
||||
{key:"userid",value:params.user.id,hidden:true},
|
||||
{key:"option",value:params.option.id.value}
|
||||
@@ -20,14 +20,14 @@ export const registerActions = async () => {
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("openticket:check-cooldown",3,(instance,params,source,cancel) => {
|
||||
const cooldown = openticket.cooldowns.get("openticket:option-cooldown_"+params.option.id.value)
|
||||
const cooldown = opendiscord.cooldowns.get("openticket:option-cooldown_"+params.option.id.value)
|
||||
if (cooldown && cooldown instanceof api.ODTimeoutCooldown && cooldown.use(params.user.id)){
|
||||
instance.valid = false
|
||||
instance.reason = "cooldown"
|
||||
const remaining = cooldown.remaining(params.user.id) ?? 0
|
||||
instance.cooldownUntil = new Date(new Date().getTime() + remaining)
|
||||
|
||||
openticket.log(params.user.displayName+" tried to create a ticket but is on cooldown!","info",[
|
||||
opendiscord.log(params.user.displayName+" tried to create a ticket but is on cooldown!","info",[
|
||||
{key:"user",value:params.user.username},
|
||||
{key:"userid",value:params.user.id,hidden:true},
|
||||
{key:"option",value:params.option.id.value},
|
||||
@@ -37,18 +37,18 @@ export const registerActions = async () => {
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("openticket:check-global-limits",2,(instance,params,source,cancel) => {
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
if (!generalConfig.data.system.limits.enabled) return
|
||||
|
||||
const allTickets = openticket.tickets.getAll()
|
||||
const allTickets = opendiscord.tickets.getAll()
|
||||
const globalTicketCount = allTickets.length
|
||||
const userTickets = openticket.tickets.getFiltered((ticket) => ticket.exists("openticket:opened-by") && (ticket.get("openticket:opened-by").value == params.user.id))
|
||||
const userTickets = opendiscord.tickets.getFiltered((ticket) => ticket.exists("openticket:opened-by") && (ticket.get("openticket:opened-by").value == params.user.id))
|
||||
const userTicketCount = userTickets.length
|
||||
|
||||
if (globalTicketCount >= generalConfig.data.system.limits.globalMaximum){
|
||||
instance.valid = false
|
||||
instance.reason = "global-limit"
|
||||
openticket.log(params.user.displayName+" tried to create a ticket but reached the limit!","info",[
|
||||
opendiscord.log(params.user.displayName+" tried to create a ticket but reached the limit!","info",[
|
||||
{key:"user",value:params.user.username},
|
||||
{key:"userid",value:params.user.id,hidden:true},
|
||||
{key:"option",value:params.option.id.value},
|
||||
@@ -58,7 +58,7 @@ export const registerActions = async () => {
|
||||
}else if (userTicketCount >= generalConfig.data.system.limits.userMaximum){
|
||||
instance.valid = false
|
||||
instance.reason = "global-user-limit"
|
||||
openticket.log(params.user.displayName+" tried to create a ticket, but reached the limit!","info",[
|
||||
opendiscord.log(params.user.displayName+" tried to create a ticket, but reached the limit!","info",[
|
||||
{key:"user",value:params.user.username},
|
||||
{key:"userid",value:params.user.id,hidden:true},
|
||||
{key:"option",value:params.option.id.value},
|
||||
@@ -70,15 +70,15 @@ export const registerActions = async () => {
|
||||
new api.ODWorker("openticket:check-option-limits",1,(instance,params,source,cancel) => {
|
||||
if (!params.option.exists("openticket:limits-enabled") || !params.option.get("openticket:limits-enabled").value) return
|
||||
|
||||
const allTickets = openticket.tickets.getFiltered((ticket) => ticket.option.id.value == params.option.id.value)
|
||||
const allTickets = opendiscord.tickets.getFiltered((ticket) => ticket.option.id.value == params.option.id.value)
|
||||
const globalTicketCount = allTickets.length
|
||||
const userTickets = openticket.tickets.getFiltered((ticket) => ticket.option.id.value == params.option.id.value && ticket.exists("openticket:opened-by") && (ticket.get("openticket:opened-by").value == params.user.id))
|
||||
const userTickets = opendiscord.tickets.getFiltered((ticket) => ticket.option.id.value == params.option.id.value && ticket.exists("openticket:opened-by") && (ticket.get("openticket:opened-by").value == params.user.id))
|
||||
const userTicketCount = userTickets.length
|
||||
|
||||
if (globalTicketCount >= params.option.get("openticket:limits-maximum-global").value){
|
||||
instance.valid = false
|
||||
instance.reason = "option-limit"
|
||||
openticket.log(params.user.displayName+" tried to create a ticket, but reached the limit!","info",[
|
||||
opendiscord.log(params.user.displayName+" tried to create a ticket, but reached the limit!","info",[
|
||||
{key:"user",value:params.user.username},
|
||||
{key:"userid",value:params.user.id,hidden:true},
|
||||
{key:"option",value:params.option.id.value},
|
||||
@@ -88,7 +88,7 @@ export const registerActions = async () => {
|
||||
}else if (userTicketCount >= params.option.get("openticket:limits-maximum-user").value){
|
||||
instance.valid = false
|
||||
instance.reason = "option-user-limit"
|
||||
openticket.log(params.user.displayName+" tried to create a ticket, but reached the limit!","info",[
|
||||
opendiscord.log(params.user.displayName+" tried to create a ticket, but reached the limit!","info",[
|
||||
{key:"user",value:params.user.username},
|
||||
{key:"userid",value:params.user.id,hidden:true},
|
||||
{key:"option",value:params.option.id.value},
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
///////////////////////////////////////
|
||||
//TRANSCRIPT CREATION SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const transcriptConfig = openticket.configs.get("openticket:transcripts")
|
||||
const transcriptConfig = opendiscord.configs.get("openticket:transcripts")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:create-transcript"))
|
||||
openticket.actions.get("openticket:create-transcript").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:create-transcript"))
|
||||
opendiscord.actions.get("openticket:create-transcript").workers.add([
|
||||
new api.ODWorker("openticket:select-compiler",4,async (instance,params,source,cancel) => {
|
||||
const {channel,user,ticket} = params
|
||||
if (channel.type != discord.ChannelType.GuildText) return cancel()
|
||||
if (!transcriptConfig.data.general.enabled) return cancel()
|
||||
|
||||
await openticket.events.get("onTranscriptCreate").emit([openticket.transcripts,ticket,channel,user])
|
||||
await opendiscord.events.get("onTranscriptCreate").emit([opendiscord.transcripts,ticket,channel,user])
|
||||
|
||||
instance.errorReason = null
|
||||
const participants = await openticket.tickets.getAllTicketParticipants(params.ticket)
|
||||
const participants = await opendiscord.tickets.getAllTicketParticipants(params.ticket)
|
||||
if (!participants){
|
||||
instance.pendingMessage = null
|
||||
instance.errorReason = "Unable to fetch ticket channel participants!"
|
||||
@@ -26,8 +26,8 @@ export const registerActions = async () => {
|
||||
instance.participants = participants
|
||||
|
||||
//select transcript compiler
|
||||
if (transcriptConfig.data.general.mode == "text") instance.compiler = openticket.transcripts.get("openticket:text-compiler")
|
||||
else if (transcriptConfig.data.general.mode == "html") instance.compiler = openticket.transcripts.get("openticket:html-compiler")
|
||||
if (transcriptConfig.data.general.mode == "text") instance.compiler = opendiscord.transcripts.get("openticket:text-compiler")
|
||||
else if (transcriptConfig.data.general.mode == "html") instance.compiler = opendiscord.transcripts.get("openticket:html-compiler")
|
||||
}),
|
||||
new api.ODWorker("openticket:init-transcript",3,async (instance,params,source,cancel) => {
|
||||
const {channel,user,ticket} = params
|
||||
@@ -35,13 +35,13 @@ export const registerActions = async () => {
|
||||
if (!transcriptConfig.data.general.enabled) return cancel()
|
||||
|
||||
//run transcript compiler init()
|
||||
await openticket.events.get("onTranscriptInit").emit([openticket.transcripts,ticket,channel,user])
|
||||
await opendiscord.events.get("onTranscriptInit").emit([opendiscord.transcripts,ticket,channel,user])
|
||||
if (instance.compiler.init){
|
||||
try{
|
||||
const result = await instance.compiler.init(ticket,channel,user)
|
||||
if (result.success && result.pendingMessage && transcriptConfig.data.general.enableChannel){
|
||||
//send init message to channel
|
||||
const post = openticket.posts.get("openticket:transcripts")
|
||||
const post = opendiscord.posts.get("openticket:transcripts")
|
||||
if (post){
|
||||
instance.pendingMessage = await post.send(result.pendingMessage)
|
||||
}
|
||||
@@ -57,7 +57,7 @@ export const registerActions = async () => {
|
||||
throw new api.ODSystemError("ODAction(ot:create-transcript) => Failed transcript compiler init()! (see error above)")
|
||||
}
|
||||
}
|
||||
await openticket.events.get("afterTranscriptInitiated").emit([openticket.transcripts,ticket,channel,user])
|
||||
await opendiscord.events.get("afterTranscriptInitiated").emit([opendiscord.transcripts,ticket,channel,user])
|
||||
}),
|
||||
new api.ODWorker("openticket:compile-transcript",2,async (instance,params,source,cancel) => {
|
||||
const {channel,user,ticket} = params
|
||||
@@ -69,7 +69,7 @@ export const registerActions = async () => {
|
||||
}
|
||||
|
||||
//run transcript compiler compile()
|
||||
await openticket.events.get("onTranscriptCompile").emit([openticket.transcripts,ticket,channel,user])
|
||||
await opendiscord.events.get("onTranscriptCompile").emit([opendiscord.transcripts,ticket,channel,user])
|
||||
if (instance.compiler.compile){
|
||||
try{
|
||||
const result = await instance.compiler.compile(ticket,channel,user)
|
||||
@@ -87,7 +87,7 @@ export const registerActions = async () => {
|
||||
throw new api.ODSystemError("ODAction(ot:create-transcript) => Failed transcript compiler compile()! (see error above)")
|
||||
}
|
||||
}
|
||||
await openticket.events.get("afterTranscriptCompiled").emit([openticket.transcripts,ticket,channel,user])
|
||||
await opendiscord.events.get("afterTranscriptCompiled").emit([opendiscord.transcripts,ticket,channel,user])
|
||||
}),
|
||||
new api.ODWorker("openticket:ready-transcript",1,async (instance,params,source,cancel) => {
|
||||
if (!instance.result){
|
||||
@@ -98,7 +98,7 @@ export const registerActions = async () => {
|
||||
|
||||
//run transcript compiler ready()
|
||||
utilities.runAsync(async () => {
|
||||
await openticket.events.get("onTranscriptReady").emit([openticket.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
|
||||
await opendiscord.events.get("onTranscriptReady").emit([opendiscord.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
|
||||
if (instance.compiler.ready){
|
||||
try{
|
||||
const {channelMessage,creatorDmMessage,participantDmMessage,activeAdminDmMessage,everyAdminDmMessage} = await instance.compiler.ready(instance.result)
|
||||
@@ -110,7 +110,7 @@ export const registerActions = async () => {
|
||||
instance.pendingMessage.message.edit(channelMessage.message)
|
||||
}else{
|
||||
//send ready message to channel
|
||||
const post = openticket.posts.get("openticket:transcripts")
|
||||
const post = opendiscord.posts.get("openticket:transcripts")
|
||||
if (post) await post.send(channelMessage)
|
||||
}
|
||||
}
|
||||
@@ -120,16 +120,16 @@ export const registerActions = async () => {
|
||||
for (const p of instance.participants){
|
||||
if (p.role == "creator" && transcriptConfig.data.general.enableCreatorDM && creatorDmMessage){
|
||||
//send creator dm message
|
||||
await openticket.client.sendUserDm(p.user,creatorDmMessage)
|
||||
await opendiscord.client.sendUserDm(p.user,creatorDmMessage)
|
||||
}else if (p.role == "participant" && transcriptConfig.data.general.enableParticipantDM && participantDmMessage){
|
||||
//send participant dm message
|
||||
await openticket.client.sendUserDm(p.user,participantDmMessage)
|
||||
await opendiscord.client.sendUserDm(p.user,participantDmMessage)
|
||||
}else if (p.role == "admin" && transcriptConfig.data.general.enableActiveAdminDM && instance.result.success && instance.result.messages && instance.result.messages.some((msg) => msg.author.id == p.user.id) && activeAdminDmMessage){
|
||||
//send active admin dm message
|
||||
await openticket.client.sendUserDm(p.user,activeAdminDmMessage)
|
||||
await opendiscord.client.sendUserDm(p.user,activeAdminDmMessage)
|
||||
}else if (p.role == "admin" && transcriptConfig.data.general.enableEveryAdminDM && everyAdminDmMessage){
|
||||
//send every admin dm message
|
||||
await openticket.client.sendUserDm(p.user,everyAdminDmMessage)
|
||||
await opendiscord.client.sendUserDm(p.user,everyAdminDmMessage)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -141,17 +141,17 @@ export const registerActions = async () => {
|
||||
throw new api.ODSystemError("ODAction(ot:create-transcript) => Failed transcript compiler ready()! (see error above)")
|
||||
}
|
||||
}
|
||||
await openticket.events.get("afterTranscriptReady").emit([openticket.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
|
||||
await opendiscord.events.get("afterTranscriptReady").emit([opendiscord.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
|
||||
})
|
||||
|
||||
//update stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:transcripts-created",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:transcripts-created",params.user.id,1,"increase")
|
||||
await openticket.events.get("afterTranscriptCreated").emit([openticket.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:transcripts-created",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:transcripts-created",params.user.id,1,"increase")
|
||||
await opendiscord.events.get("afterTranscriptCreated").emit([opendiscord.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {user,channel,ticket} = params
|
||||
openticket.log(user.displayName+" created a transcript!","info",[
|
||||
opendiscord.log(user.displayName+" created a transcript!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
|
||||
+111
-111
@@ -1,55 +1,55 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET DELETION SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:delete-ticket"))
|
||||
openticket.actions.get("openticket:delete-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:delete-ticket"))
|
||||
opendiscord.actions.get("openticket:delete-ticket").workers.add([
|
||||
new api.ODWorker("openticket:delete-ticket",3,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to delete ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketDelete").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketDelete").emit([ticket,user,channel,reason])
|
||||
|
||||
//update ticket
|
||||
ticket.get("openticket:for-deletion").value = true
|
||||
ticket.get("openticket:busy").value = true
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket deletion!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket deletion!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:delete-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:delete-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
|
||||
//create transcript
|
||||
if (!params.withoutTranscript){
|
||||
const transcriptRes = await openticket.actions.get("openticket:create-transcript").run(source,{guild,channel,user,ticket})
|
||||
const transcriptRes = await opendiscord.actions.get("openticket:create-transcript").run(source,{guild,channel,user,ticket})
|
||||
//transcript failure
|
||||
if (typeof transcriptRes.success == "boolean" && !transcriptRes.success && transcriptRes.compiler){
|
||||
const {compiler} = transcriptRes
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:transcript-error").build(source,{guild,channel,user,ticket,compiler,reason:transcriptRes.errorReason ?? null})).message)
|
||||
.catch((reason) => openticket.log("Unable to send transcript failure to ticket channel!","error",[{key:"id",value:channel.id}]))
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:transcript-error").build(source,{guild,channel,user,ticket,compiler,reason:transcriptRes.errorReason ?? null})).message)
|
||||
.catch((reason) => opendiscord.log("Unable to send transcript failure to ticket channel!","error",[{key:"id",value:channel.id}]))
|
||||
|
||||
//undo deletion
|
||||
ticket.get("openticket:for-deletion").value = false
|
||||
ticket.get("openticket:busy").value = false
|
||||
openticket.log("Canceled ticket deletion because of transcript system malfunction!","warning",[
|
||||
opendiscord.log("Canceled ticket deletion because of transcript system malfunction!","warning",[
|
||||
{key:"compiler",value:compiler.id.value},
|
||||
{key:"reason",value:transcriptRes.errorReason ?? "/"},
|
||||
])
|
||||
@@ -58,11 +58,11 @@ export const registerActions = async () => {
|
||||
}
|
||||
|
||||
//update stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-deleted",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:tickets-deleted",user.id,1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-deleted",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:tickets-deleted",user.id,1,"increase")
|
||||
|
||||
//delete ticket from manager
|
||||
openticket.tickets.remove(ticket.id)
|
||||
opendiscord.tickets.remove(ticket.id)
|
||||
|
||||
//delete permissions from manager
|
||||
await (await import("../data/framework/permissionLoader.js")).removeTicketPermissions(ticket)
|
||||
@@ -73,30 +73,30 @@ export const registerActions = async () => {
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.deleting.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"delete",reason,additionalData:null}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"delete",reason,additionalData:null}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.deleting.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"delete",reason,additionalData:null}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.deleting.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"delete",reason,additionalData:null}))
|
||||
}),
|
||||
new api.ODWorker("openticket:delete-channel",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
//delete channel & events
|
||||
await openticket.events.get("onTicketChannelDeletion").emit([ticket,channel,user])
|
||||
await channel.delete("Ticket Deleted").catch((reason) => openticket.log("Unable to delete ticket channel!","error",[{key:"id",value:channel.id}]))
|
||||
await openticket.events.get("afterTicketChannelDeleted").emit([ticket,user])
|
||||
await opendiscord.events.get("onTicketChannelDeletion").emit([ticket,channel,user])
|
||||
await channel.delete("Ticket Deleted").catch((reason) => opendiscord.log("Unable to delete ticket channel!","error",[{key:"id",value:channel.id}]))
|
||||
await opendiscord.events.get("afterTicketChannelDeleted").emit([ticket,user])
|
||||
|
||||
//delete permissions from manager
|
||||
await (await import("../data/framework/permissionLoader.js")).removeTicketPermissions(ticket)
|
||||
|
||||
await openticket.events.get("afterTicketDeleted").emit([ticket,user,reason])
|
||||
await opendiscord.events.get("afterTicketDeleted").emit([ticket,user,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" deleted a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" deleted a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -107,7 +107,7 @@ export const registerActions = async () => {
|
||||
])
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:delete-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:delete-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
params.ticket.get("openticket:for-deletion").value = false
|
||||
@@ -116,37 +116,37 @@ export const registerActions = async () => {
|
||||
|
||||
export const registerVerifyBars = async () => {
|
||||
//DELETE TICKET TICKET MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:delete-ticket-ticket-message",openticket.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:delete-ticket-ticket-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:delete-ticket-ticket-message",opendiscord.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:delete-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -154,84 +154,84 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start deleting ticket
|
||||
if (params.data == "reason"){
|
||||
//delete with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:delete-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:delete-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//delete without reason
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true,withoutTranscript:(params.data == "no-transcript")})
|
||||
opendiscord.actions.get("openticket:delete-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true,withoutTranscript:(params.data == "no-transcript")})
|
||||
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
|
||||
ticket.get("openticket:for-deletion").value = true
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:delete-ticket-ticket-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:delete-ticket-ticket-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-ticket-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
|
||||
//DELETE TICKET CLOSE MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:delete-ticket-close-message",openticket.builders.messages.getSafe("openticket:verifybar-close-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:delete-ticket-close-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:delete-ticket-close-message",opendiscord.builders.messages.getSafe("openticket:verifybar-close-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:delete-ticket-close-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -239,88 +239,88 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start deleting ticket
|
||||
if (params.data == "reason"){
|
||||
//delete with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:delete-ticket-reason").build("close-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:delete-ticket-reason").build("close-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//delete without reason
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run("close-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
|
||||
opendiscord.actions.get("openticket:delete-ticket").run("close-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
|
||||
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
|
||||
ticket.get("openticket:for-deletion").value = true
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:delete-message").build("close-message",{guild,channel,user,ticket,reason:null}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:delete-message").build("close-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:delete-ticket-close-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:delete-ticket-close-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-close-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
|
||||
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:close-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:close-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
})
|
||||
])
|
||||
|
||||
//DELETE TICKET REOPEN MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:delete-ticket-reopen-message",openticket.builders.messages.getSafe("openticket:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:delete-ticket-reopen-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:delete-ticket-reopen-message",opendiscord.builders.messages.getSafe("openticket:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:delete-ticket-reopen-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -328,88 +328,88 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start deleting ticket
|
||||
if (params.data == "reason"){
|
||||
//delete with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:delete-ticket-reason").build("reopen-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:delete-ticket-reason").build("reopen-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//delete without reason
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run("reopen-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
|
||||
opendiscord.actions.get("openticket:delete-ticket").run("reopen-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
|
||||
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
|
||||
ticket.get("openticket:for-deletion").value = true
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:delete-message").build("reopen-message",{guild,channel,user,ticket,reason:null}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:delete-message").build("reopen-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:delete-ticket-reopen-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:delete-ticket-reopen-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-reopen-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
|
||||
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:reopen-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:reopen-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
})
|
||||
])
|
||||
|
||||
//DELETE TICKET AUTOCLOSE MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:delete-ticket-autoclose-message",openticket.builders.messages.getSafe("openticket:verifybar-autoclose-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:delete-ticket-autoclose-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:delete-ticket-autoclose-message",opendiscord.builders.messages.getSafe("openticket:verifybar-autoclose-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:delete-ticket-autoclose-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -417,50 +417,50 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start deleting ticket
|
||||
if (params.data == "reason"){
|
||||
//delete with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:delete-ticket-reason").build("autoclose-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:delete-ticket-reason").build("autoclose-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//delete without reason
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run("autoclose-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
|
||||
opendiscord.actions.get("openticket:delete-ticket").run("autoclose-message",{guild,channel,user,ticket,reason:null,sendMessage:false,withoutTranscript:(params.data == "no-transcript")})
|
||||
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
|
||||
ticket.get("openticket:for-deletion").value = true
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:delete-message").build("autoclose-message",{guild,channel,user,ticket,reason:null}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:delete-message").build("autoclose-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:delete-ticket-autoclose-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:delete-ticket-autoclose-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-autoclose-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:autoclose-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:autoclose-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
}
|
||||
@@ -1,43 +1,43 @@
|
||||
///////////////////////////////////////
|
||||
//TRANSCRIPT ERROR SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//TRANSCRIPT ERROR RETRY
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:transcript-error-retry",/^od:transcript-error-retry_([^_]+)/))
|
||||
openticket.responders.buttons.get("openticket:transcript-error-retry").workers.add([
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:transcript-error-retry",/^od:transcript-error-retry_([^_]+)/))
|
||||
opendiscord.responders.buttons.get("openticket:transcript-error-retry").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -48,33 +48,33 @@ export const registerButtonResponders = async () => {
|
||||
if (originalSource != "slash" && originalSource != "text" && originalSource != "ticket-message" && originalSource != "reopen-message" && originalSource != "close-message" && originalSource != "other") return
|
||||
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start deleting ticket (without reason)
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason:"Transcript Error (Retried)",sendMessage:false,withoutTranscript:false})
|
||||
opendiscord.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason:"Transcript Error (Retried)",sendMessage:false,withoutTranscript:false})
|
||||
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
|
||||
ticket.get("openticket:for-deletion").value = true
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason:"Transcript Error (Retried)"}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason:"Transcript Error (Retried)"}))
|
||||
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,async (instance,params,source,cancel) => {
|
||||
const {user,channel} = instance
|
||||
if (channel.isDMBased()) return
|
||||
openticket.log(user.displayName+" retried deleting a ticket with transcript!","info",[
|
||||
opendiscord.log(user.displayName+" retried deleting a ticket with transcript!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -85,37 +85,37 @@ export const registerButtonResponders = async () => {
|
||||
])
|
||||
|
||||
//TRANSCRIPT ERROR CONTINUE
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:transcript-error-continue",/^od:transcript-error-continue_([^_]+)/))
|
||||
openticket.responders.buttons.get("openticket:transcript-error-continue").workers.add([
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:transcript-error-continue",/^od:transcript-error-continue_([^_]+)/))
|
||||
opendiscord.responders.buttons.get("openticket:transcript-error-continue").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -126,33 +126,33 @@ export const registerButtonResponders = async () => {
|
||||
if (originalSource != "slash" && originalSource != "text" && originalSource != "ticket-message" && originalSource != "reopen-message" && originalSource != "close-message" && originalSource != "other") return
|
||||
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start deleting ticket (without reason)
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason:"Transcript Error (Continued)",sendMessage:false,withoutTranscript:true})
|
||||
opendiscord.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason:"Transcript Error (Continued)",sendMessage:false,withoutTranscript:true})
|
||||
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
|
||||
ticket.get("openticket:for-deletion").value = true
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason:"Transcript Error (Continued)"}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason:"Transcript Error (Continued)"}))
|
||||
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,async (instance,params,source,cancel) => {
|
||||
const {user,channel} = instance
|
||||
if (channel.isDMBased()) return
|
||||
openticket.log(user.displayName+" continued deleting a ticket without transcript!","info",[
|
||||
opendiscord.log(user.displayName+" continued deleting a ticket without transcript!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
///////////////////////////////////////
|
||||
//VERIFYBAR SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//VERIFYBAR SUCCESS
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:verifybar-success",/^od:verifybar-success_([^_]+)/))
|
||||
openticket.responders.buttons.get("openticket:verifybar-success").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:verifybar-success",/^od:verifybar-success_([^_]+)/))
|
||||
opendiscord.responders.buttons.get("openticket:verifybar-success").workers.add(
|
||||
new api.ODWorker("openticket:handle-verifybar",0,async (instance,params,source,cancel) => {
|
||||
const id = instance.interaction.customId.split("_")[1]
|
||||
const customData = instance.interaction.customId.split("_")[2] as string|undefined
|
||||
|
||||
const verifybar = openticket.verifybars.get(id)
|
||||
const verifybar = opendiscord.verifybars.get(id)
|
||||
if (!verifybar) return
|
||||
if (verifybar.success) await verifybar.success.executeWorkers(instance,"verifybar",{data:customData ?? null,verifybarMessage:instance.message})
|
||||
})
|
||||
)
|
||||
|
||||
//VERIFYBAR FAILURE
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:verifybar-failure",/^od:verifybar-failure_([^_]+)/))
|
||||
openticket.responders.buttons.get("openticket:verifybar-failure").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:verifybar-failure",/^od:verifybar-failure_([^_]+)/))
|
||||
opendiscord.responders.buttons.get("openticket:verifybar-failure").workers.add(
|
||||
new api.ODWorker("openticket:handle-verifybar",0,async (instance,params,source,cancel) => {
|
||||
const id = instance.interaction.customId.split("_")[1]
|
||||
const customData = instance.interaction.customId.split("_")[2] as string|undefined
|
||||
|
||||
const verifybar = openticket.verifybars.get(id)
|
||||
const verifybar = opendiscord.verifybars.get(id)
|
||||
if (!verifybar) return
|
||||
if (verifybar.failure) await verifybar.failure.executeWorkers(instance,"verifybar",{data:customData ?? null,verifybarMessage:instance.message})
|
||||
})
|
||||
|
||||
+30
-30
@@ -1,24 +1,24 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET MOVING SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:move-ticket"))
|
||||
openticket.actions.get("openticket:move-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:move-ticket"))
|
||||
opendiscord.actions.get("openticket:move-ticket").workers.add([
|
||||
new api.ODWorker("openticket:move-ticket",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason,data} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to move ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketMove").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketMove").emit([ticket,user,channel,reason])
|
||||
ticket.option = data
|
||||
|
||||
//update stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-moved",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:tickets-moved",user.id,1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-moved",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:tickets-moved",user.id,1,"increase")
|
||||
|
||||
//get new channel properties
|
||||
const channelPrefix = ticket.option.get("openticket:channel-prefix").value
|
||||
@@ -44,10 +44,10 @@ export const registerActions = async () => {
|
||||
categoryMode = "closed"
|
||||
}else if (channelCategory != ""){
|
||||
//category enabled
|
||||
const normalCategory = await openticket.client.fetchGuildCategoryChannel(guild,channelCategory)
|
||||
const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory)
|
||||
if (!normalCategory){
|
||||
//default category was not found
|
||||
openticket.log("Ticket Move Error: Unable to find category! #1","error",[
|
||||
opendiscord.log("Ticket Move Error: Unable to find category! #1","error",[
|
||||
{key:"categoryid",value:channelCategory},
|
||||
{key:"backup",value:"false"}
|
||||
])
|
||||
@@ -55,10 +55,10 @@ export const registerActions = async () => {
|
||||
//default category was found
|
||||
if (normalCategory.children.cache.size >= 50 && channelBackupCategory != ""){
|
||||
//use backup category
|
||||
const backupCategory = await openticket.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
|
||||
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
|
||||
if (!backupCategory){
|
||||
//default category was not found
|
||||
openticket.log("Ticket Move Error: Unable to find category! #2","error",[
|
||||
opendiscord.log("Ticket Move Error: Unable to find category! #2","error",[
|
||||
{key:"categoryid",value:channelBackupCategory},
|
||||
{key:"backup",value:"true"}
|
||||
])
|
||||
@@ -77,17 +77,17 @@ export const registerActions = async () => {
|
||||
try {
|
||||
//only move category when not the same.
|
||||
if (channel.parentId != category) await utilities.timedAwait(channel.setParent(category,{lockPermissions:false}),2500,(err) => {
|
||||
openticket.log("Failed to change channel category on ticket move","error")
|
||||
opendiscord.log("Failed to change channel category on ticket move","error")
|
||||
})
|
||||
ticket.get("openticket:category-mode").value = categoryMode
|
||||
ticket.get("openticket:category").value = category
|
||||
}catch(e){
|
||||
openticket.log("Unable to move ticket to 'moved category'!","error",[
|
||||
opendiscord.log("Unable to move ticket to 'moved category'!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"categoryid",value:category ?? "/"}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
|
||||
//handle permissions
|
||||
@@ -97,7 +97,7 @@ export const registerActions = async () => {
|
||||
allow:[],
|
||||
deny:["ViewChannel","SendMessages","ReadMessageHistory"]
|
||||
}]
|
||||
const globalAdmins = openticket.configs.get("openticket:general").data.globalAdmins
|
||||
const globalAdmins = opendiscord.configs.get("openticket:general").data.globalAdmins
|
||||
const optionAdmins = ticket.option.get("openticket:admins").value
|
||||
const readonlyAdmins = ticket.option.get("openticket:admins-readonly").value
|
||||
|
||||
@@ -140,7 +140,7 @@ export const registerActions = async () => {
|
||||
try{
|
||||
await channel.permissionOverwrites.set(permissions)
|
||||
}catch{
|
||||
openticket.log("Failed to reset channel permissions on ticket move!","error")
|
||||
opendiscord.log("Failed to reset channel permissions on ticket move!","error")
|
||||
}
|
||||
|
||||
//handle participants
|
||||
@@ -158,53 +158,53 @@ export const registerActions = async () => {
|
||||
const originalName = channel.name
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(channelName),2500,(err) => {
|
||||
openticket.log("Failed to rename channel on ticket move","error")
|
||||
opendiscord.log("Failed to rename channel on ticket move","error")
|
||||
})
|
||||
}catch(err){
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:error-channel-rename").build("ticket-move",{guild,channel,user,originalName,newName:channelName})).message)
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:error-channel-rename").build("ticket-move",{guild,channel,user,originalName,newName:channelName})).message)
|
||||
}
|
||||
try{
|
||||
if (channel.type == discord.ChannelType.GuildText) channel.setTopic(channelDescription)
|
||||
}catch{}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket renaming!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket renaming!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:move-message").build(source,{guild,channel,user,ticket,reason,data})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:move-message").build(source,{guild,channel,user,ticket,reason,data})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketMoved").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("afterTicketMoved").emit([ticket,user,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason,data} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.moving.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"move",reason,additionalData:data}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"move",reason,additionalData:data}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.moving.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"move",reason,additionalData:data}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.moving.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"move",reason,additionalData:data}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" moved a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" moved a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -214,7 +214,7 @@ export const registerActions = async () => {
|
||||
])
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:move-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:move-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
|
||||
+65
-65
@@ -1,19 +1,19 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET PINNING SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:pin-ticket"))
|
||||
openticket.actions.get("openticket:pin-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:pin-ticket"))
|
||||
opendiscord.actions.get("openticket:pin-ticket").workers.add([
|
||||
new api.ODWorker("openticket:pin-ticket",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to pin ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketPin").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketPin").emit([ticket,user,channel,reason])
|
||||
|
||||
//update ticket
|
||||
ticket.get("openticket:pinned").value = true
|
||||
@@ -22,8 +22,8 @@ export const registerActions = async () => {
|
||||
ticket.get("openticket:busy").value = true
|
||||
|
||||
//update stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-pinned",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:tickets-pinned",user.id,1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-pinned",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:tickets-pinned",user.id,1,"increase")
|
||||
|
||||
//move to top of category
|
||||
if (channel.parent){
|
||||
@@ -35,50 +35,50 @@ export const registerActions = async () => {
|
||||
const newName = "📌"+channel.name
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
|
||||
openticket.log("Failed to rename channel on ticket pin","error")
|
||||
opendiscord.log("Failed to rename channel on ticket pin","error")
|
||||
})
|
||||
}catch(err){
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:error-channel-rename").build("ticket-pin",{guild,channel,user,originalName,newName})).message)
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:error-channel-rename").build("ticket-pin",{guild,channel,user,originalName,newName})).message)
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket pinning!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket pinning!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"message",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:pin-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:pin-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketPinned").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("afterTicketPinned").emit([ticket,user,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.pinning.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"pin",reason,additionalData:null}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"pin",reason,additionalData:null}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.pinning.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"pin",reason,additionalData:null}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.pinning.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"pin",reason,additionalData:null}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" pinned a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" pinned a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -92,37 +92,37 @@ export const registerActions = async () => {
|
||||
|
||||
export const registerVerifyBars = async () => {
|
||||
//PIN TICKET TICKET MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:pin-ticket-ticket-message",openticket.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:pin-ticket-ticket-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:pin-ticket-ticket-message",opendiscord.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:pin-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.pin
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -130,86 +130,86 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:pin-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already pinned
|
||||
if (ticket.get("openticket:pinned").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start pinning ticket
|
||||
if (params.data == "reason"){
|
||||
//pin with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:pin-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:pin-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//pin without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:pin-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:pin-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:pin-ticket-ticket-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:pin-ticket-ticket-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-ticket-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
|
||||
//PIN TICKET UNPIN MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:pin-ticket-unpin-message",openticket.builders.messages.getSafe("openticket:verifybar-unpin-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:pin-ticket-unpin-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:pin-ticket-unpin-message",opendiscord.builders.messages.getSafe("openticket:verifybar-unpin-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:pin-ticket-unpin-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.pin
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -217,58 +217,58 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:pin-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already pinned
|
||||
if (ticket.get("openticket:pinned").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start pinning ticket
|
||||
if (params.data == "reason"){
|
||||
//pin with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:pin-ticket-reason").build("unpin-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:pin-ticket-reason").build("unpin-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//pin without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:pin-ticket").run("unpin-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:pin-message").build("unpin-message",{guild,channel,user,ticket,reason:null}))
|
||||
await opendiscord.actions.get("openticket:pin-ticket").run("unpin-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:pin-message").build("unpin-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:pin-ticket-unpin-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:pin-ticket-unpin-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-unpin-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
|
||||
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:unpin-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:unpin-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:pin-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:pin-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
|
||||
+12
-12
@@ -1,32 +1,32 @@
|
||||
///////////////////////////////////////
|
||||
//REACTION ROLE SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:reaction-role"))
|
||||
openticket.actions.get("openticket:reaction-role").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:reaction-role"))
|
||||
opendiscord.actions.get("openticket:reaction-role").workers.add([
|
||||
new api.ODWorker("openticket:reaction-role",2,async (instance,params,source,cancel) => {
|
||||
const {guild,user,option,overwriteMode} = params
|
||||
const role = openticket.roles.get(option.id)
|
||||
const role = opendiscord.roles.get(option.id)
|
||||
if (!role) throw new api.ODSystemError("ODAction(ot:reaction-role) => Unknown reaction role (ODRole)")
|
||||
instance.role = role
|
||||
const mode = (overwriteMode) ? overwriteMode : role.get("openticket:mode").value
|
||||
|
||||
await openticket.events.get("onRoleUpdate").emit([user,role])
|
||||
await opendiscord.events.get("onRoleUpdate").emit([user,role])
|
||||
|
||||
//get guild member
|
||||
const member = await openticket.client.fetchGuildMember(guild,user.id)
|
||||
const member = await opendiscord.client.fetchGuildMember(guild,user.id)
|
||||
if (!member) throw new api.ODSystemError("ODAction(ot:reaction-role) => User isn't a member of the server!")
|
||||
|
||||
//get all roles
|
||||
const roleIds = role.get("openticket:roles").value
|
||||
const roles: discord.Role[] = []
|
||||
for (const id of roleIds){
|
||||
const r = await openticket.client.fetchGuildRole(guild,id)
|
||||
const r = await opendiscord.client.fetchGuildRole(guild,id)
|
||||
if (r) roles.push(r)
|
||||
else openticket.log("Unable to find role in server!","warning",[
|
||||
else opendiscord.log("Unable to find role in server!","warning",[
|
||||
{key:"roleid",value:id}
|
||||
])
|
||||
}
|
||||
@@ -58,9 +58,9 @@ export const registerActions = async () => {
|
||||
const removeRoleIds = role.get("openticket:remove-roles-on-add").value
|
||||
const removeRoles: discord.Role[] = []
|
||||
for (const id of removeRoleIds){
|
||||
const r = await openticket.client.fetchGuildRole(guild,id)
|
||||
const r = await opendiscord.client.fetchGuildRole(guild,id)
|
||||
if (r) removeRoles.push(r)
|
||||
else openticket.log("Unable to find role in server!","warning",[
|
||||
else opendiscord.log("Unable to find role in server!","warning",[
|
||||
{key:"roleid",value:id}
|
||||
])
|
||||
}
|
||||
@@ -79,11 +79,11 @@ export const registerActions = async () => {
|
||||
|
||||
//update instance & finish event
|
||||
instance.result = result
|
||||
await openticket.events.get("afterRolesUpdated").emit([user,role])
|
||||
await opendiscord.events.get("afterRolesUpdated").emit([user,role])
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,user,option} = params
|
||||
openticket.log(user.displayName+" updated his roles!","info",[
|
||||
opendiscord.log(user.displayName+" updated his roles!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"method",value:source},
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET REMOVE USER SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:remove-ticket-user"))
|
||||
openticket.actions.get("openticket:remove-ticket-user").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:remove-ticket-user"))
|
||||
opendiscord.actions.get("openticket:remove-ticket-user").workers.add([
|
||||
new api.ODWorker("openticket:remove-ticket-user",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason,data} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to remove user from ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketUserRemove").emit([ticket,user,data,channel,reason])
|
||||
await opendiscord.events.get("onTicketUserRemove").emit([ticket,user,data,channel,reason])
|
||||
|
||||
//update ticket
|
||||
const index = ticket.get("openticket:participants").value.findIndex((p) => p.type == "user" && p.id == data.id)
|
||||
@@ -26,46 +26,46 @@ export const registerActions = async () => {
|
||||
try{
|
||||
await channel.permissionOverwrites.delete(data)
|
||||
}catch{
|
||||
openticket.log("Failed to remove channel permission overwrites on remove-ticket-user","error")
|
||||
opendiscord.log("Failed to remove channel permission overwrites on remove-ticket-user","error")
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket user removal!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket user removal!","error",[
|
||||
{key:"channel",value:channel.id},
|
||||
{key:"message",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:remove-message").build(source,{guild,channel,user,ticket,reason,data})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:remove-message").build(source,{guild,channel,user,ticket,reason,data})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketUserRemoved").emit([ticket,user,data,channel,reason])
|
||||
await opendiscord.events.get("afterTicketUserRemoved").emit([ticket,user,data,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason,data} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.removing.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"remove",reason,additionalData:data}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"remove",reason,additionalData:data}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.removing.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"remove",reason,additionalData:data}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.removing.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"remove",reason,additionalData:data}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,data} = params
|
||||
|
||||
openticket.log(user.displayName+" removed "+data.displayName+" from a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" removed "+data.displayName+" from a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -75,7 +75,7 @@ export const registerActions = async () => {
|
||||
])
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:remove-ticket-user").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:remove-ticket-user").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
|
||||
+19
-19
@@ -1,68 +1,68 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET RENAMING SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:rename-ticket"))
|
||||
openticket.actions.get("openticket:rename-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:rename-ticket"))
|
||||
opendiscord.actions.get("openticket:rename-ticket").workers.add([
|
||||
new api.ODWorker("openticket:rename-ticket",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason,data} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to rename ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketRename").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketRename").emit([ticket,user,channel,reason])
|
||||
|
||||
//rename channel (and give error when crashed)
|
||||
const originalName = channel.name
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(data),2500,(err) => {
|
||||
openticket.log("Failed to rename channel on ticket rename","error")
|
||||
opendiscord.log("Failed to rename channel on ticket rename","error")
|
||||
})
|
||||
}catch(err){
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:error-channel-rename").build("ticket-rename",{guild,channel,user,originalName,newName:data})).message)
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:error-channel-rename").build("ticket-rename",{guild,channel,user,originalName,newName:data})).message)
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket renaming!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket renaming!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:rename-message").build(source,{guild,channel,user,ticket,reason,data})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:rename-message").build(source,{guild,channel,user,ticket,reason,data})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketRenamed").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("afterTicketRenamed").emit([ticket,user,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason,data} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.renaming.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"rename",reason,additionalData:data}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"rename",reason,additionalData:data}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.renaming.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"rename",reason,additionalData:data}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.renaming.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"rename",reason,additionalData:data}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" renamed a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" renamed a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -72,7 +72,7 @@ export const registerActions = async () => {
|
||||
])
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:rename-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:rename-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
|
||||
+92
-92
@@ -1,19 +1,19 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET REOPENING SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:reopen-ticket"))
|
||||
openticket.actions.get("openticket:reopen-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:reopen-ticket"))
|
||||
opendiscord.actions.get("openticket:reopen-ticket").workers.add([
|
||||
new api.ODWorker("openticket:reopen-ticket",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to reopen ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketReopen").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketReopen").emit([ticket,user,channel,reason])
|
||||
|
||||
//update ticket
|
||||
ticket.get("openticket:closed").value = false
|
||||
@@ -24,8 +24,8 @@ export const registerActions = async () => {
|
||||
ticket.get("openticket:busy").value = true
|
||||
|
||||
//update stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-reopened",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:tickets-reopened",user.id,1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-reopened",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:tickets-reopened",user.id,1,"increase")
|
||||
|
||||
//update category
|
||||
const channelCategory = ticket.option.get("openticket:channel-category").value
|
||||
@@ -33,10 +33,10 @@ export const registerActions = async () => {
|
||||
if (channelCategory !== ""){
|
||||
//category enabled
|
||||
try {
|
||||
const normalCategory = await openticket.client.fetchGuildCategoryChannel(guild,channelCategory)
|
||||
const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory)
|
||||
if (!normalCategory){
|
||||
//default category was not found
|
||||
openticket.log("Ticket Reopening Error: Unable to find category! #1","error",[
|
||||
opendiscord.log("Ticket Reopening Error: Unable to find category! #1","error",[
|
||||
{key:"categoryid",value:channelCategory},
|
||||
{key:"backup",value:"false"}
|
||||
])
|
||||
@@ -44,10 +44,10 @@ export const registerActions = async () => {
|
||||
//default category was found
|
||||
if (normalCategory.children.cache.size >= 49 && channelBackupCategory != ""){
|
||||
//use backup category
|
||||
const backupCategory = await openticket.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
|
||||
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
|
||||
if (!backupCategory){
|
||||
//default category was not found
|
||||
openticket.log("Ticket Reopening Error: Unable to find category! #2","error",[
|
||||
opendiscord.log("Ticket Reopening Error: Unable to find category! #2","error",[
|
||||
{key:"categoryid",value:channelBackupCategory},
|
||||
{key:"backup",value:"true"}
|
||||
])
|
||||
@@ -65,11 +65,11 @@ export const registerActions = async () => {
|
||||
}
|
||||
}
|
||||
}catch(e){
|
||||
openticket.log("Unable to move ticket to 'reopened category'!","error",[
|
||||
opendiscord.log("Unable to move ticket to 'reopened category'!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}else{
|
||||
channel.setParent(null,{lockPermissions:false})
|
||||
@@ -84,7 +84,7 @@ export const registerActions = async () => {
|
||||
allow:[],
|
||||
deny:["ViewChannel","SendMessages","ReadMessageHistory"]
|
||||
}]
|
||||
const globalAdmins = openticket.configs.get("openticket:general").data.globalAdmins
|
||||
const globalAdmins = opendiscord.configs.get("openticket:general").data.globalAdmins
|
||||
const optionAdmins = ticket.option.get("openticket:admins").value
|
||||
const readonlyAdmins = ticket.option.get("openticket:admins-readonly").value
|
||||
|
||||
@@ -129,42 +129,42 @@ export const registerActions = async () => {
|
||||
channel.permissionOverwrites.set(permissions)
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket reopening!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket reopening!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:reopen-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:reopen-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketReopened").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("afterTicketReopened").emit([ticket,user,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.reopening.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"reopen",reason,additionalData:null}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"reopen",reason,additionalData:null}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.reopening.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"reopen",reason,additionalData:null}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.reopening.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"reopen",reason,additionalData:null}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" reopened a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" reopened a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -178,37 +178,37 @@ export const registerActions = async () => {
|
||||
|
||||
export const registerVerifyBars = async () => {
|
||||
//REOPEN TICKET TICKET MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:reopen-ticket-ticket-message",openticket.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:reopen-ticket-ticket-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:reopen-ticket-ticket-message",opendiscord.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:reopen-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.reopen
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -216,86 +216,86 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:reopen-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not closed
|
||||
if (!ticket.get("openticket:closed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start reopening ticket
|
||||
if (params.data == "reason"){
|
||||
//reopen with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:reopen-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:reopen-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//reopen without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:reopen-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:reopen-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:reopen-ticket-ticket-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:reopen-ticket-ticket-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-ticket-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
|
||||
//REOPEN TICKET CLOSE MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:reopen-ticket-close-message",openticket.builders.messages.getSafe("openticket:verifybar-close-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:reopen-ticket-close-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:reopen-ticket-close-message",opendiscord.builders.messages.getSafe("openticket:verifybar-close-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:reopen-ticket-close-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.reopen
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -303,90 +303,90 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:reopen-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not closed
|
||||
if (!ticket.get("openticket:closed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start reopening ticket
|
||||
if (params.data == "reason"){
|
||||
//reopen with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:reopen-ticket-reason").build("close-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:reopen-ticket-reason").build("close-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//reopen without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:reopen-ticket").run("close-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:reopen-message").build("close-message",{guild,channel,user,ticket,reason:null}))
|
||||
await opendiscord.actions.get("openticket:reopen-ticket").run("close-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:reopen-message").build("close-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:reopen-ticket-close-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:reopen-ticket-close-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-close-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
|
||||
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:close-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:close-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
})
|
||||
])
|
||||
|
||||
//REOPEN TICKET AUTOCLOSE MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:reopen-ticket-autoclose-message",openticket.builders.messages.getSafe("openticket:verifybar-autoclose-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:reopen-ticket-autoclose-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:reopen-ticket-autoclose-message",opendiscord.builders.messages.getSafe("openticket:verifybar-autoclose-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:reopen-ticket-autoclose-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.reopen
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -394,55 +394,55 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:reopen-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not closed
|
||||
if (!ticket.get("openticket:closed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start reopening ticket
|
||||
if (params.data == "reason"){
|
||||
//reopen with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:reopen-ticket-reason").build("autoclose-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:reopen-ticket-reason").build("autoclose-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//reopen without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:reopen-ticket").run("autoclose-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:reopen-message").build("autoclose-message",{guild,channel,user,ticket,reason:null}))
|
||||
await opendiscord.actions.get("openticket:reopen-ticket").run("autoclose-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:reopen-message").build("autoclose-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:reopen-ticket-autoclose-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:reopen-ticket-autoclose-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-autoclose-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:autoclose-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:autoclose-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:reopen-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:reopen-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET UNCLAIMING SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:unclaim-ticket"))
|
||||
openticket.actions.get("openticket:unclaim-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:unclaim-ticket"))
|
||||
opendiscord.actions.get("openticket:unclaim-ticket").workers.add([
|
||||
new api.ODWorker("openticket:unclaim-ticket",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to unclaim ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketUnclaim").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketUnclaim").emit([ticket,user,channel,reason])
|
||||
|
||||
//update ticket
|
||||
ticket.get("openticket:claimed").value = false
|
||||
@@ -27,10 +27,10 @@ export const registerActions = async () => {
|
||||
if (channelCategory !== ""){
|
||||
//category enabled
|
||||
try {
|
||||
const normalCategory = await openticket.client.fetchGuildCategoryChannel(guild,channelCategory)
|
||||
const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory)
|
||||
if (!normalCategory){
|
||||
//default category was not found
|
||||
openticket.log("Ticket Unclaiming Error: Unable to find category! #1","error",[
|
||||
opendiscord.log("Ticket Unclaiming Error: Unable to find category! #1","error",[
|
||||
{key:"categoryid",value:channelCategory},
|
||||
{key:"backup",value:"false"}
|
||||
])
|
||||
@@ -38,10 +38,10 @@ export const registerActions = async () => {
|
||||
//default category was found
|
||||
if (normalCategory.children.cache.size >= 49 && channelBackupCategory != ""){
|
||||
//use backup category
|
||||
const backupCategory = await openticket.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
|
||||
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
|
||||
if (!backupCategory){
|
||||
//default category was not found
|
||||
openticket.log("Ticket Unclaiming Error: Unable to find category! #2","error",[
|
||||
opendiscord.log("Ticket Unclaiming Error: Unable to find category! #2","error",[
|
||||
{key:"categoryid",value:channelBackupCategory},
|
||||
{key:"backup",value:"true"}
|
||||
])
|
||||
@@ -60,11 +60,11 @@ export const registerActions = async () => {
|
||||
}
|
||||
|
||||
}catch(e){
|
||||
openticket.log("Unable to move ticket to 'unclaimed category'!","error",[
|
||||
opendiscord.log("Unable to move ticket to 'unclaimed category'!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}else{
|
||||
channel.setParent(null,{lockPermissions:false})
|
||||
@@ -73,43 +73,43 @@ export const registerActions = async () => {
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket unclaiming!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket unclaiming!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:unclaim-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:unclaim-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketUnclaimed").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("afterTicketUnclaimed").emit([ticket,user,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.claiming.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"unclaim",reason,additionalData:null}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"unclaim",reason,additionalData:null}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.claiming.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"unclaim",reason,additionalData:null}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.claiming.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"unclaim",reason,additionalData:null}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" unclaimed a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" unclaimed a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -123,37 +123,37 @@ export const registerActions = async () => {
|
||||
|
||||
export const registerVerifyBars = async () => {
|
||||
//UNCLAIM TICKET TICKET MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:unclaim-ticket-ticket-message",openticket.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:unclaim-ticket-ticket-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:unclaim-ticket-ticket-message",opendiscord.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:unclaim-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.unclaim
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -161,86 +161,86 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:unclaim-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not claimed
|
||||
if (!ticket.get("openticket:claimed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start unclaiming ticket
|
||||
if (params.data == "reason"){
|
||||
//unclaim with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:unclaim-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:unclaim-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//unclaim without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unclaim-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:unclaim-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:unclaim-ticket-ticket-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:unclaim-ticket-ticket-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-ticket-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
|
||||
//UNCLAIM TICKET CLAIM MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:unclaim-ticket-claim-message",openticket.builders.messages.getSafe("openticket:verifybar-claim-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:unclaim-ticket-claim-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:unclaim-ticket-claim-message",opendiscord.builders.messages.getSafe("openticket:verifybar-claim-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:unclaim-ticket-claim-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.unclaim
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -248,58 +248,58 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:unclaim-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not claimed
|
||||
if (!ticket.get("openticket:claimed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start unclaiming ticket
|
||||
if (params.data == "reason"){
|
||||
//unclaim with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:unclaim-ticket-reason").build("claim-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:unclaim-ticket-reason").build("claim-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//unclaim without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unclaim-ticket").run("claim-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:unclaim-message").build("claim-message",{guild,channel,user,ticket,reason:null}))
|
||||
await opendiscord.actions.get("openticket:unclaim-ticket").run("claim-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:unclaim-message").build("claim-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:unclaim-ticket-claim-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:unclaim-ticket-claim-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-claim-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
|
||||
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:claim-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:claim-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:unclaim-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:unclaim-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
|
||||
+63
-63
@@ -1,19 +1,19 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET UNPINNING SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
openticket.actions.add(new api.ODAction("openticket:unpin-ticket"))
|
||||
openticket.actions.get("openticket:unpin-ticket").workers.add([
|
||||
opendiscord.actions.add(new api.ODAction("openticket:unpin-ticket"))
|
||||
opendiscord.actions.get("openticket:unpin-ticket").workers.add([
|
||||
new api.ODWorker("openticket:unpin-ticket",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
if (channel.isThread()) throw new api.ODSystemError("Unable to unpin ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
await openticket.events.get("onTicketUnpin").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("onTicketUnpin").emit([ticket,user,channel,reason])
|
||||
|
||||
//update ticket
|
||||
ticket.get("openticket:pinned").value = false
|
||||
@@ -27,51 +27,51 @@ export const registerActions = async () => {
|
||||
const newName = originalName.replace("📌","");
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
|
||||
openticket.log("Failed to rename channel on ticket unpin","error")
|
||||
opendiscord.log("Failed to rename channel on ticket unpin","error")
|
||||
})
|
||||
}catch(err){
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:error-channel-rename").build("ticket-unpin",{guild,channel,user,originalName,newName})).message)
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:error-channel-rename").build("ticket-unpin",{guild,channel,user,originalName,newName})).message)
|
||||
}
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on ticket unpinning!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on ticket unpinning!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await openticket.builders.messages.getSafe("openticket:unpin-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("openticket:unpin-message").build(source,{guild,channel,user,ticket,reason})).message)
|
||||
ticket.get("openticket:busy").value = false
|
||||
await openticket.events.get("afterTicketUnpinned").emit([ticket,user,channel,reason])
|
||||
await opendiscord.events.get("afterTicketUnpinned").emit([ticket,user,channel,reason])
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,reason} = params
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.pinning.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"unpin",reason,additionalData:null}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:ticket-action-logs").build(source,{guild,channel,user,ticket,mode:"unpin",reason,additionalData:null}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
const creator = await openticket.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.pinning.dm) await openticket.client.sendUserDm(creator,await openticket.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"unpin",reason,additionalData:null}))
|
||||
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
|
||||
if (creator && generalConfig.data.system.messages.pinning.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("openticket:ticket-action-dm").build(source,{guild,channel,user,ticket,mode:"unpin",reason,additionalData:null}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
openticket.log(user.displayName+" unpinned a ticket!","info",[
|
||||
opendiscord.log(user.displayName+" unpinned a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
@@ -85,37 +85,37 @@ export const registerActions = async () => {
|
||||
|
||||
export const registerVerifyBars = async () => {
|
||||
//UNPIN TICKET TICKET MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:unpin-ticket-ticket-message",openticket.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:unpin-ticket-ticket-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:unpin-ticket-ticket-message",opendiscord.builders.messages.getSafe("openticket:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:unpin-ticket-ticket-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.unpin
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -123,86 +123,86 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:unpin-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not pinned
|
||||
if (!ticket.get("openticket:pinned").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start unpining ticket
|
||||
if (params.data == "reason"){
|
||||
//unpin with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:unpin-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:unpin-ticket-reason").build("ticket-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//unpin without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unpin-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:unpin-ticket").run("ticket-message",{guild,channel,user,ticket,reason:null,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:unpin-ticket-ticket-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:unpin-ticket-ticket-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-ticket-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
})
|
||||
])
|
||||
|
||||
//UNPIN TICKET PIN MESSAGE
|
||||
openticket.verifybars.add(new api.ODVerifyBar("openticket:unpin-ticket-pin-message",openticket.builders.messages.getSafe("openticket:verifybar-pin-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
openticket.verifybars.get("openticket:unpin-ticket-pin-message").success.add([
|
||||
opendiscord.verifybars.add(new api.ODVerifyBar("openticket:unpin-ticket-pin-message",opendiscord.builders.messages.getSafe("openticket:verifybar-pin-message"),!generalConfig.data.system.disableVerifyBars))
|
||||
opendiscord.verifybars.get("openticket:unpin-ticket-pin-message").success.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.unpin
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -210,58 +210,58 @@ export const registerVerifyBars = async () => {
|
||||
new api.ODWorker("openticket:unpin-ticket",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not pinned
|
||||
if (!ticket.get("openticket:pinned").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start unpinning ticket
|
||||
if (params.data == "reason"){
|
||||
//unpin with reason
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:unpin-ticket-reason").build("pin-message",{guild,channel,user,ticket}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:unpin-ticket-reason").build("pin-message",{guild,channel,user,ticket}))
|
||||
}else{
|
||||
//unpin without reason
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unpin-ticket").run("pin-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:unpin-message").build("pin-message",{guild,channel,user,ticket,reason:null}))
|
||||
await opendiscord.actions.get("openticket:unpin-ticket").run("pin-message",{guild,channel,user,ticket,reason:null,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:unpin-message").build("pin-message",{guild,channel,user,ticket,reason:null}))
|
||||
}
|
||||
})
|
||||
])
|
||||
openticket.verifybars.get("openticket:unpin-ticket-pin-message").failure.add([
|
||||
opendiscord.verifybars.get("openticket:unpin-ticket-pin-message").failure.add([
|
||||
new api.ODWorker("openticket:back-to-pin-message",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
const {verifybarMessage} = params
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const rawReason = (verifybarMessage && verifybarMessage.embeds[0] && verifybarMessage.embeds[0].fields[0]) ? verifybarMessage.embeds[0].fields[0].value : null
|
||||
const reason = (rawReason == null) ? null : rawReason.substring(3,rawReason.length-3)
|
||||
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:pin-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:pin-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
})
|
||||
])
|
||||
openticket.actions.get("openticket:unpin-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
opendiscord.actions.get("openticket:unpin-ticket").workers.backupWorker = new api.ODWorker("openticket:cancel-busy",0,(instance,params) => {
|
||||
//set busy to false in case of crash or cancel
|
||||
params.ticket.get("openticket:busy").value = false
|
||||
})
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
///////////////////////////////////////
|
||||
//BUTTON BUILDERS
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const buttons = openticket.builders.buttons
|
||||
const lang = openticket.languages
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const buttons = opendiscord.builders.buttons
|
||||
const lang = opendiscord.languages
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerAllButtons = async () => {
|
||||
verifybarButtons()
|
||||
@@ -83,7 +83,7 @@ const helpMenuButtons = () => {
|
||||
buttons.get("openticket:help-menu-page").workers.add(
|
||||
new api.ODWorker("openticket:help-menu-page",0,async (instance,params) => {
|
||||
const {mode,page} = params
|
||||
const totalPages = (await openticket.helpmenu.render(mode)).length
|
||||
const totalPages = (await opendiscord.helpmenu.render(mode)).length
|
||||
const pageText = (page+1).toString()+"/"+totalPages.toString()
|
||||
|
||||
instance.setCustomId("od:help-menu-page_"+page.toString())
|
||||
@@ -127,7 +127,7 @@ const helpMenuButtons = () => {
|
||||
buttons.get("openticket:help-menu-next").workers.add(
|
||||
new api.ODWorker("openticket:help-menu-next",0,async (instance,params) => {
|
||||
const {mode,page} = params
|
||||
const totalPages = (await openticket.helpmenu.render(mode)).length
|
||||
const totalPages = (await opendiscord.helpmenu.render(mode)).length
|
||||
|
||||
instance.setCustomId("od:help-menu-next")
|
||||
instance.setMode("button")
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
///////////////////////////////////////
|
||||
//DROPDOWN BUILDERS
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const dropdowns = openticket.builders.dropdowns
|
||||
const dropdowns = opendiscord.builders.dropdowns
|
||||
|
||||
export const registerAllDropdowns = async () => {
|
||||
panelDropdowns()
|
||||
|
||||
+24
-24
@@ -1,13 +1,13 @@
|
||||
///////////////////////////////////////
|
||||
//EMBED BUILDERS
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
import nodepath from "path"
|
||||
|
||||
const embeds = openticket.builders.embeds
|
||||
const lang = openticket.languages
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const embeds = opendiscord.builders.embeds
|
||||
const lang = opendiscord.languages
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerAllEmbeds = async () => {
|
||||
errorEmbeds()
|
||||
@@ -274,7 +274,7 @@ const errorEmbeds = () => {
|
||||
new api.ODWorker("openticket:error-option-unknown",0,async (instance,params,source) => {
|
||||
const {user} = params
|
||||
|
||||
const renderedTicketOptions = openticket.options.getAll().map((option) => {
|
||||
const renderedTicketOptions = opendiscord.options.getAll().map((option) => {
|
||||
if (option instanceof api.ODTicketOption && option.exists("openticket:name")){
|
||||
return "- **"+option.get("openticket:name").value+":** `"+option.id.value+"`"
|
||||
}else return "- `"+option.id.value+"`"
|
||||
@@ -294,7 +294,7 @@ const errorEmbeds = () => {
|
||||
new api.ODWorker("openticket:error-panel-unknown",0,async (instance,params,source) => {
|
||||
const {user} = params
|
||||
|
||||
const renderedPanels = openticket.panels.getAll().map((panel) => {
|
||||
const renderedPanels = opendiscord.panels.getAll().map((panel) => {
|
||||
if (panel.exists("openticket:name")){
|
||||
return "- **"+panel.get("openticket:name").value+":** `"+panel.id.value+"`"
|
||||
}else return "- `"+panel.id.value+"`"
|
||||
@@ -370,9 +370,9 @@ const helpMenuEmbeds = () => {
|
||||
instance.setColor(generalConfig.data.mainColor)
|
||||
instance.setTitle(utilities.emojiTitle("ℹ️",lang.getTranslation("actions.titles.help")))
|
||||
instance.setDescription(lang.getTranslation("actions.descriptions.helpExplanation"))
|
||||
instance.setThumbnail(openticket.client.client.user.displayAvatarURL())
|
||||
instance.setThumbnail(opendiscord.client.client.user.displayAvatarURL())
|
||||
|
||||
const data = await openticket.helpmenu.render(mode)
|
||||
const data = await opendiscord.helpmenu.render(mode)
|
||||
const currentData = data[page] ?? []
|
||||
instance.setFields(currentData)
|
||||
})
|
||||
@@ -386,7 +386,7 @@ const statsEmbeds = () => {
|
||||
new api.ODWorker("openticket:stats-global",0,async (instance,params) => {
|
||||
const {guild,channel,user} = params
|
||||
|
||||
const scope = openticket.stats.get("openticket:global")
|
||||
const scope = opendiscord.stats.get("openticket:global")
|
||||
if (!scope) return
|
||||
const data = await scope.render("GLOBAL",guild,channel,user)
|
||||
|
||||
@@ -394,9 +394,9 @@ const statsEmbeds = () => {
|
||||
instance.setTitle(scope.name)
|
||||
instance.setDescription(data)
|
||||
|
||||
if (openticket.permissions.hasPermissions("owner",await openticket.permissions.getPermissions(user,channel,guild))){
|
||||
if (opendiscord.permissions.hasPermissions("owner",await opendiscord.permissions.getPermissions(user,channel,guild))){
|
||||
//show system data when owner or developer
|
||||
const systemScope = openticket.stats.get("openticket:system")
|
||||
const systemScope = opendiscord.stats.get("openticket:system")
|
||||
if (!systemScope) return
|
||||
const systemData = await systemScope.render("GLOBAL",guild,channel,user)
|
||||
instance.addFields({name:systemScope.name,value:systemData,inline:false})
|
||||
@@ -410,8 +410,8 @@ const statsEmbeds = () => {
|
||||
new api.ODWorker("openticket:stats-ticket",0,async (instance,params) => {
|
||||
const {guild,channel,user,scopeData} = params
|
||||
|
||||
const scope = openticket.stats.get("openticket:ticket")
|
||||
const participantsScope = openticket.stats.get("openticket:participants")
|
||||
const scope = opendiscord.stats.get("openticket:ticket")
|
||||
const participantsScope = opendiscord.stats.get("openticket:participants")
|
||||
if (!scope || !participantsScope) return
|
||||
const data = await scope.render(scopeData.id.value,guild,channel,user)
|
||||
const participantsData = await participantsScope.render(scopeData.id.value,guild,channel,user)
|
||||
@@ -429,7 +429,7 @@ const statsEmbeds = () => {
|
||||
new api.ODWorker("openticket:stats-user",0,async (instance,params) => {
|
||||
const {guild,channel,user,scopeData} = params
|
||||
|
||||
const scope = openticket.stats.get("openticket:user")
|
||||
const scope = opendiscord.stats.get("openticket:user")
|
||||
if (!scope) return
|
||||
const data = await scope.render(scopeData.id,guild,channel,user)
|
||||
|
||||
@@ -439,8 +439,8 @@ const statsEmbeds = () => {
|
||||
instance.setThumbnail(scopeData.displayAvatarURL())
|
||||
}),
|
||||
new api.ODWorker("openticket:easter-egg",-1,async (instance,params) => {
|
||||
if (!openticket.flags.exists("openticket:no-easter")) return
|
||||
const easterFlag = openticket.flags.get("openticket:no-easter")
|
||||
if (!opendiscord.flags.exists("openticket:no-easter")) return
|
||||
const easterFlag = opendiscord.flags.get("openticket:no-easter")
|
||||
if (!easterFlag.value){
|
||||
//🥚 add easter egg 🥚
|
||||
const {user} = params
|
||||
@@ -563,7 +563,7 @@ const ticketEmbeds = () => {
|
||||
const {user,ticket} = params
|
||||
|
||||
const method = (source == "panel-button" || source == "panel-dropdown") ? lang.getTranslation("params.uppercase.panel") : (source == "slash" || source == "text") ? lang.getTranslation("params.uppercase.command") : lang.getTranslation("params.uppercase.system")
|
||||
const blacklisted = openticket.blacklist.exists(user.id) ? lang.getTranslation("params.uppercase.true") : lang.getTranslation("params.uppercase.false")
|
||||
const blacklisted = opendiscord.blacklist.exists(user.id) ? lang.getTranslation("params.uppercase.true") : lang.getTranslation("params.uppercase.false")
|
||||
|
||||
instance.setColor(generalConfig.data.mainColor)
|
||||
instance.setTitle(utilities.emojiTitle("🎫",lang.getTranslation("actions.titles.created")))
|
||||
@@ -608,7 +608,7 @@ const ticketEmbeds = () => {
|
||||
else if (!ticket.get("openticket:closed").value && ticket.get("openticket:autoclose-enabled").value) instance.setFooter("⏱️ "+lang.getTranslationWithParams("actions.descriptions.ticketMessageAutoclose",[ticket.option.get("openticket:autoclose-hours").value.toString()]))
|
||||
|
||||
if (ticket.get("openticket:claimed").value){
|
||||
const claimUser = await openticket.tickets.getTicketUser(ticket,"claimer")
|
||||
const claimUser = await opendiscord.tickets.getTicketUser(ticket,"claimer")
|
||||
if (!claimUser) return
|
||||
instance.setAuthor(lang.getTranslationWithParams("params.uppercase.claimedBy",[claimUser.displayName]),claimUser.displayAvatarURL())
|
||||
}
|
||||
@@ -774,7 +774,7 @@ const ticketEmbeds = () => {
|
||||
embeds.get("openticket:ticket-action-dm").workers.add(
|
||||
new api.ODWorker("openticket:ticket-action-dm",0,async (instance,params,source) => {
|
||||
const {user,mode,ticket,reason,additionalData} = params
|
||||
const channel = await openticket.tickets.getTicketChannel(ticket)
|
||||
const channel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
|
||||
instance.setColor(generalConfig.data.mainColor)
|
||||
instance.setTimestamp(new Date())
|
||||
@@ -823,7 +823,7 @@ const ticketEmbeds = () => {
|
||||
embeds.get("openticket:ticket-action-logs").workers.add(
|
||||
new api.ODWorker("openticket:ticket-action-logs",0,async (instance,params,source) => {
|
||||
const {user,mode,ticket,reason,additionalData} = params
|
||||
const channel = await openticket.tickets.getTicketChannel(ticket)
|
||||
const channel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
|
||||
instance.setColor(generalConfig.data.mainColor)
|
||||
instance.setThumbnail(user.displayAvatarURL())
|
||||
@@ -882,7 +882,7 @@ const blacklistEmbeds = () => {
|
||||
const {user} = params
|
||||
|
||||
const renderedUsers: string[] = []
|
||||
await openticket.blacklist.loopAll((blacklist,id) => {renderedUsers.push(discord.userMention(id.value)+" - "+(blacklist.reason ? blacklist.reason : "/"))})
|
||||
await opendiscord.blacklist.loopAll((blacklist,id) => {renderedUsers.push(discord.userMention(id.value)+" - "+(blacklist.reason ? blacklist.reason : "/"))})
|
||||
|
||||
instance.setAuthor(user.displayName,user.displayAvatarURL())
|
||||
instance.setColor(generalConfig.data.mainColor)
|
||||
@@ -900,7 +900,7 @@ const blacklistEmbeds = () => {
|
||||
embeds.get("openticket:blacklist-get").workers.add(
|
||||
new api.ODWorker("openticket:blacklist-get",0,async (instance,params,source) => {
|
||||
const {user,data} = params
|
||||
const blacklist = openticket.blacklist.get(data.id)
|
||||
const blacklist = opendiscord.blacklist.get(data.id)
|
||||
|
||||
instance.setAuthor(user.displayName,user.displayAvatarURL())
|
||||
instance.setColor(generalConfig.data.mainColor)
|
||||
@@ -985,7 +985,7 @@ const transcriptEmbeds = () => {
|
||||
embeds.get("openticket:transcript-text-ready").workers.add(
|
||||
new api.ODWorker("openticket:transcript-text-ready",0,async (instance,params,source) => {
|
||||
const {guild,channel,user,ticket,compiler} = params
|
||||
const transcriptConfig = openticket.configs.get("openticket:transcripts")
|
||||
const transcriptConfig = opendiscord.configs.get("openticket:transcripts")
|
||||
|
||||
instance.setColor(transcriptConfig.data.embedSettings.customColor ? transcriptConfig.data.embedSettings.customColor : generalConfig.data.mainColor)
|
||||
instance.setTitle(utilities.emojiTitle("📄",lang.getTranslation("transcripts.success.ready")))
|
||||
@@ -1015,7 +1015,7 @@ const transcriptEmbeds = () => {
|
||||
embeds.get("openticket:transcript-html-ready").workers.add(
|
||||
new api.ODWorker("openticket:transcript-html-ready",0,async (instance,params,source) => {
|
||||
const {guild,channel,user,ticket,compiler,result} = params
|
||||
const transcriptConfig = openticket.configs.get("openticket:transcripts")
|
||||
const transcriptConfig = opendiscord.configs.get("openticket:transcripts")
|
||||
|
||||
instance.setColor(transcriptConfig.data.embedSettings.customColor ? transcriptConfig.data.embedSettings.customColor : generalConfig.data.mainColor)
|
||||
instance.setTitle(utilities.emojiTitle("📄",lang.getTranslation("transcripts.success.ready")))
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
///////////////////////////////////////
|
||||
//FILE BUILDERS
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const files = openticket.builders.files
|
||||
const lang = openticket.languages
|
||||
const transcriptConfig = openticket.configs.get("openticket:transcripts")
|
||||
const files = opendiscord.builders.files
|
||||
const lang = opendiscord.languages
|
||||
const transcriptConfig = opendiscord.configs.get("openticket:transcripts")
|
||||
|
||||
export const registerAllFiles = async () => {
|
||||
transcriptFiles()
|
||||
@@ -24,7 +24,7 @@ const transcriptFiles = () => {
|
||||
const customName = transcriptConfig.data.textTranscriptStyle.customFileName
|
||||
|
||||
const creatorId = ticket.get("openticket:opened-by").value ?? "unknown-creator-id"
|
||||
const creator = (await openticket.tickets.getTicketUser(ticket,"creator"))
|
||||
const creator = (await opendiscord.tickets.getTicketUser(ticket,"creator"))
|
||||
|
||||
if (fileMode == "custom") instance.setName(customName.split(".")[0]+".txt")
|
||||
else if (fileMode == "user-id") instance.setName(creatorId+".txt")
|
||||
|
||||
+18
-18
@@ -1,16 +1,16 @@
|
||||
///////////////////////////////////////
|
||||
//MESSAGE BUILDERS
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const messages = openticket.builders.messages
|
||||
const buttons = openticket.builders.buttons
|
||||
const dropdowns = openticket.builders.dropdowns
|
||||
const files = openticket.builders.files
|
||||
const embeds = openticket.builders.embeds
|
||||
const lang = openticket.languages
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const messages = opendiscord.builders.messages
|
||||
const buttons = opendiscord.builders.buttons
|
||||
const dropdowns = opendiscord.builders.dropdowns
|
||||
const files = opendiscord.builders.files
|
||||
const embeds = opendiscord.builders.embeds
|
||||
const lang = opendiscord.languages
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerAllMessages = async () => {
|
||||
verifyBarMessages()
|
||||
@@ -36,7 +36,7 @@ const verifyBarMessages = () => {
|
||||
instance.setContent("ODError: Not In Guild => `openticket:verifybar-ticket-message`")
|
||||
return
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket){
|
||||
instance.setContent("ODError: Unknown Ticket => `openticket:verifybar-ticket-message`")
|
||||
return
|
||||
@@ -110,7 +110,7 @@ const verifyBarMessages = () => {
|
||||
instance.setContent("ODError: Not In Guild => `openticket:verifybar-close-message`")
|
||||
return
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket){
|
||||
instance.setContent("ODError: Unknown Ticket => `openticket:verifybar-close-message`")
|
||||
return
|
||||
@@ -146,7 +146,7 @@ const verifyBarMessages = () => {
|
||||
instance.setContent("ODError: Not In Guild => `openticket:verifybar-reopen-message`")
|
||||
return
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket){
|
||||
instance.setContent("ODError: Unknown Ticket => `openticket:verifybar-reopen-message`")
|
||||
return
|
||||
@@ -182,7 +182,7 @@ const verifyBarMessages = () => {
|
||||
instance.setContent("ODError: Not In Guild => `openticket:verifybar-claim-message`")
|
||||
return
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket){
|
||||
instance.setContent("ODError: Unknown Ticket => `openticket:verifybar-claim-message`")
|
||||
return
|
||||
@@ -212,7 +212,7 @@ const verifyBarMessages = () => {
|
||||
instance.setContent("ODError: Not In Guild => `openticket:verifybar-unclaim-message`")
|
||||
return
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket){
|
||||
instance.setContent("ODError: Unknown Ticket => `openticket:verifybar-unclaim-message`")
|
||||
return
|
||||
@@ -242,7 +242,7 @@ const verifyBarMessages = () => {
|
||||
instance.setContent("ODError: Not In Guild => `openticket:verifybar-pin-message`")
|
||||
return
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket){
|
||||
instance.setContent("ODError: Unknown Ticket => `openticket:verifybar-pin-message`")
|
||||
return
|
||||
@@ -272,7 +272,7 @@ const verifyBarMessages = () => {
|
||||
instance.setContent("ODError: Not In Guild => `openticket:verifybar-unpin-message`")
|
||||
return
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket){
|
||||
instance.setContent("ODError: Unknown Ticket => `openticket:verifybar-unpin-message`")
|
||||
return
|
||||
@@ -302,7 +302,7 @@ const verifyBarMessages = () => {
|
||||
instance.setContent("ODError: Not In Guild => `openticket:verifybar-autoclose-message`")
|
||||
return
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket){
|
||||
instance.setContent("ODError: Unknown Ticket => `openticket:verifybar-autoclose-message`")
|
||||
return
|
||||
@@ -496,7 +496,7 @@ const helpMenuMessages = () => {
|
||||
messages.get("openticket:help-menu").workers.add(
|
||||
new api.ODWorker("openticket:help-menu",0,async (instance,params,source) => {
|
||||
const {mode,page} = params
|
||||
const totalPages = (await openticket.helpmenu.render(mode)).length
|
||||
const totalPages = (await opendiscord.helpmenu.render(mode)).length
|
||||
|
||||
const embed = await embeds.getSafe("openticket:help-menu").build(source,{mode,page})
|
||||
instance.addEmbed(embed)
|
||||
@@ -589,7 +589,7 @@ const panelMessages = () => {
|
||||
const {guild,channel,user,panel} = params
|
||||
const options: api.ODOption[] = []
|
||||
panel.get("openticket:options").value.forEach((id) => {
|
||||
const opt = openticket.options.get(id)
|
||||
const opt = opendiscord.options.get(id)
|
||||
if (opt) options.push(opt)
|
||||
})
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
///////////////////////////////////////
|
||||
//MODAL BUILDERS
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const modals = openticket.builders.modals
|
||||
const lang = openticket.languages
|
||||
const modals = opendiscord.builders.modals
|
||||
const lang = opendiscord.languages
|
||||
|
||||
export const registerAllModals = async () => {
|
||||
ticketModals()
|
||||
@@ -21,7 +21,7 @@ const ticketModals = () => {
|
||||
instance.setTitle(option.exists("openticket:name") ? option.get("openticket:name").value : option.id.value)
|
||||
const questionIds = option.get("openticket:questions").value
|
||||
questionIds.forEach((id) => {
|
||||
const question = openticket.questions.get(id)
|
||||
const question = opendiscord.questions.get(id)
|
||||
if (!question) return
|
||||
if (question instanceof api.ODShortQuestion) instance.addQuestion({
|
||||
customId:question.id.value,
|
||||
|
||||
+20
-20
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//ADD COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//ADD COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:add",generalConfig.data.prefix,"add"))
|
||||
openticket.responders.commands.get("openticket:add").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:add",generalConfig.data.prefix,"add"))
|
||||
opendiscord.responders.commands.get("openticket:add").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.add
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,17 +46,17 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:add",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -64,19 +64,19 @@ export const registerCommandResponders = async () => {
|
||||
const reason = instance.options.getString("reason",false)
|
||||
|
||||
//return when user already added to ticket
|
||||
const participants = await openticket.tickets.getAllTicketParticipants(ticket)
|
||||
const participants = await opendiscord.tickets.getAllTicketParticipants(ticket)
|
||||
if (!participants || participants.find((p) => p.user.id == data.id)){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.add"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.add"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start adding user to ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:add-ticket-user").run(source,{guild,channel,user,ticket,reason,sendMessage:false,data})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:add-message").build(source,{guild,channel,user,ticket,reason,data}))
|
||||
await opendiscord.actions.get("openticket:add-ticket-user").run(source,{guild,channel,user,ticket,reason,sendMessage:false,data})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:add-message").build(source,{guild,channel,user,ticket,reason,data}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'add' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'add' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+23
-23
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//AUTOCLOSE COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//AUTOCLOSE COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:autoclose",generalConfig.data.prefix,/^autoclose/))
|
||||
openticket.responders.commands.get("openticket:autoclose").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:autoclose",generalConfig.data.prefix,/^autoclose/))
|
||||
opendiscord.responders.commands.get("openticket:autoclose").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.autoclose
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -47,22 +47,22 @@ export const registerCommandResponders = async () => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
//return when already closed
|
||||
if (ticket.get("openticket:closed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -73,36 +73,36 @@ export const registerCommandResponders = async () => {
|
||||
const reason = instance.options.getString("reason",false)
|
||||
ticket.get("openticket:autoclose-enabled").value = false
|
||||
ticket.get("openticket:autoclose-hours").value = 0
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:autoclose-disable").build(source,{guild,channel,user,ticket,reason}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:autoclose-disable").build(source,{guild,channel,user,ticket,reason}))
|
||||
|
||||
}else if (scope == "enable"){
|
||||
const time = instance.options.getNumber("time",true)
|
||||
const reason = instance.options.getString("reason",false)
|
||||
ticket.get("openticket:autoclose-enabled").value = true
|
||||
ticket.get("openticket:autoclose-hours").value = time
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:autoclose-enable").build(source,{guild,channel,user,ticket,reason,time}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:autoclose-enable").build(source,{guild,channel,user,ticket,reason,time}))
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on autoclose "+scope+"!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on autoclose "+scope+"!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
const scope = instance.options.getSubCommand()
|
||||
const reason = instance.options.getString("reason",false)
|
||||
openticket.log(instance.user.displayName+" used the 'autoclose "+scope+"' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'autoclose "+scope+"' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+22
-22
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//AUTODELETE COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//AUTODELETE COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:autodelete",generalConfig.data.prefix,/^autodelete/))
|
||||
openticket.responders.commands.get("openticket:autodelete").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:autodelete",generalConfig.data.prefix,/^autodelete/))
|
||||
opendiscord.responders.commands.get("openticket:autodelete").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.autodelete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -47,17 +47,17 @@ export const registerCommandResponders = async () => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -68,36 +68,36 @@ export const registerCommandResponders = async () => {
|
||||
const reason = instance.options.getString("reason",false)
|
||||
ticket.get("openticket:autodelete-enabled").value = false
|
||||
ticket.get("openticket:autodelete-days").value = 0
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:autodelete-disable").build(source,{guild,channel,user,ticket,reason}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:autodelete-disable").build(source,{guild,channel,user,ticket,reason}))
|
||||
|
||||
}else if (scope == "enable"){
|
||||
const time = instance.options.getNumber("time",true)
|
||||
const reason = instance.options.getString("reason",false)
|
||||
ticket.get("openticket:autodelete-enabled").value = true
|
||||
ticket.get("openticket:autodelete-days").value = time
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:autodelete-enable").build(source,{guild,channel,user,ticket,reason,time}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:autodelete-enable").build(source,{guild,channel,user,ticket,reason,time}))
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await openticket.tickets.getTicketMessage(ticket)
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
if (ticketMessage){
|
||||
try{
|
||||
ticketMessage.edit((await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
ticketMessage.edit((await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket})).message)
|
||||
}catch(e){
|
||||
openticket.log("Unable to edit ticket message on autodelete "+scope+"!","error",[
|
||||
opendiscord.log("Unable to edit ticket message on autodelete "+scope+"!","error",[
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"messageid",value:ticketMessage.id},
|
||||
{key:"option",value:ticket.option.id.value}
|
||||
])
|
||||
openticket.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
|
||||
}
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
const scope = instance.options.getSubCommand()
|
||||
const reason = instance.options.getString("reason",false)
|
||||
openticket.log(instance.user.displayName+" used the 'autodelete "+scope+"' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'autodelete "+scope+"' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+26
-26
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//BLACKLIST COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//BLACKLIST COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:blacklist",generalConfig.data.prefix,/^blacklist/))
|
||||
openticket.responders.commands.get("openticket:blacklist").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:blacklist",generalConfig.data.prefix,/^blacklist/))
|
||||
opendiscord.responders.commands.get("openticket:blacklist").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.blacklist
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -47,25 +47,25 @@ export const registerCommandResponders = async () => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "add" && scope != "get" && scope != "remove" && scope != "view")) return
|
||||
|
||||
if (scope == "view"){
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:blacklist-view").build(source,{guild,channel,user}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:blacklist-view").build(source,{guild,channel,user}))
|
||||
|
||||
}else if (scope == "get"){
|
||||
const data = instance.options.getUser("user",true)
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:blacklist-get").build(source,{guild,channel,user,data}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:blacklist-get").build(source,{guild,channel,user,data}))
|
||||
|
||||
}else if (scope == "add"){
|
||||
const data = instance.options.getUser("user",true)
|
||||
const reason = instance.options.getString("reason",false)
|
||||
|
||||
openticket.blacklist.add(new api.ODBlacklist(data.id,reason),true)
|
||||
openticket.log(instance.user.displayName+" added "+data.displayName+" to blacklist!","info",[
|
||||
opendiscord.blacklist.add(new api.ODBlacklist(data.id,reason),true)
|
||||
opendiscord.log(instance.user.displayName+" added "+data.displayName+" to blacklist!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
@@ -74,17 +74,17 @@ export const registerCommandResponders = async () => {
|
||||
])
|
||||
|
||||
//manage stats
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:users-blacklisted",1,"increase")
|
||||
await openticket.stats.get("openticket:user").setStat("openticket:users-blacklisted",user.id,1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:users-blacklisted",1,"increase")
|
||||
await opendiscord.stats.get("openticket:user").setStat("openticket:users-blacklisted",user.id,1,"increase")
|
||||
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:blacklist-add").build(source,{guild,channel,user,data,reason}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:blacklist-add").build(source,{guild,channel,user,data,reason}))
|
||||
|
||||
}else if (scope == "remove"){
|
||||
const data = instance.options.getUser("user",true)
|
||||
const reason = instance.options.getString("reason",false)
|
||||
|
||||
openticket.blacklist.remove(data.id)
|
||||
openticket.log(instance.user.displayName+" removed "+data.displayName+" from blacklist!","info",[
|
||||
opendiscord.blacklist.remove(data.id)
|
||||
opendiscord.log(instance.user.displayName+" removed "+data.displayName+" from blacklist!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
@@ -92,7 +92,7 @@ export const registerCommandResponders = async () => {
|
||||
{key:"reason",value:reason ?? "/"}
|
||||
])
|
||||
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:blacklist-remove").build(source,{guild,channel,user,data,reason}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:blacklist-remove").build(source,{guild,channel,user,data,reason}))
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("openticket:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
@@ -107,16 +107,16 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//to logs
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.blacklisting.logs){
|
||||
const logChannel = openticket.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await openticket.builders.messages.getSafe("openticket:blacklist-logs").build(source,{guild,channel,user,mode:scope,data,reason}))
|
||||
const logChannel = opendiscord.posts.get("openticket:logs")
|
||||
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("openticket:blacklist-logs").build(source,{guild,channel,user,mode:scope,data,reason}))
|
||||
}
|
||||
|
||||
//to dm
|
||||
if (generalConfig.data.system.messages.blacklisting.dm) await openticket.client.sendUserDm(user,await openticket.builders.messages.getSafe("openticket:blacklist-dm").build(source,{guild,channel,user,mode:scope,data,reason}))
|
||||
if (generalConfig.data.system.messages.blacklisting.dm) await opendiscord.client.sendUserDm(user,await opendiscord.builders.messages.getSafe("openticket:blacklist-dm").build(source,{guild,channel,user,mode:scope,data,reason}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
const scope = instance.options.getSubCommand()
|
||||
openticket.log(instance.user.displayName+" used the 'blacklist "+scope+"' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'blacklist "+scope+"' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+33
-33
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//CLAIM COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//CLAIM COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:claim",generalConfig.data.prefix,"claim"))
|
||||
openticket.responders.commands.get("openticket:claim").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:claim",generalConfig.data.prefix,"claim"))
|
||||
opendiscord.responders.commands.get("openticket:claim").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.claim
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,22 +46,22 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:claim",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already claimed
|
||||
if (ticket.get("openticket:claimed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -70,11 +70,11 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//start claiming ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:claim-ticket").run(source,{guild,channel,user:claimUser,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:claim-message").build(source,{guild,channel,user:claimUser,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:claim-ticket").run(source,{guild,channel,user:claimUser,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:claim-message").build(source,{guild,channel,user:claimUser,ticket,reason}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'claim' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'claim' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -86,33 +86,33 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//CLAIM TICKET BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:claim-ticket",/^od:claim-ticket/))
|
||||
openticket.responders.buttons.get("openticket:claim-ticket").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:claim-ticket",/^od:claim-ticket/))
|
||||
opendiscord.responders.buttons.get("openticket:claim-ticket").workers.add(
|
||||
new api.ODWorker("openticket:claim-ticket",0,async (instance,params,source,cancel) => {
|
||||
const originalSource = instance.interaction.customId.split("_")[1]
|
||||
if (originalSource != "ticket-message" && originalSource != "unclaim-message") return
|
||||
|
||||
if (originalSource == "ticket-message") await openticket.verifybars.get("openticket:claim-ticket-ticket-message").activate(instance)
|
||||
else await openticket.verifybars.get("openticket:claim-ticket-unclaim-message").activate(instance)
|
||||
if (originalSource == "ticket-message") await opendiscord.verifybars.get("openticket:claim-ticket-ticket-message").activate(instance)
|
||||
else await opendiscord.verifybars.get("openticket:claim-ticket-unclaim-message").activate(instance)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export const registerModalResponders = async () => {
|
||||
//CLAIM WITH REASON MODAL RESPONDER
|
||||
openticket.responders.modals.add(new api.ODModalResponder("openticket:claim-ticket-reason",/^od:claim-ticket-reason_/))
|
||||
openticket.responders.modals.get("openticket:claim-ticket-reason").workers.add([
|
||||
opendiscord.responders.modals.add(new api.ODModalResponder("openticket:claim-ticket-reason",/^od:claim-ticket-reason_/))
|
||||
opendiscord.responders.modals.get("openticket:claim-ticket-reason").workers.add([
|
||||
new api.ODWorker("openticket:claim-ticket-reason",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!channel) return
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
const ticket = opendiscord.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -122,15 +122,15 @@ export const registerModalResponders = async () => {
|
||||
//claim with reason
|
||||
if (originalSource == "ticket-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:claim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:claim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}else if (originalSource == "unclaim-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:claim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:claim-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:claim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:claim-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "other"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:claim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await opendiscord.actions.get("openticket:claim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
+22
-22
@@ -1,45 +1,45 @@
|
||||
///////////////////////////////////////
|
||||
//CLEAR COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//CLEAR COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:clear",generalConfig.data.prefix,"clear"))
|
||||
openticket.responders.commands.get("openticket:clear").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:clear",generalConfig.data.prefix,"clear"))
|
||||
opendiscord.responders.commands.get("openticket:clear").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.clear
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
//only allow global admins (ticket admins aren't allowed to clear tickets)
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild,{allowChannelUserScope:false,allowChannelRoleScope:false}))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild,{allowChannelUserScope:false,allowChannelRoleScope:false}))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -47,14 +47,14 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:clear",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const tempFilter = instance.options.getString("filter",false)
|
||||
const filter = (tempFilter) ? tempFilter.toLowerCase() as api.ODTicketClearFilter : "all"
|
||||
const list: string[] = []
|
||||
const ticketList = openticket.tickets.getAll().filter((ticket) => {
|
||||
const ticketList = opendiscord.tickets.getAll().filter((ticket) => {
|
||||
if (filter == "all") return true
|
||||
else if (filter == "open" && ticket.get("openticket:open").value) return true
|
||||
else if (filter == "closed" && ticket.get("openticket:closed").value) return true
|
||||
@@ -66,16 +66,16 @@ export const registerCommandResponders = async () => {
|
||||
else return false
|
||||
})
|
||||
for (const ticket of ticketList){
|
||||
const ticketChannel = await openticket.tickets.getTicketChannel(ticket)
|
||||
const ticketChannel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
if (ticketChannel) list.push("#"+ticketChannel.name)
|
||||
}
|
||||
|
||||
//reply with clear verify
|
||||
await instance.defer(true)
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:clear-verify-message").build(source,{guild,channel,user,filter,list}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:clear-verify-message").build(source,{guild,channel,user,filter,list}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'clear' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'clear' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -87,8 +87,8 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//CLEAR CONTINUE BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:clear-continue",/^od:clear-continue_/))
|
||||
openticket.responders.buttons.get("openticket:clear-continue").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:clear-continue",/^od:clear-continue_/))
|
||||
opendiscord.responders.buttons.get("openticket:clear-continue").workers.add(
|
||||
new api.ODWorker("openticket:clear-continue",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild || channel.isDMBased()) return
|
||||
@@ -99,7 +99,7 @@ export const registerButtonResponders = async () => {
|
||||
//start ticket clear
|
||||
instance.defer("update",true)
|
||||
const list: string[] = []
|
||||
const ticketList = openticket.tickets.getAll().filter((ticket) => {
|
||||
const ticketList = opendiscord.tickets.getAll().filter((ticket) => {
|
||||
if (filter == "all") return true
|
||||
else if (filter == "open" && ticket.get("openticket:open").value) return true
|
||||
else if (filter == "closed" && ticket.get("openticket:closed").value) return true
|
||||
@@ -111,12 +111,12 @@ export const registerButtonResponders = async () => {
|
||||
else return false
|
||||
})
|
||||
for (const ticket of ticketList){
|
||||
const ticketChannel = await openticket.tickets.getTicketChannel(ticket)
|
||||
const ticketChannel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
if (ticketChannel) list.push("#"+ticketChannel.name)
|
||||
}
|
||||
|
||||
await openticket.actions.get("openticket:clear-tickets").run(originalSource,{guild,channel,user,filter,list:ticketList})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:clear-message").build(originalSource,{guild,channel,user,filter,list}))
|
||||
await opendiscord.actions.get("openticket:clear-tickets").run(originalSource,{guild,channel,user,filter,list:ticketList})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:clear-message").build(originalSource,{guild,channel,user,filter,list}))
|
||||
})
|
||||
)
|
||||
}
|
||||
+33
-33
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//CLOSE COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//CLOSE COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:close",generalConfig.data.prefix,"close"))
|
||||
openticket.responders.commands.get("openticket:close").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:close",generalConfig.data.prefix,"close"))
|
||||
opendiscord.responders.commands.get("openticket:close").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.close
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,22 +46,22 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:close",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already closed
|
||||
if (ticket.get("openticket:closed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -69,11 +69,11 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//start closing ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:close-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:close-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:close-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:close-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'close' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'close' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -85,33 +85,33 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//CLOSE TICKET BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:close-ticket",/^od:close-ticket_/))
|
||||
openticket.responders.buttons.get("openticket:close-ticket").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:close-ticket",/^od:close-ticket_/))
|
||||
opendiscord.responders.buttons.get("openticket:close-ticket").workers.add(
|
||||
new api.ODWorker("openticket:close-ticket",0,async (instance,params,source,cancel) => {
|
||||
const originalSource = instance.interaction.customId.split("_")[1]
|
||||
if (originalSource != "ticket-message" && originalSource != "reopen-message") return
|
||||
|
||||
if (originalSource == "ticket-message") await openticket.verifybars.get("openticket:close-ticket-ticket-message").activate(instance)
|
||||
else await openticket.verifybars.get("openticket:close-ticket-reopen-message").activate(instance)
|
||||
if (originalSource == "ticket-message") await opendiscord.verifybars.get("openticket:close-ticket-ticket-message").activate(instance)
|
||||
else await opendiscord.verifybars.get("openticket:close-ticket-reopen-message").activate(instance)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export const registerModalResponders = async () => {
|
||||
//CLOSE WITH REASON MODAL RESPONDER
|
||||
openticket.responders.modals.add(new api.ODModalResponder("openticket:close-ticket-reason",/^od:close-ticket-reason_/))
|
||||
openticket.responders.modals.get("openticket:close-ticket-reason").workers.add([
|
||||
opendiscord.responders.modals.add(new api.ODModalResponder("openticket:close-ticket-reason",/^od:close-ticket-reason_/))
|
||||
opendiscord.responders.modals.get("openticket:close-ticket-reason").workers.add([
|
||||
new api.ODWorker("openticket:close-ticket-reason",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!channel) return
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
const ticket = opendiscord.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -121,15 +121,15 @@ export const registerModalResponders = async () => {
|
||||
//close with reason
|
||||
if (originalSource == "ticket-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:close-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:close-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}else if (originalSource == "reopen-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:close-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:close-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:close-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:close-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "other"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:close-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await opendiscord.actions.get("openticket:close-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
+38
-38
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//DELETE COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//DELETE COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:delete",generalConfig.data.prefix,"delete"))
|
||||
openticket.responders.commands.get("openticket:delete").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:delete",generalConfig.data.prefix,"delete"))
|
||||
opendiscord.responders.commands.get("openticket:delete").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.delete
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,17 +46,17 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:delete",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -65,11 +65,11 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//start deleting ticket
|
||||
await instance.defer(false)
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:delete-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
await openticket.actions.get("openticket:delete-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false,withoutTranscript})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:delete-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:delete-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false,withoutTranscript})
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'delete' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'delete' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -81,35 +81,35 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//DELETE TICKET BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:delete-ticket",/^od:delete-ticket/))
|
||||
openticket.responders.buttons.get("openticket:delete-ticket").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:delete-ticket",/^od:delete-ticket/))
|
||||
opendiscord.responders.buttons.get("openticket:delete-ticket").workers.add(
|
||||
new api.ODWorker("openticket:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||
const originalSource = instance.interaction.customId.split("_")[1]
|
||||
if (originalSource != "ticket-message" && originalSource != "reopen-message" && originalSource != "close-message" && originalSource != "autoclose-message") return
|
||||
|
||||
if (originalSource == "ticket-message") await openticket.verifybars.get("openticket:delete-ticket-ticket-message").activate(instance)
|
||||
else if (originalSource == "close-message") await openticket.verifybars.get("openticket:delete-ticket-close-message").activate(instance)
|
||||
else if (originalSource == "reopen-message") await openticket.verifybars.get("openticket:delete-ticket-reopen-message").activate(instance)
|
||||
else if (originalSource == "autoclose-message") await openticket.verifybars.get("openticket:delete-ticket-autoclose-message").activate(instance)
|
||||
if (originalSource == "ticket-message") await opendiscord.verifybars.get("openticket:delete-ticket-ticket-message").activate(instance)
|
||||
else if (originalSource == "close-message") await opendiscord.verifybars.get("openticket:delete-ticket-close-message").activate(instance)
|
||||
else if (originalSource == "reopen-message") await opendiscord.verifybars.get("openticket:delete-ticket-reopen-message").activate(instance)
|
||||
else if (originalSource == "autoclose-message") await opendiscord.verifybars.get("openticket:delete-ticket-autoclose-message").activate(instance)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export const registerModalResponders = async () => {
|
||||
//REOPEN WITH REASON MODAL RESPONDER
|
||||
openticket.responders.modals.add(new api.ODModalResponder("openticket:delete-ticket-reason",/^od:delete-ticket-reason_/))
|
||||
openticket.responders.modals.get("openticket:delete-ticket-reason").workers.add([
|
||||
opendiscord.responders.modals.add(new api.ODModalResponder("openticket:delete-ticket-reason",/^od:delete-ticket-reason_/))
|
||||
opendiscord.responders.modals.get("openticket:delete-ticket-reason").workers.add([
|
||||
new api.ODWorker("openticket:delete-ticket-reason",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!channel) return
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
const ticket = opendiscord.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -120,29 +120,29 @@ export const registerModalResponders = async () => {
|
||||
if (originalSource == "ticket-message"){
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true,withoutTranscript:false})
|
||||
opendiscord.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true,withoutTranscript:false})
|
||||
//update ticket (for ticket message) => no-await doesn't wait for the action to set this variable
|
||||
ticket.get("openticket:for-deletion").value = true
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}else if (originalSource == "close-message"){
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false,withoutTranscript:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
opendiscord.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false,withoutTranscript:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "reopen-message"){
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false,withoutTranscript:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
opendiscord.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false,withoutTranscript:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "autoclose-message"){
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false,withoutTranscript:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
opendiscord.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false,withoutTranscript:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:delete-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "other"){
|
||||
await instance.defer("update",false)
|
||||
//don't await DELETE action => else it will update the message after the channel has been deleted
|
||||
openticket.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true,withoutTranscript:false})
|
||||
opendiscord.actions.get("openticket:delete-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true,withoutTranscript:false})
|
||||
}
|
||||
})
|
||||
])
|
||||
|
||||
+22
-22
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//HELP COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//HELP COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:help",generalConfig.data.prefix,"help"))
|
||||
openticket.responders.commands.get("openticket:help").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:help",generalConfig.data.prefix,"help"))
|
||||
opendiscord.responders.commands.get("openticket:help").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.help
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -53,10 +53,10 @@ export const registerCommandResponders = async () => {
|
||||
}else if (!generalConfig.data.slashCommands) mode = "text"
|
||||
else mode = "slash"
|
||||
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:help-menu").build(source,{mode,page:0}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:help-menu").build(source,{mode,page:0}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'help' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'help' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -68,8 +68,8 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//HELP MENU SWITCH BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:help-menu-switch",/^od:help-menu-switch_(slash|text)/))
|
||||
openticket.responders.buttons.get("openticket:help-menu-switch").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:help-menu-switch",/^od:help-menu-switch_(slash|text)/))
|
||||
opendiscord.responders.buttons.get("openticket:help-menu-switch").workers.add(
|
||||
new api.ODWorker("openticket:update-help-menu",0,async (instance,params,source,cancel) => {
|
||||
const mode = instance.interaction.customId.split("_")[1] as "slash"|"text"
|
||||
const pageButton = instance.getMessageComponent("button",/^od:help-menu-page_([0-9]+)/)
|
||||
@@ -77,35 +77,35 @@ export const registerButtonResponders = async () => {
|
||||
|
||||
const newMode = (mode == "slash") ? "text" : "slash"
|
||||
|
||||
const msg = await openticket.builders.messages.getSafe("openticket:help-menu").build("button",{mode:newMode,page:currentPage})
|
||||
const msg = await opendiscord.builders.messages.getSafe("openticket:help-menu").build("button",{mode:newMode,page:currentPage})
|
||||
await instance.update(msg)
|
||||
})
|
||||
)
|
||||
|
||||
//HELP MENU PREVIOUS BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:help-menu-previous",/^od:help-menu-previous/))
|
||||
openticket.responders.buttons.get("openticket:help-menu-previous").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:help-menu-previous",/^od:help-menu-previous/))
|
||||
opendiscord.responders.buttons.get("openticket:help-menu-previous").workers.add(
|
||||
new api.ODWorker("openticket:update-help-menu",0,async (instance,params,source,cancel) => {
|
||||
const switchButton = instance.getMessageComponent("button",/^od:help-menu-switch_(slash|text)/)
|
||||
const pageButton = instance.getMessageComponent("button",/^od:help-menu-page_([0-9]+)/)
|
||||
const currentPage = (pageButton && pageButton.customId) ? Number(pageButton.customId.split("_")[1]) : 0
|
||||
const currentMode = (switchButton && switchButton.customId) ? switchButton.customId.split("_")[1] as "text"|"slash" : "slash"
|
||||
|
||||
const msg = await openticket.builders.messages.getSafe("openticket:help-menu").build("button",{mode:currentMode,page:currentPage-1})
|
||||
const msg = await opendiscord.builders.messages.getSafe("openticket:help-menu").build("button",{mode:currentMode,page:currentPage-1})
|
||||
await instance.update(msg)
|
||||
})
|
||||
)
|
||||
|
||||
//HELP MENU NEXT BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:help-menu-next",/^od:help-menu-next/))
|
||||
openticket.responders.buttons.get("openticket:help-menu-next").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:help-menu-next",/^od:help-menu-next/))
|
||||
opendiscord.responders.buttons.get("openticket:help-menu-next").workers.add(
|
||||
new api.ODWorker("openticket:update-help-menu",0,async (instance,params,source,cancel) => {
|
||||
const switchButton = instance.getMessageComponent("button",/^od:help-menu-switch_(slash|text)/)
|
||||
const pageButton = instance.getMessageComponent("button",/^od:help-menu-page_([0-9]+)/)
|
||||
const currentPage = (pageButton && pageButton.customId) ? Number(pageButton.customId.split("_")[1]) : 0
|
||||
const currentMode = (switchButton && switchButton.customId) ? switchButton.customId.split("_")[1] as "text"|"slash" : "slash"
|
||||
|
||||
const msg = await openticket.builders.messages.getSafe("openticket:help-menu").build("button",{mode:currentMode,page:currentPage+1})
|
||||
const msg = await opendiscord.builders.messages.getSafe("openticket:help-menu").build("button",{mode:currentMode,page:currentPage+1})
|
||||
await instance.update(msg)
|
||||
})
|
||||
)
|
||||
|
||||
+21
-21
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//MOVE COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//MOVE COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:move",generalConfig.data.prefix,"move"))
|
||||
openticket.responders.commands.get("openticket:move").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:move",generalConfig.data.prefix,"move"))
|
||||
opendiscord.responders.commands.get("openticket:move").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.move
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,42 +46,42 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:move",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const id = instance.options.getString("id",true)
|
||||
const reason = instance.options.getString("reason",false)
|
||||
|
||||
const option = openticket.options.get(id)
|
||||
const option = opendiscord.options.get(id)
|
||||
//return if unknown option
|
||||
if (!option || !(option instanceof api.ODTicketOption)){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.titles.unknownOption"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.titles.unknownOption"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return if option is the same
|
||||
if (ticket.option.id.value == option.id.value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:"This ticket is already the same as the chosen option!",layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:"This ticket is already the same as the chosen option!",layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start moving ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:move-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false,data:option})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:move-message").build(source,{guild,channel,user,ticket,reason,data:option}))
|
||||
await opendiscord.actions.get("openticket:move-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false,data:option})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:move-message").build(source,{guild,channel,user,ticket,reason,data:option}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'move' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'move' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+18
-18
@@ -1,45 +1,45 @@
|
||||
///////////////////////////////////////
|
||||
//STATS COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//PANEL COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:panel",generalConfig.data.prefix,/^panel/))
|
||||
openticket.responders.commands.get("openticket:panel").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:panel",generalConfig.data.prefix,/^panel/))
|
||||
opendiscord.responders.commands.get("openticket:panel").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.panel
|
||||
|
||||
//command is disabled
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -48,30 +48,30 @@ export const registerCommandResponders = async () => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild || instance.channel.type == discord.ChannelType.GroupDM){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const id = instance.options.getString("id",true)
|
||||
const panel = openticket.panels.get(id)
|
||||
const panel = opendiscord.panels.get(id)
|
||||
|
||||
if (!panel){
|
||||
//invalid panel
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-panel-unknown").build(source,{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-panel-unknown").build(source,{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:panel-ready").build(source,{guild,channel,user,panel}))
|
||||
const panelMessage = await instance.channel.send((await openticket.builders.messages.getSafe("openticket:panel").build(source,{guild,channel,user,panel})).message)
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:panel-ready").build(source,{guild,channel,user,panel}))
|
||||
const panelMessage = await instance.channel.send((await opendiscord.builders.messages.getSafe("openticket:panel").build(source,{guild,channel,user,panel})).message)
|
||||
|
||||
//add panel to database on auto-update
|
||||
if (instance.options.getBoolean("auto-update",false)){
|
||||
const globalDatabase = openticket.databases.get("openticket:global")
|
||||
const globalDatabase = opendiscord.databases.get("openticket:global")
|
||||
await globalDatabase.set("openticket:panel-update",panelMessage.channel.id+"_"+panelMessage.id,panel.id.value)
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'panel' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'panel' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+33
-33
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//PIN COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//PIN COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:pin",generalConfig.data.prefix,"pin"))
|
||||
openticket.responders.commands.get("openticket:pin").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:pin",generalConfig.data.prefix,"pin"))
|
||||
opendiscord.responders.commands.get("openticket:pin").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.pin
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,22 +46,22 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:pin",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when already pinned
|
||||
if (ticket.get("openticket:pinned").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -69,11 +69,11 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//start pinning ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:pin-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:pin-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:pin-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:pin-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'pin' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'pin' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -85,33 +85,33 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//PIN TICKET BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:pin-ticket",/^od:pin-ticket/))
|
||||
openticket.responders.buttons.get("openticket:pin-ticket").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:pin-ticket",/^od:pin-ticket/))
|
||||
opendiscord.responders.buttons.get("openticket:pin-ticket").workers.add(
|
||||
new api.ODWorker("openticket:pin-ticket",0,async (instance,params,source,cancel) => {
|
||||
const originalSource = instance.interaction.customId.split("_")[1]
|
||||
if (originalSource != "ticket-message" && originalSource != "unpin-message") return
|
||||
|
||||
if (originalSource == "ticket-message") await openticket.verifybars.get("openticket:pin-ticket-ticket-message").activate(instance)
|
||||
else await openticket.verifybars.get("openticket:pin-ticket-unpin-message").activate(instance)
|
||||
if (originalSource == "ticket-message") await opendiscord.verifybars.get("openticket:pin-ticket-ticket-message").activate(instance)
|
||||
else await opendiscord.verifybars.get("openticket:pin-ticket-unpin-message").activate(instance)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export const registerModalResponders = async () => {
|
||||
//PIN WITH REASON MODAL RESPONDER
|
||||
openticket.responders.modals.add(new api.ODModalResponder("openticket:pin-ticket-reason",/^od:pin-ticket-reason_/))
|
||||
openticket.responders.modals.get("openticket:pin-ticket-reason").workers.add([
|
||||
opendiscord.responders.modals.add(new api.ODModalResponder("openticket:pin-ticket-reason",/^od:pin-ticket-reason_/))
|
||||
opendiscord.responders.modals.get("openticket:pin-ticket-reason").workers.add([
|
||||
new api.ODWorker("openticket:pin-ticket-reason",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!channel) return
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
const ticket = opendiscord.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -121,15 +121,15 @@ export const registerModalResponders = async () => {
|
||||
//pin with reason
|
||||
if (originalSource == "ticket-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:pin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:pin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}else if (originalSource == "unpin-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:pin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:pin-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:pin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:pin-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "other"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:pin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await opendiscord.actions.get("openticket:pin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
+20
-20
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//REMOVE COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//REMOVE COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:remove",generalConfig.data.prefix,"remove"))
|
||||
openticket.responders.commands.get("openticket:remove").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:remove",generalConfig.data.prefix,"remove"))
|
||||
opendiscord.responders.commands.get("openticket:remove").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.remove
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,17 +46,17 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:remove",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -64,19 +64,19 @@ export const registerCommandResponders = async () => {
|
||||
const reason = instance.options.getString("reason",false)
|
||||
|
||||
//return when user is not a participant of the ticket (admins & creator can't be removed)
|
||||
const participants = await openticket.tickets.getAllTicketParticipants(ticket)
|
||||
const participants = await opendiscord.tickets.getAllTicketParticipants(ticket)
|
||||
if (!participants || !participants.find((p) => p.user.id == data.id && p.role == "participant")){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.remove"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.remove"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start removing user from ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:remove-ticket-user").run(source,{guild,channel,user,ticket,reason,sendMessage:false,data})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:remove-message").build(source,{guild,channel,user,ticket,reason,data}))
|
||||
await opendiscord.actions.get("openticket:remove-ticket-user").run(source,{guild,channel,user,ticket,reason,sendMessage:false,data})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:remove-message").build(source,{guild,channel,user,ticket,reason,data}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'remove' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'remove' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+18
-18
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//RENAME COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//RENAME COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:rename",generalConfig.data.prefix,"rename"))
|
||||
openticket.responders.commands.get("openticket:rename").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:rename",generalConfig.data.prefix,"rename"))
|
||||
opendiscord.responders.commands.get("openticket:rename").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.rename
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,17 +46,17 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:rename",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -65,11 +65,11 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//start renaming ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:rename-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false,data:name})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:rename-message").build(source,{guild,channel,user,ticket,reason,data:name}))
|
||||
await opendiscord.actions.get("openticket:rename-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false,data:name})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:rename-message").build(source,{guild,channel,user,ticket,reason,data:name}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'rename' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'rename' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+36
-36
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//REOPEN COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//REOPEN COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:reopen",generalConfig.data.prefix,"reopen"))
|
||||
openticket.responders.commands.get("openticket:reopen").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:reopen",generalConfig.data.prefix,"reopen"))
|
||||
opendiscord.responders.commands.get("openticket:reopen").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.reopen
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,22 +46,22 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:reopen",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not closed
|
||||
if (!ticket.get("openticket:closed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -69,11 +69,11 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//start reopening ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:reopen-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:reopen-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:reopen-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:reopen-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'reopen' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'reopen' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -85,34 +85,34 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//REOPEN TICKET BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:reopen-ticket",/^od:reopen-ticket/))
|
||||
openticket.responders.buttons.get("openticket:reopen-ticket").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:reopen-ticket",/^od:reopen-ticket/))
|
||||
opendiscord.responders.buttons.get("openticket:reopen-ticket").workers.add(
|
||||
new api.ODWorker("openticket:reopen-ticket",0,async (instance,params,source,cancel) => {
|
||||
const originalSource = instance.interaction.customId.split("_")[1]
|
||||
if (originalSource != "ticket-message" && originalSource != "close-message" && originalSource != "autoclose-message") return
|
||||
|
||||
if (originalSource == "ticket-message") await openticket.verifybars.get("openticket:reopen-ticket-ticket-message").activate(instance)
|
||||
else if (originalSource == "close-message") await openticket.verifybars.get("openticket:reopen-ticket-close-message").activate(instance)
|
||||
else await openticket.verifybars.get("openticket:reopen-ticket-autoclose-message").activate(instance)
|
||||
if (originalSource == "ticket-message") await opendiscord.verifybars.get("openticket:reopen-ticket-ticket-message").activate(instance)
|
||||
else if (originalSource == "close-message") await opendiscord.verifybars.get("openticket:reopen-ticket-close-message").activate(instance)
|
||||
else await opendiscord.verifybars.get("openticket:reopen-ticket-autoclose-message").activate(instance)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export const registerModalResponders = async () => {
|
||||
//REOPEN WITH REASON MODAL RESPONDER
|
||||
openticket.responders.modals.add(new api.ODModalResponder("openticket:reopen-ticket-reason",/^od:reopen-ticket-reason_/))
|
||||
openticket.responders.modals.get("openticket:reopen-ticket-reason").workers.add([
|
||||
opendiscord.responders.modals.add(new api.ODModalResponder("openticket:reopen-ticket-reason",/^od:reopen-ticket-reason_/))
|
||||
opendiscord.responders.modals.get("openticket:reopen-ticket-reason").workers.add([
|
||||
new api.ODWorker("openticket:reopen-ticket-reason",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!channel) return
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
const ticket = opendiscord.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -122,19 +122,19 @@ export const registerModalResponders = async () => {
|
||||
//reopen with reason
|
||||
if (originalSource == "ticket-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:reopen-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:reopen-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}else if (originalSource == "close-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:reopen-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:reopen-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:reopen-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:reopen-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "autoclose-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:reopen-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:reopen-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:reopen-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:reopen-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "other"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:reopen-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await opendiscord.actions.get("openticket:reopen-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
+10
-10
@@ -1,41 +1,41 @@
|
||||
///////////////////////////////////////
|
||||
//ROLE BUTTON (not command)
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//ROLE OPTION BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:role-option",/^od:role-option_/))
|
||||
openticket.responders.buttons.get("openticket:role-option").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:role-option",/^od:role-option_/))
|
||||
opendiscord.responders.buttons.get("openticket:role-option").workers.add(
|
||||
new api.ODWorker("openticket:role-option",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//get option
|
||||
const optionId = instance.interaction.customId.split("_")[2]
|
||||
const option = openticket.options.get(optionId)
|
||||
const option = opendiscord.options.get(optionId)
|
||||
if (!option || !(option instanceof api.ODRoleOption)){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//reaction role
|
||||
await instance.defer("reply",true)
|
||||
const res = await openticket.actions.get("openticket:reaction-role").run("panel-button",{guild,user,option,overwriteMode:null})
|
||||
const res = await opendiscord.actions.get("openticket:reaction-role").run("panel-button",{guild,user,option,overwriteMode:null})
|
||||
if (!res.result || !res.role){
|
||||
//error
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild,channel:instance.channel,user,error:"Unable to receive role update data from worker!",layout:"advanced"}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild,channel:instance.channel,user,error:"Unable to receive role update data from worker!",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (generalConfig.data.system.replyOnReactionRole) await instance.reply(await openticket.builders.messages.getSafe("openticket:reaction-role").build("panel-button",{guild,user,role:res.role,result:res.result}))
|
||||
if (generalConfig.data.system.replyOnReactionRole) await instance.reply(await opendiscord.builders.messages.getSafe("openticket:reaction-role").build("panel-button",{guild,user,role:res.role,result:res.result}))
|
||||
})
|
||||
)
|
||||
}
|
||||
+22
-22
@@ -1,30 +1,30 @@
|
||||
///////////////////////////////////////
|
||||
//STATS COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//STATS COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:stats",generalConfig.data.prefix,/^stats/))
|
||||
openticket.responders.commands.get("openticket:stats").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:stats",generalConfig.data.prefix,/^stats/))
|
||||
opendiscord.responders.commands.get("openticket:stats").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.stats
|
||||
|
||||
//command is disabled
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//reset subcommand is owner/developer only
|
||||
if (instance.options.getSubCommand() == "reset"){
|
||||
if (!openticket.permissions.hasPermissions("owner",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("owner",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["owner","developer"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["owner","developer"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -32,26 +32,26 @@ export const registerCommandResponders = async () => {
|
||||
//permissions for normal scopes
|
||||
if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -60,30 +60,30 @@ export const registerCommandResponders = async () => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "global" && scope != "ticket" && scope != "user" && scope != "reset")) return
|
||||
|
||||
if (scope == "global"){
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:stats-global").build(source,{guild,channel,user}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:stats-global").build(source,{guild,channel,user}))
|
||||
|
||||
}else if (scope == "ticket"){
|
||||
const id = instance.options.getChannel("ticket",false)?.id ?? channel.id
|
||||
const ticket = openticket.tickets.get(id)
|
||||
const ticket = opendiscord.tickets.get(id)
|
||||
|
||||
if (ticket) await instance.reply(await openticket.builders.messages.getSafe("openticket:stats-ticket").build(source,{guild,channel,user,scopeData:ticket}))
|
||||
else await instance.reply(await openticket.builders.messages.getSafe("openticket:stats-ticket-unknown").build(source,{guild,channel,user,id}))
|
||||
if (ticket) await instance.reply(await opendiscord.builders.messages.getSafe("openticket:stats-ticket").build(source,{guild,channel,user,scopeData:ticket}))
|
||||
else await instance.reply(await opendiscord.builders.messages.getSafe("openticket:stats-ticket-unknown").build(source,{guild,channel,user,id}))
|
||||
|
||||
}else if (scope == "user"){
|
||||
const statsUser = instance.options.getUser("user",false) ?? user
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:stats-user").build(source,{guild,channel,user,scopeData:statsUser}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:stats-user").build(source,{guild,channel,user,scopeData:statsUser}))
|
||||
|
||||
}else if (scope == "reset"){
|
||||
const reason = instance.options.getString("reason",false)
|
||||
openticket.stats.reset()
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:stats-reset").build(source,{guild,channel,user,reason}))
|
||||
opendiscord.stats.reset()
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:stats-reset").build(source,{guild,channel,user,reason}))
|
||||
|
||||
}
|
||||
}),
|
||||
@@ -95,7 +95,7 @@ export const registerCommandResponders = async () => {
|
||||
}else if (scope == "user"){
|
||||
data = instance.options.getUser("user",false)?.id ?? instance.user.id
|
||||
}else data = "/"
|
||||
openticket.log(instance.user.displayName+" used the 'stats "+scope+"' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'stats "+scope+"' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
|
||||
+70
-70
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//TICKET COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:ticket",generalConfig.data.prefix,/^ticket/))
|
||||
openticket.responders.commands.get("openticket:ticket").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:ticket",generalConfig.data.prefix,/^ticket/))
|
||||
opendiscord.responders.commands.get("openticket:ticket").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.ticket
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -47,51 +47,51 @@ export const registerCommandResponders = async () => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//get option
|
||||
const optionId = instance.options.getString("id",true)
|
||||
const option = openticket.options.get(optionId)
|
||||
const option = opendiscord.options.get(optionId)
|
||||
if (!option || !(option instanceof api.ODTicketOption)){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check ticket permissions
|
||||
const res = await openticket.actions.get("openticket:create-ticket-permissions").run(source,{guild,user,option})
|
||||
const res = await opendiscord.actions.get("openticket:create-ticket-permissions").run(source,{guild,user,option})
|
||||
if (!res.valid){
|
||||
//error
|
||||
if (res.reason == "blacklist") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start ticket creation
|
||||
if (option.exists("openticket:questions") && option.get("openticket:questions").value.length > 0){
|
||||
//send modal
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:ticket-questions").build(source,{guild,channel,user,option}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:ticket-questions").build(source,{guild,channel,user,option}))
|
||||
}else{
|
||||
//create ticket
|
||||
await instance.defer(true)
|
||||
const res = await openticket.actions.get("openticket:create-ticket").run(source,{guild,user,answers:[],option})
|
||||
const res = await opendiscord.actions.get("openticket:create-ticket").run(source,{guild,user,answers:[],option})
|
||||
if (!res.channel || !res.ticket){
|
||||
//error
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild,channel:instance.channel,user,error:"Unable to receive ticket or channel from callback! #1",layout:"advanced"}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild,channel:instance.channel,user,error:"Unable to receive ticket or channel from callback! #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:ticket-created").build(source,{guild,channel:res.channel,user,ticket:res.ticket}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:ticket-created").build(source,{guild,channel:res.channel,user,ticket:res.ticket}))
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'ticket' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'ticket' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -103,53 +103,53 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//TICKET OPTION BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:ticket-option",/^od:ticket-option_/))
|
||||
openticket.responders.buttons.get("openticket:ticket-option").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:ticket-option",/^od:ticket-option_/))
|
||||
opendiscord.responders.buttons.get("openticket:ticket-option").workers.add(
|
||||
new api.ODWorker("openticket:ticket-option",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//get option
|
||||
const optionId = instance.interaction.customId.split("_")[2]
|
||||
const option = openticket.options.get(optionId)
|
||||
const option = opendiscord.options.get(optionId)
|
||||
if (!option || !(option instanceof api.ODTicketOption)){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check ticket permissions
|
||||
const res = await openticket.actions.get("openticket:create-ticket-permissions").run("panel-button",{guild,user,option})
|
||||
const res = await opendiscord.actions.get("openticket:create-ticket-permissions").run("panel-button",{guild,user,option})
|
||||
if (!res.valid){
|
||||
//error
|
||||
if (res.reason == "blacklist") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start ticket creation
|
||||
if (option.exists("openticket:questions") && option.get("openticket:questions").value.length > 0){
|
||||
//send modal
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:ticket-questions").build("panel-button",{guild,channel,user,option}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:ticket-questions").build("panel-button",{guild,channel,user,option}))
|
||||
}else{
|
||||
//create ticket
|
||||
await instance.defer("reply",true)
|
||||
const res = await openticket.actions.get("openticket:create-ticket").run("panel-button",{guild,user,answers:[],option})
|
||||
const res = await opendiscord.actions.get("openticket:create-ticket").run("panel-button",{guild,user,answers:[],option})
|
||||
if (!res.channel || !res.ticket){
|
||||
//error
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild,channel:instance.channel,user,error:"Unable to receive ticket or channel from callback! #1",layout:"advanced"}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild,channel:instance.channel,user,error:"Unable to receive ticket or channel from callback! #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (generalConfig.data.system.replyOnTicketCreation) await instance.reply(await openticket.builders.messages.getSafe("openticket:ticket-created").build("panel-button",{guild,channel:res.channel,user,ticket:res.ticket}))
|
||||
if (generalConfig.data.system.replyOnTicketCreation) await instance.reply(await opendiscord.builders.messages.getSafe("openticket:ticket-created").build("panel-button",{guild,channel:res.channel,user,ticket:res.ticket}))
|
||||
}
|
||||
})
|
||||
)
|
||||
@@ -157,53 +157,53 @@ export const registerButtonResponders = async () => {
|
||||
|
||||
export const registerDropdownResponders = async () => {
|
||||
//PANEL DROPDOWN TICKETS DROPDOWN RESPONDER
|
||||
openticket.responders.dropdowns.add(new api.ODDropdownResponder("openticket:panel-dropdown-tickets",/^od:panel-dropdown_/))
|
||||
openticket.responders.dropdowns.get("openticket:panel-dropdown-tickets").workers.add(
|
||||
opendiscord.responders.dropdowns.add(new api.ODDropdownResponder("openticket:panel-dropdown-tickets",/^od:panel-dropdown_/))
|
||||
opendiscord.responders.dropdowns.get("openticket:panel-dropdown-tickets").workers.add(
|
||||
new api.ODWorker("openticket:panel-dropdown-tickets",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//get option
|
||||
const optionId = instance.values.getStringValues()[0].split("_")[2]
|
||||
const option = openticket.options.get(optionId)
|
||||
const option = opendiscord.options.get(optionId)
|
||||
if (!option || !(option instanceof api.ODTicketOption)){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//check ticket permissions
|
||||
const res = await openticket.actions.get("openticket:create-ticket-permissions").run("panel-dropdown",{guild,user,option})
|
||||
const res = await opendiscord.actions.get("openticket:create-ticket-permissions").run("panel-dropdown",{guild,user,option})
|
||||
if (!res.valid){
|
||||
//error
|
||||
if (res.reason == "blacklist") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||
else instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start ticket creation
|
||||
if (option.exists("openticket:questions") && option.get("openticket:questions").value.length > 0){
|
||||
//send modal
|
||||
instance.modal(await openticket.builders.modals.getSafe("openticket:ticket-questions").build("panel-dropdown",{guild,channel,user,option}))
|
||||
instance.modal(await opendiscord.builders.modals.getSafe("openticket:ticket-questions").build("panel-dropdown",{guild,channel,user,option}))
|
||||
}else{
|
||||
//create ticket
|
||||
await instance.defer("reply",true)
|
||||
const res = await openticket.actions.get("openticket:create-ticket").run("panel-dropdown",{guild,user,answers:[],option})
|
||||
const res = await opendiscord.actions.get("openticket:create-ticket").run("panel-dropdown",{guild,user,answers:[],option})
|
||||
if (!res.channel || !res.ticket){
|
||||
//error
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild,channel:instance.channel,user,error:"Unable to receive ticket or channel from callback! #1",layout:"advanced"}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild,channel:instance.channel,user,error:"Unable to receive ticket or channel from callback! #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (generalConfig.data.system.replyOnTicketCreation) await instance.reply(await openticket.builders.messages.getSafe("openticket:ticket-created").build("panel-dropdown",{guild,channel:res.channel,user,ticket:res.ticket}))
|
||||
if (generalConfig.data.system.replyOnTicketCreation) await instance.reply(await opendiscord.builders.messages.getSafe("openticket:ticket-created").build("panel-dropdown",{guild,channel:res.channel,user,ticket:res.ticket}))
|
||||
}
|
||||
})
|
||||
)
|
||||
@@ -211,14 +211,14 @@ export const registerDropdownResponders = async () => {
|
||||
|
||||
export const registerModalResponders = async () => {
|
||||
//TICKET QUESTIONS RESPONDER
|
||||
openticket.responders.modals.add(new api.ODModalResponder("openticket:ticket-questions",/^od:ticket-questions_/))
|
||||
openticket.responders.modals.get("openticket:ticket-questions").workers.add([
|
||||
opendiscord.responders.modals.add(new api.ODModalResponder("openticket:ticket-questions",/^od:ticket-questions_/))
|
||||
opendiscord.responders.modals.get("openticket:ticket-questions").workers.add([
|
||||
new api.ODWorker("openticket:ticket-questions",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!channel) throw new api.ODSystemError("The 'Ticket Questions' modal requires a channel for responding!")
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -226,17 +226,17 @@ export const registerModalResponders = async () => {
|
||||
|
||||
//get option
|
||||
const optionId = instance.interaction.customId.split("_")[1]
|
||||
const option = openticket.options.get(optionId)
|
||||
const option = opendiscord.options.get(optionId)
|
||||
if (!option || !(option instanceof api.ODTicketOption)){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-option-unknown").build(source,{guild:instance.guild,channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//get answers
|
||||
const answers: {id:string,name:string,type:"short"|"paragraph",value:string|null}[] = []
|
||||
option.get("openticket:questions").value.forEach((id) => {
|
||||
const question = openticket.questions.get(id)
|
||||
const question = opendiscord.questions.get(id)
|
||||
if (!question) return
|
||||
if (question instanceof api.ODShortQuestion){
|
||||
answers.push({
|
||||
@@ -257,13 +257,13 @@ export const registerModalResponders = async () => {
|
||||
|
||||
//create ticket
|
||||
await instance.defer("reply",true)
|
||||
const res = await openticket.actions.get("openticket:create-ticket").run(originalSource,{guild,user,answers,option})
|
||||
const res = await opendiscord.actions.get("openticket:create-ticket").run(originalSource,{guild,user,answers,option})
|
||||
if (!res.channel || !res.ticket){
|
||||
//error
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild,channel,user,error:"Unable to receive ticket or channel from callback! #2",layout:"advanced"}))
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild,channel,user,error:"Unable to receive ticket or channel from callback! #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (generalConfig.data.system.replyOnTicketCreation) await instance.reply(await openticket.builders.messages.getSafe("openticket:ticket-created").build(originalSource,{guild,channel:res.channel,user,ticket:res.ticket}))
|
||||
if (generalConfig.data.system.replyOnTicketCreation) await instance.reply(await opendiscord.builders.messages.getSafe("openticket:ticket-created").build(originalSource,{guild,channel:res.channel,user,ticket:res.ticket}))
|
||||
})
|
||||
])
|
||||
}
|
||||
+33
-33
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//UNCLAIM COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//UNCLAIM COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:unclaim",generalConfig.data.prefix,"unclaim"))
|
||||
openticket.responders.commands.get("openticket:unclaim").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:unclaim",generalConfig.data.prefix,"unclaim"))
|
||||
opendiscord.responders.commands.get("openticket:unclaim").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.unclaim
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,22 +46,22 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:unclaim",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not claimed
|
||||
if (!ticket.get("openticket:claimed").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -69,11 +69,11 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//start unclaiming ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:unclaim-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:unclaim-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:unclaim-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:unclaim-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'unclaim' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'unclaim' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -85,33 +85,33 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//UNCLAIM TICKET BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:unclaim-ticket",/^od:unclaim-ticket/))
|
||||
openticket.responders.buttons.get("openticket:unclaim-ticket").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:unclaim-ticket",/^od:unclaim-ticket/))
|
||||
opendiscord.responders.buttons.get("openticket:unclaim-ticket").workers.add(
|
||||
new api.ODWorker("openticket:unclaim-ticket",0,async (instance,params,source,cancel) => {
|
||||
const originalSource = instance.interaction.customId.split("_")[1]
|
||||
if (originalSource != "ticket-message" && originalSource != "claim-message") return
|
||||
|
||||
if (originalSource == "ticket-message") await openticket.verifybars.get("openticket:unclaim-ticket-ticket-message").activate(instance)
|
||||
else await openticket.verifybars.get("openticket:unclaim-ticket-claim-message").activate(instance)
|
||||
if (originalSource == "ticket-message") await opendiscord.verifybars.get("openticket:unclaim-ticket-ticket-message").activate(instance)
|
||||
else await opendiscord.verifybars.get("openticket:unclaim-ticket-claim-message").activate(instance)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export const registerModalResponders = async () => {
|
||||
//UNCLAIM WITH REASON MODAL RESPONDER
|
||||
openticket.responders.modals.add(new api.ODModalResponder("openticket:unclaim-ticket-reason",/^od:unclaim-ticket-reason_/))
|
||||
openticket.responders.modals.get("openticket:unclaim-ticket-reason").workers.add([
|
||||
opendiscord.responders.modals.add(new api.ODModalResponder("openticket:unclaim-ticket-reason",/^od:unclaim-ticket-reason_/))
|
||||
opendiscord.responders.modals.get("openticket:unclaim-ticket-reason").workers.add([
|
||||
new api.ODWorker("openticket:unclaim-ticket-reason",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!channel) return
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
const ticket = opendiscord.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -121,15 +121,15 @@ export const registerModalResponders = async () => {
|
||||
//unclaim with reason
|
||||
if (originalSource == "ticket-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unclaim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:unclaim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}else if (originalSource == "claim-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unclaim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:unclaim-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:unclaim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:unclaim-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "other"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unclaim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await opendiscord.actions.get("openticket:unclaim-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
}
|
||||
})
|
||||
])
|
||||
|
||||
+33
-33
@@ -1,44 +1,44 @@
|
||||
///////////////////////////////////////
|
||||
//UNPIN COMMAND
|
||||
///////////////////////////////////////
|
||||
import {openticket, api, utilities} from "../index"
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//UNPIN COMMAND RESPONDER
|
||||
openticket.responders.commands.add(new api.ODCommandResponder("openticket:unpin",generalConfig.data.prefix,"unpin"))
|
||||
openticket.responders.commands.get("openticket:unpin").workers.add([
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("openticket:unpin",generalConfig.data.prefix,"unpin"))
|
||||
opendiscord.responders.commands.get("openticket:unpin").workers.add([
|
||||
new api.ODWorker("openticket:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.unpin
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else if (permissionMode == "everyone") return
|
||||
else if (permissionMode == "admin"){
|
||||
if (!openticket.permissions.hasPermissions("support",await openticket.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}else{
|
||||
if (!instance.guild || !instance.member){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
const role = await openticket.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
||||
return cancel()
|
||||
}
|
||||
if (!role.members.has(instance.member.id)){
|
||||
//no permissions
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
@@ -46,22 +46,22 @@ export const registerCommandResponders = async () => {
|
||||
new api.ODWorker("openticket:unpin",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(channel.id)
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when not pinned yet
|
||||
if (!ticket.get("openticket:pinned").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:openticket.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("openticket:busy").value){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
@@ -69,11 +69,11 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
//start unpinning ticket
|
||||
await instance.defer(false)
|
||||
await openticket.actions.get("openticket:unpin-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await openticket.builders.messages.getSafe("openticket:unpin-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:unpin-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("openticket:unpin-message").build(source,{guild,channel,user,ticket,reason}))
|
||||
}),
|
||||
new api.ODWorker("openticket:logs",-1,(instance,params,source,cancel) => {
|
||||
openticket.log(instance.user.displayName+" used the 'unpin' command!","info",[
|
||||
opendiscord.log(instance.user.displayName+" used the 'unpin' command!","info",[
|
||||
{key:"user",value:instance.user.username},
|
||||
{key:"userid",value:instance.user.id,hidden:true},
|
||||
{key:"channelid",value:instance.channel.id,hidden:true},
|
||||
@@ -85,33 +85,33 @@ export const registerCommandResponders = async () => {
|
||||
|
||||
export const registerButtonResponders = async () => {
|
||||
//UNPIN TICKET BUTTON RESPONDER
|
||||
openticket.responders.buttons.add(new api.ODButtonResponder("openticket:unpin-ticket",/^od:unpin-ticket/))
|
||||
openticket.responders.buttons.get("openticket:unpin-ticket").workers.add(
|
||||
opendiscord.responders.buttons.add(new api.ODButtonResponder("openticket:unpin-ticket",/^od:unpin-ticket/))
|
||||
opendiscord.responders.buttons.get("openticket:unpin-ticket").workers.add(
|
||||
new api.ODWorker("openticket:unpin-ticket",0,async (instance,params,source,cancel) => {
|
||||
const originalSource = instance.interaction.customId.split("_")[1]
|
||||
if (originalSource != "ticket-message" && originalSource != "pin-message") return
|
||||
|
||||
if (originalSource == "ticket-message") await openticket.verifybars.get("openticket:unpin-ticket-ticket-message").activate(instance)
|
||||
else await openticket.verifybars.get("openticket:unpin-ticket-pin-message").activate(instance)
|
||||
if (originalSource == "ticket-message") await opendiscord.verifybars.get("openticket:unpin-ticket-ticket-message").activate(instance)
|
||||
else await opendiscord.verifybars.get("openticket:unpin-ticket-pin-message").activate(instance)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export const registerModalResponders = async () => {
|
||||
//UNPIN WITH REASON MODAL RESPONDER
|
||||
openticket.responders.modals.add(new api.ODModalResponder("openticket:unpin-ticket-reason",/^od:unpin-ticket-reason_/))
|
||||
openticket.responders.modals.get("openticket:unpin-ticket-reason").workers.add([
|
||||
opendiscord.responders.modals.add(new api.ODModalResponder("openticket:unpin-ticket-reason",/^od:unpin-ticket-reason_/))
|
||||
opendiscord.responders.modals.get("openticket:unpin-ticket-reason").workers.add([
|
||||
new api.ODWorker("openticket:unpin-ticket-reason",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!channel) return
|
||||
if (!guild){
|
||||
//error
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-not-in-guild").build(source,{channel,user:instance.user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = openticket.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
const ticket = opendiscord.tickets.get(instance.interaction.customId.split("_")[1])
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -121,15 +121,15 @@ export const registerModalResponders = async () => {
|
||||
//unpin with reason
|
||||
if (originalSource == "ticket-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unpin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
await opendiscord.actions.get("openticket:unpin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:ticket-message").build("other",{guild,channel,user,ticket}))
|
||||
}else if (originalSource == "pin-message"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unpin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await openticket.builders.messages.getSafe("openticket:unpin-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
await opendiscord.actions.get("openticket:unpin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||
await instance.update(await opendiscord.builders.messages.getSafe("openticket:unpin-message").build("other",{guild,channel,user,ticket,reason}))
|
||||
}else if (originalSource == "other"){
|
||||
await instance.defer("update",false)
|
||||
await openticket.actions.get("openticket:unpin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
await opendiscord.actions.get("openticket:unpin-ticket").run(originalSource,{guild,channel,user,ticket,reason,sendMessage:true})
|
||||
}
|
||||
})
|
||||
])
|
||||
|
||||
@@ -118,7 +118,7 @@ export interface ODActionManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODActionManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.actions`!
|
||||
* This default class is made for the global variable `opendiscord.actions`!
|
||||
*/
|
||||
export class ODActionManager_Default extends ODActionManager {
|
||||
get<ActionId extends keyof ODActionManagerIds_Default>(id:ActionId): ODAction_Default<ODActionManagerIds_Default[ActionId]["source"],ODActionManagerIds_Default[ActionId]["params"],ODActionManagerIds_Default[ActionId]["result"],ODActionManagerIds_Default[ActionId]["workers"]>
|
||||
|
||||
@@ -19,7 +19,7 @@ export interface ODVersionManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODFlagManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.flags`!
|
||||
* This default class is made for the global variable `opendiscord.flags`!
|
||||
*/
|
||||
export class ODVersionManager_Default extends ODVersionManager {
|
||||
get<VersionId extends keyof ODVersionManagerIds_Default>(id:VersionId): ODVersionManagerIds_Default[VersionId]
|
||||
|
||||
@@ -18,7 +18,7 @@ import { ODRole, ODRoleUpdateResult } from "../openticket/role"
|
||||
* This is a special class that adds type definitions & typescript to the ODBuilderManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.builders`!
|
||||
* This default class is made for the global variable `opendiscord.builders`!
|
||||
*/
|
||||
export class ODBuilderManager_Default extends ODBuilderManager {
|
||||
declare buttons: ODButtonManager_Default
|
||||
@@ -69,7 +69,7 @@ export interface ODButtonManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODButtonManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.builders.buttons`!
|
||||
* This default class is made for the global variable `opendiscord.builders.buttons`!
|
||||
*/
|
||||
export class ODButtonManager_Default extends ODButtonManager {
|
||||
get<ButtonId extends keyof ODButtonManagerIds_Default>(id:ButtonId): ODButton_Default<ODButtonManagerIds_Default[ButtonId]["source"],ODButtonManagerIds_Default[ButtonId]["params"],ODButtonManagerIds_Default[ButtonId]["workers"]>
|
||||
@@ -123,7 +123,7 @@ export interface ODDropdownManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODDropdownManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.builders.dropdowns`!
|
||||
* This default class is made for the global variable `opendiscord.builders.dropdowns`!
|
||||
*/
|
||||
export class ODDropdownManager_Default extends ODDropdownManager {
|
||||
get<DropdownId extends keyof ODDropdownManagerIds_Default>(id:DropdownId): ODDropdown_Default<ODDropdownManagerIds_Default[DropdownId]["source"],ODDropdownManagerIds_Default[DropdownId]["params"],ODDropdownManagerIds_Default[DropdownId]["workers"]>
|
||||
@@ -177,7 +177,7 @@ export interface ODFileManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODFileManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.builders.files`!
|
||||
* This default class is made for the global variable `opendiscord.builders.files`!
|
||||
*/
|
||||
export class ODFileManager_Default extends ODFileManager {
|
||||
get<FileId extends keyof ODFileManagerIds_Default>(id:FileId): ODFile_Default<ODFileManagerIds_Default[FileId]["source"],ODFileManagerIds_Default[FileId]["params"],ODFileManagerIds_Default[FileId]["workers"]>
|
||||
@@ -297,7 +297,7 @@ export interface ODEmbedManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODEmbedManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.builders.embeds`!
|
||||
* This default class is made for the global variable `opendiscord.builders.embeds`!
|
||||
*/
|
||||
export class ODEmbedManager_Default extends ODEmbedManager {
|
||||
get<EmbedId extends keyof ODEmbedManagerIds_Default>(id:EmbedId): ODEmbed_Default<ODEmbedManagerIds_Default[EmbedId]["source"],ODEmbedManagerIds_Default[EmbedId]["params"],ODEmbedManagerIds_Default[EmbedId]["workers"]>
|
||||
@@ -428,7 +428,7 @@ export interface ODMessageManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODMessageManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.builders.messages`!
|
||||
* This default class is made for the global variable `opendiscord.builders.messages`!
|
||||
*/
|
||||
export class ODMessageManager_Default extends ODMessageManager {
|
||||
get<MessageId extends keyof ODMessageManagerIds_Default>(id:MessageId): ODMessage_Default<ODMessageManagerIds_Default[MessageId]["source"],ODMessageManagerIds_Default[MessageId]["params"],ODMessageManagerIds_Default[MessageId]["workers"]>
|
||||
@@ -489,7 +489,7 @@ export interface ODModalManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODModalManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.builders.modals`!
|
||||
* This default class is made for the global variable `opendiscord.builders.modals`!
|
||||
*/
|
||||
export class ODModalManager_Default extends ODModalManager {
|
||||
get<ModalId extends keyof ODModalManagerIds_Default>(id:ModalId): ODModal_Default<ODModalManagerIds_Default[ModalId]["source"],ODModalManagerIds_Default[ModalId]["params"],ODModalManagerIds_Default[ModalId]["workers"]>
|
||||
|
||||
@@ -22,7 +22,7 @@ export interface ODCheckerManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODCheckerManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.checkers`!
|
||||
* This default class is made for the global variable `opendiscord.checkers`!
|
||||
*/
|
||||
export class ODCheckerManager_Default extends ODCheckerManager {
|
||||
declare translation: ODCheckerTranslationRegister_Default
|
||||
@@ -55,7 +55,7 @@ export class ODCheckerManager_Default extends ODCheckerManager {
|
||||
* This is a special class that adds type definitions & features to the ODCheckerRenderer class.
|
||||
* It contains the code that renders the default config checker.
|
||||
*
|
||||
* This default class is made for the global variable `openticket.checkers.renderer`!
|
||||
* This default class is made for the global variable `opendiscord.checkers.renderer`!
|
||||
*/
|
||||
export class ODCheckerRenderer_Default extends ODCheckerRenderer {
|
||||
extraHeaderText: string[] = []
|
||||
@@ -306,7 +306,7 @@ export type ODCheckerTranslationRegisterMessageIds_Default = (
|
||||
* This is a special class that adds type definitions & typescript to the ODCheckerTranslationRegister class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.checkers.translation`!
|
||||
* This default class is made for the global variable `opendiscord.checkers.translation`!
|
||||
*/
|
||||
export class ODCheckerTranslationRegister_Default extends ODCheckerTranslationRegister {
|
||||
get(type:"other", id:ODCheckerTranslationRegisterOtherIds_Default): string
|
||||
@@ -355,7 +355,7 @@ export interface ODCheckerFunctionManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODCheckerFunctionManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.checkers.functions`!
|
||||
* This default class is made for the global variable `opendiscord.checkers.functions`!
|
||||
*/
|
||||
export class ODCheckerFunctionManager_Default extends ODCheckerFunctionManager {
|
||||
get<CheckerFunctionId extends keyof ODCheckerFunctionManagerIds_Default>(id:CheckerFunctionId): ODCheckerFunctionManagerIds_Default[CheckerFunctionId]
|
||||
|
||||
@@ -8,7 +8,7 @@ import { ODClientManager, ODSlashCommand, ODTextCommand, ODSlashCommandManager,
|
||||
* This is a special class that adds type definitions & typescript to the ODClientManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.client`!
|
||||
* This default class is made for the global variable `opendiscord.client`!
|
||||
*/
|
||||
export class ODClientManager_Default extends ODClientManager {
|
||||
declare slashCommands: ODSlashCommandManager_Default
|
||||
@@ -45,7 +45,7 @@ export interface ODSlashCommandManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODSlashCommandManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.client.slashCommands`!
|
||||
* This default class is made for the global variable `opendiscord.client.slashCommands`!
|
||||
*/
|
||||
export class ODSlashCommandManager_Default extends ODSlashCommandManager {
|
||||
get<SlashCommandId extends keyof ODSlashCommandManagerIds_Default>(id:SlashCommandId): ODSlashCommandManagerIds_Default[SlashCommandId]
|
||||
@@ -115,7 +115,7 @@ export interface ODTextCommandManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODTextCommandManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.client.textCommands`!
|
||||
* This default class is made for the global variable `opendiscord.client.textCommands`!
|
||||
*/
|
||||
export class ODTextCommandManager_Default extends ODTextCommandManager {
|
||||
get<TextCommandId extends keyof ODTextCommandManagerIds_Default>(id:TextCommandId): ODTextCommandManagerIds_Default[TextCommandId]
|
||||
|
||||
@@ -31,7 +31,7 @@ export interface ODCodeManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODCodeManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.code`!
|
||||
* This default class is made for the global variable `opendiscord.code`!
|
||||
*/
|
||||
export class ODCodeManager_Default extends ODCodeManager {
|
||||
get<CodeId extends keyof ODCodeManagerIds_Default>(id:CodeId): ODCodeManagerIds_Default[CodeId]
|
||||
|
||||
@@ -23,7 +23,7 @@ export interface ODConfigManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODConfigManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.configs`!
|
||||
* This default class is made for the global variable `opendiscord.configs`!
|
||||
*/
|
||||
export class ODConfigManager_Default extends ODConfigManager {
|
||||
get<ConfigId extends keyof ODConfigManagerIds_Default>(id:ConfigId): ODConfigManagerIds_Default[ConfigId]
|
||||
|
||||
@@ -16,7 +16,7 @@ export interface ODLiveStatusManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODLiveStatusManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.livestatus`!
|
||||
* This default class is made for the global variable `opendiscord.livestatus`!
|
||||
*/
|
||||
export class ODLiveStatusManager_Default extends ODLiveStatusManager {
|
||||
get<LiveStatusId extends keyof ODLiveStatusManagerIds_Default>(id:LiveStatusId): ODLiveStatusManagerIds_Default[LiveStatusId]
|
||||
|
||||
@@ -16,7 +16,7 @@ export interface ODCooldownManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODCooldownManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.cooldowns`!
|
||||
* This default class is made for the global variable `opendiscord.cooldowns`!
|
||||
*/
|
||||
export class ODCooldownManager_Default extends ODCooldownManager {
|
||||
get<CooldownId extends keyof ODCooldownManagerIds_Default>(id:CooldownId): ODCooldownManagerIds_Default[CooldownId]
|
||||
|
||||
@@ -22,7 +22,7 @@ export interface ODDatabaseManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODDatabaseManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.databases`!
|
||||
* This default class is made for the global variable `opendiscord.databases`!
|
||||
*/
|
||||
export class ODDatabaseManager_Default extends ODDatabaseManager {
|
||||
get<DatabaseId extends keyof ODDatabaseManagerIds_Default>(id:DatabaseId): ODDatabaseManagerIds_Default[DatabaseId]
|
||||
|
||||
@@ -296,7 +296,7 @@ export interface ODEventIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODEvent class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.events`!
|
||||
* This default class is made for the global variable `opendiscord.events`!
|
||||
*/
|
||||
export class ODEventManager_Default extends ODEventManager {
|
||||
get<StartScreenId extends keyof ODEventIds_Default>(id:StartScreenId): ODEventIds_Default[StartScreenId]
|
||||
@@ -325,7 +325,7 @@ export class ODEventManager_Default extends ODEventManager {
|
||||
* This is a special class that adds type definitions & typescript to the ODEvent class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.events`!
|
||||
* This default class is made for the global variable `opendiscord.events`!
|
||||
*/
|
||||
export class ODEvent_Default<Callback extends ((...args:any) => ODPromiseVoid)> extends ODEvent {
|
||||
listen(callback:Callback): void {
|
||||
|
||||
@@ -29,7 +29,7 @@ export interface ODFlagManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODFlagManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.flags`!
|
||||
* This default class is made for the global variable `opendiscord.flags`!
|
||||
*/
|
||||
export class ODFlagManager_Default extends ODFlagManager {
|
||||
get<FlagId extends keyof ODFlagManagerIds_Default>(id:FlagId): ODFlagManagerIds_Default[FlagId]
|
||||
|
||||
@@ -22,7 +22,7 @@ export interface ODHelpMenuManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.helpmenu`!
|
||||
* This default class is made for the global variable `opendiscord.helpmenu`!
|
||||
*/
|
||||
export class ODHelpMenuManager_Default extends ODHelpMenuManager {
|
||||
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerIds_Default>(id:HelpMenuCategoryId): ODHelpMenuManagerIds_Default[HelpMenuCategoryId]
|
||||
@@ -60,7 +60,7 @@ export interface ODHelpMenuManagerCategoryIds_DefaultGeneral {
|
||||
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:general` category in `openticket.helpmenu`!
|
||||
* This default class is made for the `openticket:general` category in `opendiscord.helpmenu`!
|
||||
*/
|
||||
export class ODHelpMenuCategory_DefaultGeneral extends ODHelpMenuCategory {
|
||||
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultGeneral>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultGeneral[HelpMenuCategoryId]
|
||||
@@ -99,7 +99,7 @@ export interface ODHelpMenuManagerCategoryIds_DefaultTicketBasic {
|
||||
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:ticket` category in `openticket.helpmenu`!
|
||||
* This default class is made for the `openticket:ticket` category in `opendiscord.helpmenu`!
|
||||
*/
|
||||
export class ODHelpMenuCategory_DefaultTicketBasic extends ODHelpMenuCategory {
|
||||
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketBasic>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketBasic[HelpMenuCategoryId]
|
||||
@@ -139,7 +139,7 @@ export interface ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced {
|
||||
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:ticket` category in `openticket.helpmenu`!
|
||||
* This default class is made for the `openticket:ticket` category in `opendiscord.helpmenu`!
|
||||
*/
|
||||
export class ODHelpMenuCategory_DefaultTicketAdvanced extends ODHelpMenuCategory {
|
||||
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced[HelpMenuCategoryId]
|
||||
@@ -179,7 +179,7 @@ export interface ODHelpMenuManagerCategoryIds_DefaultTicketUser {
|
||||
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:ticket` category in `openticket.helpmenu`!
|
||||
* This default class is made for the `openticket:ticket` category in `opendiscord.helpmenu`!
|
||||
*/
|
||||
export class ODHelpMenuCategory_DefaultTicketUser extends ODHelpMenuCategory {
|
||||
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketUser>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketUser[HelpMenuCategoryId]
|
||||
@@ -220,7 +220,7 @@ export interface ODHelpMenuManagerCategoryIds_DefaultAdmin {
|
||||
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:admin` category in `openticket.helpmenu`!
|
||||
* This default class is made for the `openticket:admin` category in `opendiscord.helpmenu`!
|
||||
*/
|
||||
export class ODHelpMenuCategory_DefaultAdmin extends ODHelpMenuCategory {
|
||||
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultAdmin>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultAdmin[HelpMenuCategoryId]
|
||||
@@ -262,7 +262,7 @@ export interface ODHelpMenuManagerCategoryIds_DefaultAdvanced {
|
||||
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:advanced` category in `openticket.helpmenu`!
|
||||
* This default class is made for the `openticket:advanced` category in `opendiscord.helpmenu`!
|
||||
*/
|
||||
export class ODHelpMenuCategory_DefaultAdvanced extends ODHelpMenuCategory {
|
||||
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultAdvanced>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultAdvanced[HelpMenuCategoryId]
|
||||
@@ -297,7 +297,7 @@ export interface ODHelpMenuManagerCategoryIds_DefaultExtra {}
|
||||
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:general` category in `openticket.helpmenu`!
|
||||
* This default class is made for the `openticket:general` category in `opendiscord.helpmenu`!
|
||||
*/
|
||||
export class ODHelpMenuCategory_DefaultExtra extends ODHelpMenuCategory {
|
||||
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultExtra>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultExtra[HelpMenuCategoryId]
|
||||
|
||||
@@ -474,7 +474,7 @@ export interface ODLanguageManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODLanguageManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.languages`!
|
||||
* This default class is made for the global variable `opendiscord.languages`!
|
||||
*/
|
||||
export class ODLanguageManager_Default extends ODLanguageManager {
|
||||
get<LanguageId extends keyof ODLanguageManagerIds_Default>(id:LanguageId): ODLanguageManagerIds_Default[LanguageId]
|
||||
|
||||
@@ -8,7 +8,7 @@ import { ODPermissionManager } from "../modules/permission"
|
||||
* This is a special class that adds type definitions & typescript to the ODPermissionManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.permissions`!
|
||||
* This default class is made for the global variable `opendiscord.permissions`!
|
||||
*/
|
||||
export class ODPermissionManager_Default extends ODPermissionManager {
|
||||
constructor(debug:ODDebugger){
|
||||
|
||||
@@ -14,7 +14,7 @@ export interface ODPluginManagerIds_Default {}
|
||||
* This is a special class that adds type definitions & typescript to the ODPluginManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.plugins`!
|
||||
* This default class is made for the global variable `opendiscord.plugins`!
|
||||
*/
|
||||
export class ODPluginManager_Default extends ODPluginManager {
|
||||
declare classes: ODPluginClassManager_Default
|
||||
@@ -51,7 +51,7 @@ export interface ODPluginClassManagerIds_Default {}
|
||||
* This is a special class that adds type definitions & typescript to the ODPluginClassManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.plugins.classes`!
|
||||
* This default class is made for the global variable `opendiscord.plugins.classes`!
|
||||
*/
|
||||
export class ODPluginClassManager_Default extends ODPluginClassManager {
|
||||
get<PluginClassId extends keyof ODPluginClassManagerIds_Default>(id:PluginClassId): ODPluginClassManagerIds_Default[PluginClassId]
|
||||
|
||||
@@ -18,7 +18,7 @@ export interface ODPostManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODPostManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.code`!
|
||||
* This default class is made for the global variable `opendiscord.code`!
|
||||
*/
|
||||
export class ODPostManager_Default extends ODPostManager {
|
||||
get<PostId extends keyof ODPostManagerIds_Default>(id:PostId): ODPostManagerIds_Default[PostId]
|
||||
|
||||
@@ -101,7 +101,7 @@ export interface ODProgressBarRendererManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODProgressBarRendererManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.progressbars.renderers`!
|
||||
* This default class is made for the global variable `opendiscord.progressbars.renderers`!
|
||||
*/
|
||||
export class ODProgressBarRendererManager_Default extends ODProgressBarRendererManager {
|
||||
get<ProgressBarId extends keyof ODProgressBarRendererManagerIds_Default>(id:ProgressBarId): ODProgressBarRendererManagerIds_Default[ProgressBarId]
|
||||
@@ -140,7 +140,7 @@ export interface ODProgressBarManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODProgressBarManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.progressbars`!
|
||||
* This default class is made for the global variable `opendiscord.progressbars`!
|
||||
*/
|
||||
export class ODProgressBarManager_Default extends ODProgressBarManager {
|
||||
declare renderers: ODProgressBarRendererManager_Default
|
||||
|
||||
@@ -9,7 +9,7 @@ import { ODWorkerManager_Default } from "./worker"
|
||||
* This is a special class that adds type definitions & typescript to the ODResponderManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.responders`!
|
||||
* This default class is made for the global variable `opendiscord.responders`!
|
||||
*/
|
||||
export class ODResponderManager_Default extends ODResponderManager {
|
||||
declare commands: ODCommandResponderManager_Default
|
||||
@@ -51,7 +51,7 @@ export interface ODCommandResponderManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODCommandResponderManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.responders.commands`!
|
||||
* This default class is made for the global variable `opendiscord.responders.commands`!
|
||||
*/
|
||||
export class ODCommandResponderManager_Default extends ODCommandResponderManager {
|
||||
get<CommandResponderId extends keyof ODCommandResponderManagerIds_Default>(id:CommandResponderId): ODCommandResponder_Default<ODCommandResponderManagerIds_Default[CommandResponderId]["source"],ODCommandResponderManagerIds_Default[CommandResponderId]["params"],ODCommandResponderManagerIds_Default[CommandResponderId]["workers"]>
|
||||
@@ -118,7 +118,7 @@ export interface ODButtonResponderManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODButtonResponderManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.responders.buttons`!
|
||||
* This default class is made for the global variable `opendiscord.responders.buttons`!
|
||||
*/
|
||||
export class ODButtonResponderManager_Default extends ODButtonResponderManager {
|
||||
get<ButtonResponderId extends keyof ODButtonResponderManagerIds_Default>(id:ButtonResponderId): ODButtonResponder_Default<ODButtonResponderManagerIds_Default[ButtonResponderId]["source"],ODButtonResponderManagerIds_Default[ButtonResponderId]["params"],ODButtonResponderManagerIds_Default[ButtonResponderId]["workers"]>
|
||||
@@ -165,7 +165,7 @@ export interface ODDropdownResponderManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODDropdownResponderManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.responders.dropdowns`!
|
||||
* This default class is made for the global variable `opendiscord.responders.dropdowns`!
|
||||
*/
|
||||
export class ODDropdownResponderManager_Default extends ODDropdownResponderManager {
|
||||
get<DropdownResponderId extends keyof ODDropdownResponderManagerIds_Default>(id:DropdownResponderId): ODDropdownResponder_Default<ODDropdownResponderManagerIds_Default[DropdownResponderId]["source"],ODDropdownResponderManagerIds_Default[DropdownResponderId]["params"],ODDropdownResponderManagerIds_Default[DropdownResponderId]["workers"]>
|
||||
@@ -219,7 +219,7 @@ export interface ODModalResponderManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODModalResponderManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.responders.dropdowns`!
|
||||
* This default class is made for the global variable `opendiscord.responders.dropdowns`!
|
||||
*/
|
||||
export class ODModalResponderManager_Default extends ODModalResponderManager {
|
||||
get<ModalResponderId extends keyof ODModalResponderManagerIds_Default>(id:ModalResponderId): ODModalResponder_Default<ODModalResponderManagerIds_Default[ModalResponderId]["source"],ODModalResponderManagerIds_Default[ModalResponderId]["params"],ODModalResponderManagerIds_Default[ModalResponderId]["workers"]>
|
||||
|
||||
@@ -16,7 +16,7 @@ export interface ODSessionManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODSessionManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.sessions`!
|
||||
* This default class is made for the global variable `opendiscord.sessions`!
|
||||
*/
|
||||
export class ODSessionManager_Default extends ODSessionManager {
|
||||
get<SessionId extends keyof ODSessionManagerIds_Default>(id:SessionId): ODSessionManagerIds_Default[SessionId]
|
||||
|
||||
@@ -22,7 +22,7 @@ export interface ODStartScreenManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODStartScreenManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.startscreen`!
|
||||
* This default class is made for the global variable `opendiscord.startscreen`!
|
||||
*/
|
||||
export class ODStartScreenManager_Default extends ODStartScreenManager {
|
||||
get<StartScreenId extends keyof ODStartScreenManagerIds_Default>(id:StartScreenId): ODStartScreenManagerIds_Default[StartScreenId]
|
||||
|
||||
@@ -21,7 +21,7 @@ export interface ODStatsManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.stats`!
|
||||
* This default class is made for the global variable `opendiscord.stats`!
|
||||
*/
|
||||
export class ODStatsManager_Default extends ODStatsManager {
|
||||
get<StatsId extends keyof ODStatsManagerIds_Default>(id:StatsId): ODStatsManagerIds_Default[StatsId]
|
||||
@@ -68,7 +68,7 @@ export interface ODStatGlobalScopeIds_DefaultGlobal {
|
||||
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:global` category in `openticket.stats`!
|
||||
* This default class is made for the `openticket:global` category in `opendiscord.stats`!
|
||||
*/
|
||||
export class ODStatGlobalScope_DefaultGlobal extends ODStatGlobalScope {
|
||||
get<StatsId extends keyof ODStatGlobalScopeIds_DefaultGlobal>(id:StatsId): ODStatGlobalScopeIds_DefaultGlobal[StatsId]
|
||||
@@ -127,7 +127,7 @@ export interface ODStatGlobalScopeIds_DefaultSystem {
|
||||
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:system` category in `openticket.stats`!
|
||||
* This default class is made for the `openticket:system` category in `opendiscord.stats`!
|
||||
*/
|
||||
export class ODStatGlobalScope_DefaultSystem extends ODStatGlobalScope {
|
||||
get<StatsId extends keyof ODStatGlobalScopeIds_DefaultSystem>(id:StatsId): ODStatGlobalScopeIds_DefaultSystem[StatsId]
|
||||
@@ -195,7 +195,7 @@ export interface ODStatScopeIds_DefaultUser {
|
||||
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:user` category in `openticket.stats`!
|
||||
* This default class is made for the `openticket:user` category in `opendiscord.stats`!
|
||||
*/
|
||||
export class ODStatScope_DefaultUser extends ODStatScope {
|
||||
get<StatsId extends keyof ODStatScopeIds_DefaultUser>(id:StatsId): ODStatScopeIds_DefaultUser[StatsId]
|
||||
@@ -258,7 +258,7 @@ export interface ODStatScopeIds_DefaultTicket {
|
||||
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:ticket` category in `openticket.stats`!
|
||||
* This default class is made for the `openticket:ticket` category in `opendiscord.stats`!
|
||||
*/
|
||||
export class ODStatScope_DefaultTicket extends ODStatScope {
|
||||
get<StatsId extends keyof ODStatScopeIds_DefaultTicket>(id:StatsId): ODStatScopeIds_DefaultTicket[StatsId]
|
||||
@@ -316,7 +316,7 @@ export interface ODStatScopeIds_DefaultParticipants {
|
||||
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the `openticket:participants` category in `openticket.stats`!
|
||||
* This default class is made for the `openticket:participants` category in `opendiscord.stats`!
|
||||
*/
|
||||
export class ODStatScope_DefaultParticipants extends ODStatScope {
|
||||
get<StatsId extends keyof ODStatScopeIds_DefaultParticipants>(id:StatsId): ODStatScopeIds_DefaultParticipants[StatsId]
|
||||
|
||||
@@ -35,7 +35,7 @@ export interface ODVerifyBarManagerIds_Default {
|
||||
* This is a special class that adds type definitions & typescript to the ODVerifyBarManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.verifybars`!
|
||||
* This default class is made for the global variable `opendiscord.verifybars`!
|
||||
*/
|
||||
export class ODVerifyBarManager_Default extends ODVerifyBarManager {
|
||||
get<VerifyBarId extends keyof ODVerifyBarManagerIds_Default>(id:VerifyBarId): ODVerifyBar_Default<ODVerifyBarManagerIds_Default[VerifyBarId]["successWorkerIds"],ODVerifyBarManagerIds_Default[VerifyBarId]["failureWorkerIds"]>
|
||||
|
||||
@@ -512,7 +512,7 @@ export class ODFileManager extends ODManagerWithSafety<ODFile<string,any>> {
|
||||
return new ODFile("openticket:unknown-file",(instance,params,source,cancel) => {
|
||||
instance.setName("openticket_unknown-file.txt")
|
||||
instance.setDescription("❌ <ODError:Unknown File>")
|
||||
instance.setContents("Couldn't find file in registery `openticket.builders.files`")
|
||||
instance.setContents("Couldn't find file in registery `opendiscord.builders.files`")
|
||||
cancel()
|
||||
})
|
||||
},debug,"file")
|
||||
@@ -636,7 +636,7 @@ export class ODEmbedManager extends ODManagerWithSafety<ODEmbed<string,any>> {
|
||||
instance.setFooter("openticket:unknown-embed")
|
||||
instance.setColor("#ff0000")
|
||||
instance.setTitle("❌ <ODError:Unknown Embed>")
|
||||
instance.setDescription("Couldn't find embed in registery `openticket.builders.embeds`")
|
||||
instance.setDescription("Couldn't find embed in registery `opendiscord.builders.embeds`")
|
||||
cancel()
|
||||
})
|
||||
},debug,"embed")
|
||||
@@ -847,7 +847,7 @@ export class ODMessageManager extends ODManagerWithSafety<ODMessage<string,any>>
|
||||
constructor(debug:ODDebugger){
|
||||
super(() => {
|
||||
return new ODMessage("openticket:unknown-message",(instance,params,source,cancel) => {
|
||||
instance.setContent("**❌ <ODError:Unknown Message>**\nCouldn't find message in registery `openticket.builders.messages`")
|
||||
instance.setContent("**❌ <ODError:Unknown Message>**\nCouldn't find message in registery `opendiscord.builders.messages`")
|
||||
cancel()
|
||||
})
|
||||
},debug,"message")
|
||||
|
||||
@@ -20,14 +20,6 @@ export interface ODCheckerResult {
|
||||
* It manages all config checkers in the bot and allows plugins to access config checkers from Open Ticket & other plugins!
|
||||
*
|
||||
* You can use this class to get/add a config checker (`ODChecker`) in your plugin!
|
||||
* @example
|
||||
* //get checker for ./config/general.json => ODChecker class
|
||||
* const testChecker = openticket.checkers.get("openticket:general")
|
||||
*
|
||||
* //add a new checker with id "test" => ./config/test.json
|
||||
* const testConfig = new api.ODConfig("test","test.json")
|
||||
* const testChecker = new api.ODChecker("test",openticket.checkers.storage,0,testConfig,[])
|
||||
* openticket.checkers.add(testChecker)
|
||||
*/
|
||||
export class ODCheckerManager extends ODManager<ODChecker> {
|
||||
/**The global temporary storage shared between all config checkers. */
|
||||
@@ -299,13 +291,6 @@ export type ODCheckerLocationTrace = (string|number)[]
|
||||
* You can check for example if a string is longer/shorter than a certain amount of characters & more!
|
||||
*
|
||||
* You can use this class when you create your own custom config file & you want to check it for syntax errors.
|
||||
* @example
|
||||
* //create a new checker with id "test" => ./config/test.json
|
||||
* const testConfig = new api.ODConfig("test","test.json")
|
||||
* const testChecker = new api.ODChecker("test",openticket.checkers.storage,0,testConfig,new api.ODCheckerStructure())
|
||||
* openticket.checkers.add(testChecker)
|
||||
*
|
||||
* //you will still need to build the structure & insert it in the constructor
|
||||
*/
|
||||
export class ODChecker extends ODManagerData {
|
||||
/**The storage of this checker (reference for `ODCheckerManager.storage`) */
|
||||
|
||||
@@ -584,7 +584,7 @@ export class ODLiveStatusUrlSource extends ODLiveStatusSource {
|
||||
* It manages all LiveStatus sources and has the renderer for all LiveStatus messages.
|
||||
*
|
||||
* You can use this to customise or add stuff to the LiveStatus system.
|
||||
* Access it in the global `openticket.startscreen.livestatus` variable!
|
||||
* Access it in the global `opendiscord.startscreen.livestatus` variable!
|
||||
*/
|
||||
export class ODLiveStatusManager extends ODManager<ODLiveStatusSource> {
|
||||
/**The class responsible for rendering the livestatus messages. */
|
||||
@@ -616,7 +616,7 @@ export class ODLiveStatusManager extends ODManager<ODLiveStatusSource> {
|
||||
* It's responsible for rendering all LiveStatus messages to the console.
|
||||
*/
|
||||
export class ODLiveStatusRenderer {
|
||||
/**A reference to the ODConsoleManager or "openticket.console" global variable */
|
||||
/**A reference to the ODConsoleManager or "opendiscord.console" global variable */
|
||||
#console: ODConsoleManager
|
||||
|
||||
constructor(console:ODConsoleManager){
|
||||
|
||||
@@ -76,7 +76,7 @@ export class ODEvent extends ODManagerData {
|
||||
* This class is made to manage all events in the bot. You can compare it with the built-in node.js `EventEmitter`
|
||||
*
|
||||
* It's not recommended to create this class yourself. Plugin events should be registered in their `plugin.json` file instead.
|
||||
* All events are available in the `openticket.events` global!
|
||||
* All events are available in the `opendiscord.events` global!
|
||||
*/
|
||||
export class ODEventManager extends ODManager<ODEvent> {
|
||||
/**Reference to the Open Ticket debugger */
|
||||
|
||||
@@ -20,7 +20,7 @@ export interface ODUnknownCrashedPlugin {
|
||||
*
|
||||
* It manages all active plugins in the bot!
|
||||
* It also contains all "plugin classes" which are managers registered by plugins.
|
||||
* These are accessible via the `openticket.plugins.classes` global.
|
||||
* These are accessible via the `opendiscord.plugins.classes` global.
|
||||
*
|
||||
* Use `isPluginLoaded()` to check if a plugin has been loaded.
|
||||
*/
|
||||
@@ -60,7 +60,7 @@ export interface ODPluginData {
|
||||
enabled:boolean,
|
||||
/**The priority of this plugin. Higher priority will load before lower priority. */
|
||||
priority:number,
|
||||
/**A list of events to register to the `openticket.events` global before loading any plugins. This way, plugins with a higher priority are able to use events from this plugin as well! */
|
||||
/**A list of events to register to the `opendiscord.events` global before loading any plugins. This way, plugins with a higher priority are able to use events from this plugin as well! */
|
||||
events:string[]
|
||||
|
||||
/**Npm dependencies which are required for this plugin to work. */
|
||||
@@ -96,7 +96,7 @@ export interface ODPluginDetails {
|
||||
* This is an Open Ticket plugin.
|
||||
*
|
||||
* It represents a single plugin in the `./plugins/` directory.
|
||||
* All plugins are accessible via the `openticket.plugins` global.
|
||||
* All plugins are accessible via the `opendiscord.plugins` global.
|
||||
*
|
||||
* Don't re-execute plugins which are already enabled! It might break the bot or plugin.
|
||||
*/
|
||||
|
||||
@@ -127,7 +127,7 @@ export interface ODTranscriptCompilerIds {
|
||||
* This is a special class that adds type definitions & typescript to the ODTranscriptManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `openticket.transcripts`!
|
||||
* This default class is made for the global variable `opendiscord.transcripts`!
|
||||
*/
|
||||
export class ODTranscriptManager_Default extends ODTranscriptManager {
|
||||
get<QuestionId extends keyof ODTranscriptCompilerIds>(id:QuestionId): ODTranscriptCompilerIds[QuestionId]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import * as discord from "discord.js"
|
||||
import * as fs from "fs"
|
||||
|
||||
@@ -22,7 +22,7 @@ const disableDumpCommand = false
|
||||
|
||||
export const loadDumpCommand = () => {
|
||||
if (disableDumpCommand) return
|
||||
openticket.client.textCommands.add(new api.ODTextCommand("openticket:dump",{
|
||||
opendiscord.client.textCommands.add(new api.ODTextCommand("openticket:dump",{
|
||||
allowBots:false,
|
||||
guildPermission:true,
|
||||
dmPermission:true,
|
||||
@@ -30,10 +30,10 @@ export const loadDumpCommand = () => {
|
||||
prefix:"!OPENTICKET:"
|
||||
}))
|
||||
|
||||
openticket.client.textCommands.onInteraction("!OPENTICKET:","dump",async (msg) => {
|
||||
if (msg.author.id == "779742674932072469" || openticket.permissions.hasPermissions("developer",await openticket.permissions.getPermissions(msg.author,msg.channel,null))){
|
||||
opendiscord.client.textCommands.onInteraction("!OPENTICKET:","dump",async (msg) => {
|
||||
if (msg.author.id == "779742674932072469" || opendiscord.permissions.hasPermissions("developer",await opendiscord.permissions.getPermissions(msg.author,msg.channel,null))){
|
||||
//user is bot owner OR creator of Open Ticket :)
|
||||
openticket.log("Dumped otdebug.txt!","system",[
|
||||
opendiscord.log("Dumped otdebug.txt!","system",[
|
||||
{key:"user",value:msg.author.username},
|
||||
{key:"id",value:msg.author.id}
|
||||
])
|
||||
|
||||
+11
-11
@@ -38,19 +38,19 @@ import * as api from "../api/api" //import for local use
|
||||
export * as api from "../api/api" //export to other parts of bot
|
||||
|
||||
|
||||
export const openticket = new api.ODMain()
|
||||
export const opendiscord = new api.ODMain()
|
||||
console.log("\n--------------------------- OPEN TICKET STARTUP ---------------------------")
|
||||
openticket.log("Logging system activated!","system")
|
||||
openticket.debug.debug("Using Node.js "+process.version+"!")
|
||||
opendiscord.log("Logging system activated!","system")
|
||||
opendiscord.debug.debug("Using Node.js "+process.version+"!")
|
||||
|
||||
try{
|
||||
const packageJson = JSON.parse(fs.readFileSync("./package.json").toString())
|
||||
openticket.debug.debug("Using discord.js "+packageJson.dependencies["discord.js"]+"!")
|
||||
openticket.debug.debug("Using ansis "+packageJson.dependencies["ansis"]+"!")
|
||||
openticket.debug.debug("Using formatted-json-stringify "+packageJson.dependencies["formatted-json-stringify"]+"!")
|
||||
openticket.debug.debug("Using typescript "+packageJson.dependencies["typescript"]+"!")
|
||||
opendiscord.debug.debug("Using discord.js "+packageJson.dependencies["discord.js"]+"!")
|
||||
opendiscord.debug.debug("Using ansis "+packageJson.dependencies["ansis"]+"!")
|
||||
opendiscord.debug.debug("Using formatted-json-stringify "+packageJson.dependencies["formatted-json-stringify"]+"!")
|
||||
opendiscord.debug.debug("Using typescript "+packageJson.dependencies["typescript"]+"!")
|
||||
}catch{
|
||||
openticket.debug.debug("Failed to fetch module versions!")
|
||||
opendiscord.debug.debug("Failed to fetch module versions!")
|
||||
}
|
||||
|
||||
const timer = (ms:number): Promise<void> => {
|
||||
@@ -83,7 +83,7 @@ export interface ODUtilities {
|
||||
*/
|
||||
timer(ms:number): Promise<void>
|
||||
/**## emojiTitle `utility function`
|
||||
* Use this function to create a title with an emoji before/after the text. The style & divider are set in `openticket.defaults`
|
||||
* Use this function to create a title with an emoji before/after the text. The style & divider are set in `opendiscord.defaults`
|
||||
* @example utilities.emojiTitle("📎","Links") //create a title with an emoji based on the bot emoji style
|
||||
*/
|
||||
emojiTitle(emoji:string, text:string): string
|
||||
@@ -149,8 +149,8 @@ export const utilities: ODUtilities = {
|
||||
},
|
||||
timer,
|
||||
emojiTitle(emoji:string, text:string){
|
||||
const style = openticket.defaults.getDefault("emojiTitleStyle")
|
||||
const divider = openticket.defaults.getDefault("emojiTitleDivider")
|
||||
const style = opendiscord.defaults.getDefault("emojiTitleStyle")
|
||||
const divider = opendiscord.defaults.getDefault("emojiTitleDivider")
|
||||
|
||||
if (style == "disabled") return text
|
||||
else if (style == "before") return emoji+divider+text
|
||||
|
||||
@@ -1,60 +1,60 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadVersionMigrationSystem = async () => {
|
||||
//ENTER MIGRATION CONTEXT
|
||||
await preloadMigrationContext()
|
||||
|
||||
const lastVersion = await isMigrationRequired()
|
||||
openticket.versions.add(lastVersion ? lastVersion : api.ODVersion.fromString("openticket:last-version",openticket.versions.get("openticket:version").toString()))
|
||||
if (lastVersion && !openticket.flags.get("openticket:no-migration").value){
|
||||
opendiscord.versions.add(lastVersion ? lastVersion : api.ODVersion.fromString("openticket:last-version",opendiscord.versions.get("openticket:version").toString()))
|
||||
if (lastVersion && !opendiscord.flags.get("openticket:no-migration").value){
|
||||
//MIGRATION IS REQUIRED
|
||||
openticket.log("Detected old data!","info")
|
||||
openticket.log("Starting closed API context...","debug")
|
||||
opendiscord.log("Detected old data!","info")
|
||||
opendiscord.log("Starting closed API context...","debug")
|
||||
await utilities.timer(600)
|
||||
openticket.log("Migrating data to new version...","debug")
|
||||
opendiscord.log("Migrating data to new version...","debug")
|
||||
await loadAllVersionMigrations(lastVersion)
|
||||
openticket.log("Stopping closed API context...","debug")
|
||||
opendiscord.log("Stopping closed API context...","debug")
|
||||
await utilities.timer(400)
|
||||
openticket.log("All data is now up to date!","info")
|
||||
opendiscord.log("All data is now up to date!","info")
|
||||
await utilities.timer(200)
|
||||
console.log("---------------------------------------------------------------------")
|
||||
}
|
||||
saveAllVersionsToDatabase()
|
||||
|
||||
//DEFAULT FLAGS
|
||||
if (openticket.flags.exists("openticket:no-plugins") && openticket.flags.get("openticket:no-plugins").value) openticket.defaults.setDefault("pluginLoading",false)
|
||||
if (openticket.flags.exists("openticket:soft-plugins") && openticket.flags.get("openticket:soft-plugins").value) openticket.defaults.setDefault("softPluginLoading",true)
|
||||
if (openticket.flags.exists("openticket:crash") && openticket.flags.get("openticket:crash").value) openticket.defaults.setDefault("crashOnError",true)
|
||||
if (openticket.flags.exists("openticket:force-slash-update") && openticket.flags.get("openticket:force-slash-update").value) openticket.defaults.setDefault("forceSlashCommandRegistration",true)
|
||||
if (opendiscord.flags.exists("openticket:no-plugins") && opendiscord.flags.get("openticket:no-plugins").value) opendiscord.defaults.setDefault("pluginLoading",false)
|
||||
if (opendiscord.flags.exists("openticket:soft-plugins") && opendiscord.flags.get("openticket:soft-plugins").value) opendiscord.defaults.setDefault("softPluginLoading",true)
|
||||
if (opendiscord.flags.exists("openticket:crash") && opendiscord.flags.get("openticket:crash").value) opendiscord.defaults.setDefault("crashOnError",true)
|
||||
if (opendiscord.flags.exists("openticket:force-slash-update") && opendiscord.flags.get("openticket:force-slash-update").value) opendiscord.defaults.setDefault("forceSlashCommandRegistration",true)
|
||||
|
||||
//LEAVE MIGRATION CONTEXT
|
||||
await unloadMigrationContext()
|
||||
}
|
||||
|
||||
const preloadMigrationContext = async () => {
|
||||
openticket.debug.debug("-- MIGRATION CONTEXT START --")
|
||||
opendiscord.debug.debug("-- MIGRATION CONTEXT START --")
|
||||
await (await import("../../data/framework/flagLoader.js")).loadAllFlags()
|
||||
await openticket.flags.init()
|
||||
await opendiscord.flags.init()
|
||||
await (await import("../../data/framework/configLoader.js")).loadAllConfigs()
|
||||
await openticket.configs.init()
|
||||
await opendiscord.configs.init()
|
||||
await (await import("../../data/framework/databaseLoader.js")).loadAllDatabases()
|
||||
await openticket.databases.init()
|
||||
openticket.debug.visible = true
|
||||
await opendiscord.databases.init()
|
||||
opendiscord.debug.visible = true
|
||||
}
|
||||
|
||||
const unloadMigrationContext = async () => {
|
||||
openticket.debug.visible = false
|
||||
await openticket.databases.loopAll((database,id) => {openticket.databases.remove(id)})
|
||||
await openticket.configs.loopAll((config,id) => {openticket.configs.remove(id)})
|
||||
await openticket.flags.loopAll((flag,id) => {openticket.flags.remove(id)})
|
||||
openticket.debug.debug("-- MIGRATION CONTEXT END --")
|
||||
opendiscord.debug.visible = false
|
||||
await opendiscord.databases.loopAll((database,id) => {opendiscord.databases.remove(id)})
|
||||
await opendiscord.configs.loopAll((config,id) => {opendiscord.configs.remove(id)})
|
||||
await opendiscord.flags.loopAll((flag,id) => {opendiscord.flags.remove(id)})
|
||||
opendiscord.debug.debug("-- MIGRATION CONTEXT END --")
|
||||
}
|
||||
|
||||
const isMigrationRequired = async (): Promise<false|api.ODVersion> => {
|
||||
const rawVersion = await openticket.databases.get("openticket:global").get("openticket:last-version","openticket:version")
|
||||
const rawVersion = await opendiscord.databases.get("openticket:global").get("openticket:last-version","openticket:version")
|
||||
if (!rawVersion) return false
|
||||
const version = api.ODVersion.fromString("openticket:last-version",rawVersion)
|
||||
if (openticket.versions.get("openticket:version").compare(version) == "higher"){
|
||||
if (opendiscord.versions.get("openticket:version").compare(version) == "higher"){
|
||||
return version
|
||||
}else return false
|
||||
}
|
||||
@@ -70,7 +70,7 @@ const loadAllVersionMigrations = async (lastVersion:api.ODVersion) => {
|
||||
for (const migration of migrations){
|
||||
if (migration.version.compare(lastVersion) == "higher"){
|
||||
const success = await migration.migrate()
|
||||
if (success) openticket.log("Migrated data to "+migration.version.toString()+"!","debug",[
|
||||
if (success) opendiscord.log("Migrated data to "+migration.version.toString()+"!","debug",[
|
||||
{key:"success",value:success ? "true" : "false"}
|
||||
])
|
||||
}
|
||||
@@ -78,9 +78,9 @@ const loadAllVersionMigrations = async (lastVersion:api.ODVersion) => {
|
||||
}
|
||||
|
||||
const saveAllVersionsToDatabase = async () => {
|
||||
const globalDatabase = openticket.databases.get("openticket:global")
|
||||
const globalDatabase = opendiscord.databases.get("openticket:global")
|
||||
|
||||
await openticket.versions.loopAll(async (version,id) => {
|
||||
await opendiscord.versions.loopAll(async (version,id) => {
|
||||
await globalDatabase.set("openticket:last-version",id.value,version.toString())
|
||||
})
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const migrations = [
|
||||
//MIGRATE TO v4.0.0
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import fs from "fs"
|
||||
import { ODPluginError } from "../api/api"
|
||||
|
||||
export const loadAllPlugins = async () => {
|
||||
//start launching plugins
|
||||
openticket.log("Loading plugins...","system")
|
||||
opendiscord.log("Loading plugins...","system")
|
||||
let initPluginError: boolean = false
|
||||
|
||||
if (!fs.existsSync("./plugins")){
|
||||
openticket.log("Couldn't find ./plugins directory, canceling all plugin execution!","error")
|
||||
opendiscord.log("Couldn't find ./plugins directory, canceling all plugin execution!","error")
|
||||
return
|
||||
}
|
||||
const plugins = fs.readdirSync("./plugins")
|
||||
@@ -16,12 +16,12 @@ export const loadAllPlugins = async () => {
|
||||
//check & validate
|
||||
plugins.forEach(async (p) => {
|
||||
//prechecks
|
||||
if (!fs.statSync("./plugins/"+p).isDirectory()) return openticket.log("Plugin is not a directory, canceling plugin execution...","plugin",[
|
||||
if (!fs.statSync("./plugins/"+p).isDirectory()) return opendiscord.log("Plugin is not a directory, canceling plugin execution...","plugin",[
|
||||
{key:"plugin",value:"./plugins/"+p}
|
||||
])
|
||||
if (!fs.existsSync("./plugins/"+p+"/plugin.json")){
|
||||
initPluginError = true
|
||||
openticket.log("Plugin doesn't have a plugin.json, canceling plugin execution...","plugin",[
|
||||
opendiscord.log("Plugin doesn't have a plugin.json, canceling plugin execution...","plugin",[
|
||||
{key:"plugin",value:"./plugins/"+p}
|
||||
])
|
||||
return
|
||||
@@ -55,25 +55,25 @@ export const loadAllPlugins = async () => {
|
||||
|
||||
if (rawplugindata.id != p) throw new ODPluginError("Failed to load plugin, directory name is required to match the id")
|
||||
|
||||
if (openticket.plugins.exists(rawplugindata.id)) throw new ODPluginError("Failed to load plugin, this id already exists in another plugin")
|
||||
if (opendiscord.plugins.exists(rawplugindata.id)) throw new ODPluginError("Failed to load plugin, this id already exists in another plugin")
|
||||
|
||||
//plugin.json is valid => load plugin
|
||||
const plugin = new api.ODPlugin(p,rawplugindata)
|
||||
openticket.plugins.add(plugin)
|
||||
opendiscord.plugins.add(plugin)
|
||||
|
||||
}catch(e){
|
||||
//when any of the above errors happen, crash the bot when soft mode isn't enabled
|
||||
initPluginError = true
|
||||
openticket.log(e.message+", canceling plugin execution...","plugin",[
|
||||
opendiscord.log(e.message+", canceling plugin execution...","plugin",[
|
||||
{key:"path",value:"./plugins/"+p}
|
||||
])
|
||||
openticket.log("You can see more about this error in the ./otdebug.txt file!","info")
|
||||
openticket.debugfile.writeText(e.stack)
|
||||
opendiscord.log("You can see more about this error in the ./otdebug.txt file!","info")
|
||||
opendiscord.debugfile.writeText(e.stack)
|
||||
|
||||
//try to get some crashed plugin data
|
||||
try{
|
||||
const rawplugindata: api.ODPluginData = JSON.parse(fs.readFileSync("./plugins/"+p+"/plugin.json").toString())
|
||||
openticket.plugins.unknownCrashedPlugins.push({
|
||||
opendiscord.plugins.unknownCrashedPlugins.push({
|
||||
name:rawplugindata.name ?? "./plugins/"+p,
|
||||
description:(rawplugindata.details && rawplugindata.details.shortDescription) ? rawplugindata.details.shortDescription : "This plugin crashed :(",
|
||||
})
|
||||
@@ -82,7 +82,7 @@ export const loadAllPlugins = async () => {
|
||||
})
|
||||
|
||||
//sorted plugins (based on priority)
|
||||
const sortedPlugins = openticket.plugins.getAll().sort((a,b) => {
|
||||
const sortedPlugins = opendiscord.plugins.getAll().sort((a,b) => {
|
||||
return (b.priority - a.priority)
|
||||
})
|
||||
|
||||
@@ -95,8 +95,8 @@ export const loadAllPlugins = async () => {
|
||||
sortedPlugins.filter((plugin) => plugin.enabled).forEach((plugin) => {
|
||||
const from = plugin.id.value
|
||||
plugin.dependenciesInstalled().forEach((missing) => missingDependencies.push({id:from,missing}))
|
||||
plugin.pluginsIncompatible(openticket.plugins).forEach((incompatible) => incompatibilities.push({from,to:incompatible}))
|
||||
plugin.pluginsInstalled(openticket.plugins).forEach((missing) => missingPlugins.push({id:from,missing}))
|
||||
plugin.pluginsIncompatible(opendiscord.plugins).forEach((incompatible) => incompatibilities.push({from,to:incompatible}))
|
||||
plugin.pluginsInstalled(opendiscord.plugins).forEach((missing) => missingPlugins.push({id:from,missing}))
|
||||
})
|
||||
|
||||
//handle all incompatibilities
|
||||
@@ -105,18 +105,18 @@ export const loadAllPlugins = async () => {
|
||||
if (alreadyLoggedCompatPlugins.includes(match.from) || alreadyLoggedCompatPlugins.includes(match.to)) return
|
||||
else alreadyLoggedCompatPlugins.push(match.from,match.to)
|
||||
|
||||
const fromPlugin = openticket.plugins.get(match.from)
|
||||
const fromPlugin = opendiscord.plugins.get(match.from)
|
||||
if (fromPlugin && !fromPlugin.crashed){
|
||||
fromPlugin.crashed = true
|
||||
fromPlugin.crashReason = "incompatible.plugin"
|
||||
}
|
||||
const toPlugin = openticket.plugins.get(match.to)
|
||||
const toPlugin = opendiscord.plugins.get(match.to)
|
||||
if (toPlugin && !toPlugin.crashed){
|
||||
toPlugin.crashed = true
|
||||
toPlugin.crashReason = "incompatible.plugin"
|
||||
}
|
||||
|
||||
openticket.log(`Incompatible plugins => "${match.from}" & "${match.to}", canceling plugin execution...`,"plugin",[
|
||||
opendiscord.log(`Incompatible plugins => "${match.from}" & "${match.to}", canceling plugin execution...`,"plugin",[
|
||||
{key:"path1",value:"./plugins/"+match.from},
|
||||
{key:"path2",value:"./plugins/"+match.to}
|
||||
])
|
||||
@@ -125,13 +125,13 @@ export const loadAllPlugins = async () => {
|
||||
|
||||
//handle all missing dependencies
|
||||
missingDependencies.forEach((match) => {
|
||||
const plugin = openticket.plugins.get(match.id)
|
||||
const plugin = opendiscord.plugins.get(match.id)
|
||||
if (plugin && !plugin.crashed){
|
||||
plugin.crashed = true
|
||||
plugin.crashReason = "missing.dependency"
|
||||
}
|
||||
|
||||
openticket.log(`Missing npm dependency "${match.missing}", canceling plugin execution...`,"plugin",[
|
||||
opendiscord.log(`Missing npm dependency "${match.missing}", canceling plugin execution...`,"plugin",[
|
||||
{key:"path",value:"./plugins/"+match.id}
|
||||
])
|
||||
initPluginError = true
|
||||
@@ -139,45 +139,45 @@ export const loadAllPlugins = async () => {
|
||||
|
||||
//handle all missing plugins
|
||||
missingPlugins.forEach((match) => {
|
||||
const plugin = openticket.plugins.get(match.id)
|
||||
const plugin = opendiscord.plugins.get(match.id)
|
||||
if (plugin && !plugin.crashed){
|
||||
plugin.crashed = true
|
||||
plugin.crashReason = "missing.plugin"
|
||||
}
|
||||
|
||||
openticket.log(`Missing required plugin "${match.missing}", canceling plugin execution...`,"plugin",[
|
||||
opendiscord.log(`Missing required plugin "${match.missing}", canceling plugin execution...`,"plugin",[
|
||||
{key:"path",value:"./plugins/"+match.id}
|
||||
])
|
||||
initPluginError = true
|
||||
})
|
||||
|
||||
//exit on error (when soft mode disabled)
|
||||
if (!openticket.defaults.getDefault("softPluginLoading") && initPluginError){
|
||||
if (!opendiscord.defaults.getDefault("softPluginLoading") && initPluginError){
|
||||
console.log("")
|
||||
openticket.log("Please fix all plugin errors above & try again!","error")
|
||||
opendiscord.log("Please fix all plugin errors above & try again!","error")
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
//preload all events required for every plugin
|
||||
for (const plugin of sortedPlugins){
|
||||
if (plugin.enabled) plugin.data.events.forEach((event) => openticket.events.add(new api.ODEvent(event)))
|
||||
if (plugin.enabled) plugin.data.events.forEach((event) => opendiscord.events.add(new api.ODEvent(event)))
|
||||
}
|
||||
|
||||
//execute all working plugins
|
||||
for (const plugin of sortedPlugins){
|
||||
const status = await plugin.execute(openticket.debug,false)
|
||||
const status = await plugin.execute(opendiscord.debug,false)
|
||||
|
||||
//exit on error (when soft mode disabled)
|
||||
if (!status && !openticket.defaults.getDefault("softPluginLoading")){
|
||||
if (!status && !opendiscord.defaults.getDefault("softPluginLoading")){
|
||||
console.log("")
|
||||
openticket.log("Please fix all plugin errors above & try again!","error")
|
||||
opendiscord.log("Please fix all plugin errors above & try again!","error")
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
for (const plugin of sortedPlugins){
|
||||
if (plugin.enabled){
|
||||
openticket.debug.debug("Plugin \""+plugin.id.value+"\" loaded",[
|
||||
opendiscord.debug.debug("Plugin \""+plugin.id.value+"\" loaded",[
|
||||
{key:"status",value:(plugin.crashed ? "crashed" : "success")},
|
||||
{key:"crashReason",value:(plugin.crashed ? (plugin.crashReason ?? "/") : "/")},
|
||||
{key:"author",value:plugin.details.author},
|
||||
@@ -185,7 +185,7 @@ export const loadAllPlugins = async () => {
|
||||
{key:"priority",value:plugin.priority.toString()}
|
||||
])
|
||||
}else{
|
||||
openticket.debug.debug("Plugin \""+plugin.id.value+"\" disabled",[
|
||||
opendiscord.debug.debug("Plugin \""+plugin.id.value+"\" disabled",[
|
||||
{key:"author",value:plugin.details.author},
|
||||
{key:"version",value:plugin.version.toString()},
|
||||
{key:"priority",value:plugin.priority.toString()}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
|
||||
export const loadAllConfigCheckers = async () => {
|
||||
openticket.checkers.add(new api.ODChecker("openticket:general",openticket.checkers.storage,0,openticket.configs.get("openticket:general"),defaultGeneralStructure))
|
||||
openticket.checkers.add(new api.ODChecker("openticket:options",openticket.checkers.storage,1,openticket.configs.get("openticket:options"),defaultOptionsStructure))
|
||||
openticket.checkers.add(new api.ODChecker("openticket:panels",openticket.checkers.storage,0,openticket.configs.get("openticket:panels"),defaultPanelsStructure))
|
||||
openticket.checkers.add(new api.ODChecker("openticket:questions",openticket.checkers.storage,2,openticket.configs.get("openticket:questions"),defaultQuestionsStructure))
|
||||
openticket.checkers.add(new api.ODChecker("openticket:transcripts",openticket.checkers.storage,0,openticket.configs.get("openticket:transcripts"),defaultTranscriptsStructure))
|
||||
opendiscord.checkers.add(new api.ODChecker("openticket:general",opendiscord.checkers.storage,0,opendiscord.configs.get("openticket:general"),defaultGeneralStructure))
|
||||
opendiscord.checkers.add(new api.ODChecker("openticket:options",opendiscord.checkers.storage,1,opendiscord.configs.get("openticket:options"),defaultOptionsStructure))
|
||||
opendiscord.checkers.add(new api.ODChecker("openticket:panels",opendiscord.checkers.storage,0,opendiscord.configs.get("openticket:panels"),defaultPanelsStructure))
|
||||
opendiscord.checkers.add(new api.ODChecker("openticket:questions",opendiscord.checkers.storage,2,opendiscord.configs.get("openticket:questions"),defaultQuestionsStructure))
|
||||
opendiscord.checkers.add(new api.ODChecker("openticket:transcripts",opendiscord.checkers.storage,0,opendiscord.configs.get("openticket:transcripts"),defaultTranscriptsStructure))
|
||||
}
|
||||
|
||||
export const loadAllConfigCheckerFunctions = async () => {
|
||||
openticket.checkers.functions.add(new api.ODCheckerFunction("openticket:unused-options",defaultUnusedOptionsFunction))
|
||||
openticket.checkers.functions.add(new api.ODCheckerFunction("openticket:unused-questions",defaultUnusedQuestionsFunction))
|
||||
openticket.checkers.functions.add(new api.ODCheckerFunction("openticket:dropdown-options",defaultDropdownOptionsFunction))
|
||||
opendiscord.checkers.functions.add(new api.ODCheckerFunction("openticket:unused-options",defaultUnusedOptionsFunction))
|
||||
opendiscord.checkers.functions.add(new api.ODCheckerFunction("openticket:unused-questions",defaultUnusedQuestionsFunction))
|
||||
opendiscord.checkers.functions.add(new api.ODCheckerFunction("openticket:dropdown-options",defaultDropdownOptionsFunction))
|
||||
}
|
||||
|
||||
export const loadAllConfigCheckerTranslations = async () => {
|
||||
if ((generalConfig && generalConfig.data.system && generalConfig.data.system.useTranslatedConfigChecker) ? generalConfig.data.system.useTranslatedConfigChecker : false){
|
||||
registerDefaultCheckerSystemTranslations(openticket.checkers.translation,openticket.languages) //translate checker system text
|
||||
registerDefaultCheckerMessageTranslations(openticket.checkers.translation,openticket.languages) //translate checker messages
|
||||
registerDefaultCheckerCustomTranslations(openticket.checkers.translation,openticket.languages) //translate custom checker messages
|
||||
registerDefaultCheckerSystemTranslations(opendiscord.checkers.translation,opendiscord.languages) //translate checker system text
|
||||
registerDefaultCheckerMessageTranslations(opendiscord.checkers.translation,opendiscord.languages) //translate checker messages
|
||||
registerDefaultCheckerCustomTranslations(opendiscord.checkers.translation,opendiscord.languages) //translate custom checker messages
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ const createPanelEmbedStructure = (id:api.ODValidId) => {
|
||||
}
|
||||
|
||||
function loadFromEnv(){
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
if (generalConfig.data && generalConfig.data.tokenFromENV && typeof generalConfig.data.tokenFromENV == "boolean") return generalConfig.data.tokenFromENV
|
||||
else return false
|
||||
}
|
||||
@@ -185,7 +185,7 @@ export const defaultGeneralStructure = new api.ODCheckerObjectStructure("opentic
|
||||
const lt = checker.locationTraceDeref(locationTrace)
|
||||
|
||||
if (typeof value != "string") return false
|
||||
else if (value != "open-ticket-"+openticket.versions.get("openticket:version").toString()){
|
||||
else if (value != "open-ticket-"+opendiscord.versions.get("openticket:version").toString()){
|
||||
checker.createMessage("openticket:invalid-version","warning","The version specified in your config is invalid! Make sure you have updated it to the latest version!",lt,null,[],locationId,locationDocs)
|
||||
return false
|
||||
}else return true
|
||||
@@ -201,7 +201,7 @@ export const defaultGeneralStructure = new api.ODCheckerObjectStructure("opentic
|
||||
const lt = checker.locationTraceDeref(locationTrace)
|
||||
|
||||
if (typeof value != "string") return false
|
||||
else if (!openticket.defaults.getDefault("languageList").includes(value)){
|
||||
else if (!opendiscord.defaults.getDefault("languageList").includes(value)){
|
||||
checker.createMessage("openticket:invalid-language","error","This is an invalid language!",lt,null,[],locationId,locationDocs)
|
||||
return false
|
||||
}else return true
|
||||
@@ -582,10 +582,10 @@ export const defaultDropdownOptionsFunction = (manager:api.ODCheckerManager, fun
|
||||
const panelList: string[] = manager.storage.get("openticket","panel-ids")
|
||||
if (!panelList) return {valid:true,messages:[]}
|
||||
|
||||
const panelConfig = openticket.configs.get("openticket:panels")
|
||||
const panelConfig = opendiscord.configs.get("openticket:panels")
|
||||
if (!panelConfig) return {valid:true,messages:[]}
|
||||
|
||||
const optionConfig = openticket.configs.get("openticket:options")
|
||||
const optionConfig = opendiscord.configs.get("openticket:options")
|
||||
if (!optionConfig) return {valid:true,messages:[]}
|
||||
|
||||
const final: api.ODCheckerMessage[] = []
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const globalDatabase = openticket.databases.get("openticket:global")
|
||||
const userDatabase = openticket.databases.get("openticket:users")
|
||||
const ticketDatabase = openticket.databases.get("openticket:tickets")
|
||||
const statsDatabase = openticket.databases.get("openticket:stats")
|
||||
const optionDatabase = openticket.databases.get("openticket:options")
|
||||
const mainServer = openticket.client.mainServer
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
const globalDatabase = opendiscord.databases.get("openticket:global")
|
||||
const userDatabase = opendiscord.databases.get("openticket:users")
|
||||
const ticketDatabase = opendiscord.databases.get("openticket:tickets")
|
||||
const statsDatabase = opendiscord.databases.get("openticket:stats")
|
||||
const optionDatabase = opendiscord.databases.get("openticket:options")
|
||||
const mainServer = opendiscord.client.mainServer
|
||||
|
||||
export const loadAllCode = async () => {
|
||||
if (!generalConfig || !mainServer || !globalDatabase || !userDatabase || !ticketDatabase || !statsDatabase || !optionDatabase) return
|
||||
@@ -22,46 +22,46 @@ export const loadAllCode = async () => {
|
||||
|
||||
export const loadCommandErrorHandlingCode = async () => {
|
||||
//COMMAND ERROR HANDLING
|
||||
openticket.code.add(new api.ODCode("openticket:command-error-handling",14,() => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:command-error-handling",14,() => {
|
||||
//invalid/missing options
|
||||
openticket.client.textCommands.onError(async (error) => {
|
||||
opendiscord.client.textCommands.onError(async (error) => {
|
||||
if (error.msg.channel.type == discord.ChannelType.GroupDM) return
|
||||
if (error.type == "invalid_option"){
|
||||
error.msg.channel.send((await openticket.builders.messages.getSafe("openticket:error-option-invalid").build("text",{guild:error.msg.guild,channel:error.msg.channel,user:error.msg.author,error})).message)
|
||||
error.msg.channel.send((await opendiscord.builders.messages.getSafe("openticket:error-option-invalid").build("text",{guild:error.msg.guild,channel:error.msg.channel,user:error.msg.author,error})).message)
|
||||
}else if (error.type == "missing_option"){
|
||||
error.msg.channel.send((await openticket.builders.messages.getSafe("openticket:error-option-missing").build("text",{guild:error.msg.guild,channel:error.msg.channel,user:error.msg.author,error})).message)
|
||||
error.msg.channel.send((await opendiscord.builders.messages.getSafe("openticket:error-option-missing").build("text",{guild:error.msg.guild,channel:error.msg.channel,user:error.msg.author,error})).message)
|
||||
}else if (error.type == "unknown_command" && generalConfig.data.system.sendErrorOnUnknownCommand){
|
||||
error.msg.channel.send((await openticket.builders.messages.getSafe("openticket:error-unknown-command").build("text",{guild:error.msg.guild,channel:error.msg.channel,user:error.msg.author,error})).message)
|
||||
error.msg.channel.send((await opendiscord.builders.messages.getSafe("openticket:error-unknown-command").build("text",{guild:error.msg.guild,channel:error.msg.channel,user:error.msg.author,error})).message)
|
||||
}
|
||||
})
|
||||
|
||||
//responder timeout
|
||||
openticket.responders.commands.setTimeoutErrorCallback(async (instance,source) => {
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-responder-timeout").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
opendiscord.responders.commands.setTimeoutErrorCallback(async (instance,source) => {
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-responder-timeout").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
},null)
|
||||
openticket.responders.buttons.setTimeoutErrorCallback(async (instance,source) => {
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-responder-timeout").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
opendiscord.responders.buttons.setTimeoutErrorCallback(async (instance,source) => {
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-responder-timeout").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
},null)
|
||||
openticket.responders.dropdowns.setTimeoutErrorCallback(async (instance,source) => {
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-responder-timeout").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
opendiscord.responders.dropdowns.setTimeoutErrorCallback(async (instance,source) => {
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-responder-timeout").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
},null)
|
||||
openticket.responders.modals.setTimeoutErrorCallback(async (instance,source) => {
|
||||
opendiscord.responders.modals.setTimeoutErrorCallback(async (instance,source) => {
|
||||
if (!instance.channel){
|
||||
instance.reply({id:new api.ODId("looks-like-we-got-an-error-here"), ephemeral:true, message:{
|
||||
content:":x: **Something went wrong while replying to this modal!**"
|
||||
}})
|
||||
return
|
||||
}
|
||||
instance.reply(await openticket.builders.messages.getSafe("openticket:error-responder-timeout").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("openticket:error-responder-timeout").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||
},null)
|
||||
}))
|
||||
}
|
||||
|
||||
export const loadStartListeningInteractionsCode = async () => {
|
||||
//START LISTENING TO INTERACTIONS
|
||||
openticket.code.add(new api.ODCode("openticket:start-listening-interactions",13,() => {
|
||||
openticket.client.slashCommands.startListeningToInteractions()
|
||||
openticket.client.textCommands.startListeningToInteractions()
|
||||
opendiscord.code.add(new api.ODCode("openticket:start-listening-interactions",13,() => {
|
||||
opendiscord.client.slashCommands.startListeningToInteractions()
|
||||
opendiscord.client.textCommands.startListeningToInteractions()
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
if (!mainServer) return
|
||||
|
||||
//PANEL DATABASE CLEANER
|
||||
openticket.code.add(new api.ODCode("openticket:panel-database-cleaner",12,async () => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:panel-database-cleaner",12,async () => {
|
||||
const validPanels: string[] = []
|
||||
|
||||
//check global database for valid panel embeds
|
||||
@@ -77,7 +77,7 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
if (!validPanels.includes(panel.key)){
|
||||
try{
|
||||
const splittedId = panel.key.split("_")
|
||||
const message = await openticket.client.fetchGuildChannelMessage(mainServer,splittedId[0],splittedId[1])
|
||||
const message = await opendiscord.client.fetchGuildChannelMessage(mainServer,splittedId[0],splittedId[1])
|
||||
if (message) validPanels.push(panel.key)
|
||||
}catch{}
|
||||
}
|
||||
@@ -91,7 +91,7 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
}
|
||||
|
||||
//delete panel from database on delete
|
||||
openticket.client.client.on("messageDelete",async (msg) => {
|
||||
opendiscord.client.client.on("messageDelete",async (msg) => {
|
||||
if (await globalDatabase.exists("openticket:panel-update",msg.channel.id+"_"+msg.id)){
|
||||
await globalDatabase.delete("openticket:panel-update",msg.channel.id+"_"+msg.id)
|
||||
}
|
||||
@@ -99,21 +99,21 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
}))
|
||||
|
||||
//SUFFIX DATABASE CLEANER
|
||||
openticket.code.add(new api.ODCode("openticket:suffix-database-cleaner",11,async () => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:suffix-database-cleaner",11,async () => {
|
||||
const validSuffixCounters: string[] = []
|
||||
const validSuffixHistories: string[] = []
|
||||
|
||||
//check global database for valid option suffix counters
|
||||
for (const counter of (await globalDatabase.getCategory("openticket:option-suffix-counter") ?? [])){
|
||||
if (!validSuffixCounters.includes(counter.key)){
|
||||
if (openticket.options.exists(counter.key)) validSuffixCounters.push(counter.key)
|
||||
if (opendiscord.options.exists(counter.key)) validSuffixCounters.push(counter.key)
|
||||
}
|
||||
}
|
||||
|
||||
//check global database for valid option suffix histories
|
||||
for (const history of (await globalDatabase.getCategory("openticket:option-suffix-history") ?? [])){
|
||||
if (!validSuffixHistories.includes(history.key)){
|
||||
if (openticket.options.exists(history.key)) validSuffixHistories.push(history.key)
|
||||
if (opendiscord.options.exists(history.key)) validSuffixHistories.push(history.key)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,13 +133,13 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
}))
|
||||
|
||||
//OPTION DATABASE CLEANER
|
||||
openticket.code.add(new api.ODCode("openticket:option-database-cleaner",10,async () => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:option-database-cleaner",10,async () => {
|
||||
//delete all unused options (async)
|
||||
for (const option of (await optionDatabase.getCategory("openticket:used-option") ?? [])){
|
||||
if (!openticket.options.exists(option.key)){
|
||||
if (!opendiscord.options.exists(option.key)){
|
||||
//remove because option isn't loaded into memory (0 tickets require it)
|
||||
await optionDatabase.delete("openticket:used-option",option.key)
|
||||
}else if (!openticket.tickets.getAll().some((ticket) => ticket.option.id.value == option.key)){
|
||||
}else if (!opendiscord.tickets.getAll().some((ticket) => ticket.option.id.value == option.key)){
|
||||
//remove when loaded into memory (0 tickets require it)
|
||||
await optionDatabase.delete("openticket:used-option",option.key)
|
||||
}
|
||||
@@ -147,7 +147,7 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
}))
|
||||
|
||||
//USER DATABASE CLEANER (full async/parallel because it takes a lot of time)
|
||||
openticket.code.add(new api.ODCode("openticket:user-database-cleaner",9,() => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:user-database-cleaner",9,() => {
|
||||
utilities.runAsync(async () => {
|
||||
const validUsers: string[] = []
|
||||
|
||||
@@ -191,7 +191,7 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
})
|
||||
|
||||
//delete user from database on leave
|
||||
openticket.client.client.on("guildMemberRemove",async (member) => {
|
||||
opendiscord.client.client.on("guildMemberRemove",async (member) => {
|
||||
if (member.guild.id != mainServer.id) return
|
||||
|
||||
//remove unused user
|
||||
@@ -213,14 +213,14 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
}))
|
||||
|
||||
//TICKET DATABASE CLEANER
|
||||
openticket.code.add(new api.ODCode("openticket:ticket-database-cleaner",8,async () => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:ticket-database-cleaner",8,async () => {
|
||||
const validTickets: string[] = []
|
||||
|
||||
//check ticket database for valid tickets
|
||||
for (const ticket of (await ticketDatabase.getAll())){
|
||||
if (!validTickets.includes(ticket.key)){
|
||||
try{
|
||||
const channel = await openticket.client.fetchGuildTextChannel(mainServer,ticket.key)
|
||||
const channel = await opendiscord.client.fetchGuildTextChannel(mainServer,ticket.key)
|
||||
if (channel) validTickets.push(channel.id)
|
||||
}catch{}
|
||||
}
|
||||
@@ -231,7 +231,7 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
if (stat.category.startsWith("openticket:ticket_")){
|
||||
if (!validTickets.includes(stat.key)){
|
||||
try{
|
||||
const channel = await openticket.client.fetchGuildTextChannel(mainServer,stat.key)
|
||||
const channel = await opendiscord.client.fetchGuildTextChannel(mainServer,stat.key)
|
||||
if (channel) validTickets.push(channel.id)
|
||||
}catch{}
|
||||
}
|
||||
@@ -242,7 +242,7 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
for (const ticket of (await ticketDatabase.getAll())){
|
||||
if (!validTickets.includes(ticket.key)){
|
||||
await ticketDatabase.delete(ticket.category,ticket.key)
|
||||
openticket.tickets.remove(ticket.key)
|
||||
opendiscord.tickets.remove(ticket.key)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,14 +256,14 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
}
|
||||
|
||||
//delete ticket from database on delete
|
||||
openticket.client.client.on("channelDelete",async (channel) => {
|
||||
opendiscord.client.client.on("channelDelete",async (channel) => {
|
||||
if (channel.isDMBased() || channel.guild.id != mainServer.id) return
|
||||
|
||||
//remove unused ticket
|
||||
for (const ticket of (await ticketDatabase.getAll())){
|
||||
if (ticket.key == channel.id){
|
||||
await ticketDatabase.delete(ticket.category,ticket.key)
|
||||
openticket.tickets.remove(ticket.key)
|
||||
opendiscord.tickets.remove(ticket.key)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,13 +281,13 @@ export const loadDatabaseCleanersCode = async () => {
|
||||
|
||||
export const loadPanelAutoUpdateCode = async () => {
|
||||
//PANEL AUTO UPDATE
|
||||
openticket.code.add(new api.ODCode("openticket:panel-auto-update",7,async () => {
|
||||
const globalDatabase = openticket.databases.get("openticket:global")
|
||||
opendiscord.code.add(new api.ODCode("openticket:panel-auto-update",7,async () => {
|
||||
const globalDatabase = opendiscord.databases.get("openticket:global")
|
||||
const panelIds = await globalDatabase.getCategory("openticket:panel-update") ?? []
|
||||
if (!mainServer) return
|
||||
|
||||
for (const panelId of panelIds){
|
||||
const panel = openticket.panels.get(panelId.value)
|
||||
const panel = opendiscord.panels.get(panelId.value)
|
||||
|
||||
//panel doesn't exist anymore in config and needs to be removed
|
||||
if (!panel){
|
||||
@@ -297,13 +297,13 @@ export const loadPanelAutoUpdateCode = async () => {
|
||||
|
||||
try{
|
||||
const splittedId = panelId.key.split("_")
|
||||
const channel = await openticket.client.fetchGuildTextChannel(mainServer,splittedId[0])
|
||||
const channel = await opendiscord.client.fetchGuildTextChannel(mainServer,splittedId[0])
|
||||
if (!channel) return
|
||||
const message = await openticket.client.fetchGuildChannelMessage(mainServer,channel,splittedId[1])
|
||||
const message = await opendiscord.client.fetchGuildChannelMessage(mainServer,channel,splittedId[1])
|
||||
if (!message || !message.editable) return
|
||||
|
||||
message.edit((await openticket.builders.messages.getSafe("openticket:panel").build("auto-update",{guild:mainServer,channel,user:openticket.client.client.user,panel})).message)
|
||||
openticket.log("Panel in server got auto-updated!","info",[
|
||||
message.edit((await opendiscord.builders.messages.getSafe("openticket:panel").build("auto-update",{guild:mainServer,channel,user:opendiscord.client.client.user,panel})).message)
|
||||
opendiscord.log("Panel in server got auto-updated!","info",[
|
||||
{key:"channelid",value:splittedId[0]},
|
||||
{key:"messageid",value:splittedId[1]},
|
||||
{key:"panel",value:panelId.value}
|
||||
@@ -315,10 +315,10 @@ export const loadPanelAutoUpdateCode = async () => {
|
||||
|
||||
export const loadDatabaseSaversCode = async () => {
|
||||
//TICKET SAVER
|
||||
openticket.code.add(new api.ODCode("openticket:ticket-saver",6,() => {
|
||||
const mainVersion = openticket.versions.get("openticket:version")
|
||||
opendiscord.code.add(new api.ODCode("openticket:ticket-saver",6,() => {
|
||||
const mainVersion = opendiscord.versions.get("openticket:version")
|
||||
|
||||
openticket.tickets.onAdd(async (ticket) => {
|
||||
opendiscord.tickets.onAdd(async (ticket) => {
|
||||
await ticketDatabase.set("openticket:ticket",ticket.id.value,ticket.toJson(mainVersion))
|
||||
|
||||
//add option to database if non-existent
|
||||
@@ -326,7 +326,7 @@ export const loadDatabaseSaversCode = async () => {
|
||||
await optionDatabase.set("openticket:used-option",ticket.option.id.value,ticket.option.toJson(mainVersion))
|
||||
}
|
||||
})
|
||||
openticket.tickets.onChange(async (ticket) => {
|
||||
opendiscord.tickets.onChange(async (ticket) => {
|
||||
await ticketDatabase.set("openticket:ticket",ticket.id.value,ticket.toJson(mainVersion))
|
||||
|
||||
//add option to database if non-existent
|
||||
@@ -335,42 +335,42 @@ export const loadDatabaseSaversCode = async () => {
|
||||
}
|
||||
|
||||
//delete all unused options on ticket move
|
||||
for (const option of openticket.options.getAll()){
|
||||
if (await optionDatabase.exists("openticket:used-option",option.id.value) && !openticket.tickets.getAll().some((ticket) => ticket.option.id.value == option.id.value)){
|
||||
for (const option of opendiscord.options.getAll()){
|
||||
if (await optionDatabase.exists("openticket:used-option",option.id.value) && !opendiscord.tickets.getAll().some((ticket) => ticket.option.id.value == option.id.value)){
|
||||
await optionDatabase.delete("openticket:used-option",option.id.value)
|
||||
}
|
||||
}
|
||||
})
|
||||
openticket.tickets.onRemove(async (ticket) => {
|
||||
opendiscord.tickets.onRemove(async (ticket) => {
|
||||
await ticketDatabase.delete("openticket:ticket",ticket.id.value)
|
||||
|
||||
//remove option from database if unused
|
||||
if (!openticket.tickets.getAll().some((ticket) => ticket.option.id.value == ticket.option.id.value)){
|
||||
if (!opendiscord.tickets.getAll().some((ticket) => ticket.option.id.value == ticket.option.id.value)){
|
||||
await optionDatabase.delete("openticket:used-option",ticket.option.id.value)
|
||||
}
|
||||
})
|
||||
}))
|
||||
|
||||
//BLACKLIST SAVER
|
||||
openticket.code.add(new api.ODCode("openticket:blacklist-saver",5,() => {
|
||||
openticket.blacklist.onAdd(async (blacklist) => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:blacklist-saver",5,() => {
|
||||
opendiscord.blacklist.onAdd(async (blacklist) => {
|
||||
await userDatabase.set("openticket:blacklist",blacklist.id.value,blacklist.reason)
|
||||
})
|
||||
openticket.blacklist.onChange(async (blacklist) => {
|
||||
opendiscord.blacklist.onChange(async (blacklist) => {
|
||||
await userDatabase.set("openticket:blacklist",blacklist.id.value,blacklist.reason)
|
||||
})
|
||||
openticket.blacklist.onRemove(async (blacklist) => {
|
||||
opendiscord.blacklist.onRemove(async (blacklist) => {
|
||||
await userDatabase.delete("openticket:blacklist",blacklist.id.value)
|
||||
})
|
||||
}))
|
||||
|
||||
//AUTO ROLE ON JOIN
|
||||
openticket.code.add(new api.ODCode("openticket:auto-role-on-join",4,() => {
|
||||
openticket.client.client.on("guildMemberAdd",async (member) => {
|
||||
for (const option of openticket.options.getAll()){
|
||||
opendiscord.code.add(new api.ODCode("openticket:auto-role-on-join",4,() => {
|
||||
opendiscord.client.client.on("guildMemberAdd",async (member) => {
|
||||
for (const option of opendiscord.options.getAll()){
|
||||
if (option instanceof api.ODRoleOption && option.get("openticket:add-on-join").value){
|
||||
//add these roles on user join
|
||||
await openticket.actions.get("openticket:reaction-role").run("panel-button",{guild:member.guild,user:member.user,option,overwriteMode:"add"})
|
||||
await opendiscord.actions.get("openticket:reaction-role").run("panel-button",{guild:member.guild,user:member.user,option,overwriteMode:"add"})
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -379,11 +379,11 @@ export const loadDatabaseSaversCode = async () => {
|
||||
|
||||
const loadAutoCode = () => {
|
||||
//AUTOCLOSE TIMEOUT
|
||||
openticket.code.add(new api.ODCode("openticket:autoclose-timeout",3,() => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:autoclose-timeout",3,() => {
|
||||
setInterval(async () => {
|
||||
let count = 0
|
||||
for (const ticket of openticket.tickets.getAll()){
|
||||
const channel = await openticket.tickets.getTicketChannel(ticket)
|
||||
for (const ticket of opendiscord.tickets.getAll()){
|
||||
const channel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
if (!channel) return
|
||||
const lastMessage = (await channel.messages.fetch({limit:5})).first()
|
||||
if (lastMessage && !ticket.get("openticket:closed").value){
|
||||
@@ -395,26 +395,26 @@ const loadAutoCode = () => {
|
||||
const time = hours*60*60*1000 //hours in milliseconds
|
||||
if (enabled && (new Date().getTime() - lastMessage.createdTimestamp) >= time){
|
||||
//autoclose ticket
|
||||
await openticket.actions.get("openticket:close-ticket").run("autoclose",{guild:channel.guild,channel,user:openticket.client.client.user,ticket,reason:"Autoclose",sendMessage:false})
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:autoclose-message").build("timeout",{guild:channel.guild,channel,user:openticket.client.client.user,ticket})).message)
|
||||
await opendiscord.actions.get("openticket:close-ticket").run("autoclose",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autoclose",sendMessage:false})
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:autoclose-message").build("timeout",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message)
|
||||
count++
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-autoclosed",1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-autoclosed",1,"increase")
|
||||
}
|
||||
}
|
||||
}
|
||||
openticket.debug.debug("Finished autoclose timeout cycle!",[
|
||||
{key:"interval",value:openticket.defaults.getDefault("autocloseCheckInterval").toString()},
|
||||
opendiscord.debug.debug("Finished autoclose timeout cycle!",[
|
||||
{key:"interval",value:opendiscord.defaults.getDefault("autocloseCheckInterval").toString()},
|
||||
{key:"closed",value:count.toString()}
|
||||
])
|
||||
},openticket.defaults.getDefault("autocloseCheckInterval"))
|
||||
},opendiscord.defaults.getDefault("autocloseCheckInterval"))
|
||||
}))
|
||||
|
||||
//AUTOCLOSE LEAVE
|
||||
openticket.code.add(new api.ODCode("openticket:autoclose-leave",2,() => {
|
||||
openticket.client.client.on("guildMemberRemove",async (member) => {
|
||||
for (const ticket of openticket.tickets.getAll()){
|
||||
opendiscord.code.add(new api.ODCode("openticket:autoclose-leave",2,() => {
|
||||
opendiscord.client.client.on("guildMemberRemove",async (member) => {
|
||||
for (const ticket of opendiscord.tickets.getAll()){
|
||||
if (ticket.get("openticket:opened-by").value == member.id){
|
||||
const channel = await openticket.tickets.getTicketChannel(ticket)
|
||||
const channel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
if (!channel) return
|
||||
//ticket has been created by this user
|
||||
const disableOnClaim = ticket.option.get("openticket:autoclose-disable-claim").value && ticket.get("openticket:claimed").value
|
||||
@@ -422,9 +422,9 @@ const loadAutoCode = () => {
|
||||
|
||||
if (enabled){
|
||||
//autoclose ticket
|
||||
await openticket.actions.get("openticket:close-ticket").run("autoclose",{guild:channel.guild,channel,user:openticket.client.client.user,ticket,reason:"Autoclose",sendMessage:false})
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:autoclose-message").build("leave",{guild:channel.guild,channel,user:openticket.client.client.user,ticket})).message)
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-autoclosed",1,"increase")
|
||||
await opendiscord.actions.get("openticket:close-ticket").run("autoclose",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autoclose",sendMessage:false})
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:autoclose-message").build("leave",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message)
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-autoclosed",1,"increase")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -432,11 +432,11 @@ const loadAutoCode = () => {
|
||||
}))
|
||||
|
||||
//AUTODELETE TIMEOUT
|
||||
openticket.code.add(new api.ODCode("openticket:autodelete-timeout",1,() => {
|
||||
opendiscord.code.add(new api.ODCode("openticket:autodelete-timeout",1,() => {
|
||||
setInterval(async () => {
|
||||
let count = 0
|
||||
for (const ticket of openticket.tickets.getAll()){
|
||||
const channel = await openticket.tickets.getTicketChannel(ticket)
|
||||
for (const ticket of opendiscord.tickets.getAll()){
|
||||
const channel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
if (!channel) return
|
||||
const lastMessage = (await channel.messages.fetch({limit:5})).first()
|
||||
if (lastMessage){
|
||||
@@ -448,26 +448,26 @@ const loadAutoCode = () => {
|
||||
const time = days*24*60*60*1000 //days in milliseconds
|
||||
if (enabled && (new Date().getTime() - lastMessage.createdTimestamp) >= time){
|
||||
//autodelete ticket
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:autodelete-message").build("timeout",{guild:channel.guild,channel,user:openticket.client.client.user,ticket})).message)
|
||||
await openticket.actions.get("openticket:delete-ticket").run("autodelete",{guild:channel.guild,channel,user:openticket.client.client.user,ticket,reason:"Autodelete",sendMessage:false,withoutTranscript:false})
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:autodelete-message").build("timeout",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message)
|
||||
await opendiscord.actions.get("openticket:delete-ticket").run("autodelete",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autodelete",sendMessage:false,withoutTranscript:false})
|
||||
count++
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-autodeleted",1,"increase")
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-autodeleted",1,"increase")
|
||||
}
|
||||
}
|
||||
}
|
||||
openticket.debug.debug("Finished autodelete timeout cycle!",[
|
||||
{key:"interval",value:openticket.defaults.getDefault("autodeleteCheckInterval").toString()},
|
||||
opendiscord.debug.debug("Finished autodelete timeout cycle!",[
|
||||
{key:"interval",value:opendiscord.defaults.getDefault("autodeleteCheckInterval").toString()},
|
||||
{key:"deleted",value:count.toString()}
|
||||
])
|
||||
},openticket.defaults.getDefault("autodeleteCheckInterval"))
|
||||
},opendiscord.defaults.getDefault("autodeleteCheckInterval"))
|
||||
}))
|
||||
|
||||
//AUTODELETE LEAVE
|
||||
openticket.code.add(new api.ODCode("openticket:autodelete-leave",0,() => {
|
||||
openticket.client.client.on("guildMemberRemove",async (member) => {
|
||||
for (const ticket of openticket.tickets.getAll()){
|
||||
opendiscord.code.add(new api.ODCode("openticket:autodelete-leave",0,() => {
|
||||
opendiscord.client.client.on("guildMemberRemove",async (member) => {
|
||||
for (const ticket of opendiscord.tickets.getAll()){
|
||||
if (ticket.get("openticket:opened-by").value == member.id){
|
||||
const channel = await openticket.tickets.getTicketChannel(ticket)
|
||||
const channel = await opendiscord.tickets.getTicketChannel(ticket)
|
||||
if (!channel) return
|
||||
//ticket has been created by this user
|
||||
const disableOnClaim = ticket.option.get("openticket:autodelete-disable-claim").value && ticket.get("openticket:claimed").value
|
||||
@@ -475,9 +475,9 @@ const loadAutoCode = () => {
|
||||
|
||||
if (enabled){
|
||||
//autodelete ticket
|
||||
await channel.send((await openticket.builders.messages.getSafe("openticket:autodelete-message").build("leave",{guild:channel.guild,channel,user:openticket.client.client.user,ticket})).message)
|
||||
await openticket.actions.get("openticket:delete-ticket").run("autodelete",{guild:channel.guild,channel,user:openticket.client.client.user,ticket,reason:"Autodelete",sendMessage:false,withoutTranscript:false})
|
||||
await openticket.stats.get("openticket:global").setStat("openticket:tickets-autodeleted",1,"increase")
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("openticket:autodelete-message").build("leave",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message)
|
||||
await opendiscord.actions.get("openticket:delete-ticket").run("autodelete",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autodelete",sendMessage:false,withoutTranscript:false})
|
||||
await opendiscord.stats.get("openticket:global").setStat("openticket:tickets-autodeleted",1,"increase")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -485,8 +485,8 @@ const loadAutoCode = () => {
|
||||
}))
|
||||
|
||||
//TICKET ANTI BUSY
|
||||
openticket.code.add(new api.ODCode("openticket:ticket-anti-busy",-1,() => {
|
||||
for (const ticket of openticket.tickets.getAll()){
|
||||
opendiscord.code.add(new api.ODCode("openticket:ticket-anti-busy",-1,() => {
|
||||
for (const ticket of opendiscord.tickets.getAll()){
|
||||
//free tickets from corruption due to openticket:busy variable
|
||||
ticket.get("openticket:busy").value = false
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const lang = openticket.languages
|
||||
const lang = opendiscord.languages
|
||||
|
||||
export const loadAllSlashCommands = async () => {
|
||||
const commands = openticket.client.slashCommands
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const commands = opendiscord.client.slashCommands
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
if (!generalConfig) return
|
||||
|
||||
const act = discord.ApplicationCommandType
|
||||
@@ -15,13 +15,13 @@ export const loadAllSlashCommands = async () => {
|
||||
|
||||
//create panel choices
|
||||
const panelChoices : {name:string, value:string}[] = []
|
||||
openticket.configs.get("openticket:panels").data.forEach((panel) => {
|
||||
opendiscord.configs.get("openticket:panels").data.forEach((panel) => {
|
||||
panelChoices.push({name:panel.name, value:panel.id})
|
||||
})
|
||||
|
||||
//create ticket choices
|
||||
const ticketChoices : {name:string, value:string}[] = []
|
||||
openticket.configs.get("openticket:options").data.forEach((option) => {
|
||||
opendiscord.configs.get("openticket:options").data.forEach((option) => {
|
||||
if (option.type != "ticket") return
|
||||
ticketChoices.push({name:option.name, value:option.id})
|
||||
})
|
||||
@@ -585,8 +585,8 @@ export const loadAllSlashCommands = async () => {
|
||||
}
|
||||
|
||||
export const loadAllTextCommands = async () => {
|
||||
const commands = openticket.client.textCommands
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const commands = opendiscord.client.textCommands
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
if (!generalConfig) return
|
||||
|
||||
if (!generalConfig.data.textCommands) return
|
||||
@@ -594,13 +594,13 @@ export const loadAllTextCommands = async () => {
|
||||
|
||||
//create panel choices
|
||||
const panelChoices : string[] = []
|
||||
openticket.configs.get("openticket:panels").data.forEach((panel) => {
|
||||
opendiscord.configs.get("openticket:panels").data.forEach((panel) => {
|
||||
panelChoices.push(panel.id)
|
||||
})
|
||||
|
||||
//create ticket choices
|
||||
const ticketChoices : string[] = []
|
||||
openticket.configs.get("openticket:options").data.forEach((option) => {
|
||||
opendiscord.configs.get("openticket:options").data.forEach((option) => {
|
||||
if (option.type != "ticket") return
|
||||
ticketChoices.push(option.id)
|
||||
})
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllConfigs = async () => {
|
||||
const devconfigFlag = openticket.flags.get("openticket:dev-config")
|
||||
const devconfigFlag = opendiscord.flags.get("openticket:dev-config")
|
||||
const isDevconfig = devconfigFlag ? devconfigFlag.value : false
|
||||
|
||||
openticket.configs.add(new api.ODJsonConfig("openticket:general","general.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
openticket.configs.add(new api.ODJsonConfig("openticket:options","options.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
openticket.configs.add(new api.ODJsonConfig("openticket:panels","panels.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
openticket.configs.add(new api.ODJsonConfig("openticket:questions","questions.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
openticket.configs.add(new api.ODJsonConfig("openticket:transcripts","transcripts.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("openticket:general","general.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("openticket:options","options.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("openticket:panels","panels.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("openticket:questions","questions.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("openticket:transcripts","transcripts.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllCooldowns = async () => {
|
||||
await openticket.options.loopAll((option) => {
|
||||
await opendiscord.options.loopAll((option) => {
|
||||
if (!(option instanceof api.ODTicketOption)) return
|
||||
loadTicketOptionCooldown(option)
|
||||
})
|
||||
@@ -12,6 +12,6 @@ export const loadTicketOptionCooldown = (option:api.ODTicketOption) => {
|
||||
//option has cooldown
|
||||
const minutes = option.get("openticket:cooldown-minutes").value
|
||||
const milliseconds = minutes*60000
|
||||
openticket.cooldowns.add(new api.ODTimeoutCooldown("openticket:option-cooldown_"+option.id.value,milliseconds))
|
||||
opendiscord.cooldowns.add(new api.ODTimeoutCooldown("openticket:option-cooldown_"+option.id.value,milliseconds))
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,15 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import * as fjs from "formatted-json-stringify"
|
||||
|
||||
const devdatabaseFlag = openticket.flags.get("openticket:dev-database")
|
||||
const devdatabaseFlag = opendiscord.flags.get("openticket:dev-database")
|
||||
const isDevdatabase = devdatabaseFlag ? devdatabaseFlag.value : false
|
||||
|
||||
export const loadAllDatabases = async () => {
|
||||
openticket.databases.add(defaultGlobalDatabase)
|
||||
openticket.databases.add(defaultStatsDatabase)
|
||||
openticket.databases.add(defaultTicketsDatabase)
|
||||
openticket.databases.add(defaultUsersDatabase)
|
||||
openticket.databases.add(defaultOptionsDatabase)
|
||||
opendiscord.databases.add(defaultGlobalDatabase)
|
||||
opendiscord.databases.add(defaultStatsDatabase)
|
||||
opendiscord.databases.add(defaultTicketsDatabase)
|
||||
opendiscord.databases.add(defaultUsersDatabase)
|
||||
opendiscord.databases.add(defaultOptionsDatabase)
|
||||
}
|
||||
|
||||
const defaultInlineFormatter = new fjs.ArrayFormatter(null,true,new fjs.ObjectFormatter(null,false,[
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllEvents = () => {
|
||||
const eventList: (keyof api.ODEventIds_Default)[] = [
|
||||
@@ -245,5 +245,5 @@ export const loadAllEvents = () => {
|
||||
//ready
|
||||
"onReadyForUsage"
|
||||
]
|
||||
eventList.forEach((event) => openticket.events.add(new api.ODEvent(event)))
|
||||
eventList.forEach((event) => opendiscord.events.add(new api.ODEvent(event)))
|
||||
}
|
||||
@@ -1,18 +1,18 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllFlags = async () => {
|
||||
openticket.flags.add(new api.ODFlag("openticket:no-migration","No Migration","Disable Open Ticket data migration on update!","--no-migration",["-nm"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:dev-config","Developer Config","Use the configs in /devconfig/ instead of /config/!","--dev-config",["-dc"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:dev-database","Developer Database","Use the databases in /devdatabase/ instead of /database/!","--dev-database",["-nd"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:debug","Debug Mode","Couldn't you find the error? Try to check this out!","--debug",["-d"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:crash","Crash On Error","Crash the bot on an unknown error!","--crash",["-cr"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:no-transcripts","No HTML Transcripts","Disable uploading HTML transcripts (for debugging)","--no-transcripts",["-nt"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:no-checker","No Config Checker","Disable the Config Checker (for debugging)","--no-checker",["-nc"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:checker","Full Config Checker","Render the Config Checker with extra details!","--checker",["-c"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:no-easter","No Easter Eggs","Disable little Open Ticket easter eggs hidden in the bot!","--no-easter",["-ne"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:no-plugins","No Plugins","Disable all Open Ticket plugins!","--no-plugins",["-np"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:soft-plugins","Soft Plugins","Don't crash the bot when a plugin crashes!","--soft-plugins",["-sp"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:force-slash-update","Force Slash Update","Force update all slash commands.","--force-slash",["-fs"]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:no-compile","No Compile","Disable compilation of plugins & bot before starting.","--no-compile",[]))
|
||||
openticket.flags.add(new api.ODFlag("openticket:compile-only","Compile Only","This description will never be shown because the bot wouldn't run when this flag is enabled :)","--compile-only",[]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:no-migration","No Migration","Disable Open Ticket data migration on update!","--no-migration",["-nm"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:dev-config","Developer Config","Use the configs in /devconfig/ instead of /config/!","--dev-config",["-dc"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:dev-database","Developer Database","Use the databases in /devdatabase/ instead of /database/!","--dev-database",["-nd"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:debug","Debug Mode","Couldn't you find the error? Try to check this out!","--debug",["-d"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:crash","Crash On Error","Crash the bot on an unknown error!","--crash",["-cr"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:no-transcripts","No HTML Transcripts","Disable uploading HTML transcripts (for debugging)","--no-transcripts",["-nt"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:no-checker","No Config Checker","Disable the Config Checker (for debugging)","--no-checker",["-nc"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:checker","Full Config Checker","Render the Config Checker with extra details!","--checker",["-c"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:no-easter","No Easter Eggs","Disable little Open Ticket easter eggs hidden in the bot!","--no-easter",["-ne"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:no-plugins","No Plugins","Disable all Open Ticket plugins!","--no-plugins",["-np"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:soft-plugins","Soft Plugins","Don't crash the bot when a plugin crashes!","--soft-plugins",["-sp"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:force-slash-update","Force Slash Update","Force update all slash commands.","--force-slash",["-fs"]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:no-compile","No Compile","Disable compilation of plugins & bot before starting.","--no-compile",[]))
|
||||
opendiscord.flags.add(new api.ODFlag("openticket:compile-only","Compile Only","This description will never be shown because the bot wouldn't run when this flag is enabled :)","--compile-only",[]))
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
const lang = openticket.languages
|
||||
const lang = opendiscord.languages
|
||||
|
||||
export const loadAllHelpMenuCategories = async () => {
|
||||
const helpmenu = openticket.helpmenu
|
||||
const helpmenu = opendiscord.helpmenu
|
||||
|
||||
helpmenu.add(new api.ODHelpMenuCategory("openticket:general",5,utilities.emojiTitle("📎","General Commands"))) //TODO TRANSLATION!!!
|
||||
helpmenu.add(new api.ODHelpMenuCategory("openticket:ticket-basic",4,utilities.emojiTitle("🎫","Basic Ticket Commands"))) //TODO TRANSLATION!!!
|
||||
@@ -15,8 +15,8 @@ export const loadAllHelpMenuCategories = async () => {
|
||||
}
|
||||
|
||||
export const loadAllHelpMenuComponents = async () => {
|
||||
const helpmenu = openticket.helpmenu
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const helpmenu = opendiscord.helpmenu
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
if (!generalConfig) return
|
||||
|
||||
const prefix = generalConfig.data.prefix
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllLanguages = async () => {
|
||||
//register languages
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:custom","custom.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:english","english.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:dutch","dutch.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:portuguese","portuguese.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:czech","czech.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:german","german.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:catalan","catalan.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:hungarian","hungarian.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:spanish","spanish.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:romanian","romanian.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:ukrainian","ukrainian.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:indonesian","indonesian.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:italian","italian.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:estonian","estonian.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:finnish","finnish.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:danish","danish.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:thai","thai.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:turkish","turkish.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:french","french.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:arabic","arabic.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:hindi","hindi.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:lithuanian","lithuanian.json"))
|
||||
openticket.languages.add(new api.ODJsonLanguage("openticket:polish","polish.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:custom","custom.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:english","english.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:dutch","dutch.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:portuguese","portuguese.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:czech","czech.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:german","german.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:catalan","catalan.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:hungarian","hungarian.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:spanish","spanish.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:romanian","romanian.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:ukrainian","ukrainian.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:indonesian","indonesian.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:italian","italian.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:estonian","estonian.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:finnish","finnish.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:danish","danish.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:thai","thai.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:turkish","turkish.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:french","french.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:arabic","arabic.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:hindi","hindi.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:lithuanian","lithuanian.json"))
|
||||
opendiscord.languages.add(new api.ODJsonLanguage("openticket:polish","polish.json"))
|
||||
|
||||
/** How to add more languages?
|
||||
* - Register the language to the manager (see above)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllLiveStatusSources = async () => {
|
||||
//DEFAULT DJDJ DEV
|
||||
openticket.livestatus.add(new api.ODLiveStatusUrlSource("openticket:default-djdj-dev","https://raw.githubusercontent.com/DJj123dj/open-ticket/refs/heads/dev/src/livestatus.json"))
|
||||
opendiscord.livestatus.add(new api.ODLiveStatusUrlSource("openticket:default-djdj-dev","https://raw.githubusercontent.com/DJj123dj/open-ticket/refs/heads/dev/src/livestatus.json"))
|
||||
}
|
||||
@@ -1,76 +1,76 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
export const loadAllPermissions = async () => {
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
if (!generalConfig) return
|
||||
const mainServer = openticket.client.mainServer
|
||||
const mainServer = opendiscord.client.mainServer
|
||||
if (!mainServer) return
|
||||
|
||||
//DEVELOPER & OWNER
|
||||
const developer = (await openticket.client.client.application.fetch()).owner
|
||||
const developer = (await opendiscord.client.client.application.fetch()).owner
|
||||
if (developer instanceof discord.User){
|
||||
openticket.permissions.add(new api.ODPermission("openticket:developer-"+developer.id,"global-user","developer",developer))
|
||||
opendiscord.permissions.add(new api.ODPermission("openticket:developer-"+developer.id,"global-user","developer",developer))
|
||||
}else if (developer instanceof discord.Team){
|
||||
developer.members.forEach((member) => {
|
||||
openticket.permissions.add(new api.ODPermission("openticket:developer-"+member.user.id,"global-user","developer",member.user))
|
||||
opendiscord.permissions.add(new api.ODPermission("openticket:developer-"+member.user.id,"global-user","developer",member.user))
|
||||
})
|
||||
}
|
||||
const owner = (await mainServer.members.fetch(mainServer.ownerId)).user
|
||||
openticket.permissions.add(new api.ODPermission("openticket:owner-"+owner.id,"global-user","owner",owner))
|
||||
opendiscord.permissions.add(new api.ODPermission("openticket:owner-"+owner.id,"global-user","owner",owner))
|
||||
|
||||
//GLOBAL ADMINS
|
||||
generalConfig.data.globalAdmins.forEach(async (admin) => {
|
||||
const role = await mainServer.roles.fetch(admin)
|
||||
if (!role) return openticket.log("Unable to register permission for global admin!","error",[
|
||||
if (!role) return opendiscord.log("Unable to register permission for global admin!","error",[
|
||||
{key:"roleid",value:admin}
|
||||
])
|
||||
|
||||
openticket.permissions.add(new api.ODPermission("openticket:global-admin-"+admin,"global-role","admin",role))
|
||||
opendiscord.permissions.add(new api.ODPermission("openticket:global-admin-"+admin,"global-role","admin",role))
|
||||
})
|
||||
|
||||
//TICKET ADMINS
|
||||
await openticket.tickets.loopAll(async (ticket) => {
|
||||
await opendiscord.tickets.loopAll(async (ticket) => {
|
||||
try {
|
||||
const channel = await openticket.client.fetchGuildTextChannel(mainServer,ticket.id.value)
|
||||
const channel = await opendiscord.client.fetchGuildTextChannel(mainServer,ticket.id.value)
|
||||
if (!channel) return
|
||||
|
||||
const admins = ticket.option.exists("openticket:admins") ? ticket.option.get("openticket:admins").value : []
|
||||
const readAdmins = ticket.option.exists("openticket:admins-readonly") ? ticket.option.get("openticket:admins-readonly").value : []
|
||||
|
||||
for (const admin of admins.concat(readAdmins)){
|
||||
if (openticket.permissions.exists("openticket:ticket-admin_"+ticket.id.value+"_"+admin)) return
|
||||
if (opendiscord.permissions.exists("openticket:ticket-admin_"+ticket.id.value+"_"+admin)) return
|
||||
const role = await mainServer.roles.fetch(admin)
|
||||
if (!role) return openticket.log("Unable to register permission for ticket admin!","error",[
|
||||
if (!role) return opendiscord.log("Unable to register permission for ticket admin!","error",[
|
||||
{key:"roleid",value:admin}
|
||||
])
|
||||
|
||||
openticket.permissions.add(new api.ODPermission("openticket:ticket-admin_"+ticket.id.value+"_"+admin,"channel-role","support",role,channel))
|
||||
opendiscord.permissions.add(new api.ODPermission("openticket:ticket-admin_"+ticket.id.value+"_"+admin,"channel-role","support",role,channel))
|
||||
}
|
||||
}catch(err){
|
||||
process.emit("uncaughtException",err)
|
||||
openticket.log("Ticket Admin Loading Permissions Error (see above)","error")
|
||||
opendiscord.log("Ticket Admin Loading Permissions Error (see above)","error")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const addTicketPermissions = async (ticket:api.ODTicket) => {
|
||||
const mainServer = openticket.client.mainServer
|
||||
const mainServer = opendiscord.client.mainServer
|
||||
if (!mainServer) return
|
||||
const channel = await openticket.client.fetchGuildTextChannel(mainServer,ticket.id.value)
|
||||
const channel = await opendiscord.client.fetchGuildTextChannel(mainServer,ticket.id.value)
|
||||
if (!channel) return
|
||||
|
||||
const admins = ticket.option.exists("openticket:admins") ? ticket.option.get("openticket:admins").value : []
|
||||
const readAdmins = ticket.option.exists("openticket:admins-readonly") ? ticket.option.get("openticket:admins-readonly").value : []
|
||||
|
||||
for (const admin of admins.concat(readAdmins)){
|
||||
if (openticket.permissions.exists("openticket:ticket-admin_"+ticket.id.value+"_"+admin)) return
|
||||
if (opendiscord.permissions.exists("openticket:ticket-admin_"+ticket.id.value+"_"+admin)) return
|
||||
const role = await mainServer.roles.fetch(admin)
|
||||
if (!role) return openticket.log("Unable to register permission for ticket admin!","error",[
|
||||
if (!role) return opendiscord.log("Unable to register permission for ticket admin!","error",[
|
||||
{key:"roleid",value:admin}
|
||||
])
|
||||
|
||||
openticket.permissions.add(new api.ODPermission("openticket:ticket-admin_"+ticket.id.value+"_"+admin,"channel-role","support",role,channel))
|
||||
opendiscord.permissions.add(new api.ODPermission("openticket:ticket-admin_"+ticket.id.value+"_"+admin,"channel-role","support",role,channel))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ export const removeTicketPermissions = async (ticket:api.ODTicket) => {
|
||||
const readAdmins = ticket.option.exists("openticket:admins-readonly") ? ticket.option.get("openticket:admins-readonly").value : []
|
||||
|
||||
admins.concat(readAdmins).forEach(async (admin) => {
|
||||
if (!openticket.permissions.exists("openticket:ticket-admin_"+ticket.id.value+"_"+admin)) return
|
||||
openticket.permissions.remove("openticket:ticket-admin_"+ticket.id.value+"_"+admin)
|
||||
if (!opendiscord.permissions.exists("openticket:ticket-admin_"+ticket.id.value+"_"+admin)) return
|
||||
opendiscord.permissions.remove("openticket:ticket-admin_"+ticket.id.value+"_"+admin)
|
||||
})
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllPosts = async () => {
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
if (!generalConfig) return
|
||||
const transcriptConfig = openticket.configs.get("openticket:transcripts")
|
||||
const transcriptConfig = opendiscord.configs.get("openticket:transcripts")
|
||||
if (!transcriptConfig) return
|
||||
|
||||
//LOGS CHANNEL
|
||||
if (generalConfig.data.system.logs.enabled) openticket.posts.add(new api.ODPost("openticket:logs",generalConfig.data.system.logs.channel))
|
||||
if (generalConfig.data.system.logs.enabled) opendiscord.posts.add(new api.ODPost("openticket:logs",generalConfig.data.system.logs.channel))
|
||||
|
||||
//TRANSCRIPTS CHANNEL
|
||||
if (transcriptConfig.data.general.enabled && transcriptConfig.data.general.enableChannel) openticket.posts.add(new api.ODPost("openticket:transcripts",transcriptConfig.data.general.channel))
|
||||
if (transcriptConfig.data.general.enabled && transcriptConfig.data.general.enableChannel) opendiscord.posts.add(new api.ODPost("openticket:transcripts",transcriptConfig.data.general.channel))
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllProgressBarRenderers = async () => {
|
||||
const defaultSettings: api.ODProgressBarRenderer_DefaultSettings = {
|
||||
@@ -25,43 +25,43 @@ export const loadAllProgressBarRenderers = async () => {
|
||||
//VALUE RENDERER
|
||||
const valueRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings}
|
||||
valueRendererSettings.labelType = "value"
|
||||
openticket.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:value-renderer",valueRendererSettings))
|
||||
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:value-renderer",valueRendererSettings))
|
||||
|
||||
//FRACTION RENDERER
|
||||
const fractionRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings}
|
||||
fractionRendererSettings.labelType = "fraction"
|
||||
openticket.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:fraction-renderer",fractionRendererSettings))
|
||||
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:fraction-renderer",fractionRendererSettings))
|
||||
|
||||
//PERCENTAGE RENDERER
|
||||
const percentageRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings}
|
||||
percentageRendererSettings.labelType = "percentage"
|
||||
openticket.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:percentage-renderer",percentageRendererSettings))
|
||||
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:percentage-renderer",percentageRendererSettings))
|
||||
|
||||
//TIME MS RENDERER
|
||||
const timeMsRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings}
|
||||
timeMsRendererSettings.labelType = "time-ms"
|
||||
openticket.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:time-ms-renderer",timeMsRendererSettings))
|
||||
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:time-ms-renderer",timeMsRendererSettings))
|
||||
|
||||
//TIME SEC RENDERER
|
||||
const timeSecRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings}
|
||||
timeSecRendererSettings.labelType = "time-sec"
|
||||
openticket.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:time-sec-renderer",timeSecRendererSettings))
|
||||
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:time-sec-renderer",timeSecRendererSettings))
|
||||
|
||||
//TIME MIN RENDERER
|
||||
const timeMinRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings}
|
||||
timeMinRendererSettings.labelType = "time-min"
|
||||
openticket.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:time-min-renderer",timeMinRendererSettings))
|
||||
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("openticket:time-min-renderer",timeMinRendererSettings))
|
||||
}
|
||||
|
||||
export const loadAllProgressBars = async () => {
|
||||
const fractRenderer = openticket.progressbars.renderers.get("openticket:fraction-renderer")
|
||||
const fractRenderer = opendiscord.progressbars.renderers.get("openticket:fraction-renderer")
|
||||
|
||||
//SLASH COMMAND REMOVE (doesn't have correct amount yet)
|
||||
openticket.progressbars.add(new api.ODManualProgressBar("openticket:slash-command-remove",fractRenderer.withAdditionalSettings({filledBarColor:"red"}),0,"max",null,"Commands Removed"))
|
||||
opendiscord.progressbars.add(new api.ODManualProgressBar("openticket:slash-command-remove",fractRenderer.withAdditionalSettings({filledBarColor:"red"}),0,"max",null,"Commands Removed"))
|
||||
|
||||
//SLASH COMMAND CREATE (doesn't have correct amount yet)
|
||||
openticket.progressbars.add(new api.ODManualProgressBar("openticket:slash-command-create",fractRenderer.withAdditionalSettings({filledBarColor:"green"}),0,"max",null,"Commands Created"))
|
||||
opendiscord.progressbars.add(new api.ODManualProgressBar("openticket:slash-command-create",fractRenderer.withAdditionalSettings({filledBarColor:"green"}),0,"max",null,"Commands Created"))
|
||||
|
||||
//SLASH COMMAND UPDATE (doesn't have correct amount yet)
|
||||
openticket.progressbars.add(new api.ODManualProgressBar("openticket:slash-command-update",fractRenderer.withAdditionalSettings({filledBarColor:"openticket"}),0,"max",null,"Commands Updated"))
|
||||
opendiscord.progressbars.add(new api.ODManualProgressBar("openticket:slash-command-update",fractRenderer.withAdditionalSettings({filledBarColor:"openticket"}),0,"max",null,"Commands Updated"))
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import ansis from "ansis"
|
||||
|
||||
export const loadAllStartScreenComponents = async () => {
|
||||
//LOGO
|
||||
openticket.startscreen.add(new api.ODStartScreenLogoComponent("openticket:logo",1000,[
|
||||
opendiscord.startscreen.add(new api.ODStartScreenLogoComponent("openticket:logo",1000,[
|
||||
" ██████╗ ██████╗ ███████╗███╗ ██╗ ████████╗██╗ ██████╗██╗ ██╗███████╗████████╗ ",
|
||||
" ██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ╚══██╔══╝██║██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝ ",
|
||||
" ██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ ██║██║ █████╔╝ █████╗ ██║ ",
|
||||
@@ -13,35 +13,35 @@ export const loadAllStartScreenComponents = async () => {
|
||||
],true,false))
|
||||
|
||||
//HEADER
|
||||
const currentLanguageMetadata = openticket.languages.getLanguageMetadata()
|
||||
openticket.startscreen.add(new api.ODStartScreenHeaderComponent("openticket:header",999,[
|
||||
{key:"Version",value:openticket.versions.get("openticket:version").toString()},
|
||||
const currentLanguageMetadata = opendiscord.languages.getLanguageMetadata()
|
||||
opendiscord.startscreen.add(new api.ODStartScreenHeaderComponent("openticket:header",999,[
|
||||
{key:"Version",value:opendiscord.versions.get("openticket:version").toString()},
|
||||
{key:"Support",value:"https://discord.dj-dj.be"},
|
||||
{key:"Language",value:(currentLanguageMetadata ? currentLanguageMetadata.language : "Unknown")}
|
||||
]," - ",{
|
||||
align:"center",
|
||||
width:openticket.startscreen.get("openticket:logo")
|
||||
width:opendiscord.startscreen.get("openticket:logo")
|
||||
}))
|
||||
|
||||
//FLAGS
|
||||
openticket.startscreen.add(new api.ODStartScreenFlagsCategoryComponent("openticket:flags",4,openticket.flags.getAll()))
|
||||
opendiscord.startscreen.add(new api.ODStartScreenFlagsCategoryComponent("openticket:flags",4,opendiscord.flags.getAll()))
|
||||
|
||||
//PLUGINS
|
||||
openticket.startscreen.add(new api.ODStartScreenPluginsCategoryComponent("openticket:plugins",3,openticket.plugins.getAll(),openticket.plugins.unknownCrashedPlugins))
|
||||
opendiscord.startscreen.add(new api.ODStartScreenPluginsCategoryComponent("openticket:plugins",3,opendiscord.plugins.getAll(),opendiscord.plugins.unknownCrashedPlugins))
|
||||
|
||||
//STATS
|
||||
openticket.startscreen.add(new api.ODStartScreenPropertiesCategoryComponent("openticket:stats",2,"startup info",[
|
||||
{key:"status",value:ansis.bold(openticket.client.activity.getStatusType())+openticket.client.activity.text+" ("+openticket.client.activity.status+")"},
|
||||
{key:"options",value:"loaded "+ansis.bold(openticket.options.getLength().toString())+" options!"},
|
||||
{key:"panels",value:"loaded "+ansis.bold(openticket.panels.getLength().toString())+" panels!"},
|
||||
{key:"tickets",value:"loaded "+ansis.bold(openticket.tickets.getLength().toString())+" tickets!"},
|
||||
{key:"roles",value:"loaded "+ansis.bold(openticket.roles.getLength().toString())+" roles!"},
|
||||
{key:"help",value:ansis.bold(openticket.configs.get("openticket:general").data.prefix+"help")+" or "+ansis.bold("/help")}
|
||||
opendiscord.startscreen.add(new api.ODStartScreenPropertiesCategoryComponent("openticket:stats",2,"startup info",[
|
||||
{key:"status",value:ansis.bold(opendiscord.client.activity.getStatusType())+opendiscord.client.activity.text+" ("+opendiscord.client.activity.status+")"},
|
||||
{key:"options",value:"loaded "+ansis.bold(opendiscord.options.getLength().toString())+" options!"},
|
||||
{key:"panels",value:"loaded "+ansis.bold(opendiscord.panels.getLength().toString())+" panels!"},
|
||||
{key:"tickets",value:"loaded "+ansis.bold(opendiscord.tickets.getLength().toString())+" tickets!"},
|
||||
{key:"roles",value:"loaded "+ansis.bold(opendiscord.roles.getLength().toString())+" roles!"},
|
||||
{key:"help",value:ansis.bold(opendiscord.configs.get("openticket:general").data.prefix+"help")+" or "+ansis.bold("/help")}
|
||||
]))
|
||||
|
||||
//LIVESTATUS
|
||||
openticket.startscreen.add(new api.ODStartScreenLiveStatusCategoryComponent("openticket:livestatus",1,openticket.livestatus))
|
||||
opendiscord.startscreen.add(new api.ODStartScreenLiveStatusCategoryComponent("openticket:livestatus",1,opendiscord.livestatus))
|
||||
|
||||
//LOGS
|
||||
openticket.startscreen.add(new api.ODStartScreenLogCategoryComponent("openticket:logs",0))
|
||||
opendiscord.startscreen.add(new api.ODStartScreenLogCategoryComponent("openticket:logs",0))
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const stats = openticket.stats
|
||||
const lang = openticket.languages
|
||||
const stats = opendiscord.stats
|
||||
const lang = opendiscord.languages
|
||||
|
||||
export const loadAllStatScopes = async () => {
|
||||
stats.add(new api.ODStatGlobalScope("openticket:global",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.global"))))
|
||||
@@ -13,7 +13,7 @@ export const loadAllStatScopes = async () => {
|
||||
}
|
||||
|
||||
export const loadAllStats = async () => {
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const generalConfig = opendiscord.configs.get("openticket:general")
|
||||
if (!generalConfig) return
|
||||
|
||||
const global = stats.get("openticket:global")
|
||||
@@ -34,10 +34,10 @@ export const loadAllStats = async () => {
|
||||
const system = stats.get("openticket:system")
|
||||
if (system){
|
||||
system.add(new api.ODDynamicStat("openticket:startup-date",1,() => {
|
||||
return lang.getTranslation("params.uppercase.startupDate")+": "+discord.time(openticket.processStartupDate,"f")
|
||||
return lang.getTranslation("params.uppercase.startupDate")+": "+discord.time(opendiscord.processStartupDate,"f")
|
||||
}))
|
||||
system.add(new api.ODDynamicStat("openticket:version",0,() => {
|
||||
return lang.getTranslation("params.uppercase.version")+": `"+openticket.versions.get("openticket:version").toString()+"`"
|
||||
return lang.getTranslation("params.uppercase.version")+": `"+opendiscord.versions.get("openticket:version").toString()+"`"
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ export const loadAllStats = async () => {
|
||||
const scopeMember = await guild.members.fetch(scopeId)
|
||||
if (!scopeMember) return ""
|
||||
|
||||
const permissions = await openticket.permissions.getPermissions(scopeMember.user,channel,guild)
|
||||
const permissions = await opendiscord.permissions.getPermissions(scopeMember.user,channel,guild)
|
||||
if (permissions.type == "developer") return lang.getTranslation("params.uppercase.role")+": 💻 `Developer`" //TODO TRANSLATION!!!
|
||||
if (permissions.type == "owner") return lang.getTranslation("params.uppercase.role")+": 👑 `Server Owner`" //TODO TRANSLATION!!!
|
||||
if (permissions.type == "admin") return lang.getTranslation("params.uppercase.role")+": 💼 `Server Admin`" //TODO TRANSLATION!!!
|
||||
@@ -79,7 +79,7 @@ export const loadAllStats = async () => {
|
||||
return lang.getTranslation("params.uppercase.ticket")+": "+discord.channelMention(scopeId)
|
||||
}))
|
||||
ticket.add(new api.ODDynamicStat("openticket:status",4,async (scopeId,guild,channel,user) => {
|
||||
const ticket = openticket.tickets.get(scopeId)
|
||||
const ticket = opendiscord.tickets.get(scopeId)
|
||||
if (!ticket) return ""
|
||||
|
||||
const closed = ticket.exists("openticket:closed") ? ticket.get("openticket:closed").value : false
|
||||
@@ -87,28 +87,28 @@ export const loadAllStats = async () => {
|
||||
return closed ? lang.getTranslation("params.uppercase.status")+": 🔒 `Closed`" : lang.getTranslation("params.uppercase.status")+": 🔓 `Open`" //TODO TRANSLATION!!!
|
||||
}))
|
||||
ticket.add(new api.ODDynamicStat("openticket:claimed",3,async (scopeId,guild,channel,user) => {
|
||||
const ticket = openticket.tickets.get(scopeId)
|
||||
const ticket = opendiscord.tickets.get(scopeId)
|
||||
if (!ticket) return ""
|
||||
|
||||
const claimed = ticket.exists("openticket:claimed") ? ticket.get("openticket:claimed").value : false
|
||||
return claimed ? lang.getTranslation("params.uppercase.claimed")+": 🟢 `Yes`" : lang.getTranslation("params.uppercase.claimed")+": 🔴 `No`" //TODO TRANSLATION!!!
|
||||
}))
|
||||
ticket.add(new api.ODDynamicStat("openticket:pinned",2,async (scopeId,guild,channel,user) => {
|
||||
const ticket = openticket.tickets.get(scopeId)
|
||||
const ticket = opendiscord.tickets.get(scopeId)
|
||||
if (!ticket) return ""
|
||||
|
||||
const pinned = ticket.exists("openticket:pinned") ? ticket.get("openticket:pinned").value : false
|
||||
return pinned ? lang.getTranslation("params.uppercase.pinned")+": 🟢 `Yes`" : lang.getTranslation("params.uppercase.pinned")+": 🔴 `No`" //TODO TRANSLATION!!!
|
||||
}))
|
||||
ticket.add(new api.ODDynamicStat("openticket:creation-date",1,async (scopeId,guild,channel,user) => {
|
||||
const ticket = openticket.tickets.get(scopeId)
|
||||
const ticket = opendiscord.tickets.get(scopeId)
|
||||
if (!ticket) return ""
|
||||
|
||||
const rawDate = ticket.get("openticket:opened-on").value ?? new Date().getTime()
|
||||
return lang.getTranslation("params.uppercase.creationDate")+": "+discord.time(new Date(rawDate),"f")
|
||||
}))
|
||||
ticket.add(new api.ODDynamicStat("openticket:creator",0,async (scopeId,guild,channel,user) => {
|
||||
const ticket = openticket.tickets.get(scopeId)
|
||||
const ticket = opendiscord.tickets.get(scopeId)
|
||||
if (!ticket) return ""
|
||||
|
||||
const creator = ticket.get("openticket:opened-by").value
|
||||
@@ -119,7 +119,7 @@ export const loadAllStats = async () => {
|
||||
const participants = stats.get("openticket:participants")
|
||||
if (participants){
|
||||
participants.add(new api.ODDynamicStat("openticket:participants",0,async (scopeId,guild,channel,user) => {
|
||||
const ticket = openticket.tickets.get(scopeId)
|
||||
const ticket = opendiscord.tickets.get(scopeId)
|
||||
if (!ticket) return ""
|
||||
|
||||
const participants = ticket.exists("openticket:participants") ? ticket.get("openticket:participants").value : []
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllBlacklistedUsers = async () => {
|
||||
const userDatabase = openticket.databases.get("openticket:users")
|
||||
const userDatabase = opendiscord.databases.get("openticket:users")
|
||||
if (!userDatabase) return
|
||||
|
||||
const users = await userDatabase.getCategory("openticket:blacklist") ?? []
|
||||
users.forEach((user) => {
|
||||
if (typeof user.value == "string" || user.value === null) openticket.blacklist.add(new api.ODBlacklist(user.key,user.value))
|
||||
if (typeof user.value == "string" || user.value === null) opendiscord.blacklist.add(new api.ODBlacklist(user.key,user.value))
|
||||
})
|
||||
}
|
||||
@@ -1,47 +1,47 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllOptions = async () => {
|
||||
const optionConfig = openticket.configs.get("openticket:options")
|
||||
const optionConfig = opendiscord.configs.get("openticket:options")
|
||||
if (!optionConfig) return
|
||||
|
||||
optionConfig.data.forEach((option) => {
|
||||
if (option.type == "ticket"){
|
||||
const loadedOption = loadTicketOption(option)
|
||||
openticket.options.add(loadedOption)
|
||||
openticket.options.suffix.add(loadTicketOptionSuffix(loadedOption))
|
||||
opendiscord.options.add(loadedOption)
|
||||
opendiscord.options.suffix.add(loadTicketOptionSuffix(loadedOption))
|
||||
}else if (option.type == "website"){
|
||||
openticket.options.add(loadWebsiteOption(option))
|
||||
opendiscord.options.add(loadWebsiteOption(option))
|
||||
}else if (option.type == "role"){
|
||||
openticket.options.add(loadRoleOption(option))
|
||||
opendiscord.options.add(loadRoleOption(option))
|
||||
}
|
||||
})
|
||||
|
||||
//update options on config reload
|
||||
optionConfig.onReload(async () => {
|
||||
//clear previous options & suffixes
|
||||
await openticket.options.loopAll((data,id) => {openticket.options.remove(id)})
|
||||
await openticket.options.suffix.loopAll((data,id) => {openticket.options.suffix.remove(id)})
|
||||
await opendiscord.options.loopAll((data,id) => {opendiscord.options.remove(id)})
|
||||
await opendiscord.options.suffix.loopAll((data,id) => {opendiscord.options.suffix.remove(id)})
|
||||
|
||||
//add new options
|
||||
optionConfig.data.forEach((option) => {
|
||||
if (option.type == "ticket"){
|
||||
const loadedOption = loadTicketOption(option)
|
||||
openticket.options.add(loadedOption)
|
||||
openticket.options.suffix.add(loadTicketOptionSuffix(loadedOption))
|
||||
opendiscord.options.add(loadedOption)
|
||||
opendiscord.options.suffix.add(loadTicketOptionSuffix(loadedOption))
|
||||
}else if (option.type == "website"){
|
||||
openticket.options.add(loadWebsiteOption(option))
|
||||
opendiscord.options.add(loadWebsiteOption(option))
|
||||
}else if (option.type == "role"){
|
||||
openticket.options.add(loadRoleOption(option))
|
||||
opendiscord.options.add(loadRoleOption(option))
|
||||
}
|
||||
})
|
||||
|
||||
//update options in tickets
|
||||
await openticket.tickets.loopAll((ticket) => {
|
||||
await opendiscord.tickets.loopAll((ticket) => {
|
||||
const optionId = ticket.option.id
|
||||
const option = openticket.options.get(optionId)
|
||||
const option = opendiscord.options.get(optionId)
|
||||
if (option && option instanceof api.ODTicketOption) ticket.option = option
|
||||
else{
|
||||
openticket.log("Unable to move ticket to unexisting option due to config reload!","warning",[
|
||||
opendiscord.log("Unable to move ticket to unexisting option due to config reload!","warning",[
|
||||
{key:"channelid",value:ticket.id.value},
|
||||
{key:"option",value:optionId.value}
|
||||
])
|
||||
@@ -49,7 +49,7 @@ export const loadAllOptions = async () => {
|
||||
})
|
||||
|
||||
//update roles on config reload
|
||||
await openticket.roles.loopAll((data,id) => {openticket.roles.remove(id)})
|
||||
await opendiscord.roles.loopAll((data,id) => {opendiscord.roles.remove(id)})
|
||||
await (await import("./roleLoader.js")).loadAllRoles()
|
||||
})
|
||||
}
|
||||
@@ -134,7 +134,7 @@ export const loadRoleOption = (opt:api.ODJsonConfig_DefaultOptionRoleType): api.
|
||||
|
||||
export const loadTicketOptionSuffix = (option:api.ODTicketOption): api.ODOptionSuffix => {
|
||||
const mode = option.get("openticket:channel-suffix").value
|
||||
const globalDatabase = openticket.databases.get("openticket:global")
|
||||
const globalDatabase = opendiscord.databases.get("openticket:global")
|
||||
if (mode == "user-name") return new api.ODOptionUserNameSuffix(option.id.value,option)
|
||||
else if (mode == "random-number") return new api.ODOptionRandomNumberSuffix(option.id.value,option,globalDatabase)
|
||||
else if (mode == "random-hex") return new api.ODOptionRandomHexSuffix(option.id.value,option,globalDatabase)
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
export const loadAllPanels = async () => {
|
||||
const panelConfig = openticket.configs.get("openticket:panels")
|
||||
const panelConfig = opendiscord.configs.get("openticket:panels")
|
||||
if (!panelConfig) return
|
||||
|
||||
panelConfig.data.forEach((panel) => {
|
||||
openticket.panels.add(loadPanel(panel))
|
||||
opendiscord.panels.add(loadPanel(panel))
|
||||
})
|
||||
|
||||
//update panels on config reload
|
||||
panelConfig.onReload(async () => {
|
||||
//clear previous panels
|
||||
await openticket.panels.loopAll((data,id) => {openticket.panels.remove(id)})
|
||||
await opendiscord.panels.loopAll((data,id) => {opendiscord.panels.remove(id)})
|
||||
|
||||
//add new panels
|
||||
panelConfig.data.forEach((panel) => {
|
||||
openticket.panels.add(loadPanel(panel))
|
||||
opendiscord.panels.add(loadPanel(panel))
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -53,7 +53,7 @@ export function describePanelOptions(mode:"fields"|"text", panel:api.ODPanel): {
|
||||
let websiteOnly = true
|
||||
let roleOnly = true
|
||||
panel.get("openticket:options").value.forEach((id) => {
|
||||
const opt = openticket.options.get(id)
|
||||
const opt = opendiscord.options.get(id)
|
||||
if (opt){
|
||||
if (opt instanceof api.ODTicketOption){
|
||||
options.push(opt)
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllQuestions = async () => {
|
||||
const questionConfig = openticket.configs.get("openticket:questions")
|
||||
const questionConfig = opendiscord.configs.get("openticket:questions")
|
||||
if (!questionConfig) return
|
||||
|
||||
questionConfig.data.forEach((question) => {
|
||||
if (question.type == "short"){
|
||||
openticket.questions.add(loadShortQuestion(question))
|
||||
opendiscord.questions.add(loadShortQuestion(question))
|
||||
}else if (question.type == "paragraph"){
|
||||
openticket.questions.add(loadParagraphQuestion(question))
|
||||
opendiscord.questions.add(loadParagraphQuestion(question))
|
||||
}
|
||||
})
|
||||
|
||||
//update questions on config reload
|
||||
questionConfig.onReload(async () => {
|
||||
//clear previous questions
|
||||
await openticket.questions.loopAll((data,id) => {openticket.questions.remove(id)})
|
||||
await opendiscord.questions.loopAll((data,id) => {opendiscord.questions.remove(id)})
|
||||
|
||||
//add new questions
|
||||
questionConfig.data.forEach((question) => {
|
||||
if (question.type == "short"){
|
||||
openticket.questions.add(loadShortQuestion(question))
|
||||
opendiscord.questions.add(loadShortQuestion(question))
|
||||
}else if (question.type == "paragraph"){
|
||||
openticket.questions.add(loadParagraphQuestion(question))
|
||||
opendiscord.questions.add(loadParagraphQuestion(question))
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import {openticket, api, utilities} from "../../index"
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
|
||||
export const loadAllRoles = async () => {
|
||||
await openticket.options.loopAll((opt) => {
|
||||
await opendiscord.options.loopAll((opt) => {
|
||||
if (opt instanceof api.ODRoleOption){
|
||||
openticket.roles.add(loadRole(opt))
|
||||
opendiscord.roles.add(loadRole(opt))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user