API: allowCategoryChange param in related actions

Added the 'allowCategoryChange' parameter in related ticket actions (claim, unclaim, close, reopen) to disable the changing of the category. This can be used by plugins not wanting the category of the channel to change.
This commit is contained in:
DJj123dj
2025-03-27 16:30:37 +01:00
parent f316ae83e7
commit fd3bc0e7b9
5 changed files with 126 additions and 118 deletions
+16 -14
View File
@@ -26,20 +26,22 @@ export const registerActions = async () => {
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-claimed",user.id,1,"increase") await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-claimed",user.id,1,"increase")
//update category //update category
const rawClaimCategory = ticket.option.get("opendiscord:channel-categories-claimed").value.find((c) => c.user == user.id) if (params.allowCategoryChange){
const claimCategory = (rawClaimCategory) ? rawClaimCategory.category : null const rawClaimCategory = ticket.option.get("opendiscord:channel-categories-claimed").value.find((c) => c.user == user.id)
if (claimCategory){ const claimCategory = (rawClaimCategory) ? rawClaimCategory.category : null
try { if (claimCategory){
channel.setParent(claimCategory,{lockPermissions:false}) try {
ticket.get("opendiscord:category-mode").value = "claimed" channel.setParent(claimCategory,{lockPermissions:false})
ticket.get("opendiscord:category").value = claimCategory ticket.get("opendiscord:category-mode").value = "claimed"
}catch(e){ ticket.get("opendiscord:category").value = claimCategory
opendiscord.log("Unable to move ticket to 'claimed category'!","error",[ }catch(e){
{key:"channel",value:"#"+channel.name}, opendiscord.log("Unable to move ticket to 'claimed category'!","error",[
{key:"channelid",value:channel.id,hidden:true}, {key:"channel",value:"#"+channel.name},
{key:"categoryid",value:claimCategory} {key:"channelid",value:channel.id,hidden:true},
]) {key:"categoryid",value:claimCategory}
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException")) ])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
} }
} }
+15 -13
View File
@@ -28,19 +28,21 @@ export const registerActions = async () => {
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-closed",user.id,1,"increase") await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-closed",user.id,1,"increase")
//update category //update category
const closeCategory = ticket.option.get("opendiscord:channel-category-closed").value if (params.allowCategoryChange){
if (closeCategory !== ""){ const closeCategory = ticket.option.get("opendiscord:channel-category-closed").value
try { if (closeCategory !== ""){
channel.setParent(closeCategory,{lockPermissions:false}) try {
ticket.get("opendiscord:category-mode").value = "closed" channel.setParent(closeCategory,{lockPermissions:false})
ticket.get("opendiscord:category").value = closeCategory ticket.get("opendiscord:category-mode").value = "closed"
}catch(e){ ticket.get("opendiscord:category").value = closeCategory
opendiscord.log("Unable to move ticket to 'closed category'!","error",[ }catch(e){
{key:"channel",value:"#"+channel.name}, opendiscord.log("Unable to move ticket to 'closed category'!","error",[
{key:"channelid",value:channel.id,hidden:true}, {key:"channel",value:"#"+channel.name},
{key:"categoryid",value:closeCategory} {key:"channelid",value:channel.id,hidden:true},
]) {key:"categoryid",value:closeCategory}
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException")) ])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
}
} }
} }
+45 -43
View File
@@ -28,53 +28,55 @@ export const registerActions = async () => {
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-reopened",user.id,1,"increase") await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-reopened",user.id,1,"increase")
//update category //update category
const channelCategory = ticket.option.get("opendiscord:channel-category").value if (params.allowCategoryChange){
const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value const channelCategory = ticket.option.get("opendiscord:channel-category").value
if (channelCategory !== ""){ const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value
//category enabled if (channelCategory !== ""){
try { //category enabled
const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory) try {
if (!normalCategory){ const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory)
//default category was not found if (!normalCategory){
opendiscord.log("Ticket Reopening Error: Unable to find category! #1","error",[ //default category was not found
{key:"categoryid",value:channelCategory}, opendiscord.log("Ticket Reopening Error: Unable to find category! #1","error",[
{key:"backup",value:"false"} {key:"categoryid",value:channelCategory},
]) {key:"backup",value:"false"}
}else{ ])
//default category was found
if (normalCategory.children.cache.size >= 49 && channelBackupCategory != ""){
//use backup category
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
if (!backupCategory){
//default category was not found
opendiscord.log("Ticket Reopening Error: Unable to find category! #2","error",[
{key:"categoryid",value:channelBackupCategory},
{key:"backup",value:"true"}
])
}else{
//use backup category
channel.setParent(backupCategory,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = "backup"
ticket.get("opendiscord:category").value = backupCategory.id
}
}else{ }else{
//use default category //default category was found
channel.setParent(normalCategory,{lockPermissions:false}) if (normalCategory.children.cache.size >= 49 && channelBackupCategory != ""){
ticket.get("opendiscord:category-mode").value = "normal" //use backup category
ticket.get("opendiscord:category").value = normalCategory.id const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
if (!backupCategory){
//default category was not found
opendiscord.log("Ticket Reopening Error: Unable to find category! #2","error",[
{key:"categoryid",value:channelBackupCategory},
{key:"backup",value:"true"}
])
}else{
//use backup category
channel.setParent(backupCategory,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = "backup"
ticket.get("opendiscord:category").value = backupCategory.id
}
}else{
//use default category
channel.setParent(normalCategory,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = "normal"
ticket.get("opendiscord:category").value = normalCategory.id
}
} }
}catch(e){
opendiscord.log("Unable to move ticket to 'reopened category'!","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true},
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
} }
}catch(e){ }else{
opendiscord.log("Unable to move ticket to 'reopened category'!","error",[ channel.setParent(null,{lockPermissions:false})
{key:"channel",value:"#"+channel.name}, ticket.get("opendiscord:category-mode").value = null
{key:"channelid",value:channel.id,hidden:true}, ticket.get("opendiscord:category").value = null
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
} }
}else{
channel.setParent(null,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = null
ticket.get("opendiscord:category").value = null
} }
//update permissions //update permissions
+46 -44
View File
@@ -22,54 +22,56 @@ export const registerActions = async () => {
ticket.get("opendiscord:busy").value = true ticket.get("opendiscord:busy").value = true
//update category //update category
const channelCategory = ticket.option.get("opendiscord:channel-category").value if (params.allowCategoryChange){
const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value const channelCategory = ticket.option.get("opendiscord:channel-category").value
if (channelCategory !== ""){ const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value
//category enabled if (channelCategory !== ""){
try { //category enabled
const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory) try {
if (!normalCategory){ const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory)
//default category was not found if (!normalCategory){
opendiscord.log("Ticket Unclaiming Error: Unable to find category! #1","error",[ //default category was not found
{key:"categoryid",value:channelCategory}, opendiscord.log("Ticket Unclaiming Error: Unable to find category! #1","error",[
{key:"backup",value:"false"} {key:"categoryid",value:channelCategory},
]) {key:"backup",value:"false"}
}else{ ])
//default category was found
if (normalCategory.children.cache.size >= 49 && channelBackupCategory != ""){
//use backup category
const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
if (!backupCategory){
//default category was not found
opendiscord.log("Ticket Unclaiming Error: Unable to find category! #2","error",[
{key:"categoryid",value:channelBackupCategory},
{key:"backup",value:"true"}
])
}else{
//use backup category
channel.setParent(backupCategory,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = "backup"
ticket.get("opendiscord:category").value = backupCategory.id
}
}else{ }else{
//use default category //default category was found
channel.setParent(normalCategory,{lockPermissions:false}) if (normalCategory.children.cache.size >= 49 && channelBackupCategory != ""){
ticket.get("opendiscord:category-mode").value = "normal" //use backup category
ticket.get("opendiscord:category").value = normalCategory.id const backupCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelBackupCategory)
if (!backupCategory){
//default category was not found
opendiscord.log("Ticket Unclaiming Error: Unable to find category! #2","error",[
{key:"categoryid",value:channelBackupCategory},
{key:"backup",value:"true"}
])
}else{
//use backup category
channel.setParent(backupCategory,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = "backup"
ticket.get("opendiscord:category").value = backupCategory.id
}
}else{
//use default category
channel.setParent(normalCategory,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = "normal"
ticket.get("opendiscord:category").value = normalCategory.id
}
} }
}catch(e){
opendiscord.log("Unable to move ticket to 'unclaimed category'!","error",[
{key:"channel",value:"#"+channel.name},
{key:"channelid",value:channel.id,hidden:true}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
} }
}else{
}catch(e){ channel.setParent(null,{lockPermissions:false})
opendiscord.log("Unable to move ticket to 'unclaimed category'!","error",[ ticket.get("opendiscord:category-mode").value = null
{key:"channel",value:"#"+channel.name}, ticket.get("opendiscord:category").value = null
{key:"channelid",value:channel.id,hidden:true}
])
opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException"))
} }
}else{
channel.setParent(null,{lockPermissions:false})
ticket.get("opendiscord:category-mode").value = null
ticket.get("opendiscord:category").value = null
} }
//update ticket message //update ticket message
+4 -4
View File
@@ -36,7 +36,7 @@ export interface ODActionManagerIds_Default {
}, },
"opendiscord:close-ticket":{ "opendiscord:close-ticket":{
source:"slash"|"text"|"ticket-message"|"reopen-message"|"autoclose"|"other", source:"slash"|"text"|"ticket-message"|"reopen-message"|"autoclose"|"other",
params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,sendMessage:boolean}, params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,sendMessage:boolean,allowCategoryChange?:boolean},
result:{}, result:{},
workers:"opendiscord:close-ticket"|"opendiscord:discord-logs"|"opendiscord:logs" workers:"opendiscord:close-ticket"|"opendiscord:discord-logs"|"opendiscord:logs"
}, },
@@ -48,19 +48,19 @@ export interface ODActionManagerIds_Default {
}, },
"opendiscord:reopen-ticket":{ "opendiscord:reopen-ticket":{
source:"slash"|"text"|"ticket-message"|"close-message"|"autoclose-message"|"other", source:"slash"|"text"|"ticket-message"|"close-message"|"autoclose-message"|"other",
params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,sendMessage:boolean}, params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,sendMessage:boolean,allowCategoryChange?:boolean},
result:{}, result:{},
workers:"opendiscord:reopen-ticket"|"opendiscord:discord-logs"|"opendiscord:logs" workers:"opendiscord:reopen-ticket"|"opendiscord:discord-logs"|"opendiscord:logs"
}, },
"opendiscord:claim-ticket":{ "opendiscord:claim-ticket":{
source:"slash"|"text"|"ticket-message"|"unclaim-message"|"other", source:"slash"|"text"|"ticket-message"|"unclaim-message"|"other",
params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,sendMessage:boolean}, params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,sendMessage:boolean,allowCategoryChange?:boolean},
result:{}, result:{},
workers:"opendiscord:claim-ticket"|"opendiscord:discord-logs"|"opendiscord:logs" workers:"opendiscord:claim-ticket"|"opendiscord:discord-logs"|"opendiscord:logs"
}, },
"opendiscord:unclaim-ticket":{ "opendiscord:unclaim-ticket":{
source:"slash"|"text"|"ticket-message"|"claim-message"|"other", source:"slash"|"text"|"ticket-message"|"claim-message"|"other",
params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,sendMessage:boolean}, params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,sendMessage:boolean,allowCategoryChange?:boolean},
result:{}, result:{},
workers:"opendiscord:unclaim-ticket"|"opendiscord:discord-logs"|"opendiscord:logs" workers:"opendiscord:unclaim-ticket"|"opendiscord:discord-logs"|"opendiscord:logs"
}, },