From eb44f41d3aa73ebecd7f06efb86ec0268fdd8ee1 Mon Sep 17 00:00:00 2001 From: DJj123dj <80536295+DJj123dj@users.noreply.github.com> Date: Sun, 24 May 2026 09:47:30 +0200 Subject: [PATCH] (API) Renamed "ODCode" classes to "ODTask" (improved readability) --- package.json | 4 +- src/core/api.ts | 2 +- src/core/main.ts | 4 +- src/core/mappings/code.ts | 36 ------------ src/core/mappings/event.ts | 18 +++--- src/core/mappings/task.ts | 36 ++++++++++++ src/data/framework/eventLoader.ts | 16 +++--- .../{codeLoader.ts => taskLoader.ts} | 56 +++++++++---------- src/index.ts | 26 ++++----- 9 files changed, 99 insertions(+), 99 deletions(-) delete mode 100644 src/core/mappings/code.ts create mode 100644 src/core/mappings/task.ts rename src/data/framework/{codeLoader.ts => taskLoader.ts} (93%) diff --git a/package.json b/package.json index ffb7997..0c2b077 100644 --- a/package.json +++ b/package.json @@ -22,13 +22,13 @@ "tools:mergelang": "bun run .tools/mergeTranslations.js", "tools:sponsors": "bun run .tools/createSponsors.ts", "tools:contributors": "bun run .tools/createContributors.ts", - "docker:build":".tools/build-docker.sh djj123dj/open-ticket --no-push" + "docker:build": ".tools/build-docker.sh djj123dj/open-ticket --no-push" }, "type": "module", "license": "GPL-3.0-only", "dependencies": { "@discordjs/rest": "^2.6.1", - "@open-discord-bots/framework": "^0.5.2", + "@open-discord-bots/framework": "^0.5.3", "@types/node": "^22.5.0", "@types/terminal-kit": "^2.5.7", "ansis": "^4.2.0", diff --git a/src/core/api.ts b/src/core/api.ts index d9df578..82cd8d5 100644 --- a/src/core/api.ts +++ b/src/core/api.ts @@ -7,7 +7,6 @@ export * from "./mappings/base.js" export * from "./mappings/builder.js" export * from "./mappings/checker.js" export * from "./mappings/client.js" -export * from "./mappings/code.js" export * from "./mappings/component.js" export * from "./mappings/config.js" export * from "./mappings/console.js" @@ -27,6 +26,7 @@ export * from "./mappings/session.js" export * from "./mappings/startscreen.js" export * from "./mappings/state.js" export * from "./mappings/statistic.js" +export * from "./mappings/task.js" export * from "./mappings/verifybar.js" //EXPORT OPENTICKET MODULES diff --git a/src/core/main.ts b/src/core/main.ts index 9ba8b41..b0132e6 100644 --- a/src/core/main.ts +++ b/src/core/main.ts @@ -26,7 +26,7 @@ export class ODOpenTicketMain extends api.ODMain { declare cooldowns: api.ODMappedCooldownManager declare helpmenu: api.ODMappedHelpMenuManager declare statistics: api.ODMappedStatisticManager - declare code: api.ODMappedCodeManager + declare tasks: api.ODMappedTaskManager declare posts: api.ODMappedPostManager declare states: api.ODMappedStateManager @@ -97,7 +97,7 @@ export class ODOpenTicketMain extends api.ODMain { cooldowns:new api.ODMappedCooldownManager(debug), helpmenu:new api.ODMappedHelpMenuManager(debug), statistics:new api.ODMappedStatisticManager(debug), - code:new api.ODMappedCodeManager(debug), + tasks:new api.ODMappedTaskManager(debug), posts:new api.ODMappedPostManager(debug), states:new api.ODMappedStateManager(debug), diff --git a/src/core/mappings/code.ts b/src/core/mappings/code.ts deleted file mode 100644 index c7d5cc1..0000000 --- a/src/core/mappings/code.ts +++ /dev/null @@ -1,36 +0,0 @@ -/////////////////////////////////////// -//OPEN TICKET CODE MAPPINGS -/////////////////////////////////////// -import * as api from "@open-discord-bots/framework/api" - -/**## ODCodeManagerIdMappings `interface` - * A list of all available IDs in the default `ODCodeManager` class in `opendiscord`. - * It's used to generate typescript declarations for this class. - */ -export interface ODCodeManagerIdMappings extends api.ODCodeManagerIdConstraint { - "opendiscord:command-error-handling":api.ODCode, - "opendiscord:start-listening-interactions":api.ODCode, - "opendiscord:panel-database-cleaner":api.ODCode, - "opendiscord:suffix-database-cleaner":api.ODCode, - "opendiscord:option-database-cleaner":api.ODCode, - "opendiscord:user-database-cleaner":api.ODCode, - "opendiscord:ticket-database-cleaner":api.ODCode, - "opendiscord:panel-auto-update":api.ODCode, - "opendiscord:ticket-saver":api.ODCode, - "opendiscord:blacklist-saver":api.ODCode, - "opendiscord:auto-role-on-join":api.ODCode, - "opendiscord:autoclose-timeout":api.ODCode, - "opendiscord:autoclose-leave":api.ODCode, - "opendiscord:autodelete-timeout":api.ODCode, - "opendiscord:autodelete-leave":api.ODCode, - "opendiscord:ticket-anti-busy":api.ODCode, -} - -///////////////////////////// -////// MAPPED MANAGERS ////// -///////////////////////////// - -/**## ODMappedCodeManager `class - * A special class with types for the Open Ticket `ODCodeManager` class. - */ -export class ODMappedCodeManager extends api.ODCodeManager {} \ No newline at end of file diff --git a/src/core/mappings/event.ts b/src/core/mappings/event.ts index 0aaf988..a59c6e8 100644 --- a/src/core/mappings/event.ts +++ b/src/core/mappings/event.ts @@ -21,7 +21,7 @@ import { ODMappedActionManager } from "./action.js" import { ODMappedPermissionManager } from "./permission.js" import { ODMappedHelpMenuManager } from "./helpmenu.js" import { ODMappedStatisticManager } from "./statistic.js" -import { ODMappedCodeManager } from "./code.js" +import { ODMappedTaskManager } from "./task.js" import { ODMappedCooldownManager } from "./cooldown.js" import { ODMappedPostManager } from "./post.js" import { ODMappedVerifyBarManager } from "./verifybar.js" @@ -326,15 +326,15 @@ export interface ODEventManagerIdMappings extends api.ODEventManagerIdConstraint "onStatisticInit": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid> "afterStatisticsInitiated": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid> - //plugin loading before code - "onPluginBeforeCodeLoad": api.ODEvent<() => api.ODPromiseVoid>, - "afterPluginBeforeCodeLoaded": api.ODEvent<() => api.ODPromiseVoid>, + //plugin loading before tasks + "onPluginBeforeTaskLoad": api.ODEvent<() => api.ODPromiseVoid>, + "afterPluginBeforeTaskLoaded": api.ODEvent<() => api.ODPromiseVoid>, - //code - "onCodeLoad": api.ODEvent<(code:ODMappedCodeManager) => api.ODPromiseVoid> - "afterCodeLoaded": api.ODEvent<(code:ODMappedCodeManager) => api.ODPromiseVoid> - "onCodeExecute": api.ODEvent<(code:ODMappedCodeManager) => api.ODPromiseVoid> - "afterCodeExecuted": api.ODEvent<(code:ODMappedCodeManager) => api.ODPromiseVoid> + //background tasks + "onTaskLoad": api.ODEvent<(tasks:ODMappedTaskManager) => api.ODPromiseVoid> + "afterTasksLoaded": api.ODEvent<(tasks:ODMappedTaskManager) => api.ODPromiseVoid> + "onTaskExecute": api.ODEvent<(tasks:ODMappedTaskManager) => api.ODPromiseVoid> + "afterTasksExecuted": api.ODEvent<(tasks:ODMappedTaskManager) => api.ODPromiseVoid> //livestatus "onLiveStatusSourceLoad": api.ODEvent<(livestatus:ODMappedLiveStatusManager) => api.ODPromiseVoid> diff --git a/src/core/mappings/task.ts b/src/core/mappings/task.ts new file mode 100644 index 0000000..7837db9 --- /dev/null +++ b/src/core/mappings/task.ts @@ -0,0 +1,36 @@ +/////////////////////////////////////// +//OPEN TICKET TASK MAPPINGS +/////////////////////////////////////// +import * as api from "@open-discord-bots/framework/api" + +/**## ODTaskManagerIdMappings `interface` + * A list of all available IDs in the default `ODTaskManager` class in `opendiscord`. + * It's used to generate typescript declarations for this class. + */ +export interface ODTaskManagerIdMappings extends api.ODTaskManagerIdConstraint { + "opendiscord:command-error-handling":api.ODTask, + "opendiscord:start-listening-interactions":api.ODTask, + "opendiscord:panel-database-cleaner":api.ODTask, + "opendiscord:suffix-database-cleaner":api.ODTask, + "opendiscord:option-database-cleaner":api.ODTask, + "opendiscord:user-database-cleaner":api.ODTask, + "opendiscord:ticket-database-cleaner":api.ODTask, + "opendiscord:panel-auto-update":api.ODTask, + "opendiscord:ticket-saver":api.ODTask, + "opendiscord:blacklist-saver":api.ODTask, + "opendiscord:auto-role-on-join":api.ODTask, + "opendiscord:autoclose-timeout":api.ODTask, + "opendiscord:autoclose-leave":api.ODTask, + "opendiscord:autodelete-timeout":api.ODTask, + "opendiscord:autodelete-leave":api.ODTask, + "opendiscord:ticket-anti-busy":api.ODTask, +} + +///////////////////////////// +////// MAPPED MANAGERS ////// +///////////////////////////// + +/**## ODMappedTaskManager `class + * A special class with types for the Open Ticket `ODTaskManager` class. + */ +export class ODMappedTaskManager extends api.ODTaskManager {} \ No newline at end of file diff --git a/src/data/framework/eventLoader.ts b/src/data/framework/eventLoader.ts index fbe627c..9c170a3 100644 --- a/src/data/framework/eventLoader.ts +++ b/src/data/framework/eventLoader.ts @@ -282,15 +282,15 @@ export const loadAllEvents = () => { "onStatisticInit", "afterStatisticsInitiated", - //plugin loading before code - "onPluginBeforeCodeLoad", - "afterPluginBeforeCodeLoaded", + //plugin loading before tasks + "onPluginBeforeTaskLoad", + "afterPluginBeforeTaskLoaded", - //code - "onCodeLoad", - "afterCodeLoaded", - "onCodeExecute", - "afterCodeExecuted", + //background tasks + "onTaskLoad", + "afterTasksLoaded", + "onTaskExecute", + "afterTasksExecuted", //livestatus "onLiveStatusSourceLoad", diff --git a/src/data/framework/codeLoader.ts b/src/data/framework/taskLoader.ts similarity index 93% rename from src/data/framework/codeLoader.ts rename to src/data/framework/taskLoader.ts index 35eec87..6e68ca9 100644 --- a/src/data/framework/codeLoader.ts +++ b/src/data/framework/taskLoader.ts @@ -9,20 +9,20 @@ const statsDatabase = opendiscord.databases.get("opendiscord:stats") const optionDatabase = opendiscord.databases.get("opendiscord:options") const mainServer = opendiscord.client.mainServer -export async function loadAllCode(){ +export async function loadAllTasks(){ if (!generalConfig || !mainServer || !globalDatabase || !userDatabase || !ticketDatabase || !statsDatabase || !optionDatabase) return - loadCommandErrorHandlingCode() - loadStartListeningInteractionsCode() - loadDatabaseCleanersCode() - loadPanelAutoUpdateCode() - loadDatabaseSaversCode() - loadAutoCode() + loadCommandErrorHandlingTasks() + loadStartListeningInteractionsTasks() + loadDatabaseCleanersTasks() + loadPanelAutoUpdateTasks() + loadDatabaseSaversTasks() + loadAutoTasks() } -export async function loadCommandErrorHandlingCode(){ +export async function loadCommandErrorHandlingTasks(){ //COMMAND ERROR HANDLING - opendiscord.code.add(new api.ODCode("opendiscord:command-error-handling",14,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:command-error-handling",14,() => { //invalid/missing options opendiscord.client.textCommands.onError(async (error) => { if (error.msg.channel.type == discord.ChannelType.GroupDM) return @@ -56,9 +56,9 @@ export async function loadCommandErrorHandlingCode(){ })) } -export async function loadStartListeningInteractionsCode(){ +export async function loadStartListeningInteractionsTasks(){ //START LISTENING TO INTERACTIONS - opendiscord.code.add(new api.ODCode("opendiscord:start-listening-interactions",13,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:start-listening-interactions",13,() => { opendiscord.client.slashCommands.startListeningToInteractions() opendiscord.client.textCommands.startListeningToInteractions() opendiscord.client.contextMenus.startListeningToInteractions() @@ -66,11 +66,11 @@ export async function loadStartListeningInteractionsCode(){ })) } -export async function loadDatabaseCleanersCode(){ +export async function loadDatabaseCleanersTasks(){ if (!mainServer) return //SUFFIX DATABASE CLEANER - opendiscord.code.add(new api.ODCode("opendiscord:suffix-database-cleaner",11,async () => { + opendiscord.tasks.add(new api.ODTask("opendiscord:suffix-database-cleaner",11,async () => { const validSuffixCounters: string[] = [] const validSuffixHistories: string[] = [] @@ -104,7 +104,7 @@ export async function loadDatabaseCleanersCode(){ })) //OPTION DATABASE CLEANER - opendiscord.code.add(new api.ODCode("opendiscord:option-database-cleaner",10,async () => { + opendiscord.tasks.add(new api.ODTask("opendiscord:option-database-cleaner",10,async () => { //delete all unused options (async) for (const option of (await optionDatabase.getCategory("opendiscord:used-option") ?? [])){ if (!opendiscord.options.exists(option.key)){ @@ -118,7 +118,7 @@ export async function loadDatabaseCleanersCode(){ })) //USER DATABASE CLEANER (full async/parallel because it takes a lot of time) - opendiscord.code.add(new api.ODCode("opendiscord:user-database-cleaner",9,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:user-database-cleaner",9,() => { utilities.runAsync(async () => { const validUsers: string[] = [] @@ -184,7 +184,7 @@ export async function loadDatabaseCleanersCode(){ })) //TICKET DATABASE CLEANER - opendiscord.code.add(new api.ODCode("opendiscord:ticket-database-cleaner",8,async () => { + opendiscord.tasks.add(new api.ODTask("opendiscord:ticket-database-cleaner",8,async () => { const validTickets: string[] = [] //check ticket database for valid tickets @@ -250,10 +250,10 @@ export async function loadDatabaseCleanersCode(){ })) } -export async function loadPanelAutoUpdateCode(){ +export async function loadPanelAutoUpdateTasks(){ //PANEL AUTO UPDATE const panelMsgState = opendiscord.states.get("opendiscord:panel-message") - opendiscord.code.add(new api.ODCode("opendiscord:panel-auto-update",7,async () => { + opendiscord.tasks.add(new api.ODTask("opendiscord:panel-auto-update",7,async () => { if (!mainServer) return for (const panelState of (await panelMsgState.listMsgStates()).map((rawState) => rawState.value)){ @@ -294,9 +294,9 @@ export async function loadPanelAutoUpdateCode(){ })) } -export async function loadDatabaseSaversCode(){ +export async function loadDatabaseSaversTasks(){ //TICKET SAVER - opendiscord.code.add(new api.ODCode("opendiscord:ticket-saver",6,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:ticket-saver",6,() => { const mainVersion = opendiscord.versions.get("opendiscord:version") opendiscord.tickets.onAdd(async (ticket) => { @@ -333,7 +333,7 @@ export async function loadDatabaseSaversCode(){ })) //BLACKLIST SAVER - opendiscord.code.add(new api.ODCode("opendiscord:blacklist-saver",5,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:blacklist-saver",5,() => { opendiscord.blacklist.onAdd(async (blacklist) => { await userDatabase.set("opendiscord:blacklist",blacklist.id.value,blacklist.reason) }) @@ -346,7 +346,7 @@ export async function loadDatabaseSaversCode(){ })) //AUTO ROLE ON JOIN - opendiscord.code.add(new api.ODCode("opendiscord:auto-role-on-join",4,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:auto-role-on-join",4,() => { opendiscord.client.client.on("guildMemberAdd",async (member) => { for (const option of opendiscord.options.getAll()){ if (option instanceof api.ODRoleOption && option.get("opendiscord:add-on-join").value){ @@ -358,11 +358,11 @@ export async function loadDatabaseSaversCode(){ })) } -const loadAutoCode = () => { +export async function loadAutoTasks(){ const interactiveMsgState = opendiscord.states.get("opendiscord:interactive-message") //AUTOCLOSE TIMEOUT - opendiscord.code.add(new api.ODCode("opendiscord:autoclose-timeout",3,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:autoclose-timeout",3,() => { setInterval(async () => { let count = 0 for (const ticket of opendiscord.tickets.getAll()){ @@ -399,7 +399,7 @@ const loadAutoCode = () => { })) //AUTOCLOSE LEAVE - opendiscord.code.add(new api.ODCode("opendiscord:autoclose-leave",2,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:autoclose-leave",2,() => { opendiscord.client.client.on("guildMemberRemove",async (member) => { for (const ticket of opendiscord.tickets.getAll()){ if (ticket.get("opendiscord:opened-by").value == member.id){ @@ -427,7 +427,7 @@ const loadAutoCode = () => { })) //AUTODELETE TIMEOUT - opendiscord.code.add(new api.ODCode("opendiscord:autodelete-timeout",1,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:autodelete-timeout",1,() => { setInterval(async () => { let count = 0 for (const ticket of opendiscord.tickets.getAll()){ @@ -460,7 +460,7 @@ const loadAutoCode = () => { })) //AUTODELETE LEAVE - opendiscord.code.add(new api.ODCode("opendiscord:autodelete-leave",0,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:autodelete-leave",0,() => { opendiscord.client.client.on("guildMemberRemove",async (member) => { for (const ticket of opendiscord.tickets.getAll()){ if (ticket.get("opendiscord:opened-by").value == member.id){ @@ -483,7 +483,7 @@ const loadAutoCode = () => { })) //TICKET ANTI BUSY (+ sync version of tickets with latest OT version in database) - opendiscord.code.add(new api.ODCode("opendiscord:ticket-anti-busy",-1,() => { + opendiscord.tasks.add(new api.ODTask("opendiscord:ticket-anti-busy",-1,() => { for (const ticket of opendiscord.tickets.getAll()){ //free tickets from corruption due to opendiscord:busy variable ticket.get("opendiscord:busy").value = false diff --git a/src/index.ts b/src/index.ts index 24b67dc..89d8697 100644 --- a/src/index.ts +++ b/src/index.ts @@ -902,22 +902,22 @@ const main = async () => { } //plugin loading before code - await opendiscord.events.get("onPluginBeforeCodeLoad").emit([]) - await opendiscord.events.get("afterPluginBeforeCodeLoaded").emit([]) + await opendiscord.events.get("onPluginBeforeTaskLoad").emit([]) + await opendiscord.events.get("afterPluginBeforeTaskLoaded").emit([]) - //load code - opendiscord.log("Loading code...","system") - if (opendiscord.sharedFuses.getFuse("codeLoading")){ - await (await import("./data/framework/codeLoader.js")).loadAllCode() + //load background tasks + opendiscord.log("Loading background tasks...","system") + if (opendiscord.sharedFuses.getFuse("taskLoading")){ + await (await import("./data/framework/taskLoader.js")).loadAllTasks() } - await opendiscord.events.get("onCodeLoad").emit([opendiscord.code]) - await opendiscord.events.get("afterCodeLoaded").emit([opendiscord.code]) + await opendiscord.events.get("onTaskLoad").emit([opendiscord.tasks]) + await opendiscord.events.get("afterTasksLoaded").emit([opendiscord.tasks]) - //execute code - await opendiscord.events.get("onCodeExecute").emit([opendiscord.code]) - if (opendiscord.sharedFuses.getFuse("codeExecution")){ - await opendiscord.code.execute() - await opendiscord.events.get("afterCodeExecuted").emit([opendiscord.code]) + //execute background tasks + await opendiscord.events.get("onTaskExecute").emit([opendiscord.tasks]) + if (opendiscord.sharedFuses.getFuse("taskExecution")){ + await opendiscord.tasks.execute() + await opendiscord.events.get("afterTasksExecuted").emit([opendiscord.tasks]) } //finish setup