diff --git a/src/actions/claimTicket.ts b/src/actions/claimTicket.ts index 8900296..cb82ed4 100644 --- a/src/actions/claimTicket.ts +++ b/src/actions/claimTicket.ts @@ -26,20 +26,22 @@ export const registerActions = async () => { await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-claimed",user.id,1,"increase") //update category - const rawClaimCategory = ticket.option.get("opendiscord:channel-categories-claimed").value.find((c) => c.user == user.id) - const claimCategory = (rawClaimCategory) ? rawClaimCategory.category : null - if (claimCategory){ - try { - channel.setParent(claimCategory,{lockPermissions:false}) - ticket.get("opendiscord:category-mode").value = "claimed" - ticket.get("opendiscord:category").value = claimCategory - }catch(e){ - 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} - ]) - opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException")) + if (params.allowCategoryChange){ + const rawClaimCategory = ticket.option.get("opendiscord:channel-categories-claimed").value.find((c) => c.user == user.id) + const claimCategory = (rawClaimCategory) ? rawClaimCategory.category : null + if (claimCategory){ + try { + channel.setParent(claimCategory,{lockPermissions:false}) + ticket.get("opendiscord:category-mode").value = "claimed" + ticket.get("opendiscord:category").value = claimCategory + }catch(e){ + 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} + ]) + opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException")) + } } } diff --git a/src/actions/closeTicket.ts b/src/actions/closeTicket.ts index 5481fb7..c442b86 100644 --- a/src/actions/closeTicket.ts +++ b/src/actions/closeTicket.ts @@ -28,19 +28,21 @@ export const registerActions = async () => { await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-closed",user.id,1,"increase") //update category - const closeCategory = ticket.option.get("opendiscord:channel-category-closed").value - if (closeCategory !== ""){ - try { - channel.setParent(closeCategory,{lockPermissions:false}) - ticket.get("opendiscord:category-mode").value = "closed" - ticket.get("opendiscord:category").value = closeCategory - }catch(e){ - 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} - ]) - opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException")) + if (params.allowCategoryChange){ + const closeCategory = ticket.option.get("opendiscord:channel-category-closed").value + if (closeCategory !== ""){ + try { + channel.setParent(closeCategory,{lockPermissions:false}) + ticket.get("opendiscord:category-mode").value = "closed" + ticket.get("opendiscord:category").value = closeCategory + }catch(e){ + 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} + ]) + opendiscord.debugfile.writeErrorMessage(new api.ODError(e,"uncaughtException")) + } } } diff --git a/src/actions/reopenTicket.ts b/src/actions/reopenTicket.ts index 70d3c36..d80878c 100644 --- a/src/actions/reopenTicket.ts +++ b/src/actions/reopenTicket.ts @@ -28,53 +28,55 @@ export const registerActions = async () => { await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-reopened",user.id,1,"increase") //update category - const channelCategory = ticket.option.get("opendiscord:channel-category").value - const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value - if (channelCategory !== ""){ - //category enabled - try { - const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory) - if (!normalCategory){ - //default category was not found - opendiscord.log("Ticket Reopening Error: Unable to find category! #1","error",[ - {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 - } + if (params.allowCategoryChange){ + const channelCategory = ticket.option.get("opendiscord:channel-category").value + const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value + if (channelCategory !== ""){ + //category enabled + try { + const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory) + if (!normalCategory){ + //default category was not found + opendiscord.log("Ticket Reopening Error: Unable to find category! #1","error",[ + {key:"categoryid",value:channelCategory}, + {key:"backup",value:"false"} + ]) }else{ - //use default category - channel.setParent(normalCategory,{lockPermissions:false}) - ticket.get("opendiscord:category-mode").value = "normal" - ticket.get("opendiscord:category").value = normalCategory.id + //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{ + //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){ - 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")) + }else{ + channel.setParent(null,{lockPermissions:false}) + ticket.get("opendiscord:category-mode").value = null + ticket.get("opendiscord:category").value = null } - }else{ - channel.setParent(null,{lockPermissions:false}) - ticket.get("opendiscord:category-mode").value = null - ticket.get("opendiscord:category").value = null } //update permissions diff --git a/src/actions/unclaimTicket.ts b/src/actions/unclaimTicket.ts index 8972228..d9b391c 100644 --- a/src/actions/unclaimTicket.ts +++ b/src/actions/unclaimTicket.ts @@ -22,54 +22,56 @@ export const registerActions = async () => { ticket.get("opendiscord:busy").value = true //update category - const channelCategory = ticket.option.get("opendiscord:channel-category").value - const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value - if (channelCategory !== ""){ - //category enabled - try { - const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory) - if (!normalCategory){ - //default category was not found - opendiscord.log("Ticket Unclaiming Error: Unable to find category! #1","error",[ - {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 - } + if (params.allowCategoryChange){ + const channelCategory = ticket.option.get("opendiscord:channel-category").value + const channelBackupCategory = ticket.option.get("opendiscord:channel-category-backup").value + if (channelCategory !== ""){ + //category enabled + try { + const normalCategory = await opendiscord.client.fetchGuildCategoryChannel(guild,channelCategory) + if (!normalCategory){ + //default category was not found + opendiscord.log("Ticket Unclaiming Error: Unable to find category! #1","error",[ + {key:"categoryid",value:channelCategory}, + {key:"backup",value:"false"} + ]) }else{ - //use default category - channel.setParent(normalCategory,{lockPermissions:false}) - ticket.get("opendiscord:category-mode").value = "normal" - ticket.get("opendiscord:category").value = normalCategory.id + //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{ + //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")) } - - }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{ + channel.setParent(null,{lockPermissions:false}) + ticket.get("opendiscord:category-mode").value = null + ticket.get("opendiscord:category").value = null } - }else{ - channel.setParent(null,{lockPermissions:false}) - ticket.get("opendiscord:category-mode").value = null - ticket.get("opendiscord:category").value = null } //update ticket message diff --git a/src/core/api/defaults/action.ts b/src/core/api/defaults/action.ts index 808724e..842ec62 100644 --- a/src/core/api/defaults/action.ts +++ b/src/core/api/defaults/action.ts @@ -36,7 +36,7 @@ export interface ODActionManagerIds_Default { }, "opendiscord:close-ticket":{ 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:{}, workers:"opendiscord:close-ticket"|"opendiscord:discord-logs"|"opendiscord:logs" }, @@ -48,19 +48,19 @@ export interface ODActionManagerIds_Default { }, "opendiscord:reopen-ticket":{ 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:{}, workers:"opendiscord:reopen-ticket"|"opendiscord:discord-logs"|"opendiscord:logs" }, "opendiscord:claim-ticket":{ 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:{}, workers:"opendiscord:claim-ticket"|"opendiscord:discord-logs"|"opendiscord:logs" }, "opendiscord:unclaim-ticket":{ 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:{}, workers:"opendiscord:unclaim-ticket"|"opendiscord:discord-logs"|"opendiscord:logs" },