Open Ticket v4 Beta
This commit is contained in:
+742
@@ -0,0 +1,742 @@
|
||||
/*
|
||||
██████╗ ██████╗ ███████╗███╗ ██╗ ████████╗██╗ ██████╗██╗ ██╗███████╗████████╗
|
||||
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ╚══██╔══╝██║██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝
|
||||
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ ██║██║ █████╔╝ █████╗ ██║
|
||||
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██║██║ ██╔═██╗ ██╔══╝ ██║
|
||||
╚██████╔╝██║ ███████╗██║ ╚████║ ██║ ██║╚██████╗██║ ██╗███████╗ ██║
|
||||
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝
|
||||
|
||||
> Hey! We are looking for you!
|
||||
> Do you speak a language that isn't yet in our /languages directory?
|
||||
> Or do you speak one that isn't up-to-date anymore?
|
||||
> Open Ticket needs translators for lots of different languages!
|
||||
> Feel free to join our translator team and help us improve Open Ticket!
|
||||
|
||||
SUGGESTIONS:
|
||||
=====================
|
||||
Did you know that almost 70% of all Open Ticket features were requested by the community?
|
||||
Feel free to suggest new ideas in our discord server or via github issues!
|
||||
They are always welcome!
|
||||
|
||||
INFORMATION:
|
||||
============
|
||||
Open Ticket v4.0.0 - © DJdj Development
|
||||
|
||||
discord: https://discord.dj-dj.be
|
||||
website: https://openticket.dj-dj.be
|
||||
github: https://otgithub.dj-dj.be
|
||||
documentation: https://otdocs.dj-dj.be
|
||||
|
||||
Config files:
|
||||
./config/....json
|
||||
|
||||
Send ./otdebug.txt to us when there is an error!
|
||||
*/
|
||||
|
||||
//initialize API & check npm libraries
|
||||
import { api, openticket, utilities } from "./core/startup/init"
|
||||
export { api, openticket, utilities } from "./core/startup/init"
|
||||
import ansis from "ansis"
|
||||
|
||||
/**The main sequence of Open Ticket. Runs `async` */
|
||||
const main = async () => {
|
||||
//load all events
|
||||
(await import("./data/framework/eventLoader.ts")).loadAllEvents()
|
||||
|
||||
//error handling system
|
||||
process.on("uncaughtException",async (error,origin) => {
|
||||
try{
|
||||
await openticket.events.get("onErrorHandling").emit([error,origin])
|
||||
if (openticket.defaults.getDefault("errorHandling")){
|
||||
//custom error messages for known errors
|
||||
if (error.message == "Used disallowed intents"){
|
||||
//invalid intents
|
||||
openticket.log("Open Ticket doesn't work without Privileged Gateway Intents enabled!","error")
|
||||
openticket.log("Enable them in the discord developer portal!","info")
|
||||
console.log("\n")
|
||||
process.exit(1)
|
||||
}else if (error.message == "An invalid token was provided."){
|
||||
//invalid token
|
||||
openticket.log("An invalid discord auth token was provided!","error")
|
||||
openticket.log("Check the config if you have copied the token correctly!","info")
|
||||
console.log("\n")
|
||||
process.exit(1)
|
||||
}else{
|
||||
//unknown error
|
||||
const errmsg = new api.ODError(error,origin)
|
||||
openticket.log(errmsg)
|
||||
if (openticket.defaults.getDefault("crashOnError")) process.exit(1)
|
||||
await openticket.events.get("afterErrorHandling").emit([error,origin,errmsg])
|
||||
}
|
||||
}
|
||||
|
||||
}catch(err){
|
||||
console.log("[ERROR HANDLER ERROR]:",err)
|
||||
}
|
||||
})
|
||||
|
||||
//handle data migration
|
||||
await (await import("./core/startup/manageMigration.ts")).loadVersionMigrationSystem()
|
||||
|
||||
//load plugins
|
||||
if (openticket.defaults.getDefault("pluginLoading")){
|
||||
await (await import("./core/startup/pluginLauncher.ts")).loadAllPlugins()
|
||||
}
|
||||
await openticket.events.get("afterPluginsLoaded").emit([openticket.plugins])
|
||||
|
||||
//load plugin classes
|
||||
openticket.log("Loading plugin classes...","system")
|
||||
if (openticket.defaults.getDefault("pluginClassLoading")){
|
||||
|
||||
}
|
||||
await openticket.events.get("onPluginClassLoad").emit([openticket.plugins.classes,openticket.plugins])
|
||||
await openticket.events.get("afterPluginClassesLoaded").emit([openticket.plugins.classes,openticket.plugins])
|
||||
|
||||
//load plugin events
|
||||
openticket.log("Loading plugin events...","system")
|
||||
if (openticket.defaults.getDefault("pluginEventLoading")){
|
||||
|
||||
}
|
||||
await openticket.events.get("onPluginEventLoad").emit([openticket.plugins.events,openticket.plugins])
|
||||
await openticket.events.get("afterPluginEventsLoaded").emit([openticket.plugins.events,openticket.plugins])
|
||||
|
||||
//load flags
|
||||
openticket.log("Loading flags...","system")
|
||||
if (openticket.defaults.getDefault("flagLoading")){
|
||||
await (await import("./data/framework/flagLoader.ts")).loadAllFlags()
|
||||
}
|
||||
await openticket.events.get("onFlagLoad").emit([openticket.flags])
|
||||
await openticket.events.get("afterFlagsLoaded").emit([openticket.flags])
|
||||
|
||||
//initiate flags
|
||||
await openticket.events.get("onFlagInit").emit([openticket.flags])
|
||||
if (openticket.defaults.getDefault("flagInitiating")){
|
||||
openticket.flags.init()
|
||||
openticket.debugfile.writeText("\n[ENABLED FLAGS]:\n"+openticket.flags.getFiltered((flag) => (flag.value == true)).map((flag) => flag.id.value).join("\n")+"\n")
|
||||
await openticket.events.get("afterFlagsInitiated").emit([openticket.flags])
|
||||
}
|
||||
|
||||
//load debug
|
||||
if (openticket.defaults.getDefault("debugLoading")){
|
||||
const debugFlag = openticket.flags.get("openticket:debug")
|
||||
openticket.debug.visible = (debugFlag) ? debugFlag.value : false
|
||||
}
|
||||
|
||||
//load config
|
||||
openticket.log("Loading configs...","system")
|
||||
if (openticket.defaults.getDefault("configLoading")){
|
||||
await (await import("./data/framework/configLoader.ts")).loadAllConfigs()
|
||||
}
|
||||
await openticket.events.get("onConfigLoad").emit([openticket.configs])
|
||||
await openticket.events.get("afterConfigsLoaded").emit([openticket.configs])
|
||||
|
||||
//UTILITY CONFIG
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
|
||||
//load database
|
||||
openticket.log("Loading databases...","system")
|
||||
if (openticket.defaults.getDefault("databaseLoading")){
|
||||
await (await import("./data/framework/databaseLoader.ts")).loadAllDatabases()
|
||||
}
|
||||
await openticket.events.get("onDatabaseLoad").emit([openticket.databases])
|
||||
await openticket.events.get("afterDatabasesLoaded").emit([openticket.databases])
|
||||
|
||||
//load sessions
|
||||
openticket.log("Loading sessions...","system")
|
||||
if (openticket.defaults.getDefault("sessionLoading")){
|
||||
|
||||
}
|
||||
await openticket.events.get("onSessionLoad").emit([openticket.sessions])
|
||||
await openticket.events.get("afterSessionsLoaded").emit([openticket.sessions])
|
||||
|
||||
//load language
|
||||
openticket.log("Loading languages...","system")
|
||||
if (openticket.defaults.getDefault("languageLoading")){
|
||||
await (await import("./data/framework/languageLoader.ts")).loadAllLanguages()
|
||||
}
|
||||
await openticket.events.get("onLanguageLoad").emit([openticket.languages])
|
||||
await openticket.events.get("afterLanguagesLoaded").emit([openticket.languages])
|
||||
|
||||
//select language
|
||||
await openticket.events.get("onLanguageSelect").emit([openticket.languages])
|
||||
if (openticket.defaults.getDefault("languageSelection")){
|
||||
//set current language
|
||||
const languageId = (generalConfig && generalConfig.data.language) ? generalConfig.data.language : "english"
|
||||
if (languageId.includes(":")){
|
||||
openticket.languages.setCurrentLanguage(languageId)
|
||||
}else{
|
||||
openticket.languages.setCurrentLanguage("openticket:"+languageId)
|
||||
}
|
||||
|
||||
//set backup language
|
||||
const backupLanguageId = openticket.defaults.getDefault("backupLanguage")
|
||||
if (openticket.languages.exists(backupLanguageId)){
|
||||
openticket.languages.setBackupLanguage(backupLanguageId)
|
||||
|
||||
}else throw new api.ODSystemError("Unknown backup language '"+backupLanguageId+"'!")
|
||||
|
||||
await openticket.events.get("afterLanguagesSelected").emit([openticket.languages.get(languageId),openticket.languages.get(backupLanguageId),openticket.languages])
|
||||
}
|
||||
|
||||
//load config checker
|
||||
openticket.log("Loading config checker...","system")
|
||||
if (openticket.defaults.getDefault("checkerLoading")){
|
||||
await (await import("./data/framework/checkerLoader.ts")).loadAllConfigCheckers()
|
||||
}
|
||||
await openticket.events.get("onCheckerLoad").emit([openticket.checkers])
|
||||
await openticket.events.get("afterCheckersLoaded").emit([openticket.checkers])
|
||||
|
||||
//load config checker functions
|
||||
if (openticket.defaults.getDefault("checkerFunctionLoading")){
|
||||
await (await import("./data/framework/checkerLoader.ts")).loadAllConfigCheckerFunctions()
|
||||
}
|
||||
await openticket.events.get("onCheckerFunctionLoad").emit([openticket.checkers.functions,openticket.checkers])
|
||||
await openticket.events.get("afterCheckerFunctionsLoaded").emit([openticket.checkers.functions,openticket.checkers])
|
||||
|
||||
//execute config checker
|
||||
await openticket.events.get("onCheckerExecute").emit([openticket.checkers])
|
||||
if (openticket.defaults.getDefault("checkerExecution")){
|
||||
const result = openticket.checkers.checkAll(true)
|
||||
await openticket.events.get("afterCheckersExecuted").emit([result,openticket.checkers])
|
||||
}
|
||||
|
||||
//load config checker translations
|
||||
if (openticket.defaults.getDefault("checkerTranslationLoading")){
|
||||
await (await import("./data/framework/checkerLoader.ts")).loadAllConfigCheckerTranslations()
|
||||
}
|
||||
await openticket.events.get("onCheckerTranslationLoad").emit([openticket.checkers.translation,((generalConfig && generalConfig.data.system && generalConfig.data.system.useTranslatedConfigChecker) ? generalConfig.data.system.useTranslatedConfigChecker : false),openticket.checkers])
|
||||
await openticket.events.get("afterCheckerTranslationsLoaded").emit([openticket.checkers.translation,openticket.checkers])
|
||||
|
||||
//render config checker
|
||||
const advancedCheckerFlag = openticket.flags.get("openticket:checker")
|
||||
const disableCheckerFlag = openticket.flags.get("openticket:no-checker")
|
||||
|
||||
await openticket.events.get("onCheckerRender").emit([openticket.checkers.renderer,openticket.checkers])
|
||||
if (openticket.defaults.getDefault("checkerRendering") && !(disableCheckerFlag ? disableCheckerFlag.value : false)){
|
||||
//check if there is a result (otherwise throw minor error)
|
||||
const result = openticket.checkers.lastResult
|
||||
if (!result) return openticket.log("Failed to render Config Checker! (couldn't fetch result)","error")
|
||||
|
||||
//get components & check if full mode enabled
|
||||
const components = openticket.checkers.renderer.getComponents(!(advancedCheckerFlag ? advancedCheckerFlag.value : false),openticket.defaults.getDefault("checkerRenderEmpty"),openticket.checkers.translation,result)
|
||||
|
||||
//render
|
||||
openticket.debugfile.writeText("\n[CONFIG CHECKER RESULT]:\n"+ansis.strip(components.join("\n"))+"\n")
|
||||
openticket.checkers.renderer.render(components)
|
||||
await openticket.events.get("afterCheckersRendered").emit([openticket.checkers.renderer,openticket.checkers])
|
||||
}
|
||||
|
||||
//quit config checker (when required)
|
||||
if (openticket.checkers.lastResult && !openticket.checkers.lastResult.valid && !(disableCheckerFlag ? disableCheckerFlag.value : false)){
|
||||
await openticket.events.get("onCheckerQuit").emit([openticket.checkers])
|
||||
if (openticket.defaults.getDefault("checkerQuit")){
|
||||
process.exit(0)
|
||||
//there is no afterCheckerQuitted event :)
|
||||
}
|
||||
}
|
||||
|
||||
//client configuration
|
||||
openticket.log("Loading client...","system")
|
||||
if (openticket.defaults.getDefault("clientLoading")){
|
||||
//add intents (for basic permissions)
|
||||
openticket.client.intents.push(
|
||||
"Guilds",
|
||||
"GuildMessages",
|
||||
"DirectMessages",
|
||||
"GuildEmojisAndStickers",
|
||||
"GuildMembers",
|
||||
"MessageContent",
|
||||
"GuildWebhooks",
|
||||
"GuildInvites"
|
||||
)
|
||||
|
||||
//add privileged intents (required for transcripts)
|
||||
openticket.client.privileges.push("MessageContent","GuildMembers")
|
||||
|
||||
//add partials (required for DM messages)
|
||||
openticket.client.partials.push("Channel","Message")
|
||||
|
||||
//add permissions (not required when Administrator)
|
||||
openticket.client.permissions.push(
|
||||
"AddReactions",
|
||||
"AttachFiles",
|
||||
"CreatePrivateThreads",
|
||||
"CreatePublicThreads",
|
||||
"EmbedLinks",
|
||||
"ManageChannels",
|
||||
"ManageGuild",
|
||||
"ManageMessages",
|
||||
"ChangeNickname",
|
||||
"ManageRoles",
|
||||
"ManageThreads",
|
||||
"ManageWebhooks",
|
||||
"MentionEveryone",
|
||||
"ReadMessageHistory",
|
||||
"SendMessages",
|
||||
"SendMessagesInThreads",
|
||||
"UseApplicationCommands",
|
||||
"UseExternalEmojis",
|
||||
"ViewAuditLog",
|
||||
"ViewChannel"
|
||||
)
|
||||
|
||||
//get token from config or env
|
||||
const configToken = openticket.configs.get("openticket:general").data.token ? openticket.configs.get("openticket:general").data.token : ""
|
||||
const envToken = openticket.env.getVariable("TOKEN") ? openticket.env.getVariable("TOKEN") : ""
|
||||
const token = openticket.configs.get("openticket:general").data.tokenFromENV ? envToken : configToken
|
||||
openticket.client.token = token
|
||||
}
|
||||
await openticket.events.get("onClientLoad").emit([openticket.client])
|
||||
await openticket.events.get("afterClientLoaded").emit([openticket.client])
|
||||
|
||||
//client ready
|
||||
openticket.client.readyListener = async () => {
|
||||
openticket.log("Loading client setup...","system")
|
||||
await openticket.events.get("onClientReady").emit([openticket.client])
|
||||
if (openticket.defaults.getDefault("clientReady")){
|
||||
const client = openticket.client
|
||||
|
||||
//check if all servers are valid
|
||||
const botServers = client.getGuilds()
|
||||
const generalConfig = openticket.configs.get("openticket:general")
|
||||
const serverId = generalConfig.data.serverId ? generalConfig.data.serverId : ""
|
||||
if (!serverId) throw new api.ODSystemError("Server Id Missing!")
|
||||
|
||||
const mainServer = botServers.find((g) => g.id == serverId)
|
||||
client.mainServer = mainServer ?? null
|
||||
//throw if bot isn't member of main server
|
||||
if (!mainServer || !client.checkBotInGuild(mainServer)){
|
||||
console.log("\n")
|
||||
openticket.log("The bot isn't a member of the server provided in the config!","error")
|
||||
openticket.log("Please invite your bot to the server!","info")
|
||||
console.log("\n")
|
||||
process.exit(0)
|
||||
}
|
||||
//throw if bot doesn't have permissions in main server
|
||||
if (!client.checkGuildPerms(mainServer)){
|
||||
console.log("\n")
|
||||
openticket.log("The bot doesn't have the correct permissions in the server provided in the config!","error")
|
||||
openticket.log("Please give the bot \"Administrator\" permissions or visit the documentation!","info")
|
||||
console.log("\n")
|
||||
process.exit(0)
|
||||
}
|
||||
if (openticket.defaults.getDefault("clientMultiGuildWarning")){
|
||||
//warn if bot is in multiple servers
|
||||
if (botServers.length > 1){
|
||||
openticket.log("This bot is part of multiple servers, but Open Ticket doesn't have support for it!","warning")
|
||||
openticket.log("It may result in the bot crashing & glitching when used in these servers!","info")
|
||||
}
|
||||
botServers.forEach((server) => {
|
||||
//warn if bot doesn't have permissions in multiple servers
|
||||
if (!client.checkGuildPerms(server)) openticket.log(`The bot doesn't have the correct permissions in the server "${server.name}"!`,"warning")
|
||||
})
|
||||
}
|
||||
|
||||
//load client activity
|
||||
openticket.log("Loading client activity...","system")
|
||||
if (openticket.defaults.getDefault("clientActivityLoading")){
|
||||
//load config status
|
||||
if (generalConfig.data.status && generalConfig.data.status.enabled) openticket.client.activity.setStatus(generalConfig.data.status.type,generalConfig.data.status.text,generalConfig.data.status.status)
|
||||
}
|
||||
await openticket.events.get("onClientActivityLoad").emit([openticket.client.activity,openticket.client])
|
||||
await openticket.events.get("afterClientActivityLoaded").emit([openticket.client.activity,openticket.client])
|
||||
|
||||
//initiate client activity
|
||||
await openticket.events.get("onClientActivityInit").emit([openticket.client.activity,openticket.client])
|
||||
if (openticket.defaults.getDefault("clientActivityInitiating")){
|
||||
openticket.client.activity.initStatus()
|
||||
await openticket.events.get("afterClientActivityInitiated").emit([openticket.client.activity,openticket.client])
|
||||
}
|
||||
|
||||
//load slash commands
|
||||
openticket.log("Loading slash commands...","system")
|
||||
if (openticket.defaults.getDefault("slashCommandLoading")){
|
||||
await (await import("./data/framework/commandLoader.ts")).loadAllSlashCommands()
|
||||
}
|
||||
await openticket.events.get("onSlashCommandLoad").emit([openticket.client.slashCommands,openticket.client])
|
||||
await openticket.events.get("afterSlashCommandsLoaded").emit([openticket.client.slashCommands,openticket.client])
|
||||
|
||||
//register slash commands (create, update & remove)
|
||||
if (openticket.defaults.getDefault("forceSlashCommandRegistration")) openticket.log("Forcing all slash commands to be re-registered...","system")
|
||||
openticket.log("Registering slash commands... (this can take up to 2 minutes)","system")
|
||||
await openticket.events.get("onSlashCommandRegister").emit([openticket.client.slashCommands,openticket.client])
|
||||
if (openticket.defaults.getDefault("slashCommandRegistering")){
|
||||
//GLOBAL
|
||||
await openticket.client.slashCommands.removeUnusedCommands() //remove all commands that aren't used
|
||||
await openticket.client.slashCommands.createNewCommands() //create all new commands that don't exist yet
|
||||
await openticket.client.slashCommands.updateExistingCommands(undefined,openticket.defaults.getDefault("forceSlashCommandRegistration")) //update all commands that need to be re-registered
|
||||
|
||||
//DEFAULT SERVER
|
||||
await openticket.client.slashCommands.removeUnusedCommands(serverId) //remove all commands that aren't used
|
||||
await openticket.client.slashCommands.createNewCommands(serverId) //create all new commands that don't exist yet
|
||||
await openticket.client.slashCommands.updateExistingCommands(serverId) //update all commands that need to be re-registered
|
||||
|
||||
await openticket.events.get("afterSlashCommandsRegistered").emit([openticket.client.slashCommands,openticket.client])
|
||||
}
|
||||
|
||||
//load text commands
|
||||
openticket.log("Loading text commands...","system")
|
||||
if (openticket.defaults.getDefault("textCommandLoading")){
|
||||
await (await import("./data/framework/commandLoader.ts")).loadAllTextCommands()
|
||||
}
|
||||
await openticket.events.get("onTextCommandLoad").emit([openticket.client.textCommands,openticket.client])
|
||||
await openticket.events.get("afterTextCommandsLoaded").emit([openticket.client.textCommands,openticket.client])
|
||||
|
||||
//client ready
|
||||
await openticket.events.get("afterClientReady").emit([openticket.client])
|
||||
}
|
||||
}
|
||||
|
||||
//client init (login)
|
||||
openticket.log("Logging in...","system")
|
||||
await openticket.events.get("onClientInit").emit([openticket.client])
|
||||
if (openticket.defaults.getDefault("clientInitiating")){
|
||||
//init client
|
||||
openticket.client.initClient()
|
||||
await openticket.events.get("afterClientInitiated").emit([openticket.client])
|
||||
|
||||
//client login
|
||||
await openticket.client.login()
|
||||
openticket.log("discord.js client ready!","info")
|
||||
}
|
||||
|
||||
//load questions
|
||||
openticket.log("Loading questions...","system")
|
||||
if (openticket.defaults.getDefault("questionLoading")){
|
||||
await (await import("./data/openticket/questionLoader.ts")).loadAllQuestions()
|
||||
}
|
||||
await openticket.events.get("onQuestionLoad").emit([openticket.questions])
|
||||
await openticket.events.get("afterQuestionsLoaded").emit([openticket.questions])
|
||||
|
||||
//load options
|
||||
openticket.log("Loading options...","system")
|
||||
if (openticket.defaults.getDefault("optionLoading")){
|
||||
await (await import("./data/openticket/optionLoader.ts")).loadAllOptions()
|
||||
}
|
||||
await openticket.events.get("onOptionLoad").emit([openticket.options])
|
||||
await openticket.events.get("afterOptionsLoaded").emit([openticket.options])
|
||||
|
||||
//load panels
|
||||
openticket.log("Loading panels...","system")
|
||||
if (openticket.defaults.getDefault("panelLoading")){
|
||||
await (await import("./data/openticket/panelLoader.ts")).loadAllPanels()
|
||||
}
|
||||
await openticket.events.get("onPanelLoad").emit([openticket.panels])
|
||||
await openticket.events.get("afterPanelsLoaded").emit([openticket.panels])
|
||||
|
||||
//load tickets
|
||||
openticket.log("Loading tickets...","system")
|
||||
if (openticket.defaults.getDefault("ticketLoading")){
|
||||
openticket.tickets.useGuild(openticket.client.mainServer)
|
||||
await (await import("./data/openticket/ticketLoader.ts")).loadAllTickets()
|
||||
}
|
||||
await openticket.events.get("onTicketLoad").emit([openticket.tickets])
|
||||
await openticket.events.get("afterTicketsLoaded").emit([openticket.tickets])
|
||||
|
||||
//load roles
|
||||
openticket.log("Loading roles...","system")
|
||||
if (openticket.defaults.getDefault("roleLoading")){
|
||||
await (await import("./data/openticket/roleLoader.ts")).loadAllRoles()
|
||||
}
|
||||
await openticket.events.get("onRoleLoad").emit([openticket.roles])
|
||||
await openticket.events.get("afterRolesLoaded").emit([openticket.roles])
|
||||
|
||||
//load blacklist
|
||||
openticket.log("Loading blacklist...","system")
|
||||
if (openticket.defaults.getDefault("blacklistLoading")){
|
||||
await (await import("./data/openticket/blacklistLoader.ts")).loadAllBlacklistedUsers()
|
||||
}
|
||||
await openticket.events.get("onBlacklistLoad").emit([openticket.blacklist])
|
||||
await openticket.events.get("afterBlacklistLoaded").emit([openticket.blacklist])
|
||||
|
||||
//load transcript compilers
|
||||
openticket.log("Loading transcripts...","system")
|
||||
if (openticket.defaults.getDefault("transcriptCompilerLoading")){
|
||||
await (await import("./data/openticket/transcriptLoader.ts")).loadAllTranscriptCompilers()
|
||||
}
|
||||
await openticket.events.get("onTranscriptCompilerLoad").emit([openticket.transcripts])
|
||||
await openticket.events.get("afterTranscriptCompilersLoaded").emit([openticket.transcripts])
|
||||
|
||||
//load transcript history
|
||||
if (openticket.defaults.getDefault("transcriptHistoryLoading")){
|
||||
await (await import("./data/openticket/transcriptLoader.ts")).loadTranscriptHistory()
|
||||
}
|
||||
await openticket.events.get("onTranscriptHistoryLoad").emit([openticket.transcripts])
|
||||
await openticket.events.get("afterTranscriptHistoryLoaded").emit([openticket.transcripts])
|
||||
|
||||
//load button builders
|
||||
openticket.log("Loading buttons...","system")
|
||||
if (openticket.defaults.getDefault("buttonBuildersLoading")){
|
||||
await (await import("./builders/buttons.ts")).registerAllButtons()
|
||||
}
|
||||
await openticket.events.get("onButtonBuilderLoad").emit([openticket.builders.buttons,openticket.builders,openticket.actions])
|
||||
await openticket.events.get("afterButtonBuildersLoaded").emit([openticket.builders.buttons,openticket.builders,openticket.actions])
|
||||
|
||||
//load dropdown builders
|
||||
openticket.log("Loading dropdowns...","system")
|
||||
if (openticket.defaults.getDefault("dropdownBuildersLoading")){
|
||||
await (await import("./builders/dropdowns.ts")).registerAllDropdowns()
|
||||
}
|
||||
await openticket.events.get("onDropdownBuilderLoad").emit([openticket.builders.dropdowns,openticket.builders,openticket.actions])
|
||||
await openticket.events.get("afterDropdownBuildersLoaded").emit([openticket.builders.dropdowns,openticket.builders,openticket.actions])
|
||||
|
||||
//load file builders
|
||||
openticket.log("Loading files...","system")
|
||||
if (openticket.defaults.getDefault("fileBuildersLoading")){
|
||||
await (await import("./builders/files.ts")).registerAllFiles()
|
||||
}
|
||||
await openticket.events.get("onFileBuilderLoad").emit([openticket.builders.files,openticket.builders,openticket.actions])
|
||||
await openticket.events.get("afterFileBuildersLoaded").emit([openticket.builders.files,openticket.builders,openticket.actions])
|
||||
|
||||
//load embed builders
|
||||
openticket.log("Loading embeds...","system")
|
||||
if (openticket.defaults.getDefault("embedBuildersLoading")){
|
||||
await (await import("./builders/embeds.ts")).registerAllEmbeds()
|
||||
}
|
||||
await openticket.events.get("onEmbedBuilderLoad").emit([openticket.builders.embeds,openticket.builders,openticket.actions])
|
||||
await openticket.events.get("afterEmbedBuildersLoaded").emit([openticket.builders.embeds,openticket.builders,openticket.actions])
|
||||
|
||||
//load message builders
|
||||
openticket.log("Loading messages...","system")
|
||||
if (openticket.defaults.getDefault("messageBuildersLoading")){
|
||||
await (await import("./builders/messages.ts")).registerAllMessages()
|
||||
}
|
||||
await openticket.events.get("onMessageBuilderLoad").emit([openticket.builders.messages,openticket.builders,openticket.actions])
|
||||
await openticket.events.get("afterMessageBuildersLoaded").emit([openticket.builders.messages,openticket.builders,openticket.actions])
|
||||
|
||||
//load modal builders
|
||||
openticket.log("Loading modals...","system")
|
||||
if (openticket.defaults.getDefault("modalBuildersLoading")){
|
||||
await (await import("./builders/modals.ts")).registerAllModals()
|
||||
}
|
||||
await openticket.events.get("onModalBuilderLoad").emit([openticket.builders.modals,openticket.builders,openticket.actions])
|
||||
await openticket.events.get("afterModalBuildersLoaded").emit([openticket.builders.modals,openticket.builders,openticket.actions])
|
||||
|
||||
//load command responders
|
||||
openticket.log("Loading command responders...","system")
|
||||
if (openticket.defaults.getDefault("commandRespondersLoading")){
|
||||
await (await import("./commands/help.ts")).registerCommandResponders()
|
||||
await (await import("./commands/stats.ts")).registerCommandResponders()
|
||||
await (await import("./commands/panel.ts")).registerCommandResponders()
|
||||
await (await import("./commands/ticket.ts")).registerCommandResponders()
|
||||
await (await import("./commands/blacklist.ts")).registerCommandResponders()
|
||||
await (await import("./commands/close.ts")).registerCommandResponders()
|
||||
await (await import("./commands/reopen.ts")).registerCommandResponders()
|
||||
await (await import("./commands/delete.ts")).registerCommandResponders()
|
||||
await (await import("./commands/claim.ts")).registerCommandResponders()
|
||||
await (await import("./commands/unclaim.ts")).registerCommandResponders()
|
||||
await (await import("./commands/pin.ts")).registerCommandResponders()
|
||||
await (await import("./commands/unpin.ts")).registerCommandResponders()
|
||||
await (await import("./commands/rename.ts")).registerCommandResponders()
|
||||
await (await import("./commands/move.ts")).registerCommandResponders()
|
||||
await (await import("./commands/add.ts")).registerCommandResponders()
|
||||
await (await import("./commands/remove.ts")).registerCommandResponders()
|
||||
await (await import("./commands/clear.ts")).registerCommandResponders()
|
||||
await (await import("./commands/autoclose.ts")).registerCommandResponders()
|
||||
await (await import("./commands/autodelete.ts")).registerCommandResponders()
|
||||
}
|
||||
await openticket.events.get("onCommandResponderLoad").emit([openticket.responders.commands,openticket.responders,openticket.actions])
|
||||
await openticket.events.get("afterCommandRespondersLoaded").emit([openticket.responders.commands,openticket.responders,openticket.actions])
|
||||
|
||||
//load button responders
|
||||
openticket.log("Loading button responders...","system")
|
||||
if (openticket.defaults.getDefault("buttonRespondersLoading")){
|
||||
await (await import("./actions/handleVerifyBar.ts")).registerButtonResponders()
|
||||
await (await import("./actions/handleTranscriptErrors.ts")).registerButtonResponders()
|
||||
await (await import("./commands/help.ts")).registerButtonResponders()
|
||||
await (await import("./commands/ticket.ts")).registerButtonResponders()
|
||||
await (await import("./commands/close.ts")).registerButtonResponders()
|
||||
await (await import("./commands/reopen.ts")).registerButtonResponders()
|
||||
await (await import("./commands/delete.ts")).registerButtonResponders()
|
||||
await (await import("./commands/claim.ts")).registerButtonResponders()
|
||||
await (await import("./commands/unclaim.ts")).registerButtonResponders()
|
||||
await (await import("./commands/pin.ts")).registerButtonResponders()
|
||||
await (await import("./commands/unpin.ts")).registerButtonResponders()
|
||||
await (await import("./commands/role.ts")).registerButtonResponders()
|
||||
await (await import("./commands/clear.ts")).registerButtonResponders()
|
||||
}
|
||||
await openticket.events.get("onButtonResponderLoad").emit([openticket.responders.buttons,openticket.responders,openticket.actions])
|
||||
await openticket.events.get("afterButtonRespondersLoaded").emit([openticket.responders.buttons,openticket.responders,openticket.actions])
|
||||
|
||||
//load dropdown responders
|
||||
openticket.log("Loading dropdown responders...","system")
|
||||
if (openticket.defaults.getDefault("dropdownRespondersLoading")){
|
||||
await (await import("./commands/ticket.ts")).registerDropdownResponders()
|
||||
}
|
||||
await openticket.events.get("onDropdownResponderLoad").emit([openticket.responders.dropdowns,openticket.responders,openticket.actions])
|
||||
await openticket.events.get("afterDropdownRespondersLoaded").emit([openticket.responders.dropdowns,openticket.responders,openticket.actions])
|
||||
|
||||
//load modal responders
|
||||
openticket.log("Loading modal responders...","system")
|
||||
if (openticket.defaults.getDefault("modalRespondersLoading")){
|
||||
await (await import("./commands/ticket.ts")).registerModalResponders()
|
||||
await (await import("./commands/close.ts")).registerModalResponders()
|
||||
await (await import("./commands/reopen.ts")).registerModalResponders()
|
||||
await (await import("./commands/delete.ts")).registerModalResponders()
|
||||
await (await import("./commands/claim.ts")).registerModalResponders()
|
||||
await (await import("./commands/unclaim.ts")).registerModalResponders()
|
||||
await (await import("./commands/pin.ts")).registerModalResponders()
|
||||
await (await import("./commands/unpin.ts")).registerModalResponders()
|
||||
}
|
||||
await openticket.events.get("onModalResponderLoad").emit([openticket.responders.modals,openticket.responders,openticket.actions])
|
||||
await openticket.events.get("afterModalRespondersLoaded").emit([openticket.responders.modals,openticket.responders,openticket.actions])
|
||||
|
||||
//load actions
|
||||
openticket.log("Loading actions...","system")
|
||||
if (openticket.defaults.getDefault("actionsLoading")){
|
||||
await (await import("./actions/createTicketPermissions.ts")).registerActions()
|
||||
await (await import("./actions/createTranscript.ts")).registerActions()
|
||||
await (await import("./actions/createTicket.ts")).registerActions()
|
||||
await (await import("./actions/closeTicket.ts")).registerActions()
|
||||
await (await import("./actions/deleteTicket.ts")).registerActions()
|
||||
await (await import("./actions/reopenTicket.ts")).registerActions()
|
||||
await (await import("./actions/claimTicket.ts")).registerActions()
|
||||
await (await import("./actions/unclaimTicket.ts")).registerActions()
|
||||
await (await import("./actions/pinTicket.ts")).registerActions()
|
||||
await (await import("./actions/unpinTicket.ts")).registerActions()
|
||||
await (await import("./actions/renameTicket.ts")).registerActions()
|
||||
await (await import("./actions/moveTicket.ts")).registerActions()
|
||||
await (await import("./actions/addTicketUser.ts")).registerActions()
|
||||
await (await import("./actions/removeTicketUser.ts")).registerActions()
|
||||
await (await import("./actions/reactionRole.ts")).registerActions()
|
||||
await (await import("./actions/clearTickets.ts")).registerActions()
|
||||
}
|
||||
await openticket.events.get("onActionLoad").emit([openticket.actions])
|
||||
await openticket.events.get("afterActionsLoaded").emit([openticket.actions])
|
||||
|
||||
//load verifybars
|
||||
openticket.log("Loading verifybars...","system")
|
||||
if (openticket.defaults.getDefault("verifyBarsLoading")){
|
||||
await (await import("./actions/closeTicket.ts")).registerVerifyBars()
|
||||
await (await import("./actions/deleteTicket.ts")).registerVerifyBars()
|
||||
await (await import("./actions/reopenTicket.ts")).registerVerifyBars()
|
||||
await (await import("./actions/claimTicket.ts")).registerVerifyBars()
|
||||
await (await import("./actions/unclaimTicket.ts")).registerVerifyBars()
|
||||
await (await import("./actions/pinTicket.ts")).registerVerifyBars()
|
||||
await (await import("./actions/unpinTicket.ts")).registerVerifyBars()
|
||||
}
|
||||
await openticket.events.get("onVerifyBarLoad").emit([openticket.verifybars])
|
||||
await openticket.events.get("afterVerifyBarsLoaded").emit([openticket.verifybars])
|
||||
|
||||
//load permissions
|
||||
openticket.log("Loading permissions...","system")
|
||||
if (openticket.defaults.getDefault("permissionsLoading")){
|
||||
await (await import("./data/framework/permissionLoader.ts")).loadAllPermissions()
|
||||
}
|
||||
await openticket.events.get("onPermissionLoad").emit([openticket.permissions])
|
||||
await openticket.events.get("afterPermissionsLoaded").emit([openticket.permissions])
|
||||
|
||||
//load posts
|
||||
openticket.log("Loading posts...","system")
|
||||
if (openticket.defaults.getDefault("postsLoading")){
|
||||
await (await import("./data/framework/postLoader.ts")).loadAllPosts()
|
||||
}
|
||||
await openticket.events.get("onPostLoad").emit([openticket.posts])
|
||||
await openticket.events.get("afterPostsLoaded").emit([openticket.posts])
|
||||
|
||||
//init posts
|
||||
await openticket.events.get("onPostInit").emit([openticket.posts])
|
||||
if (openticket.defaults.getDefault("postsInitiating")){
|
||||
if (openticket.client.mainServer) openticket.posts.init(openticket.client.mainServer)
|
||||
await openticket.events.get("afterPostsInitiated").emit([openticket.posts])
|
||||
}
|
||||
|
||||
//load cooldowns
|
||||
openticket.log("Loading cooldowns...","system")
|
||||
if (openticket.defaults.getDefault("cooldownsLoading")){
|
||||
await (await import("./data/framework/cooldownLoader.ts")).loadAllCooldowns()
|
||||
}
|
||||
await openticket.events.get("onCooldownLoad").emit([openticket.cooldowns])
|
||||
await openticket.events.get("afterCooldownsLoaded").emit([openticket.cooldowns])
|
||||
|
||||
//init cooldowns
|
||||
await openticket.events.get("onCooldownInit").emit([openticket.cooldowns])
|
||||
if (openticket.defaults.getDefault("cooldownsInitiating")){
|
||||
await openticket.cooldowns.init()
|
||||
await openticket.events.get("afterCooldownsInitiated").emit([openticket.cooldowns])
|
||||
}
|
||||
|
||||
//load help menu categories
|
||||
openticket.log("Loading help menu...","system")
|
||||
if (openticket.defaults.getDefault("helpMenuCategoryLoading")){
|
||||
await (await import("./data/framework/helpMenuLoader.ts")).loadAllHelpMenuCategories()
|
||||
}
|
||||
await openticket.events.get("onHelpMenuCategoryLoad").emit([openticket.helpmenu])
|
||||
await openticket.events.get("afterHelpMenuCategoriesLoaded").emit([openticket.helpmenu])
|
||||
|
||||
//load help menu components
|
||||
if (openticket.defaults.getDefault("helpMenuComponentLoading")){
|
||||
await (await import("./data/framework/helpMenuLoader.ts")).loadAllHelpMenuComponents()
|
||||
}
|
||||
await openticket.events.get("onHelpMenuComponentLoad").emit([openticket.helpmenu])
|
||||
await openticket.events.get("afterHelpMenuComponentsLoaded").emit([openticket.helpmenu])
|
||||
|
||||
//load stat scopes
|
||||
openticket.log("Loading stats...","system")
|
||||
if (openticket.defaults.getDefault("statScopesLoading")){
|
||||
openticket.stats.useDatabase(openticket.databases.get("openticket:stats"))
|
||||
await (await import("./data/framework/statLoader.ts")).loadAllStatScopes()
|
||||
}
|
||||
await openticket.events.get("onStatScopeLoad").emit([openticket.stats])
|
||||
await openticket.events.get("afterStatScopesLoaded").emit([openticket.stats])
|
||||
|
||||
//load stats
|
||||
if (openticket.defaults.getDefault("statLoading")){
|
||||
await (await import("./data/framework/statLoader.ts")).loadAllStats()
|
||||
}
|
||||
await openticket.events.get("onStatLoad").emit([openticket.stats])
|
||||
await openticket.events.get("afterStatsLoaded").emit([openticket.stats])
|
||||
|
||||
//init stats
|
||||
await openticket.events.get("onStatInit").emit([openticket.stats])
|
||||
if (openticket.defaults.getDefault("statInitiating")){
|
||||
await openticket.stats.init()
|
||||
await openticket.events.get("afterStatsInitiated").emit([openticket.stats])
|
||||
}
|
||||
|
||||
//load code
|
||||
openticket.log("Loading code...","system")
|
||||
if (openticket.defaults.getDefault("codeLoading")){
|
||||
await (await import("./data/framework/codeLoader.ts")).loadAllCode()
|
||||
}
|
||||
await openticket.events.get("onCodeLoad").emit([openticket.code])
|
||||
await openticket.events.get("afterCodeLoaded").emit([openticket.code])
|
||||
|
||||
//execute code
|
||||
await openticket.events.get("onCodeExecute").emit([openticket.code])
|
||||
if (openticket.defaults.getDefault("codeExecution")){
|
||||
await openticket.code.execute()
|
||||
await openticket.events.get("afterCodeExecuted").emit([openticket.code])
|
||||
}
|
||||
|
||||
//finish setup
|
||||
openticket.log("Setup complete!","info")
|
||||
|
||||
//load livestatus sources
|
||||
openticket.log("Loading livestatus...","system")
|
||||
if (openticket.defaults.getDefault("liveStatusLoading")){
|
||||
await (await import("./data/framework/liveStatusLoader.ts")).loadAllLiveStatusSources()
|
||||
}
|
||||
await openticket.events.get("onLiveStatusSourceLoad").emit([openticket.livestatus])
|
||||
await openticket.events.get("afterLiveStatusSourcesLoaded").emit([openticket.livestatus])
|
||||
|
||||
//load startscreen
|
||||
openticket.log("Loading startscreen...","system")
|
||||
if (openticket.defaults.getDefault("startScreenLoading")){
|
||||
await (await import("./data/framework/startScreenLoader.ts")).loadAllStartScreenComponents()
|
||||
}
|
||||
await openticket.events.get("onStartScreenLoad").emit([openticket.startscreen])
|
||||
await openticket.events.get("afterStartScreensLoaded").emit([openticket.startscreen])
|
||||
|
||||
//render startscreen
|
||||
await openticket.events.get("onStartScreenRender").emit([openticket.startscreen])
|
||||
if (openticket.defaults.getDefault("startScreenRendering")){
|
||||
await openticket.startscreen.renderAllComponents()
|
||||
|
||||
await openticket.events.get("afterStartScreensRendered").emit([openticket.startscreen])
|
||||
}
|
||||
|
||||
//YIPPPIE!!
|
||||
//The startup of Open Ticket is completed :)
|
||||
}
|
||||
main()
|
||||
Reference in New Issue
Block a user