Added priority commands (/priority get,set)
This commit is contained in:
@@ -31,8 +31,11 @@ export const registerActions = async () => {
|
||||
}
|
||||
|
||||
//rename channel (and give error when crashed)
|
||||
const pinEmoji = ticket.get("opendiscord:pinned").value ? generalConfig.data.system.pinEmoji : ""
|
||||
const priorityEmoji = opendiscord.priorities.getFromPriorityLevel(ticket.get("opendiscord:priority").value).channelEmoji ?? ""
|
||||
|
||||
const originalName = channel.name
|
||||
const newName = "📌"+channel.name
|
||||
const newName = pinEmoji+priorityEmoji+utilities.trimEmojis(channel.name)
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
|
||||
opendiscord.log("Failed to rename channel on ticket pin","error")
|
||||
|
||||
@@ -16,9 +16,13 @@ export const registerActions = async () => {
|
||||
await opendiscord.events.get("onTicketRename").emit([ticket,user,channel,reason])
|
||||
|
||||
//rename channel (and give error when crashed)
|
||||
const pinEmoji = ticket.get("opendiscord:pinned").value ? generalConfig.data.system.pinEmoji : ""
|
||||
const priorityEmoji = opendiscord.priorities.getFromPriorityLevel(ticket.get("opendiscord:priority").value).channelEmoji ?? ""
|
||||
|
||||
const originalName = channel.name
|
||||
const newName = pinEmoji+priorityEmoji+utilities.trimEmojis(data)
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(data),2500,(err) => {
|
||||
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
|
||||
opendiscord.log("Failed to rename channel on ticket rename","error")
|
||||
})
|
||||
}catch(err){
|
||||
|
||||
@@ -22,9 +22,11 @@ export const registerActions = async () => {
|
||||
ticket.get("opendiscord:busy").value = true
|
||||
|
||||
//rename channel (and give error when crashed)
|
||||
const pinEmoji = ticket.get("opendiscord:pinned").value ? generalConfig.data.system.pinEmoji : ""
|
||||
const priorityEmoji = opendiscord.priorities.getFromPriorityLevel(ticket.get("opendiscord:priority").value).channelEmoji ?? ""
|
||||
|
||||
const originalName = channel.name
|
||||
if (originalName.startsWith("📌")){
|
||||
const newName = originalName.replace("📌","");
|
||||
const newName = pinEmoji+priorityEmoji+utilities.trimEmojis(channel.name)
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
|
||||
opendiscord.log("Failed to rename channel on ticket unpin","error")
|
||||
@@ -32,7 +34,6 @@ export const registerActions = async () => {
|
||||
}catch(err){
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-rename").build("ticket-unpin",{guild,channel,user,originalName,newName})).message)
|
||||
}
|
||||
}
|
||||
|
||||
//update ticket message
|
||||
const ticketMessage = await opendiscord.tickets.getTicketMessage(ticket)
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
///////////////////////////////////////
|
||||
//TICKET TOPIC SYSTEM
|
||||
///////////////////////////////////////
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = opendiscord.configs.get("opendiscord:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
opendiscord.actions.add(new api.ODAction("opendiscord:update-ticket-priority"))
|
||||
opendiscord.actions.get("opendiscord:update-ticket-priority").workers.add([
|
||||
new api.ODWorker("opendiscord:update-ticket-priority",2,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,newPriority,reason} = params
|
||||
if (channel.isThread() || !(channel instanceof discord.TextChannel)) throw new api.ODSystemError("Unable to set priority of ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
const oldPriority = opendiscord.priorities.getFromPriorityLevel(ticket.get("opendiscord:priority").value)
|
||||
await opendiscord.events.get("onTicketPriorityChange").emit([ticket,user,channel,oldPriority,newPriority])
|
||||
|
||||
//update ticket
|
||||
ticket.get("opendiscord:busy").value = true
|
||||
if (newPriority) ticket.get("opendiscord:priority").value = newPriority.priority
|
||||
|
||||
//rename channel (and give error when crashed)
|
||||
const pinEmoji = ticket.get("opendiscord:pinned").value ? generalConfig.data.system.pinEmoji : ""
|
||||
const priorityEmoji = newPriority.channelEmoji ?? ""
|
||||
|
||||
const originalName = channel.name
|
||||
const newName = pinEmoji+priorityEmoji+utilities.trimEmojis(channel.name)
|
||||
try{
|
||||
await utilities.timedAwait(channel.setName(newName),2500,(err) => {
|
||||
opendiscord.log("Failed to rename channel on ticket priority update","error")
|
||||
})
|
||||
}catch(err){
|
||||
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:error-channel-rename").build("ticket-priority",{guild,channel,user,originalName,newName})).message)
|
||||
}
|
||||
|
||||
//reply with new message
|
||||
if (params.sendMessage) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:priority-set").build(source,{guild,channel,user,ticket,priority:newPriority,reason})).message)
|
||||
ticket.get("opendiscord:busy").value = false
|
||||
await opendiscord.events.get("afterTicketPriorityChanged").emit([ticket,user,channel,oldPriority,newPriority])
|
||||
|
||||
//update channel topic
|
||||
await opendiscord.actions.get("opendiscord:update-ticket-topic").run("ticket-action",{guild,channel,user,ticket,sendMessage:false,newTopic:null})
|
||||
}),
|
||||
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
}),
|
||||
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket,newPriority} = params
|
||||
|
||||
opendiscord.log(user.displayName+" changed the priority of a ticket!","info",[
|
||||
{key:"user",value:user.username},
|
||||
{key:"userid",value:user.id,hidden:true},
|
||||
{key:"channel",value:"#"+channel.name},
|
||||
{key:"channelid",value:channel.id,hidden:true},
|
||||
{key:"priority",value:newPriority.id.value},
|
||||
{key:"method",value:source}
|
||||
])
|
||||
})
|
||||
])
|
||||
}
|
||||
@@ -13,6 +13,9 @@ export const registerActions = async () => {
|
||||
const {guild,channel,user,ticket,newTopic} = params
|
||||
if (channel.isThread() || !(channel instanceof discord.TextChannel)) throw new api.ODSystemError("Unable to set topic of ticket! Open Ticket doesn't support threads!")
|
||||
|
||||
const oldTopic = ticket.get("opendiscord:topic").value
|
||||
if (newTopic) await opendiscord.events.get("onTicketTopicChange").emit([ticket,user,channel,oldTopic,newTopic])
|
||||
|
||||
//update ticket
|
||||
ticket.get("opendiscord:busy").value = true
|
||||
if (newTopic) ticket.get("opendiscord:topic").value = newTopic
|
||||
@@ -27,7 +30,7 @@ export const registerActions = async () => {
|
||||
if (generalConfig.data.system.channelTopic.showOptionName) channelTopics.push(ticket.option.get("opendiscord:name").value)
|
||||
if (generalConfig.data.system.channelTopic.showOptionDescription) channelTopics.push(ticket.option.get("opendiscord:description").value)
|
||||
if (generalConfig.data.system.channelTopic.showOptionTopic) channelTopics.push(ticket.get("opendiscord:topic").value)
|
||||
if (generalConfig.data.system.channelTopic.showPriority) channelTopics.push("**Priority:** "+opendiscord.priorities.get("opendiscord:none").renderDisplayName()) //TODO TRANSLATION!!!
|
||||
if (generalConfig.data.system.channelTopic.showPriority) channelTopics.push("**Priority:** "+opendiscord.priorities.getFromPriorityLevel(ticket.get("opendiscord:priority").value).renderDisplayName()) //TODO TRANSLATION!!!
|
||||
if (generalConfig.data.system.channelTopic.showClosed) channelTopics.push("**Status:** "+(closed ? "Closed" : "Opened")) //TODO TRANSLATION!!!
|
||||
if (generalConfig.data.system.channelTopic.showClaimed) channelTopics.push("**Claimed By:** "+(claimedBy ? discord.userMention(claimedBy) : "No-one")) //TODO TRANSLATION!!!
|
||||
if (generalConfig.data.system.channelTopic.showPinned) channelTopics.push("**Pinned:** "+(pinned ? "Yes" : "No")) //TODO TRANSLATION!!!
|
||||
@@ -40,6 +43,7 @@ export const registerActions = async () => {
|
||||
//reply with new message
|
||||
if (params.sendMessage && newTopic) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:topic-set").build(source,{guild,channel,user,ticket,topic:newTopic})).message)
|
||||
ticket.get("opendiscord:busy").value = false
|
||||
if (newTopic) await opendiscord.events.get("afterTicketTopicChanged").emit([ticket,user,channel,oldTopic,newTopic])
|
||||
}),
|
||||
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user,ticket} = params
|
||||
|
||||
@@ -330,7 +330,7 @@ const errorEmbeds = () => {
|
||||
new api.ODWorker("opendiscord:error-channel-rename",0,async (instance,params,source) => {
|
||||
const {channel,user,originalName,newName} = params
|
||||
|
||||
const method = (source == "ticket-move" || source == "ticket-pin" || source == "ticket-rename" || source == "ticket-unpin") ? source : getMethodFromSource(source)
|
||||
const method = (source == "ticket-move" || source == "ticket-pin" || source == "ticket-rename" || source == "ticket-unpin" || source == "ticket-priority") ? source : getMethodFromSource(source)
|
||||
|
||||
instance.setColor(generalConfig.data.system.useRedErrorEmbeds ? "Red" : generalConfig.data.mainColor)
|
||||
instance.setTitle(utilities.emojiTitle("❌",lang.getTranslation("errors.titles.channelRename")))
|
||||
@@ -1349,7 +1349,7 @@ const extraEmbeds = () => {
|
||||
|
||||
instance.setAuthor(user.displayName,user.displayAvatarURL())
|
||||
instance.setColor(generalConfig.data.mainColor)
|
||||
instance.setTitle(utilities.emojiTitle("🚨","Priority Changed")) //TODO TRANSLATION!!!
|
||||
instance.setTitle(utilities.emojiTitle("🚨","Ticket Priority")) //TODO TRANSLATION!!!
|
||||
instance.setDescription("The current priority of this ticket is **"+priority.renderDisplayName()+"**!") //TODO TRANSLATION!!!
|
||||
})
|
||||
)
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
///////////////////////////////////////
|
||||
//PRIORITY COMMAND
|
||||
///////////////////////////////////////
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = opendiscord.configs.get("opendiscord:general")
|
||||
|
||||
export const registerCommandResponders = async () => {
|
||||
//PRIORITY COMMAND RESPONDER
|
||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:priority",generalConfig.data.prefix,"priority"))
|
||||
opendiscord.responders.commands.get("opendiscord:priority").workers.add([
|
||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
||||
const permissionMode = generalConfig.data.system.permissions.priority
|
||||
|
||||
if (permissionMode == "none"){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord: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 (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||
//no permissions
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord: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 opendiscord.builders.messages.getSafe("opendiscord: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 opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
||||
if (!role){
|
||||
//error
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord: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 opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||
return cancel()
|
||||
}else return
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:priority",0,async (instance,params,source,cancel) => {
|
||||
const {guild,channel,user} = instance
|
||||
if (!guild){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
const ticket = opendiscord.tickets.get(channel.id)
|
||||
if (!ticket || channel.isDMBased()){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
//return when busy
|
||||
if (ticket.get("opendiscord:busy").value){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
const scope = instance.options.getSubCommand()
|
||||
if (!scope || (scope != "set" && scope != "get")) return
|
||||
|
||||
if (scope == "set"){
|
||||
const priorityName = instance.options.getString("priority",true)
|
||||
const reason = instance.options.getString("reason",false)
|
||||
|
||||
const priority = opendiscord.priorities.getAll().find((lvl) => lvl.rawName === priorityName) ?? null
|
||||
if (!priority){
|
||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:"Please provide a valid priority level.",customTitle:"Unknown Priority Level"}))
|
||||
return cancel()
|
||||
}
|
||||
|
||||
//start changing ticket priority
|
||||
await instance.defer(false)
|
||||
await opendiscord.actions.get("opendiscord:update-ticket-priority").run(source,{guild,channel,user,ticket,newPriority:priority,sendMessage:false,reason})
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:priority-set").build(source,{guild,channel,user,ticket,priority,reason}))
|
||||
|
||||
}else if (scope == "get"){
|
||||
const priority = opendiscord.priorities.getFromPriorityLevel(ticket.get("opendiscord:priority").value)
|
||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:priority-get").build(source,{guild,channel,user,ticket,priority}))
|
||||
}
|
||||
}),
|
||||
new api.ODWorker("opendiscord:logs",-1,(instance,params,source,cancel) => {
|
||||
const scope = instance.options.getSubCommand()
|
||||
opendiscord.log(instance.user.displayName+" used the 'priority "+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},
|
||||
{key:"method",value:source}
|
||||
])
|
||||
})
|
||||
])
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import { ODTicket, ODTicketClearFilter } from "../openticket/ticket"
|
||||
import { ODTranscriptCompiler, ODTranscriptCompilerCompileResult } from "../openticket/transcript"
|
||||
import { ODMessageBuildSentResult } from "../modules/builder"
|
||||
import { ODRole, ODRoleUpdateMode, ODRoleUpdateResult } from "../openticket/role"
|
||||
import { ODPriorityLevel } from "../openticket/priority"
|
||||
|
||||
/**## ODActionManagerIds_Default `interface`
|
||||
* This interface is a list of ids available in the `ODActionManager_Default` class.
|
||||
@@ -118,6 +119,12 @@ export interface ODActionManagerIds_Default {
|
||||
result:{},
|
||||
workers:"opendiscord:update-ticket-topic"|"opendiscord:discord-logs"|"opendiscord:logs"
|
||||
},
|
||||
"opendiscord:update-ticket-priority":{
|
||||
source:"slash"|"text"|"other",
|
||||
params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,newPriority:ODPriorityLevel,reason:string|null,sendMessage:boolean},
|
||||
result:{},
|
||||
workers:"opendiscord:update-ticket-priority"|"opendiscord:discord-logs"|"opendiscord:logs"
|
||||
},
|
||||
}
|
||||
|
||||
/**## ODActionManager_Default `default_class`
|
||||
|
||||
@@ -239,7 +239,7 @@ export interface ODEmbedManagerIds_Default {
|
||||
"opendiscord:error-option-unknown":{source:"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":{source:"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":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-not-in-guild"},
|
||||
"opendiscord:error-channel-rename":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-pin"|"ticket-unpin"|"ticket-rename"|"ticket-move"|"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":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-pin"|"ticket-unpin"|"ticket-rename"|"ticket-move"|"ticket-priority"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,originalName:string,newName:string},workers:"opendiscord:error-channel-rename"},
|
||||
"opendiscord:error-ticket-busy":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-ticket-busy"},
|
||||
|
||||
"opendiscord:help-menu":{source:"text"|"slash"|"button"|"other",params:{mode:"slash"|"text",page:number},workers:"opendiscord:help-menu"},
|
||||
@@ -375,7 +375,7 @@ export interface ODMessageManagerIds_Default {
|
||||
"opendiscord:error-option-unknown":{source:"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":{source:"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":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-not-in-guild"},
|
||||
"opendiscord:error-channel-rename":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-pin"|"ticket-unpin"|"ticket-rename"|"ticket-move"|"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":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"ticket-pin"|"ticket-unpin"|"ticket-rename"|"ticket-move"|"ticket-priority"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,originalName:string,newName:string},workers:"opendiscord:error-channel-rename"},
|
||||
"opendiscord:error-ticket-busy":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:error-ticket-busy"},
|
||||
|
||||
"opendiscord:help-menu":{source:"slash"|"text"|"button"|"other",params:{mode:"slash"|"text",page:number},workers:"opendiscord:help-menu"},
|
||||
|
||||
@@ -42,7 +42,7 @@ import { ODQuestionManager } from "../openticket/question"
|
||||
import { ODBlacklistManager } from "../openticket/blacklist"
|
||||
import { ODTranscriptManager_Default } from "../openticket/transcript"
|
||||
import { ODRole, ODRoleManager } from "../openticket/role"
|
||||
import { ODPriorityManager_Default } from "../openticket/priority"
|
||||
import { ODPriorityLevel, ODPriorityManager_Default } from "../openticket/priority"
|
||||
|
||||
/**## ODEventIds_Default `interface`
|
||||
* This interface is a list of ids available in the `ODEvent_Default` class.
|
||||
@@ -202,6 +202,10 @@ export interface ODEventIds_Default {
|
||||
"afterTicketRenamed": ODEvent_Default<(ticket:ODTicket, renamer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => ODPromiseVoid>
|
||||
"onTicketsClear": ODEvent_Default<(tickets:ODTicket[], clearer:discord.User, channel:discord.GuildTextBasedChannel, filter:ODTicketClearFilter) => ODPromiseVoid>
|
||||
"afterTicketsCleared": ODEvent_Default<(tickets:ODTicket[], clearer:discord.User, channel:discord.GuildTextBasedChannel, filter:ODTicketClearFilter) => ODPromiseVoid>
|
||||
"onTicketTopicChange": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldTopic:string, newTopic:string) => ODPromiseVoid>
|
||||
"afterTicketTopicChanged": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldTopic:string, newTopic:string) => ODPromiseVoid>
|
||||
"onTicketPriorityChange": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldPriority:ODPriorityLevel, newPriority:ODPriorityLevel) => ODPromiseVoid>
|
||||
"afterTicketPriorityChanged": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldPriority:ODPriorityLevel, newPriority:ODPriorityLevel) => ODPromiseVoid>
|
||||
|
||||
//roles
|
||||
"onRoleLoad": ODEvent_Default<(roles:ODRoleManager) => ODPromiseVoid>
|
||||
|
||||
@@ -45,6 +45,7 @@ export interface ODCommandResponderManagerIds_Default {
|
||||
"opendiscord:remove":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:remove"|"opendiscord:logs"},
|
||||
"opendiscord:clear":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:clear"|"opendiscord:logs"},
|
||||
"opendiscord:topic":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:topic"|"opendiscord:logs"},
|
||||
"opendiscord:priority":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:priority"|"opendiscord:logs"},
|
||||
|
||||
"opendiscord:autoclose":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:autoclose"|"opendiscord:logs"},
|
||||
"opendiscord:autodelete":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:autodelete"|"opendiscord:logs"},
|
||||
|
||||
@@ -20,6 +20,15 @@ export class ODPriorityManager extends ODManager<ODPriorityLevel> {
|
||||
super(debug,"priority")
|
||||
this.#debug = debug
|
||||
}
|
||||
|
||||
/**Get an `ODPriorityLevel` from the priority level value. Returns a dummy value when the level doesn't exist. */
|
||||
getFromPriorityLevel(level:number){
|
||||
return this.getAll().find((lvl) => lvl.priority === level) ?? new ODPriorityLevel("opendiscord:unknown",0,"unknown","UNKNOWN_PRIORITY","🚫","🚫")
|
||||
}
|
||||
/**List the available priority levels. */
|
||||
listAvailableLevels(){
|
||||
return this.getAll().map((lvl) => lvl.priority)
|
||||
}
|
||||
}
|
||||
|
||||
/**## ODPriorityManagerIds `type`
|
||||
|
||||
@@ -122,6 +122,10 @@ export interface ODUtilities {
|
||||
* Get a human readable ordinal number (e.g. 1st, 2nd, 3rd, 4th, ...) from a Javascript number.
|
||||
*/
|
||||
ordinalNumber(num:number): string,
|
||||
/**## trimEmojis `utility function`
|
||||
* Trim/remove all emoji's from a Javascript string.
|
||||
*/
|
||||
trimEmojis(text:string): string,
|
||||
}
|
||||
|
||||
/**## ODVersionMigration `utility class`
|
||||
@@ -268,5 +272,8 @@ export const utilities: ODUtilities = {
|
||||
if (dec === 2) return i+'nd'
|
||||
if (dec === 3) return i+'rd'
|
||||
return i+'th'
|
||||
}
|
||||
},
|
||||
trimEmojis(text){
|
||||
return text.replace(/(\p{Extended_Pictographic}(?:\uFE0F|\uFE0E)?(?:\u200D\p{Extended_Pictographic}(?:\uFE0F|\uFE0E)?)*)/gu,"")
|
||||
},
|
||||
}
|
||||
@@ -155,6 +155,10 @@ export const loadAllEvents = () => {
|
||||
"afterTicketRenamed",
|
||||
"onTicketsClear",
|
||||
"afterTicketsCleared",
|
||||
"onTicketTopicChange",
|
||||
"afterTicketTopicChanged",
|
||||
"onTicketPriorityChange",
|
||||
"afterTicketPriorityChanged",
|
||||
|
||||
//roles
|
||||
"onRoleLoad",
|
||||
|
||||
@@ -672,6 +672,7 @@ const main = async () => {
|
||||
await (await import("./commands/autoclose.js")).registerCommandResponders()
|
||||
await (await import("./commands/autodelete.js")).registerCommandResponders()
|
||||
await (await import("./commands/topic.js")).registerCommandResponders()
|
||||
await (await import("./commands/priority.js")).registerCommandResponders()
|
||||
}
|
||||
await opendiscord.events.get("onCommandResponderLoad").emit([opendiscord.responders.commands,opendiscord.responders,opendiscord.actions])
|
||||
await opendiscord.events.get("afterCommandRespondersLoaded").emit([opendiscord.responders.commands,opendiscord.responders,opendiscord.actions])
|
||||
@@ -759,6 +760,7 @@ const main = async () => {
|
||||
await (await import("./actions/reactionRole.js")).registerActions()
|
||||
await (await import("./actions/clearTickets.js")).registerActions()
|
||||
await (await import("./actions/updateTicketTopic.js")).registerActions()
|
||||
await (await import("./actions/updateTicketPriority.js")).registerActions()
|
||||
}
|
||||
await opendiscord.events.get("onActionLoad").emit([opendiscord.actions])
|
||||
await opendiscord.events.get("afterActionsLoaded").emit([opendiscord.actions])
|
||||
|
||||
Reference in New Issue
Block a user