(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: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",
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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),
-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 { 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>
+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",
"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",
@@ -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
+13 -13
View File
@@ -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