Files
open-ticket/src/core/api/modules/defaults.ts
T
2025-04-05 22:18:45 +02:00

343 lines
14 KiB
TypeScript

///////////////////////////////////////
//DEFAULTS MODULE
///////////////////////////////////////
/**## ODDefaults `interface`
* This type is a list of all defaults available in the `ODDefaultsManager` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODDefaults {
/**Enable the default error handling system. */
errorHandling:boolean,
/**Crash when there is an unknown bot error. */
crashOnError:boolean,
/**Enable the system responsible for the `--debug` flag. */
debugLoading:boolean,
/**Enable the system responsible for the `--silent` flag. */
silentLoading:boolean,
/**When enabled, you're able to use the "!OPENTICKET:dump" command to send the OT debug file. This is only possible when you're the owner of the bot. */
allowDumpCommand:boolean,
/**Enable loading all Open Ticket plugins, sadly enough is only useful for the system :) */
pluginLoading:boolean,
/**Don't crash the bot when a plugin crashes! */
softPluginLoading:boolean,
/**Load the default Open Ticket plugin classes. */
pluginClassLoading:boolean,
/**Load the default Open Ticket flags. */
flagLoading:boolean,
/**Enable the default initializer for Open Ticket flags. */
flagInitiating:boolean,
/**Load the default Open Ticket progress bar renderers. */
progressBarRendererLoading:boolean,
/**Load the default Open Ticket progress bars. */
progressBarLoading:boolean,
/**Load the default Open Ticket configs. */
configLoading:boolean,
/**Enable the default initializer for Open Ticket config. */
configInitiating:boolean,
/**Load the default Open Ticket databases. */
databaseLoading:boolean,
/**Enable the default initializer for Open Ticket database. */
databaseInitiating:boolean,
/**Load the default Open Ticket sessions. */
sessionLoading:boolean,
/**Load the default Open Ticket languages. */
languageLoading:boolean,
/**Enable the default initializer for Open Ticket languages. */
languageInitiating:boolean,
/**Enable selecting the current language from `config/general.json`. */
languageSelection:boolean,
/**Set the backup language when the primary language is missing a property. */
backupLanguage:string,
/****[NOT FOR PLUGIN TRANSLATIONS]** The full list of available languages (used in the default config checker). */
languageList:string[],
/**Load the default Open Ticket config checker. */
checkerLoading:boolean,
/**Load the default Open Ticket config checker functions. */
checkerFunctionLoading:boolean,
/**Enable the default execution of the config checkers. */
checkerExecution:boolean,
/**Load the default Open Ticket config checker translations. */
checkerTranslationLoading:boolean,
/**Enable the default rendering of the config checkers. */
checkerRendering:boolean,
/**Enable the default quit action when there is an error in the config checker. */
checkerQuit:boolean,
/**Render the checker even when there are no errors & warnings. */
checkerRenderEmpty:boolean,
/**Load the default Open Ticket client configuration. */
clientLoading:boolean,
/**Load the default Open Ticket client initialization. */
clientInitiating:boolean,
/**Load the default Open Ticket client ready actions (status, commands, permissions, ...). */
clientReady:boolean,
/**Create a warning when the bot is present in multiple guilds. */
clientMultiGuildWarning:boolean,
/**Load the default Open Ticket client activity (from `config/general.json`). */
clientActivityLoading:boolean,
/**Load the default Open Ticket client activity initialization (& status refresh). */
clientActivityInitiating:boolean,
/**Load the default Open Ticket slash commands. */
slashCommandLoading:boolean,
/**Load the default Open Ticket slash command registerer (register slash cmds in discord). */
slashCommandRegistering:boolean,
/**When enabled, the bot is forced to re-register all slash commands in the server. This can be used in case of a auto-update malfunction. */
forceSlashCommandRegistration:boolean,
/**When enabled, the bot is allowed to unregister all slash commands which aren't used in Open Ticket. Disable this if you don't want to use the Open Ticket `ODSlashCommand` classes. */
allowSlashCommandRemoval:boolean,
/**Load the default Open Ticket text commands. */
textCommandLoading:boolean,
/**Load the default Open Ticket questions (from `config/questions.json`) */
questionLoading:boolean,
/**Load the default Open Ticket options (from `config/options.json`) */
optionLoading:boolean,
/**Load the default Open Ticket panels (from `config/panels.json`) */
panelLoading:boolean,
/**Load the default Open Ticket tickets (from `database/tickets.json`) */
ticketLoading:boolean,
/**Load the default Open Ticket reaction roles (from `config/options.json`) */
roleLoading:boolean,
/**Load the default Open Ticket blacklist (from `database/users.json`) */
blacklistLoading:boolean,
/**Load the default Open Ticket transcript compilers. */
transcriptCompilerLoading:boolean,
/**Load the default Open Ticket transcript history (from `database/transcripts.json`) */
transcriptHistoryLoading:boolean,
/**Load the default Open Ticket button builders. */
buttonBuildersLoading:boolean,
/**Load the default Open Ticket dropdown builders. */
dropdownBuildersLoading:boolean,
/**Load the default Open Ticket file builders. */
fileBuildersLoading:boolean,
/**Load the default Open Ticket embed builders. */
embedBuildersLoading:boolean,
/**Load the default Open Ticket message builders. */
messageBuildersLoading:boolean,
/**Load the default Open Ticket modal builders. */
modalBuildersLoading:boolean,
/**Load the default Open Ticket command responders. */
commandRespondersLoading:boolean,
/**Load the default Open Ticket button responders. */
buttonRespondersLoading:boolean,
/**Load the default Open Ticket dropdown responders. */
dropdownRespondersLoading:boolean,
/**Load the default Open Ticket modal responders. */
modalRespondersLoading:boolean,
/**Set the time (in ms) before Open Ticket sends an error message when no reply is sent in a responder. */
responderTimeoutMs:number,
/**Load the default Open Ticket actions. */
actionsLoading:boolean,
/**Load the default Open Ticket verify bars. */
verifyBarsLoading:boolean,
/**Load the default Open Ticket permissions. */
permissionsLoading:boolean,
/**Load the default Open Ticket posts. */
postsLoading:boolean,
/**Initiate the default Open Ticket posts. */
postsInitiating:boolean,
/**Load the default Open Ticket cooldowns. */
cooldownsLoading:boolean,
/**Initiate the default Open Ticket cooldowns. */
cooldownsInitiating:boolean,
/**Load the default Open Ticket help menu categories. */
helpMenuCategoryLoading:boolean,
/**Load the default Open Ticket help menu components. */
helpMenuComponentLoading:boolean,
/**Load the default Open Ticket stat scopes. */
statScopesLoading:boolean,
/**Load the default Open Ticket stats. */
statLoading:boolean,
/**Initiate the default Open Ticket stats. */
statInitiating:boolean,
/**Load the default Open Ticket code/functions. */
codeLoading:boolean,
/**Execute the default Open Ticket code/functions. */
codeExecution:boolean,
/**Load the default Open Ticket livestatus. */
liveStatusLoading:boolean,
/**Load the default Open Ticket startscreen. */
startScreenLoading:boolean,
/**Render the default Open Ticket startscreen. */
startScreenRendering:boolean,
/**Load the emoji style from the Open Ticket general config. */
emojiTitleStyleLoading:boolean,
/**The emoji style to use in embed & message titles using `utilities.emoijTitle()` */
emojiTitleStyle:"disabled"|"before"|"after"|"double",
/**The emoji divider to use in embed & message titles using `utilities.emoijTitle()` */
emojiTitleDivider:string
/**The interval in milliseconds that are between autoclose timeout checkers. */
autocloseCheckInterval:number
/**The interval in milliseconds that are between autodelete timeout checkers. */
autodeleteCheckInterval:number
}
/**## ODDefaultsBooleans `type`
* This type is a list of boolean defaults available in the `ODDefaultsManager` class.
* It's used to generate typescript declarations for this class.
*/
export type ODDefaultsBooleans = {
[Key in keyof ODDefaults]: ODDefaults[Key] extends boolean ? Key : never
}[keyof ODDefaults]
/**## ODDefaultsStrings `type`
* This type is a list of string defaults available in the `ODDefaultsManager` class.
* It's used to generate typescript declarations for this class.
*/
export type ODDefaultsStrings = {
[Key in keyof ODDefaults]: ODDefaults[Key] extends string ? Key : never
}[keyof ODDefaults]
/**## ODDefaultsNumbers `type`
* This type is a list of number defaults available in the `ODDefaultsManager` class.
* It's used to generate typescript declarations for this class.
*/
export type ODDefaultsNumbers = {
[Key in keyof ODDefaults]: ODDefaults[Key] extends number ? Key : never
}[keyof ODDefaults]
/**## ODDefaultsStringArray `type`
* This type is a list of string[] defaults available in the `ODDefaultsManager` class.
* It's used to generate typescript declarations for this class.
*/
export type ODDefaultsStringArray = {
[Key in keyof ODDefaults]: ODDefaults[Key] extends string[] ? Key : never
}[keyof ODDefaults]
/**## ODDefaultsManager `class`
* This is an Open Ticket defaults manager.
*
* It manages all settings in Open Ticket that are not meant to be in the config.
* Here you can disable certain default features to replace them or to specifically enable them!
*
* You are unable to add your own defaults, you can only edit Open Ticket defaults!
*/
export class ODDefaultsManager {
/**A list of all the defaults */
#defaults: ODDefaults
constructor(){
this.#defaults = {
errorHandling:true,
crashOnError:false,
debugLoading:true,
silentLoading:true,
allowDumpCommand:true,
pluginLoading:true,
softPluginLoading:false,
pluginClassLoading:true,
flagLoading:true,
flagInitiating:true,
progressBarRendererLoading:true,
progressBarLoading:true,
configLoading:true,
configInitiating:true,
databaseLoading:true,
databaseInitiating:true,
sessionLoading:true,
languageLoading:true,
languageInitiating:true,
languageSelection:true,
backupLanguage:"opendiscord:english",
languageList:[],
checkerLoading:true,
checkerFunctionLoading:true,
checkerExecution:true,
checkerTranslationLoading:true,
checkerRendering:true,
checkerQuit:true,
checkerRenderEmpty:false,
clientLoading:true,
clientInitiating:true,
clientReady:true,
clientMultiGuildWarning:true,
clientActivityLoading:true,
clientActivityInitiating:true,
slashCommandLoading:true,
slashCommandRegistering:true,
forceSlashCommandRegistration:false,
allowSlashCommandRemoval:true,
textCommandLoading:true,
questionLoading:true,
optionLoading:true,
panelLoading:true,
ticketLoading:true,
roleLoading:true,
blacklistLoading:true,
transcriptCompilerLoading:true,
transcriptHistoryLoading:true,
buttonBuildersLoading:true,
dropdownBuildersLoading:true,
fileBuildersLoading:true,
embedBuildersLoading:true,
messageBuildersLoading:true,
modalBuildersLoading:true,
commandRespondersLoading:true,
buttonRespondersLoading:true,
dropdownRespondersLoading:true,
modalRespondersLoading:true,
responderTimeoutMs:2500,
actionsLoading:true,
verifyBarsLoading:true,
permissionsLoading:true,
postsLoading:true,
postsInitiating:true,
cooldownsLoading:true,
cooldownsInitiating:true,
helpMenuCategoryLoading:true,
helpMenuComponentLoading:true,
statScopesLoading:true,
statLoading:true,
statInitiating:true,
codeLoading:true,
codeExecution:true,
liveStatusLoading:true,
startScreenLoading:true,
startScreenRendering:true,
emojiTitleStyleLoading:true,
emojiTitleStyle:"before",
emojiTitleDivider:" ",
autocloseCheckInterval:300000, //5 minutes
autodeleteCheckInterval:300000 //5 minutes
}
}
/**Set a default to a specific value. Remember! All plugins can edit these values, so your value could be overwritten! */
setDefault<DefaultName extends keyof ODDefaults>(key:DefaultName, value:ODDefaults[DefaultName]): void {
this.#defaults[key] = value
}
/**Get a default. Remember! All plugins can edit these values, so this value could be overwritten! */
getDefault<DefaultName extends keyof ODDefaults>(key:DefaultName): ODDefaults[DefaultName] {
return this.#defaults[key]
}
}