(v4.2.0) Added closed ticket channel emoij (#199)
This commit is contained in:
@@ -78,7 +78,7 @@
|
||||
"alwaysShowReason":false, //Show reason even if none is provided
|
||||
"emojiStyle":"before", //The style of emoji's in embeds. Choices: before, after, double, disabled
|
||||
"pinEmoji":"📌", //Channel emoji of pinned tickets (Leave empty to disable)
|
||||
"closeEmoji":"🔒", //Channel emoji of closed tickets (Leave empty to disable)
|
||||
"closeEmoji":"", //Channel emoji of closed tickets (Leave empty to disable)
|
||||
|
||||
"replyOnTicketCreation":true, //Reply with a msg when a ticket is created
|
||||
"replyOnReactionRole":true, //Reply with a msg when a reaction role is used
|
||||
|
||||
@@ -20,9 +20,10 @@ export async function registerActions(){
|
||||
|
||||
//calculate status emojis
|
||||
const pinEmoji = (ticket && ticket.get("opendiscord:pinned").value) ? generalConfig.data.ticketSystem.pinEmoji : ""
|
||||
const closeEmoji = (ticket && ticket.get("opendiscord:closed").value) ? generalConfig.data.ticketSystem.closeEmoji : ""
|
||||
const priorityEmoji = (ticket) ? (opendiscord.priorities.getFromPriorityLevel(ticket.get("opendiscord:priority").value).channelEmoji ?? "") : ""
|
||||
|
||||
instance.newChannelName = pinEmoji+priorityEmoji+baseChannelName
|
||||
instance.newChannelName = pinEmoji+closeEmoji+priorityEmoji+baseChannelName
|
||||
instance.newChannelSuffix = channelSuffix
|
||||
instance.shouldChangeName = (instance.newChannelName !== currentChannelName)
|
||||
})
|
||||
|
||||
@@ -58,6 +58,25 @@ export async function registerActions(){
|
||||
}
|
||||
}
|
||||
|
||||
//calculate channel name
|
||||
const channelNameResult = await opendiscord.actions.get("opendiscord:calculate-ticket-name").run("close-ticket",{guild,user,option:ticket.option,channel,ticket,currentChannelName:channel.name})
|
||||
if (channelNameResult && channelNameResult.shouldChangeName && typeof channelNameResult.newChannelName !== "undefined"){
|
||||
const originalName = channel.name
|
||||
const newName = channelNameResult.newChannelName
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
|
||||
opendiscord.log("Failed to rename channel on ticket close","error")
|
||||
})
|
||||
}catch(err){
|
||||
opendiscord.log("Unable to rename channel while closing ticket! Waiting until ratelimit expires...","warning",[
|
||||
{key:"oldName",value:originalName},
|
||||
{key:"newName",value:newName}
|
||||
])
|
||||
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-rename").build("ticket-close",{guild,channel,user,originalName,newName})).message)
|
||||
setTimeout(() => {if (sentMsg.deletable) sentMsg.delete()},7000) //autodelete error message
|
||||
}
|
||||
}
|
||||
|
||||
//update permissions (non-staff => readonly)
|
||||
const permissions: discord.OverwriteResolvable[] = [{
|
||||
type:discord.OverwriteType.Role,
|
||||
|
||||
@@ -63,6 +63,25 @@ export async function registerActions(){
|
||||
}
|
||||
}
|
||||
|
||||
//calculate channel name
|
||||
const channelNameResult = await opendiscord.actions.get("opendiscord:calculate-ticket-name").run("reopen-ticket",{guild,user,option:ticket.option,channel,ticket,currentChannelName:channel.name})
|
||||
if (channelNameResult && channelNameResult.shouldChangeName && typeof channelNameResult.newChannelName !== "undefined"){
|
||||
const originalName = channel.name
|
||||
const newName = channelNameResult.newChannelName
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
|
||||
opendiscord.log("Failed to rename channel on ticket reopen","error")
|
||||
})
|
||||
}catch(err){
|
||||
opendiscord.log("Unable to rename channel while reopening ticket! Waiting until ratelimit expires...","warning",[
|
||||
{key:"oldName",value:originalName},
|
||||
{key:"newName",value:newName}
|
||||
])
|
||||
const sentMsg = await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-rename").build("ticket-reopen",{guild,channel,user,originalName,newName})).message)
|
||||
setTimeout(() => {if (sentMsg.deletable) sentMsg.delete()},7000) //autodelete error message
|
||||
}
|
||||
}
|
||||
|
||||
//update permissions
|
||||
const permissions: discord.OverwriteResolvable[] = [{
|
||||
type:discord.OverwriteType.Role,
|
||||
|
||||
@@ -330,7 +330,7 @@ const errorEmbeds = () => {
|
||||
new api.ODWorker("opendiscord:error-channel-rename",0,async (instance,params,origin) => {
|
||||
const {channel,user,originalName,newName} = params
|
||||
|
||||
const method = (origin == "ticket-move" || origin == "ticket-pin" || origin == "ticket-rename" || origin == "ticket-unpin" || origin == "ticket-priority" || origin == "ticket-transfer") ? origin : getMethodFromOrigin(origin)
|
||||
const method = (origin == "ticket-move" || origin == "ticket-pin" || origin == "ticket-close" || origin == "ticket-reopen" || origin == "ticket-rename" || origin == "ticket-unpin" || origin == "ticket-priority" || origin == "ticket-transfer") ? origin : getMethodFromOrigin(origin)
|
||||
|
||||
instance.setColor(generalConfig.data.ticketSystem.useRedErrorEmbeds ? "Red" : generalConfig.data.mainColor)
|
||||
instance.setTitle(utilities.emojiTitle("❌",lang.getTranslation("errors.titles.channelRename")))
|
||||
|
||||
@@ -1253,7 +1253,7 @@ async function saveQuickSetupConfig(){
|
||||
alwaysShowReason:false,
|
||||
emojiStyle:quickSetupStorage.emojiStyle ?? "before",
|
||||
pinEmoji:"📌",
|
||||
closeEmoji:"🔒",
|
||||
closeEmoji:"",
|
||||
|
||||
replyOnTicketCreation:true,
|
||||
replyOnReactionRole:true,
|
||||
|
||||
@@ -81,7 +81,7 @@ export interface ODEmbedManagerIdMappings extends api.ODEmbedManagerIdConstraint
|
||||
"opendiscord:error-option-unknown":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-option-unknown"},
|
||||
"opendiscord:error-panel-unknown":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-panel-unknown"},
|
||||
"opendiscord:error-not-in-guild":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-not-in-guild"},
|
||||
"opendiscord:error-channel-rename":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-pin"|"ticket-unpin"|"ticket-rename"|"ticket-move"|"ticket-priority"|"ticket-transfer"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,originalName:string,newName:string},workers:"opendiscord:error-channel-rename"},
|
||||
"opendiscord:error-channel-rename":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-pin"|"ticket-unpin"|"ticket-close"|"ticket-reopen"|"ticket-rename"|"ticket-move"|"ticket-priority"|"ticket-transfer"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,originalName:string,newName:string},workers:"opendiscord:error-channel-rename"},
|
||||
"opendiscord:error-channel-category":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-create"|"ticket-close"|"ticket-reopen"|"ticket-claim"|"ticket-unclaim"|"ticket-move"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,originalCategory:string,newCategory:string},workers:"opendiscord:error-channel-category"},
|
||||
"opendiscord:error-ticket-busy":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-ticket-busy"},
|
||||
|
||||
@@ -164,7 +164,7 @@ export interface ODMessageManagerIdMappings extends api.ODMessageManagerIdConstr
|
||||
"opendiscord:error-option-unknown":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-option-unknown"},
|
||||
"opendiscord:error-panel-unknown":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-panel-unknown"},
|
||||
"opendiscord:error-not-in-guild":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-not-in-guild"},
|
||||
"opendiscord:error-channel-rename":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-pin"|"ticket-unpin"|"ticket-rename"|"ticket-move"|"ticket-priority"|"ticket-transfer"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,originalName:string,newName:string},workers:"opendiscord:error-channel-rename"},
|
||||
"opendiscord:error-channel-rename":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-pin"|"ticket-unpin"|"ticket-close"|"ticket-reopen"|"ticket-rename"|"ticket-move"|"ticket-priority"|"ticket-transfer"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,originalName:string,newName:string},workers:"opendiscord:error-channel-rename"},
|
||||
"opendiscord:error-channel-category":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-create"|"ticket-close"|"ticket-reopen"|"ticket-claim"|"ticket-unclaim"|"ticket-move"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,originalCategory:string,newCategory:string},workers:"opendiscord:error-channel-category"},
|
||||
"opendiscord:error-ticket-busy":{origin:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-ticket-busy"},
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ export const migrations = [
|
||||
|
||||
if (!generalConfig.data["system"]) throw new api.ODSystemError("Couldn't find general.jsonc 'system' category.")
|
||||
generalConfig.data.ticketSystem = generalConfig.data["system"]
|
||||
generalConfig.data.ticketSystem.closeEmoji = "🔒"
|
||||
generalConfig.data.ticketSystem.closeEmoji = ""
|
||||
generalConfig.data.ticketSystem.askPriorityOnTicketCreation = true
|
||||
generalConfig.data.ticketSystem.enableCreateTicketForOtherUser = true
|
||||
delete generalConfig.data["system"]
|
||||
|
||||
+10
-6
@@ -525,12 +525,16 @@ const main = async () => {
|
||||
await opendiscord.events.get("onStateLoad").emit([opendiscord.states])
|
||||
await opendiscord.events.get("afterStatesLoaded").emit([opendiscord.states])
|
||||
|
||||
//init states
|
||||
await opendiscord.events.get("onStateInit").emit([opendiscord.states])
|
||||
if (opendiscord.sharedFuses.getFuse("stateInitiating")){
|
||||
await opendiscord.states.init()
|
||||
await opendiscord.events.get("afterStatesInitiated").emit([opendiscord.states])
|
||||
}
|
||||
//init states (async to prevent blocking startup)
|
||||
utilities.runAsync(async () => {
|
||||
opendiscord.log("Initiating states...","system")
|
||||
await opendiscord.events.get("onStateInit").emit([opendiscord.states])
|
||||
if (opendiscord.sharedFuses.getFuse("stateInitiating")){
|
||||
await opendiscord.states.init()
|
||||
await opendiscord.events.get("afterStatesInitiated").emit([opendiscord.states])
|
||||
}
|
||||
opendiscord.log("Message states ready!","info")
|
||||
})
|
||||
|
||||
//plugin loading before managers
|
||||
await opendiscord.events.get("onPluginBeforeManagerLoad").emit([])
|
||||
|
||||
Reference in New Issue
Block a user