(API) Renamed "ODCode" classes to "ODTask" (improved readability)

This commit is contained in:
DJj123dj
2026-05-24 09:47:30 +02:00
parent 66c5bc4565
commit eb44f41d3a
9 changed files with 99 additions and 99 deletions
+2 -2
View File
@@ -22,13 +22,13 @@
"tools:mergelang": "bun run .tools/mergeTranslations.js", "tools:mergelang": "bun run .tools/mergeTranslations.js",
"tools:sponsors": "bun run .tools/createSponsors.ts", "tools:sponsors": "bun run .tools/createSponsors.ts",
"tools:contributors": "bun run .tools/createContributors.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", "type": "module",
"license": "GPL-3.0-only", "license": "GPL-3.0-only",
"dependencies": { "dependencies": {
"@discordjs/rest": "^2.6.1", "@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/node": "^22.5.0",
"@types/terminal-kit": "^2.5.7", "@types/terminal-kit": "^2.5.7",
"ansis": "^4.2.0", "ansis": "^4.2.0",
+1 -1
View File
@@ -7,7 +7,6 @@ export * from "./mappings/base.js"
export * from "./mappings/builder.js" export * from "./mappings/builder.js"
export * from "./mappings/checker.js" export * from "./mappings/checker.js"
export * from "./mappings/client.js" export * from "./mappings/client.js"
export * from "./mappings/code.js"
export * from "./mappings/component.js" export * from "./mappings/component.js"
export * from "./mappings/config.js" export * from "./mappings/config.js"
export * from "./mappings/console.js" export * from "./mappings/console.js"
@@ -27,6 +26,7 @@ export * from "./mappings/session.js"
export * from "./mappings/startscreen.js" export * from "./mappings/startscreen.js"
export * from "./mappings/state.js" export * from "./mappings/state.js"
export * from "./mappings/statistic.js" export * from "./mappings/statistic.js"
export * from "./mappings/task.js"
export * from "./mappings/verifybar.js" export * from "./mappings/verifybar.js"
//EXPORT OPENTICKET MODULES //EXPORT OPENTICKET MODULES
+2 -2
View File
@@ -26,7 +26,7 @@ export class ODOpenTicketMain extends api.ODMain {
declare cooldowns: api.ODMappedCooldownManager declare cooldowns: api.ODMappedCooldownManager
declare helpmenu: api.ODMappedHelpMenuManager declare helpmenu: api.ODMappedHelpMenuManager
declare statistics: api.ODMappedStatisticManager declare statistics: api.ODMappedStatisticManager
declare code: api.ODMappedCodeManager declare tasks: api.ODMappedTaskManager
declare posts: api.ODMappedPostManager declare posts: api.ODMappedPostManager
declare states: api.ODMappedStateManager declare states: api.ODMappedStateManager
@@ -97,7 +97,7 @@ export class ODOpenTicketMain extends api.ODMain {
cooldowns:new api.ODMappedCooldownManager(debug), cooldowns:new api.ODMappedCooldownManager(debug),
helpmenu:new api.ODMappedHelpMenuManager(debug), helpmenu:new api.ODMappedHelpMenuManager(debug),
statistics:new api.ODMappedStatisticManager(debug), statistics:new api.ODMappedStatisticManager(debug),
code:new api.ODMappedCodeManager(debug), tasks:new api.ODMappedTaskManager(debug),
posts:new api.ODMappedPostManager(debug), posts:new api.ODMappedPostManager(debug),
states:new api.ODMappedStateManager(debug), states:new api.ODMappedStateManager(debug),
-36
View File
@@ -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<ODCodeManagerIdMappings> {}
+9 -9
View File
@@ -21,7 +21,7 @@ import { ODMappedActionManager } from "./action.js"
import { ODMappedPermissionManager } from "./permission.js" import { ODMappedPermissionManager } from "./permission.js"
import { ODMappedHelpMenuManager } from "./helpmenu.js" import { ODMappedHelpMenuManager } from "./helpmenu.js"
import { ODMappedStatisticManager } from "./statistic.js" import { ODMappedStatisticManager } from "./statistic.js"
import { ODMappedCodeManager } from "./code.js" import { ODMappedTaskManager } from "./task.js"
import { ODMappedCooldownManager } from "./cooldown.js" import { ODMappedCooldownManager } from "./cooldown.js"
import { ODMappedPostManager } from "./post.js" import { ODMappedPostManager } from "./post.js"
import { ODMappedVerifyBarManager } from "./verifybar.js" import { ODMappedVerifyBarManager } from "./verifybar.js"
@@ -326,15 +326,15 @@ export interface ODEventManagerIdMappings extends api.ODEventManagerIdConstraint
"onStatisticInit": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid> "onStatisticInit": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid>
"afterStatisticsInitiated": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid> "afterStatisticsInitiated": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid>
//plugin loading before code //plugin loading before tasks
"onPluginBeforeCodeLoad": api.ODEvent<() => api.ODPromiseVoid>, "onPluginBeforeTaskLoad": api.ODEvent<() => api.ODPromiseVoid>,
"afterPluginBeforeCodeLoaded": api.ODEvent<() => api.ODPromiseVoid>, "afterPluginBeforeTaskLoaded": api.ODEvent<() => api.ODPromiseVoid>,
//code //background tasks
"onCodeLoad": api.ODEvent<(code:ODMappedCodeManager) => api.ODPromiseVoid> "onTaskLoad": api.ODEvent<(tasks:ODMappedTaskManager) => api.ODPromiseVoid>
"afterCodeLoaded": api.ODEvent<(code:ODMappedCodeManager) => api.ODPromiseVoid> "afterTasksLoaded": api.ODEvent<(tasks:ODMappedTaskManager) => api.ODPromiseVoid>
"onCodeExecute": api.ODEvent<(code:ODMappedCodeManager) => api.ODPromiseVoid> "onTaskExecute": api.ODEvent<(tasks:ODMappedTaskManager) => api.ODPromiseVoid>
"afterCodeExecuted": api.ODEvent<(code:ODMappedCodeManager) => api.ODPromiseVoid> "afterTasksExecuted": api.ODEvent<(tasks:ODMappedTaskManager) => api.ODPromiseVoid>
//livestatus //livestatus
"onLiveStatusSourceLoad": api.ODEvent<(livestatus:ODMappedLiveStatusManager) => api.ODPromiseVoid> "onLiveStatusSourceLoad": api.ODEvent<(livestatus:ODMappedLiveStatusManager) => api.ODPromiseVoid>
+36
View File
@@ -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<ODTaskManagerIdMappings> {}
+8 -8
View File
@@ -282,15 +282,15 @@ export const loadAllEvents = () => {
"onStatisticInit", "onStatisticInit",
"afterStatisticsInitiated", "afterStatisticsInitiated",
//plugin loading before code //plugin loading before tasks
"onPluginBeforeCodeLoad", "onPluginBeforeTaskLoad",
"afterPluginBeforeCodeLoaded", "afterPluginBeforeTaskLoaded",
//code //background tasks
"onCodeLoad", "onTaskLoad",
"afterCodeLoaded", "afterTasksLoaded",
"onCodeExecute", "onTaskExecute",
"afterCodeExecuted", "afterTasksExecuted",
//livestatus //livestatus
"onLiveStatusSourceLoad", "onLiveStatusSourceLoad",
@@ -9,20 +9,20 @@ const statsDatabase = opendiscord.databases.get("opendiscord:stats")
const optionDatabase = opendiscord.databases.get("opendiscord:options") const optionDatabase = opendiscord.databases.get("opendiscord:options")
const mainServer = opendiscord.client.mainServer const mainServer = opendiscord.client.mainServer
export async function loadAllCode(){ export async function loadAllTasks(){
if (!generalConfig || !mainServer || !globalDatabase || !userDatabase || !ticketDatabase || !statsDatabase || !optionDatabase) return if (!generalConfig || !mainServer || !globalDatabase || !userDatabase || !ticketDatabase || !statsDatabase || !optionDatabase) return
loadCommandErrorHandlingCode() loadCommandErrorHandlingTasks()
loadStartListeningInteractionsCode() loadStartListeningInteractionsTasks()
loadDatabaseCleanersCode() loadDatabaseCleanersTasks()
loadPanelAutoUpdateCode() loadPanelAutoUpdateTasks()
loadDatabaseSaversCode() loadDatabaseSaversTasks()
loadAutoCode() loadAutoTasks()
} }
export async function loadCommandErrorHandlingCode(){ export async function loadCommandErrorHandlingTasks(){
//COMMAND ERROR HANDLING //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 //invalid/missing options
opendiscord.client.textCommands.onError(async (error) => { opendiscord.client.textCommands.onError(async (error) => {
if (error.msg.channel.type == discord.ChannelType.GroupDM) return 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 //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.slashCommands.startListeningToInteractions()
opendiscord.client.textCommands.startListeningToInteractions() opendiscord.client.textCommands.startListeningToInteractions()
opendiscord.client.contextMenus.startListeningToInteractions() opendiscord.client.contextMenus.startListeningToInteractions()
@@ -66,11 +66,11 @@ export async function loadStartListeningInteractionsCode(){
})) }))
} }
export async function loadDatabaseCleanersCode(){ export async function loadDatabaseCleanersTasks(){
if (!mainServer) return if (!mainServer) return
//SUFFIX DATABASE CLEANER //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 validSuffixCounters: string[] = []
const validSuffixHistories: string[] = [] const validSuffixHistories: string[] = []
@@ -104,7 +104,7 @@ export async function loadDatabaseCleanersCode(){
})) }))
//OPTION DATABASE CLEANER //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) //delete all unused options (async)
for (const option of (await optionDatabase.getCategory("opendiscord:used-option") ?? [])){ for (const option of (await optionDatabase.getCategory("opendiscord:used-option") ?? [])){
if (!opendiscord.options.exists(option.key)){ 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) //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 () => { utilities.runAsync(async () => {
const validUsers: string[] = [] const validUsers: string[] = []
@@ -184,7 +184,7 @@ export async function loadDatabaseCleanersCode(){
})) }))
//TICKET DATABASE CLEANER //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[] = [] const validTickets: string[] = []
//check ticket database for valid tickets //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 //PANEL AUTO UPDATE
const panelMsgState = opendiscord.states.get("opendiscord:panel-message") 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 if (!mainServer) return
for (const panelState of (await panelMsgState.listMsgStates()).map((rawState) => rawState.value)){ 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 //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") const mainVersion = opendiscord.versions.get("opendiscord:version")
opendiscord.tickets.onAdd(async (ticket) => { opendiscord.tickets.onAdd(async (ticket) => {
@@ -333,7 +333,7 @@ export async function loadDatabaseSaversCode(){
})) }))
//BLACKLIST SAVER //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) => { opendiscord.blacklist.onAdd(async (blacklist) => {
await userDatabase.set("opendiscord:blacklist",blacklist.id.value,blacklist.reason) await userDatabase.set("opendiscord:blacklist",blacklist.id.value,blacklist.reason)
}) })
@@ -346,7 +346,7 @@ export async function loadDatabaseSaversCode(){
})) }))
//AUTO ROLE ON JOIN //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) => { opendiscord.client.client.on("guildMemberAdd",async (member) => {
for (const option of opendiscord.options.getAll()){ for (const option of opendiscord.options.getAll()){
if (option instanceof api.ODRoleOption && option.get("opendiscord:add-on-join").value){ 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") const interactiveMsgState = opendiscord.states.get("opendiscord:interactive-message")
//AUTOCLOSE TIMEOUT //AUTOCLOSE TIMEOUT
opendiscord.code.add(new api.ODCode("opendiscord:autoclose-timeout",3,() => { opendiscord.tasks.add(new api.ODTask("opendiscord:autoclose-timeout",3,() => {
setInterval(async () => { setInterval(async () => {
let count = 0 let count = 0
for (const ticket of opendiscord.tickets.getAll()){ for (const ticket of opendiscord.tickets.getAll()){
@@ -399,7 +399,7 @@ const loadAutoCode = () => {
})) }))
//AUTOCLOSE LEAVE //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) => { opendiscord.client.client.on("guildMemberRemove",async (member) => {
for (const ticket of opendiscord.tickets.getAll()){ for (const ticket of opendiscord.tickets.getAll()){
if (ticket.get("opendiscord:opened-by").value == member.id){ if (ticket.get("opendiscord:opened-by").value == member.id){
@@ -427,7 +427,7 @@ const loadAutoCode = () => {
})) }))
//AUTODELETE TIMEOUT //AUTODELETE TIMEOUT
opendiscord.code.add(new api.ODCode("opendiscord:autodelete-timeout",1,() => { opendiscord.tasks.add(new api.ODTask("opendiscord:autodelete-timeout",1,() => {
setInterval(async () => { setInterval(async () => {
let count = 0 let count = 0
for (const ticket of opendiscord.tickets.getAll()){ for (const ticket of opendiscord.tickets.getAll()){
@@ -460,7 +460,7 @@ const loadAutoCode = () => {
})) }))
//AUTODELETE LEAVE //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) => { opendiscord.client.client.on("guildMemberRemove",async (member) => {
for (const ticket of opendiscord.tickets.getAll()){ for (const ticket of opendiscord.tickets.getAll()){
if (ticket.get("opendiscord:opened-by").value == member.id){ 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) //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()){ for (const ticket of opendiscord.tickets.getAll()){
//free tickets from corruption due to opendiscord:busy variable //free tickets from corruption due to opendiscord:busy variable
ticket.get("opendiscord:busy").value = false ticket.get("opendiscord:busy").value = false
+13 -13
View File
@@ -902,22 +902,22 @@ const main = async () => {
} }
//plugin loading before code //plugin loading before code
await opendiscord.events.get("onPluginBeforeCodeLoad").emit([]) await opendiscord.events.get("onPluginBeforeTaskLoad").emit([])
await opendiscord.events.get("afterPluginBeforeCodeLoaded").emit([]) await opendiscord.events.get("afterPluginBeforeTaskLoaded").emit([])
//load code //load background tasks
opendiscord.log("Loading code...","system") opendiscord.log("Loading background tasks...","system")
if (opendiscord.sharedFuses.getFuse("codeLoading")){ if (opendiscord.sharedFuses.getFuse("taskLoading")){
await (await import("./data/framework/codeLoader.js")).loadAllCode() await (await import("./data/framework/taskLoader.js")).loadAllTasks()
} }
await opendiscord.events.get("onCodeLoad").emit([opendiscord.code]) await opendiscord.events.get("onTaskLoad").emit([opendiscord.tasks])
await opendiscord.events.get("afterCodeLoaded").emit([opendiscord.code]) await opendiscord.events.get("afterTasksLoaded").emit([opendiscord.tasks])
//execute code //execute background tasks
await opendiscord.events.get("onCodeExecute").emit([opendiscord.code]) await opendiscord.events.get("onTaskExecute").emit([opendiscord.tasks])
if (opendiscord.sharedFuses.getFuse("codeExecution")){ if (opendiscord.sharedFuses.getFuse("taskExecution")){
await opendiscord.code.execute() await opendiscord.tasks.execute()
await opendiscord.events.get("afterCodeExecuted").emit([opendiscord.code]) await opendiscord.events.get("afterTasksExecuted").emit([opendiscord.tasks])
} }
//finish setup //finish setup