diff --git a/package.json b/package.json index ffc3b22..028b20e 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "license": "GPL-3.0-only", "dependencies": { "@discordjs/rest": "^2.6.1", - "@open-discord-bots/framework": "^0.3.3", + "@open-discord-bots/framework": "^0.3.4", "@types/node": "^22.5.0", "@types/terminal-kit": "^2.5.7", "ansis": "^4.2.0", diff --git a/src/actions/createTranscript.ts b/src/actions/createTranscript.ts index bd7f7f0..f408e1f 100644 --- a/src/actions/createTranscript.ts +++ b/src/actions/createTranscript.ts @@ -135,7 +135,7 @@ export const registerActions = async () => { //send channel message if (transcriptConfig.data.general.enableChannel && channelMessage){ - if (instance.pendingMessage && instance.pendingMessage.message && instance.pendingMessage.success){ + if (instance.pendingMessage && instance.pendingMessage.success){ //edit "pending" message to be the "ready" message instance.pendingMessage.message.edit(utilities.getMessageFromBuildResult(channelMessage,"message")) }else{ diff --git a/src/core/api.ts b/src/core/api.ts index 7eb4a03..d9df578 100644 --- a/src/core/api.ts +++ b/src/core/api.ts @@ -25,6 +25,7 @@ export * from "./mappings/progressbar.js" export * from "./mappings/responder.js" export * from "./mappings/session.js" export * from "./mappings/startscreen.js" +export * from "./mappings/state.js" export * from "./mappings/statistic.js" export * from "./mappings/verifybar.js" diff --git a/src/core/main.ts b/src/core/main.ts index 852ecda..fc5dceb 100644 --- a/src/core/main.ts +++ b/src/core/main.ts @@ -28,6 +28,7 @@ export class ODOpenTicketMain extends api.ODMain { declare statistics: api.ODMappedStatisticManager declare code: api.ODMappedCodeManager declare posts: api.ODMappedPostManager + declare states: api.ODMappedStateManager declare client: api.ODMappedClientManager declare livestatus: api.ODMappedLiveStatusManager @@ -98,6 +99,7 @@ export class ODOpenTicketMain extends api.ODMain { statistics:new api.ODMappedStatisticManager(debug), code:new api.ODMappedCodeManager(debug), posts:new api.ODMappedPostManager(debug), + states:new api.ODMappedStateManager(debug), sharedFuses:utilities.sharedFuses, env:new api.ODEnvHelper(), diff --git a/src/core/mappings/event.ts b/src/core/mappings/event.ts index ca89379..f6f4415 100644 --- a/src/core/mappings/event.ts +++ b/src/core/mappings/event.ts @@ -29,6 +29,7 @@ import { ODMappedStartScreenManager } from "./startscreen.js" import { ODMappedLiveStatusManager } from "./console.js" import { ODMappedProgressBarManager, ODMappedProgressBarRendererManager } from "./progressbar.js" import { ODMappedComponentManager, ODMappedMessageComponentManager, ODMappedModalComponentManager, ODMappedSharedComponentManager } from "./component.js" +import { ODMappedStateManager } from "./state.js" //OPEN TICKET MAPPINGSS import { ODOptionManager, ODTicketOption } from "../api/option.js" @@ -139,6 +140,12 @@ export interface ODEventManagerIdMappings extends api.ODEventManagerIdConstraint "onTextCommandLoad": api.ODEvent<(text:ODMappedTextCommandManager, client:ODMappedClientManager) => api.ODPromiseVoid> "afterTextCommandsLoaded": api.ODEvent<(text:ODMappedTextCommandManager, client:ODMappedClientManager) => api.ODPromiseVoid> + //states + "onStateLoad": api.ODEvent<(posts:ODMappedStateManager) => api.ODPromiseVoid> + "afterStatesLoaded": api.ODEvent<(posts:ODMappedStateManager) => api.ODPromiseVoid> + "onStateInit": api.ODEvent<(posts:ODMappedStateManager) => api.ODPromiseVoid> + "afterStatesInitiated": api.ODEvent<(posts:ODMappedStateManager) => api.ODPromiseVoid> + //plugin loading before managers "onPluginBeforeManagerLoad": api.ODEvent<() => api.ODPromiseVoid>, "afterPluginBeforeManagerLoaded": api.ODEvent<() => api.ODPromiseVoid>, diff --git a/src/core/mappings/state.ts b/src/core/mappings/state.ts new file mode 100644 index 0000000..3a676f6 --- /dev/null +++ b/src/core/mappings/state.ts @@ -0,0 +1,22 @@ +/////////////////////////////////////// +//OPEN TICKET STATE MAPPINGS +/////////////////////////////////////// +import * as api from "@open-discord-bots/framework/api" +import * as discord from "discord.js" + +/**## ODStateManagerIdMappings `interface` + * A list of all available IDs in the default `ODStateManager` class in `opendiscord`. + * It's used to generate typescript declarations for this class. + */ +export interface ODStateManagerIdMappings extends api.ODStateManagerIdConstraint { + //"opendiscord:example-state":api.ODState, +} + +///////////////////////////// +////// MAPPED MANAGERS ////// +///////////////////////////// + +/**## ODMappedStateManager `class + * A special class with types for the Open Ticket `ODStateManager` class. + */ +export class ODMappedStateManager extends api.ODStateManager {} \ No newline at end of file diff --git a/src/data/framework/codeLoader.ts b/src/data/framework/codeLoader.ts index d945305..2948d20 100644 --- a/src/data/framework/codeLoader.ts +++ b/src/data/framework/codeLoader.ts @@ -78,7 +78,7 @@ export const loadDatabaseCleanersCode = async () => { if (!validPanels.includes(panel.key)){ try{ const splittedId = panel.key.split("_") - const message = await opendiscord.client.fetchGuildChannelMessage(mainServer,splittedId[0],splittedId[1]) + const message = await opendiscord.client.fetchChannelMessage(splittedId[0],splittedId[1]) if (message) validPanels.push(panel.key) }catch{} } @@ -302,7 +302,7 @@ export const loadPanelAutoUpdateCode = async () => { const splittedId = panelId.key.split("_") const channel = await opendiscord.client.fetchGuildTextChannel(mainServer,splittedId[0]) if (!channel) return - const message = await opendiscord.client.fetchGuildChannelMessage(mainServer,channel,splittedId[1]) + const message = await opendiscord.client.fetchChannelMessage(channel,splittedId[1]) if (!message || !message.editable) return message.edit((await opendiscord.builders.messages.getSafe("opendiscord:panel").build("auto-update",{guild:mainServer,channel,user:opendiscord.client.client.user,panel})).message) diff --git a/src/data/framework/eventLoader.ts b/src/data/framework/eventLoader.ts index d344b16..bfa5916 100644 --- a/src/data/framework/eventLoader.ts +++ b/src/data/framework/eventLoader.ts @@ -96,6 +96,12 @@ export const loadAllEvents = () => { "onTextCommandLoad", "afterTextCommandsLoaded", + //states + "onStateLoad", + "afterStatesLoaded", + "onStateInit", + "afterStatesInitiated", + //plugin loading before managers "onPluginBeforeManagerLoad", "afterPluginBeforeManagerLoaded", diff --git a/src/data/framework/stateLoader.ts b/src/data/framework/stateLoader.ts new file mode 100644 index 0000000..f646c14 --- /dev/null +++ b/src/data/framework/stateLoader.ts @@ -0,0 +1,5 @@ +import {opendiscord, api, utilities} from "../../index.js" + +export const loadAllStates = async () => { + +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index bc2d6c2..da117be 100644 --- a/src/index.ts +++ b/src/index.ts @@ -514,6 +514,21 @@ const main = async () => { opendiscord.log("discord.js client ready!","info") } + //load states + opendiscord.log("Loading states...","system") + if (opendiscord.sharedFuses.getFuse("stateLoading")){ + await (await import("./data/framework/stateLoader.js")).loadAllStates() + } + await opendiscord.events.get("onStateLoad").emit([opendiscord.states]) + await opendiscord.events.get("afterStatesLoaded").emit([opendiscord.states]) + + //init states + await opendiscord.events.get("onStateInit").emit([opendiscord.states]) + if (opendiscord.sharedFuses.getFuse("stateInitiating")){ + await opendiscord.states.init() + await opendiscord.events.get("afterStatesInitiated").emit([opendiscord.states]) + } + //plugin loading before managers await opendiscord.events.get("onPluginBeforeManagerLoad").emit([]) await opendiscord.events.get("afterPluginBeforeManagerLoaded").emit([]) @@ -813,7 +828,7 @@ const main = async () => { //init posts await opendiscord.events.get("onPostInit").emit([opendiscord.posts]) if (opendiscord.sharedFuses.getFuse("postsInitiating")){ - if (opendiscord.client.mainServer) opendiscord.posts.init(opendiscord.client.mainServer) + if (opendiscord.client.mainServer) await opendiscord.posts.init(opendiscord.client.mainServer) await opendiscord.events.get("afterPostsInitiated").emit([opendiscord.posts]) }