Added priority system (Part 1, Incomplete)
This commit is contained in:
+2
-1
@@ -60,4 +60,5 @@ export * from "./openticket/panel"
|
||||
export * from "./openticket/ticket"
|
||||
export * from "./openticket/blacklist"
|
||||
export * from "./openticket/transcript"
|
||||
export * from "./openticket/role"
|
||||
export * from "./openticket/role"
|
||||
export * from "./openticket/priority"
|
||||
@@ -13,6 +13,7 @@ import { ODVerifyBar } from "../modules/verifybar"
|
||||
import * as discord from "discord.js"
|
||||
import { ODTranscriptCompiler, ODTranscriptCompilerCompileResult } from "../openticket/transcript"
|
||||
import { ODRole, ODRoleUpdateResult } from "../openticket/role"
|
||||
import { ODPriority } from "../openticket/priority"
|
||||
|
||||
/**## ODBuilderManager_Default `default_class`
|
||||
* This is a special class that adds type definitions & typescript to the ODBuilderManager class.
|
||||
@@ -294,6 +295,8 @@ export interface ODEmbedManagerIds_Default {
|
||||
"opendiscord:autodelete-enable":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,time:number,reason:string|null},workers:"opendiscord:autodelete-enable"},
|
||||
"opendiscord:autoclose-disable":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null},workers:"opendiscord:autoclose-disable"},
|
||||
"opendiscord:autodelete-disable":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null},workers:"opendiscord:autodelete-disable"},
|
||||
"opendiscord:priority-set":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,priority:ODPriority,reason:string|null},workers:"opendiscord:priority-set"},
|
||||
"opendiscord:priority-get":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,priority:ODPriority},workers:"opendiscord:priority-get"},
|
||||
}
|
||||
|
||||
/**## ODEmbedManager_Default `default_class`
|
||||
@@ -428,6 +431,8 @@ export interface ODMessageManagerIds_Default {
|
||||
"opendiscord:autodelete-enable":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,time:number,reason:string|null},workers:"opendiscord:autodelete-enable"},
|
||||
"opendiscord:autoclose-disable":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null},workers:"opendiscord:autoclose-disable"},
|
||||
"opendiscord:autodelete-disable":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null},workers:"opendiscord:autodelete-disable"},
|
||||
"opendiscord:priority-set":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,priority:ODPriority,reason:string|null},workers:"opendiscord:priority-set"},
|
||||
"opendiscord:priority-get":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,priority:ODPriority},workers:"opendiscord:priority-get"},
|
||||
}
|
||||
|
||||
/**## ODMessageManager_Default `default_class`
|
||||
|
||||
@@ -50,6 +50,7 @@ export interface ODSlashCommandManagerIds_Default {
|
||||
"opendiscord:clear":ODSlashCommand,
|
||||
"opendiscord:autoclose":ODSlashCommand,
|
||||
"opendiscord:autodelete":ODSlashCommand,
|
||||
"opendiscord:priority":ODSlashCommand,
|
||||
}
|
||||
|
||||
/**## ODSlashCommandManager_Default `default_class`
|
||||
@@ -119,7 +120,9 @@ export interface ODTextCommandManagerIds_Default {
|
||||
"opendiscord:autoclose-disable":ODTextCommand,
|
||||
"opendiscord:autoclose-enable":ODTextCommand,
|
||||
"opendiscord:autodelete-disable":ODTextCommand,
|
||||
"opendiscord:autodelete-enable":ODTextCommand
|
||||
"opendiscord:autodelete-enable":ODTextCommand,
|
||||
"opendiscord:priority-set":ODTextCommand,
|
||||
"opendiscord:priority-get":ODTextCommand,
|
||||
}
|
||||
|
||||
/**## ODTextCommandManager_Default `default_class`
|
||||
|
||||
@@ -42,6 +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"
|
||||
|
||||
/**## ODEventIds_Default `interface`
|
||||
* This interface is a list of ids available in the `ODEvent_Default` class.
|
||||
@@ -122,6 +123,10 @@ export interface ODEventIds_Default {
|
||||
"onClientActivityInit": ODEvent_Default<(activity:ODClientActivityManager, client:ODClientManager_Default) => ODPromiseVoid>
|
||||
"afterClientActivityInitiated": ODEvent_Default<(activity:ODClientActivityManager, client:ODClientManager_Default) => ODPromiseVoid>
|
||||
|
||||
//priority levels
|
||||
"onPriorityLoad": ODEvent_Default<(priorities:ODPriorityManager_Default) => ODPromiseVoid>
|
||||
"afterPrioritiesLoaded": ODEvent_Default<(priorities:ODPriorityManager_Default) => ODPromiseVoid>
|
||||
|
||||
//client slash commands
|
||||
"onSlashCommandLoad": ODEvent_Default<(slash:ODSlashCommandManager_Default, client:ODClientManager_Default) => ODPromiseVoid>
|
||||
"afterSlashCommandsLoaded": ODEvent_Default<(slash:ODSlashCommandManager_Default, client:ODClientManager_Default) => ODPromiseVoid>
|
||||
|
||||
@@ -37,6 +37,7 @@ import { ODQuestionManager } from "./openticket/question"
|
||||
import { ODBlacklistManager } from "./openticket/blacklist"
|
||||
import { ODTranscriptManager_Default } from "./openticket/transcript"
|
||||
import { ODRoleManager } from "./openticket/role"
|
||||
import { ODPriorityManager_Default } from "./openticket/priority"
|
||||
|
||||
/**## ODMain `class`
|
||||
* This is the main Open Ticket class.
|
||||
@@ -127,6 +128,8 @@ export class ODMain {
|
||||
transcripts: ODTranscriptManager_Default
|
||||
/**The manager that manages all reaction roles in the bot. (here, you can add additional data to roles) */
|
||||
roles: ODRoleManager
|
||||
/**The manager that manages all priority levels in the bot. (register/edit ticket priority levels) */
|
||||
priorities: ODPriorityManager_Default
|
||||
|
||||
constructor(){
|
||||
this.versions = new ODVersionManager_Default()
|
||||
@@ -175,6 +178,7 @@ export class ODMain {
|
||||
this.blacklist = new ODBlacklistManager(this.debug)
|
||||
this.transcripts = new ODTranscriptManager_Default(this.debug,this.tickets,this.client)
|
||||
this.roles = new ODRoleManager(this.debug)
|
||||
this.priorities = new ODPriorityManager_Default(this.debug)
|
||||
}
|
||||
|
||||
/**Log a message to the console. But in the Open Ticket style :) */
|
||||
|
||||
@@ -83,6 +83,9 @@ export interface ODDefaults {
|
||||
/**Load the default Open Ticket client activity initialization (& status refresh). */
|
||||
clientActivityInitiating:boolean,
|
||||
|
||||
/**Load the default Open Ticket priority levels. */
|
||||
priorityLoading:boolean,
|
||||
|
||||
/**Load the default Open Ticket slash commands. */
|
||||
slashCommandLoading:boolean,
|
||||
/**Load the default Open Ticket slash command registerer (register slash cmds in discord). */
|
||||
@@ -284,6 +287,8 @@ export class ODDefaultsManager {
|
||||
clientMultiGuildWarning:true,
|
||||
clientActivityLoading:true,
|
||||
clientActivityInitiating:true,
|
||||
|
||||
priorityLoading:true,
|
||||
|
||||
slashCommandLoading:true,
|
||||
slashCommandRegistering:true,
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
///////////////////////////////////////
|
||||
//OPENTICKET PRIORITY MODULE
|
||||
///////////////////////////////////////
|
||||
import { ODId, ODManager, ODValidJsonType, ODValidId, ODVersion, ODManagerData } from "../modules/base"
|
||||
import { ODDebugger } from "../modules/console"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
/**## ODPriorityManager `class`
|
||||
* This is an Open Ticket priority manager.
|
||||
*
|
||||
* This class manages all registered priority levels in the bot.
|
||||
*
|
||||
* Priorities levels can be changed/updated/translated by plugins to allow for more customisability.
|
||||
*/
|
||||
export class ODPriorityManager extends ODManager<ODPriority> {
|
||||
/**A reference to the Open Ticket debugger. */
|
||||
#debug: ODDebugger
|
||||
|
||||
constructor(debug:ODDebugger){
|
||||
super(debug,"priority")
|
||||
this.#debug = debug
|
||||
}
|
||||
}
|
||||
|
||||
/**## ODPriorityIds `type`
|
||||
* This interface is a list of ids available in the `ODPriorityManager` class.
|
||||
* It's used to generate typescript declarations for this class.
|
||||
*/
|
||||
export interface ODPriorityIds {
|
||||
"opendiscord:urgent":ODPriority,
|
||||
"opendiscord:very-high":ODPriority,
|
||||
"opendiscord:high":ODPriority,
|
||||
"opendiscord:normal":ODPriority,
|
||||
"opendiscord:low":ODPriority,
|
||||
"opendiscord:very-low":ODPriority,
|
||||
"opendiscord:none":ODPriority,
|
||||
}
|
||||
|
||||
/**## ODPriorityManager_Default `default_class`
|
||||
* This is a special class that adds type definitions & typescript to the ODPriorityManager class.
|
||||
* It doesn't add any extra features!
|
||||
*
|
||||
* This default class is made for the global variable `opendiscord.priorities`!
|
||||
*/
|
||||
export class ODPriorityManager_Default extends ODPriorityManager {
|
||||
get<PriorityId extends keyof ODPriorityIds>(id:PriorityId): ODPriorityIds[PriorityId]
|
||||
get(id:ODValidId): ODPriority|null
|
||||
|
||||
get(id:ODValidId): ODPriority|null {
|
||||
return super.get(id)
|
||||
}
|
||||
|
||||
remove<PriorityId extends keyof ODPriorityIds>(id:PriorityId): ODPriorityIds[PriorityId]
|
||||
remove(id:ODValidId): ODPriority|null
|
||||
|
||||
remove(id:ODValidId): ODPriority|null {
|
||||
return super.remove(id)
|
||||
}
|
||||
|
||||
exists(id:keyof ODPriorityIds): boolean
|
||||
exists(id:ODValidId): boolean
|
||||
|
||||
exists(id:ODValidId): boolean {
|
||||
return super.exists(id)
|
||||
}
|
||||
}
|
||||
|
||||
/**## ODPriority `class`
|
||||
* This is an Open Ticket priority level.
|
||||
*
|
||||
* Using this class, you can register or edit a priority level for the ticket priority system.
|
||||
*
|
||||
* Priority levels should be registered in `opendiscord.priorities`.
|
||||
*
|
||||
* #### 🚨 Negative priorities are treated as `disabled/no-priority`!
|
||||
*/
|
||||
export class ODPriority extends ODManagerData {
|
||||
/**The priority level itself. A negative number (e.g. `-1`) is treated as `disabled/no-priority`. */
|
||||
priority:number
|
||||
/**The raw name of the level (used in text/slash command inputs). */
|
||||
rawName:string
|
||||
/**The display name of the level (used in embeds & messages). */
|
||||
displayName:string
|
||||
/**The display emoji of the level (used in embeds & messages). */
|
||||
displayEmoji:string|null
|
||||
/**The emoji added to the channel name when the level is applied to a ticket. */
|
||||
channelEmoji:string|null
|
||||
|
||||
constructor(id:ODValidId,priority:number,rawName:string,displayName:string,displayEmoji:string|null,channelEmoji:string|null){
|
||||
super(id)
|
||||
this.priority = priority
|
||||
this.rawName = rawName
|
||||
this.displayName = displayName
|
||||
this.displayEmoji = displayEmoji
|
||||
this.channelEmoji = channelEmoji
|
||||
}
|
||||
/**Get the display name + emoji for rendering this priority in the UI/embeds. */
|
||||
renderDisplayName(){
|
||||
return (this.displayEmoji ? this.displayEmoji+" " : "")+this.displayName
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user